From 6bec6e4f1a81650f9341a44d0d359479f95cb0ad Mon Sep 17 00:00:00 2001 From: Shaji Khan Date: Tue, 20 Feb 2024 21:54:39 +0530 Subject: [PATCH] looper works! --- .../main/assets/lv2/liblooper.so/looper.json | 2 +- app/src/main/cpp/Plugin.cpp | 3 +++ .../shajikhan/ladspa/amprack/DataAdapter.java | 2 +- app/src/main/jniLibs/arm64-v8a/liblooper.so | Bin 5408 -> 5048 bytes app/src/main/jniLibs/armeabi-v7a/liblooper.so | Bin 3512 -> 3316 bytes app/src/main/jniLibs/x86/liblooper.so | Bin 4612 -> 4688 bytes app/src/main/jniLibs/x86_64/liblooper.so | Bin 5680 -> 5512 bytes 7 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/assets/lv2/liblooper.so/looper.json b/app/src/main/assets/lv2/liblooper.so/looper.json index b9dd644b..45451212 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 Plugin"}, "0": {"InputPort": true, "ControlPort": true, "default": "0.0", "index": 0, "maximum": 1, "minimum": 0, "name": "toggle_rec", "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": 1048576, "minimum": 128, "name": "Buffer Size", "symbol": "buffer_size_control"}, "5": {"InputPort": true, "ControlPort": true, "default": 0, "index": 5, "maximum": 100, "minimum": 0, "name": "Trim Start", "symbol": "start"}, "6": {"InputPort": true, "ControlPort": true, "default": 100, "index": 6, "maximum": 100, "minimum": 0, "name": "Trim 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": 1048576, "minimum": 128, "name": "Buffer Size", "symbol": "buffer_size_control"}, "5": {"InputPort": true, "ControlPort": true, "default": 0, "index": 5, "maximum": 100, "minimum": 0, "name": "Trim Start", "symbol": "start"}, "6": {"InputPort": true, "ControlPort": true, "default": 100, "index": 6, "maximum": 100, "minimum": 0, "name": "Trim 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/cpp/Plugin.cpp b/app/src/main/cpp/Plugin.cpp index 618d0045..8130a9bd 100644 --- a/app/src/main/cpp/Plugin.cpp +++ b/app/src/main/cpp/Plugin.cpp @@ -135,6 +135,9 @@ void Plugin::load () { else LOGD("[LV2] Handle instantiated ok! Congratulations"); + if (lv2Descriptor->activate) { + lv2Descriptor->activate(handle); + } std::string json_ = getLV2JSON(lv2Descriptor -> URI); json j = json::parse(json_); diff --git a/app/src/main/java/com/shajikhan/ladspa/amprack/DataAdapter.java b/app/src/main/java/com/shajikhan/ladspa/amprack/DataAdapter.java index 7ea9907a..9a1463c8 100644 --- a/app/src/main/java/com/shajikhan/ladspa/amprack/DataAdapter.java +++ b/app/src/main/java/com/shajikhan/ladspa/amprack/DataAdapter.java @@ -133,7 +133,7 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (string != null) { Log.d(TAG, "onBindViewHolder: control name: " + string + " -> " + string.equalsIgnoreCase("bypass")); - isBypass = string.equalsIgnoreCase("bypass"); + isBypass = string.equalsIgnoreCase("bypass") || string.contains("oggle"); } if (mainActivity.useTheme) { diff --git a/app/src/main/jniLibs/arm64-v8a/liblooper.so b/app/src/main/jniLibs/arm64-v8a/liblooper.so index b901d655565836388dfd4dd2dae0e4bf2a99ef97..a0d98bcdf9d776f917e7caddb585d88adb7b2861 100755 GIT binary patch literal 5048 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 delta 1595 zcmZ8heN0F5q0qW@jM&GQDGFJU&TNJ(T~i7bln*t-EDI%r*+l{mLgH}K zwkAtpk_~n>Q~z=MbD4=Ox`ahZommWqP0(|gau9g{o9R6(_lmjsU3EdT@)V6y`-BC>7YKp7ecW@B7HuEp_M94FjHO`vfR z(KbKWwe@>l8o&9fJe>oO1utgbIFFo&Ir|Sd?zYdZ*w-q~PIrt!4cA!@#?e!Pn6zg*#*Lw82m8hJFK5I506W5%0m-wbkPIh|%UD z#(h;1V-~%{xcTroArXi8jfsg%I+w)K7Y+_|A3mg(cgf{lR%mK&ZmDa7gIZ7L(54Z+ zi}3k8z?swt!16J^SA4!PfxT2FlW8ab$O(gIDCkN;u@utkAz6zy)&TlXlaTa*3Q~pZ z_8*H(H(BIuwx{flr$O@OrbMrjQoPobi(eAmF*QHX4#oKqNUH^}MR!D+A42K(OM;_W zf4|MYUbIVm`SKdLrKDCLXc4Q|7a$1`PwH24zN}h`=T)tU$45dhg=d$<#*ix!Wn<$j zV7;>Hx29L^f0y0yg`s>Xcq&vA9tsYJF4i5GEsh34KdytlI@(xN6M@*h1QbWFb>^t8 zA@~^d&lZ1M0%l8#w&B3_B&gnq=wrLtCx0&ZqhtSZ?YWa&g;VYZ_bX6#EcjmVgV2S# zirJbd`FSn`AAvr&=#8>Z*}XU$U$I!fUTw&RRG9n_y)ZAR{ZU#aHXNAFF2j7kFI-JS zo@tiNTud{$ab2|iwLk$(-4~CuiK#`%)2ATm!Mvs(XEL`Cal}c45QdUKixdn*w0ar` zU77?{tM@->Qoeft%0Iyf_9L5pF;z7WchAhR<#@f^0&i{f9en9ih(YdBA z+P_8nwrG!`>Ap1Jv71Mv5mk8fx)J?&KNED#{#TKOa{deAK2?Q=SM; z^!cQr%(e!6Qw}ls%^hg`hRtoxR&NVmwUx-Uc^?))iC>c)yi!rj+0t#{`;-#diN(Q* hX;HI-CltHjllW=nSrf=uZEy=%Efu?|7S$Z7e*q{ikOKe! diff --git a/app/src/main/jniLibs/x86/liblooper.so b/app/src/main/jniLibs/x86/liblooper.so index f0aaf3129a2dc21db1fb18a01517ca32ae00f961..bdeb4690afe42abf80e4bfbddd313e6552f4583b 100755 GIT binary patch delta 2320 zcmZ8je@qld6yDw2Jr*6@J3(soAcE{ZADDm+g4?l6;2_2aVIy?onLu_Kc&#_| z&j07%a!uICcOmQn40OGR4IWoR}SCmdMQi=QDM~`&UAQ*!&wfma5&fDJcsig4miBQ;j9IM5C@?vh#?}E z7(()hN#I1w5KiBZ#Xbd^fbW1-;2iJ;@HKGhK3^`c2@B$U*Q#<%N&tdzcoJL%z63rA z?gTf1Z-86DGJ+3+bHP3YE(Qm|hrk!Wjo>8^5+OSlWZ7O3DV?6ZP0_t1+nd)7|#!b}LyB>W#7SSj?35{^bfE zbLUH|lKJYml$`mn8H4hKx!!8M7mF3fLi*e-{T&c){4{ra`?Vso*SI@odn>Mv-s2y~ z<%GYTBM4VzeT9%F^dH5@`qHuOJKC=~ZQ6`CtJ_SBwThVWNIkgHTBo{Bo@(uj#bURO zs5+2lMCF0`MwAUCD`{{xpeZ_$YD7H)E+d*`ZSt6^IXLB;LKG!UNqVdL%3=zzPUU54 znmh>C{ES)<9y11+t$Am4$7gsEtR2iMQmwVB^{QuB^QdN*bvQ}e7S)z@nvcvpT{}*D zMqQ6qI}6KTMKU47y0`?_>>lF?6GKPg!MHPSzOBpIJq=G9e932qHLrYj@-7hZ)vphW z{)a!(0%)7AT1Qm#1o^{=z!@2X17~ri`}#wof9UeWxJS@Owi=(6q$3~G)?l7mUl*-`&P@^IN#A1)BJV4GP(VehTRU@M&p7P)VX2eO5q+pJQVvb%dl>N*^W+YsGRim7(Qj zv)e!Veb~-vb0_8Tku8F&ex;!Dfidc;2sDJBEYRct zv&)u8DKy(_&|{dM(W8kp07zKSTS~W2Bv0ed*sjci|nkDw)wYjta^a zs)$*~sSepA120TP^goW2(HyOyoAS5IYjj9{Owww<#D|D!!A2j}VtV};<-n+Z***SI zt)Lz6!^8s8aQm&m3>5nuiXF6b2)4-iX8S6vR;ofj*KX!yo=@y#I;BvHi56LxB(h(}_o?3~gvoAq>T0`^(Xfa_q0-Z7gvf9p00z z58_4uH+H#X_RRyfOhV{%Ej6Cz5E$R6r7CoURPiz`L!nqr{1YuBo}v+Qc^k%)CPEqi z%bUo@G^Uh5aS2cGU?lDcY25EgjlYFE!XCaGPtMN)A;fP>iM+|f+!3S_k@;7ig)^vT zggk}+=1Ga~qEZ5dT=b^KQ{m|chi=cz^D;N(9bkO3ccI(-Vzc<4-sJxP#g|lw delta 2231 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