From d9f015a2aab33caeb6b9fe80dc461d59ec038188 Mon Sep 17 00:00:00 2001 From: Shaji Khan Date: Wed, 28 Feb 2024 15:53:30 +0530 Subject: [PATCH] resample loops correctly according to current sample rate of the engine --- .../main/assets/lv2/liblooper.so/looper.json | 2 +- .../shajikhan/ladspa/amprack/AudioDecoder.java | 12 ++++++++---- .../shajikhan/ladspa/amprack/MainActivity.java | 2 +- app/src/main/res/drawable/dev.jpg | Bin 0 -> 26885 bytes 4 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/drawable/dev.jpg diff --git a/app/src/main/assets/lv2/liblooper.so/looper.json b/app/src/main/assets/lv2/liblooper.so/looper.json index 071cc715..9ccc4011 100644 --- a/app/src/main/assets/lv2/liblooper.so/looper.json +++ b/app/src/main/assets/lv2/liblooper.so/looper.json @@ -1 +1 @@ -{"-1": {"Plugin": true, "AmplifierPlugin": true, "optionalFeature": "http://lv2plug.in/ns/lv2core#hardRTCapable", "port": "_:n62c4bb580b1c42edb579f4b1e2d6cc04b8", "project": "http://lv2plug.in/ns/lv2", "http://usefulinc.com/ns/doap#license": "http://opensource.org/licenses/isc", "http://usefulinc.com/ns/doap#name": "Looper Plugin", "pluginName": "Looper"}, "0": {"InputPort": true, "ControlPort": true, "default": "0.0", "index": 0, "maximum": 1, "minimum": 0, "name": "Toggle Record", "symbol": "toggle_rec"}, "1": {"InputPort": true, "ControlPort": true, "default": "0.0", "index": 1, "maximum": 1, "minimum": 0, "name": "Toggle Playback", "symbol": "toggle_play"}, "3": {"InputPort": true, "ControlPort": true, "default": "1.0", "index": 3, "maximum": 6, "minimum": 0, "name": "Gain", "symbol": "gain"}, "4": {"InputPort": true, "ControlPort": true, "default": 1024, "index": 4, "maximum": 2048, "minimum": 128, "name": "Buffer Size", "symbol": "buffer_size_control"}, "5": {"InputPort": true, "ControlPort": true, "default": 0, "index": 5, "maximum": 25, "minimum": 0, "step": 0.5, "name": "Start", "symbol": "start"}, "6": {"InputPort": true, "ControlPort": true, "step": 0.5, "default": 100, "index": 6, "maximum": 100, "minimum": 75, "name": "End", "symbol": "end"}, "7": {"AudioPort": true, "InputPort": true, "index": 7, "name": "In", "symbol": "input"}, "8": {"AudioPort": true, "OutputPort": true, "index": 8, "name": "Out", "symbol": "output"}} \ No newline at end of file +{"-1": {"Plugin": true, "AmplifierPlugin": true, "optionalFeature": "http://lv2plug.in/ns/lv2core#hardRTCapable", "port": "_:n62c4bb580b1c42edb579f4b1e2d6cc04b8", "project": "http://lv2plug.in/ns/lv2", "http://usefulinc.com/ns/doap#license": "http://opensource.org/licenses/isc", "http://usefulinc.com/ns/doap#name": "Looper Plugin", "pluginName": "Looper"}, "0": {"InputPort": true, "ControlPort": true, "default": "0.0", "index": 0, "maximum": 1, "minimum": 0, "name": "Toggle Record", "symbol": "toggle_rec"}, "1": {"InputPort": true, "ControlPort": true, "default": "0.0", "index": 1, "maximum": 1, "minimum": 0, "name": "Toggle Playback", "symbol": "toggle_play"}, "3": {"InputPort": true, "ControlPort": true, "default": "1.0", "index": 3, "maximum": 6, "minimum": 0, "name": "Gain", "symbol": "gain"}, "4": {"InputPort": true, "ControlPort": true, "default": 1024, "index": 4, "maximum": 2048, "minimum": 128, "name": "Buffer Size", "symbol": "buffer_size_control"}, "5": {"InputPort": true, "ControlPort": true, "default": 0, "index": 5, "maximum": 25, "minimum": 0, "step": 0.5, "name": "✂ Start", "symbol": "start"}, "6": {"InputPort": true, "ControlPort": true, "step": 0.5, "default": 100, "index": 6, "maximum": 100, "minimum": 75, "name": "✂ End", "symbol": "end"}, "7": {"AudioPort": true, "InputPort": true, "index": 7, "name": "In", "symbol": "input"}, "8": {"AudioPort": true, "OutputPort": true, "index": 8, "name": "Out", "symbol": "output"}} \ No newline at end of file diff --git a/app/src/main/java/com/shajikhan/ladspa/amprack/AudioDecoder.java b/app/src/main/java/com/shajikhan/ladspa/amprack/AudioDecoder.java index d7f51651..f4c43889 100644 --- a/app/src/main/java/com/shajikhan/ladspa/amprack/AudioDecoder.java +++ b/app/src/main/java/com/shajikhan/ladspa/amprack/AudioDecoder.java @@ -96,6 +96,8 @@ float[] decode (FileDescriptor fileDescriptor, String mimeType, int _sampleRate) int channels = format.getInteger(MediaFormat.KEY_CHANNEL_COUNT); String mime = format.getString(MediaFormat.KEY_MIME); Log.d(TAG, String.format ("mimetype: %s", mimeType)); + codec = MediaCodec.createDecoderByType(mime); + /* if (_sampleRate != -1) { codec = MediaCodec.createEncoderByType(mimeType); Log.d(TAG, String.format ("converting to: %s [%d]", mimeType, sampleRate)); @@ -104,9 +106,11 @@ float[] decode (FileDescriptor fileDescriptor, String mimeType, int _sampleRate) Log.d(TAG, String.format ("converting to: %s [%d]", mime, sampleRate)); } + */ + Log.i(TAG, "decode: detected format " + mime); - if (_sampleRate != -1) - format.setInteger(MediaFormat.KEY_SAMPLE_RATE, sampleRate); +// if (_sampleRate != -1) +// format.setInteger(MediaFormat.KEY_SAMPLE_RATE, sampleRate); codec.configure(format, null /* surface */, null /* crypto */, 0 /* flags */); codec.start(); @@ -217,7 +221,7 @@ float[] decode (FileDescriptor fileDescriptor, String mimeType, int _sampleRate) decoded = mono; } - if (sampleRate == 48000) + if (sampleRate == _sampleRate) return decoded; ByteBuffer bb = ByteBuffer.allocateDirect(decoded.length * 4); @@ -227,7 +231,7 @@ float[] decode (FileDescriptor fileDescriptor, String mimeType, int _sampleRate) floatBuffer.position(0); Resampler resampler = new Resampler(true,0.1,30); - boolean result = resampler.process((double)48000.0/sampleRate,floatBuffer,true,resampled); + boolean result = resampler.process((double)_sampleRate/sampleRate,floatBuffer,true,resampled); float [] res = new float[resampled.limit()]; // resampled.position(0); for (int i = 0 ; i < resampled.limit(); i ++) { diff --git a/app/src/main/java/com/shajikhan/ladspa/amprack/MainActivity.java b/app/src/main/java/com/shajikhan/ladspa/amprack/MainActivity.java index 4647ecaa..a67bd600 100644 --- a/app/src/main/java/com/shajikhan/ladspa/amprack/MainActivity.java +++ b/app/src/main/java/com/shajikhan/ladspa/amprack/MainActivity.java @@ -1579,7 +1579,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { } try { - float [] samples = audioDecoder.decode(data.getData(), null, -1); + float [] samples = audioDecoder.decode(data.getData(), null, AudioEngine.getSampleRate()); AudioEngine.setPluginBuffer(samples, plugin); } catch (IOException e) { toast(e.getMessage()); diff --git a/app/src/main/res/drawable/dev.jpg b/app/src/main/res/drawable/dev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1aa0d460644d29d77b2d091897d6b52dc7567d78 GIT binary patch literal 26885 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�@a?i#T%JtN}ck{;KOgPz1aSN*IMQ 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 literal 0 HcmV?d00001