From 8302f9d464380f5276bb51a227fd7ceda06e6cbb Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Mon, 29 May 2017 17:47:19 +0300 Subject: [PATCH] add AudioBuffer --- app/build.gradle | 2 +- .../activities/RecordingActivity.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6ee9832..e470c84 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,5 +43,5 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile 'com.github.axet:android-audio-library:0.0.48' // compile project(':android-audio-library') + compile 'com.github.axet:android-audio-library:0.0.49' // compile project(':android-audio-library') } diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java index f7f61db..e205133 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java @@ -180,7 +180,7 @@ public class RecordingActivity extends AppCompatActivity { } sampleRate = Integer.parseInt(shared.getString(MainApplication.PREFERENCE_RATE, "")); - sampleRate = Sound.getValidRecordRate(MainApplication.getMode(this), sampleRate); + sampleRate = Sound.getValidRecordRate(MainApplication.getInMode(this), sampleRate); samplesUpdate = (int) (pitch.getPitchTime() * sampleRate / 1000.0); updateBufferSize(false); @@ -443,7 +443,7 @@ public class RecordingActivity extends AppCompatActivity { int playUpdate = PitchView.UPDATE_SPEED * sampleRate / 1000; RawSamples rs = new RawSamples(storage.getTempRecording()); - int len = (int) (rs.getSamples() - editSample); + int len = (int) (rs.getSamples() - editSample); // in samples final AudioTrack.OnPlaybackPositionUpdateListener listener = new AudioTrack.OnPlaybackPositionUpdateListener() { @Override @@ -461,10 +461,12 @@ public class RecordingActivity extends AppCompatActivity { } }; - short[] buf = new short[len]; - rs.open(editSample, buf.length); - int r = rs.read(buf); - play = sound.generateTrack(sampleRate, buf, r); + AudioTrack.AudioBuffer buffer = new AudioTrack.AudioBuffer(sampleRate, MainApplication.getOutMode(this), Sound.AUDIO_FORMAT, len); + rs.open(editSample, len); // len in samples + int r = rs.read(buffer.buffer); // r in samples + if (r != buffer.len) + throw new RuntimeException("unable to read data"); + play = sound.generateTrack(buffer); play.setPositionNotificationPeriod(playUpdate); play.setPlaybackPositionUpdateListener(listener, handler); play.play(); @@ -589,12 +591,12 @@ public class RecordingActivity extends AppCompatActivity { rs.open(samplesTime); - int min = AudioRecord.getMinBufferSize(sampleRate, MainApplication.getMode(RecordingActivity.this), Sound.AUDIO_FORMAT); + int min = AudioRecord.getMinBufferSize(sampleRate, MainApplication.getInMode(RecordingActivity.this), Sound.AUDIO_FORMAT); if (min <= 0) { throw new RuntimeException("Unable to initialize AudioRecord: Bad audio values"); } - recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, MainApplication.getMode(RecordingActivity.this), Sound.AUDIO_FORMAT, min * 2); + recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, MainApplication.getInMode(RecordingActivity.this), Sound.AUDIO_FORMAT, min * 2); if (recorder.getState() != AudioRecord.STATE_INITIALIZED) { throw new RuntimeException("Unable to initialize AudioRecord"); }