aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/src/MV
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/LV2/src/MV')
-rw-r--r--plugins/LV2/src/MV/MV.cpp99
-rw-r--r--plugins/LV2/src/MV/MV.h177
-rw-r--r--plugins/LV2/src/MV/MV.ttl76
-rw-r--r--plugins/LV2/src/MV/manifest.ttl.in6
4 files changed, 358 insertions, 0 deletions
diff --git a/plugins/LV2/src/MV/MV.cpp b/plugins/LV2/src/MV/MV.cpp
new file mode 100644
index 0000000..6415822
--- /dev/null
+++ b/plugins/LV2/src/MV/MV.cpp
@@ -0,0 +1,99 @@
+#include "MV.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+MV::MV(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void MV::activate()
+{
+ A = 0.5;
+ B = 0.5;
+ C = 0.5;
+ D = 1.0;
+ E = 1.0;
+
+ int count;
+ for(count = 0; count < 15149; count++) {aAL[count] = 0.0; aAR[count] = 0.0;}
+ for(count = 0; count < 14617; count++) {aBL[count] = 0.0; aBR[count] = 0.0;}
+ for(count = 0; count < 14357; count++) {aCL[count] = 0.0; aCR[count] = 0.0;}
+ for(count = 0; count < 13817; count++) {aDL[count] = 0.0; aDR[count] = 0.0;}
+ for(count = 0; count < 13561; count++) {aEL[count] = 0.0; aER[count] = 0.0;}
+ for(count = 0; count < 13045; count++) {aFL[count] = 0.0; aFR[count] = 0.0;}
+ for(count = 0; count < 11965; count++) {aGL[count] = 0.0; aGR[count] = 0.0;}
+ for(count = 0; count < 11129; count++) {aHL[count] = 0.0; aHR[count] = 0.0;}
+ for(count = 0; count < 10597; count++) {aIL[count] = 0.0; aIR[count] = 0.0;}
+ for(count = 0; count < 9809; count++) {aJL[count] = 0.0; aJR[count] = 0.0;}
+ for(count = 0; count < 9521; count++) {aKL[count] = 0.0; aKR[count] = 0.0;}
+ for(count = 0; count < 8981; count++) {aLL[count] = 0.0; aLR[count] = 0.0;}
+ for(count = 0; count < 8785; count++) {aML[count] = 0.0; aMR[count] = 0.0;}
+ for(count = 0; count < 8461; count++) {aNL[count] = 0.0; aNR[count] = 0.0;}
+ for(count = 0; count < 8309; count++) {aOL[count] = 0.0; aOR[count] = 0.0;}
+ for(count = 0; count < 7981; count++) {aPL[count] = 0.0; aPR[count] = 0.0;}
+ for(count = 0; count < 7321; count++) {aQL[count] = 0.0; aQR[count] = 0.0;}
+ for(count = 0; count < 6817; count++) {aRL[count] = 0.0; aRR[count] = 0.0;}
+ for(count = 0; count < 6505; count++) {aSL[count] = 0.0; aSR[count] = 0.0;}
+ for(count = 0; count < 6001; count++) {aTL[count] = 0.0; aTR[count] = 0.0;}
+ for(count = 0; count < 5837; count++) {aUL[count] = 0.0; aUR[count] = 0.0;}
+ for(count = 0; count < 5501; count++) {aVL[count] = 0.0; aVR[count] = 0.0;}
+ for(count = 0; count < 5009; count++) {aWL[count] = 0.0; aWR[count] = 0.0;}
+ for(count = 0; count < 4849; count++) {aXL[count] = 0.0; aXR[count] = 0.0;}
+ for(count = 0; count < 4295; count++) {aYL[count] = 0.0; aYR[count] = 0.0;}
+ for(count = 0; count < 4179; count++) {aZL[count] = 0.0; aZR[count] = 0.0;}
+
+ alpA = 1; delayA = 7573; avgAL = 0.0; avgAR = 0.0;
+ alpB = 1; delayB = 7307; avgBL = 0.0; avgBR = 0.0;
+ alpC = 1; delayC = 7177; avgCL = 0.0; avgCR = 0.0;
+ alpD = 1; delayD = 6907; avgDL = 0.0; avgDR = 0.0;
+ alpE = 1; delayE = 6779; avgEL = 0.0; avgER = 0.0;
+ alpF = 1; delayF = 6521; avgFL = 0.0; avgFR = 0.0;
+ alpG = 1; delayG = 5981; avgGL = 0.0; avgGR = 0.0;
+ alpH = 1; delayH = 5563; avgHL = 0.0; avgHR = 0.0;
+ alpI = 1; delayI = 5297; avgIL = 0.0; avgIR = 0.0;
+ alpJ = 1; delayJ = 4903; avgJL = 0.0; avgJR = 0.0;
+ alpK = 1; delayK = 4759; avgKL = 0.0; avgKR = 0.0;
+ alpL = 1; delayL = 4489; avgLL = 0.0; avgLR = 0.0;
+ alpM = 1; delayM = 4391; avgML = 0.0; avgMR = 0.0;
+ alpN = 1; delayN = 4229; avgNL = 0.0; avgNR = 0.0;
+ alpO = 1; delayO = 4153; avgOL = 0.0; avgOR = 0.0;
+ alpP = 1; delayP = 3989; avgPL = 0.0; avgPR = 0.0;
+ alpQ = 1; delayQ = 3659; avgQL = 0.0; avgQR = 0.0;
+ alpR = 1; delayR = 3407; avgRL = 0.0; avgRR = 0.0;
+ alpS = 1; delayS = 3251; avgSL = 0.0; avgSR = 0.0;
+ alpT = 1; delayT = 2999; avgTL = 0.0; avgTR = 0.0;
+ alpU = 1; delayU = 2917; avgUL = 0.0; avgUR = 0.0;
+ alpV = 1; delayV = 2749; avgVL = 0.0; avgVR = 0.0;
+ alpW = 1; delayW = 2503; avgWL = 0.0; avgWR = 0.0;
+ alpX = 1; delayX = 2423; avgXL = 0.0; avgXR = 0.0;
+ alpY = 1; delayY = 2146; avgYL = 0.0; avgYR = 0.0;
+ alpZ = 1; delayZ = 2088; avgZL = 0.0; avgZR = 0.0;
+
+ feedbackL = 0.0;
+ feedbackR = 0.0;
+
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void MV::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+ E = *params[4];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/MV/MVProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<MV> plugin;
diff --git a/plugins/LV2/src/MV/MV.h b/plugins/LV2/src/MV/MV.h
new file mode 100644
index 0000000..e5214fb
--- /dev/null
+++ b/plugins/LV2/src/MV/MV.h
@@ -0,0 +1,177 @@
+#ifndef __MV_H
+#define __MV_H
+
+#include <lv2plugin.h>
+
+class MV : public LV2Plugin<5> {
+public:
+ MV(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/mv";
+
+private:
+ /*
+ * These are the original DSP functions from the VST plugin.
+ * They need to be called from the LV2 plugins `run` function.
+ */
+ void processReplacing(float **in, float **out, VstInt32 samples);
+ void processDoubleReplacing(double **in, double **out, VstInt32 samples);
+
+ /*
+ * Members needed by the processing functions.
+ */
+
+ uint32_t fpd;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+ float D;
+ float E; //parameters. Always 0-1, and we scale/alter them elsewhere.
+
+ double aAL[15150];
+ double aBL[14618];
+ double aCL[14358];
+ double aDL[13818];
+ double aEL[13562];
+ double aFL[13046];
+ double aGL[11966];
+ double aHL[11130];
+ double aIL[10598];
+ double aJL[9810];
+ double aKL[9522];
+ double aLL[8982];
+ double aML[8786];
+ double aNL[8462];
+ double aOL[8310];
+ double aPL[7982];
+ double aQL[7322];
+ double aRL[6818];
+ double aSL[6506];
+ double aTL[6002];
+ double aUL[5838];
+ double aVL[5502];
+ double aWL[5010];
+ double aXL[4850];
+ double aYL[4296];
+ double aZL[4180];
+
+ double avgAL;
+ double avgBL;
+ double avgCL;
+ double avgDL;
+ double avgEL;
+ double avgFL;
+ double avgGL;
+ double avgHL;
+ double avgIL;
+ double avgJL;
+ double avgKL;
+ double avgLL;
+ double avgML;
+ double avgNL;
+ double avgOL;
+ double avgPL;
+ double avgQL;
+ double avgRL;
+ double avgSL;
+ double avgTL;
+ double avgUL;
+ double avgVL;
+ double avgWL;
+ double avgXL;
+ double avgYL;
+ double avgZL;
+
+ double feedbackL;
+
+ double aAR[15150];
+ double aBR[14618];
+ double aCR[14358];
+ double aDR[13818];
+ double aER[13562];
+ double aFR[13046];
+ double aGR[11966];
+ double aHR[11130];
+ double aIR[10598];
+ double aJR[9810];
+ double aKR[9522];
+ double aLR[8982];
+ double aMR[8786];
+ double aNR[8462];
+ double aOR[8310];
+ double aPR[7982];
+ double aQR[7322];
+ double aRR[6818];
+ double aSR[6506];
+ double aTR[6002];
+ double aUR[5838];
+ double aVR[5502];
+ double aWR[5010];
+ double aXR[4850];
+ double aYR[4296];
+ double aZR[4180];
+
+ double avgAR;
+ double avgBR;
+ double avgCR;
+ double avgDR;
+ double avgER;
+ double avgFR;
+ double avgGR;
+ double avgHR;
+ double avgIR;
+ double avgJR;
+ double avgKR;
+ double avgLR;
+ double avgMR;
+ double avgNR;
+ double avgOR;
+ double avgPR;
+ double avgQR;
+ double avgRR;
+ double avgSR;
+ double avgTR;
+ double avgUR;
+ double avgVR;
+ double avgWR;
+ double avgXR;
+ double avgYR;
+ double avgZR;
+
+ double feedbackR;
+
+ //these are delay lengths and same for both sides
+ int alpA, delayA;
+ int alpB, delayB;
+ int alpC, delayC;
+ int alpD, delayD;
+ int alpE, delayE;
+ int alpF, delayF;
+ int alpG, delayG;
+ int alpH, delayH;
+ int alpI, delayI;
+ int alpJ, delayJ;
+ int alpK, delayK;
+ int alpL, delayL;
+ int alpM, delayM;
+ int alpN, delayN;
+ int alpO, delayO;
+ int alpP, delayP;
+ int alpQ, delayQ;
+ int alpR, delayR;
+ int alpS, delayS;
+ int alpT, delayT;
+ int alpU, delayU;
+ int alpV, delayV;
+ int alpW, delayW;
+ int alpX, delayX;
+ int alpY, delayY;
+ int alpZ, delayZ;
+};
+
+#endif
diff --git a/plugins/LV2/src/MV/MV.ttl b/plugins/LV2/src/MV/MV.ttl
new file mode 100644
index 0000000..7ed93ca
--- /dev/null
+++ b/plugins/LV2/src/MV/MV.ttl
@@ -0,0 +1,76 @@
+# Airwindows MV plugin description
+
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<https://www.airwindows.com/mv>
+ a lv2:Plugin ,
+ lv2:EffectsPlugin ;
+ lv2:project <https://www.airwindows.com> ;
+
+ lv2:optionalFeature lv2:hardRTCapable ;
+
+ # Define the ports for this plugin.
+ lv2:port [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 0 ;
+ lv2:symbol "A" ;
+ lv2:name "Depth" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 1 ;
+ lv2:symbol "B" ;
+ lv2:name "Bright" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 2 ;
+ lv2:symbol "C" ;
+ lv2:name "Regen" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 3 ;
+ lv2:symbol "D" ;
+ lv2:name "Output" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 4 ;
+ lv2:symbol "E" ;
+ lv2:name "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 7 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 8 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/MV/manifest.ttl.in b/plugins/LV2/src/MV/manifest.ttl.in
new file mode 100644
index 0000000..9cfa519
--- /dev/null
+++ b/plugins/LV2/src/MV/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:mv
+ a lv2:Plugin ;
+ doap:name "Airwindows MV" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <MV@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <MV.ttl> .