aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/src/CStrip
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/LV2/src/CStrip')
-rw-r--r--plugins/LV2/src/CStrip/CStrip.cpp184
-rw-r--r--plugins/LV2/src/CStrip/CStrip.h181
-rw-r--r--plugins/LV2/src/CStrip/CStrip.ttl132
-rw-r--r--plugins/LV2/src/CStrip/manifest.ttl.in6
4 files changed, 503 insertions, 0 deletions
diff --git a/plugins/LV2/src/CStrip/CStrip.cpp b/plugins/LV2/src/CStrip/CStrip.cpp
new file mode 100644
index 0000000..7e00208
--- /dev/null
+++ b/plugins/LV2/src/CStrip/CStrip.cpp
@@ -0,0 +1,184 @@
+#include "CStrip.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+CStrip::CStrip(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void CStrip::activate()
+{
+ A = 0.5; //Treble -12 to 12
+ B = 0.5; //Mid -12 to 12
+ C = 0.5; //Bass -12 to 12
+ D = 1.0; //Lowpass 16.0K log 1 to 16 defaulting to 16K
+ E = 0.4; //TrebFrq 6.0 log 1 to 16 defaulting to 6K
+ F = 0.4; //BassFrq 100.0 log 30 to 1600 defaulting to 100 hz
+ G = 0.0; //Hipass 30.0 log 30 to 1600 defaulting to 30
+ H = 0.0; //Gate 0-1
+ I = 0.0; //Compres 0-1
+ J = 0.0; //CompSpd 0-1
+ K = 0.0; //TimeLag 0-1
+ L = 0.5; //OutGain -18 to 18
+
+ lastSampleL = 0.0;
+ last2SampleL = 0.0;
+ lastSampleR = 0.0;
+ last2SampleR = 0.0;
+
+ iirHighSampleLA = 0.0;
+ iirHighSampleLB = 0.0;
+ iirHighSampleLC = 0.0;
+ iirHighSampleLD = 0.0;
+ iirHighSampleLE = 0.0;
+ iirLowSampleLA = 0.0;
+ iirLowSampleLB = 0.0;
+ iirLowSampleLC = 0.0;
+ iirLowSampleLD = 0.0;
+ iirLowSampleLE = 0.0;
+ iirHighSampleL = 0.0;
+ iirLowSampleL = 0.0;
+
+ iirHighSampleRA = 0.0;
+ iirHighSampleRB = 0.0;
+ iirHighSampleRC = 0.0;
+ iirHighSampleRD = 0.0;
+ iirHighSampleRE = 0.0;
+ iirLowSampleRA = 0.0;
+ iirLowSampleRB = 0.0;
+ iirLowSampleRC = 0.0;
+ iirLowSampleRD = 0.0;
+ iirLowSampleRE = 0.0;
+ iirHighSampleR = 0.0;
+ iirLowSampleR = 0.0;
+
+ tripletLA = 0.0;
+ tripletLB = 0.0;
+ tripletLC = 0.0;
+ tripletFactorL = 0.0;
+
+ tripletRA = 0.0;
+ tripletRB = 0.0;
+ tripletRC = 0.0;
+ tripletFactorR = 0.0;
+
+ lowpassSampleLAA = 0.0;
+ lowpassSampleLAB = 0.0;
+ lowpassSampleLBA = 0.0;
+ lowpassSampleLBB = 0.0;
+ lowpassSampleLCA = 0.0;
+ lowpassSampleLCB = 0.0;
+ lowpassSampleLDA = 0.0;
+ lowpassSampleLDB = 0.0;
+ lowpassSampleLE = 0.0;
+ lowpassSampleLF = 0.0;
+ lowpassSampleLG = 0.0;
+
+ lowpassSampleRAA = 0.0;
+ lowpassSampleRAB = 0.0;
+ lowpassSampleRBA = 0.0;
+ lowpassSampleRBB = 0.0;
+ lowpassSampleRCA = 0.0;
+ lowpassSampleRCB = 0.0;
+ lowpassSampleRDA = 0.0;
+ lowpassSampleRDB = 0.0;
+ lowpassSampleRE = 0.0;
+ lowpassSampleRF = 0.0;
+ lowpassSampleRG = 0.0;
+
+ highpassSampleLAA = 0.0;
+ highpassSampleLAB = 0.0;
+ highpassSampleLBA = 0.0;
+ highpassSampleLBB = 0.0;
+ highpassSampleLCA = 0.0;
+ highpassSampleLCB = 0.0;
+ highpassSampleLDA = 0.0;
+ highpassSampleLDB = 0.0;
+ highpassSampleLE = 0.0;
+ highpassSampleLF = 0.0;
+
+ highpassSampleRAA = 0.0;
+ highpassSampleRAB = 0.0;
+ highpassSampleRBA = 0.0;
+ highpassSampleRBB = 0.0;
+ highpassSampleRCA = 0.0;
+ highpassSampleRCB = 0.0;
+ highpassSampleRDA = 0.0;
+ highpassSampleRDB = 0.0;
+ highpassSampleRE = 0.0;
+ highpassSampleRF = 0.0;
+
+ flip = false;
+ flipthree = 0;
+ //end EQ
+
+ //begin Gate
+ WasNegativeL = false;
+ ZeroCrossL = 0;
+ gaterollerL = 0.0;
+ gateL = 0.0;
+
+ WasNegativeR = false;
+ ZeroCrossR = 0;
+ gaterollerR = 0.0;
+ gateR = 0.0;
+ //end Gate
+
+ //begin Timing
+ for(int fcount = 0; fcount < 4098; fcount++) {pL[fcount] = 0.0; pR[fcount] = 0.0;}
+ count = 0;
+ //end Timing
+
+ //begin ButterComp
+ controlAposL = 1.0;
+ controlAnegL = 1.0;
+ controlBposL = 1.0;
+ controlBnegL = 1.0;
+ targetposL = 1.0;
+ targetnegL = 1.0;
+ avgLA = avgLB = 0.0;
+ nvgLA = nvgLB = 0.0;
+
+ controlAposR = 1.0;
+ controlAnegR = 1.0;
+ controlBposR = 1.0;
+ controlBnegR = 1.0;
+ targetposR = 1.0;
+ targetnegR = 1.0;
+ avgRA = avgRB = 0.0;
+ nvgRA = nvgRB = 0.0;
+ //end ButterComp
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void CStrip::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+ E = *params[4];
+ F = *params[5];
+ G = *params[6];
+ H = *params[7];
+ I = *params[8];
+ J = *params[9];
+ K = *params[10];
+ L = *params[11];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/CStrip/CStripProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<CStrip> plugin;
diff --git a/plugins/LV2/src/CStrip/CStrip.h b/plugins/LV2/src/CStrip/CStrip.h
new file mode 100644
index 0000000..548a6ea
--- /dev/null
+++ b/plugins/LV2/src/CStrip/CStrip.h
@@ -0,0 +1,181 @@
+#ifndef __CStrip_H
+#define __CStrip_H
+
+#include <lv2plugin.h>
+
+class CStrip : public LV2Plugin<12> {
+public:
+ CStrip(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/cstrip";
+
+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.
+ */
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ double lastSampleL;
+ double last2SampleL;
+ double lastSampleR;
+ double last2SampleR;
+
+ //begin EQ
+ double iirHighSampleLA;
+ double iirHighSampleLB;
+ double iirHighSampleLC;
+ double iirHighSampleLD;
+ double iirHighSampleLE;
+ double iirLowSampleLA;
+ double iirLowSampleLB;
+ double iirLowSampleLC;
+ double iirLowSampleLD;
+ double iirLowSampleLE;
+ double iirHighSampleL;
+ double iirLowSampleL;
+
+ double iirHighSampleRA;
+ double iirHighSampleRB;
+ double iirHighSampleRC;
+ double iirHighSampleRD;
+ double iirHighSampleRE;
+ double iirLowSampleRA;
+ double iirLowSampleRB;
+ double iirLowSampleRC;
+ double iirLowSampleRD;
+ double iirLowSampleRE;
+ double iirHighSampleR;
+ double iirLowSampleR;
+
+ double tripletLA;
+ double tripletLB;
+ double tripletLC;
+ double tripletFactorL;
+
+ double tripletRA;
+ double tripletRB;
+ double tripletRC;
+ double tripletFactorR;
+
+ double lowpassSampleLAA;
+ double lowpassSampleLAB;
+ double lowpassSampleLBA;
+ double lowpassSampleLBB;
+ double lowpassSampleLCA;
+ double lowpassSampleLCB;
+ double lowpassSampleLDA;
+ double lowpassSampleLDB;
+ double lowpassSampleLE;
+ double lowpassSampleLF;
+ double lowpassSampleLG;
+
+ double lowpassSampleRAA;
+ double lowpassSampleRAB;
+ double lowpassSampleRBA;
+ double lowpassSampleRBB;
+ double lowpassSampleRCA;
+ double lowpassSampleRCB;
+ double lowpassSampleRDA;
+ double lowpassSampleRDB;
+ double lowpassSampleRE;
+ double lowpassSampleRF;
+ double lowpassSampleRG;
+
+ double highpassSampleLAA;
+ double highpassSampleLAB;
+ double highpassSampleLBA;
+ double highpassSampleLBB;
+ double highpassSampleLCA;
+ double highpassSampleLCB;
+ double highpassSampleLDA;
+ double highpassSampleLDB;
+ double highpassSampleLE;
+ double highpassSampleLF;
+
+ double highpassSampleRAA;
+ double highpassSampleRAB;
+ double highpassSampleRBA;
+ double highpassSampleRBB;
+ double highpassSampleRCA;
+ double highpassSampleRCB;
+ double highpassSampleRDA;
+ double highpassSampleRDB;
+ double highpassSampleRE;
+ double highpassSampleRF;
+
+ bool flip;
+ int flipthree;
+ //end EQ
+
+ //begin Gate
+ bool WasNegativeL;
+ int ZeroCrossL;
+ double gaterollerL;
+ double gateL;
+
+ bool WasNegativeR;
+ int ZeroCrossR;
+ double gaterollerR;
+ double gateR;
+ //end Gate
+
+ //begin Timing
+ double pL[4099];
+ double pR[4099];
+ int count;
+ //end Timing
+
+ //begin ButterComp
+ double controlAposL;
+ double controlAnegL;
+ double controlBposL;
+ double controlBnegL;
+ double targetposL;
+ double targetnegL;
+ double avgLA;
+ double avgLB;
+ double nvgLA;
+ double nvgLB;
+
+ double controlAposR;
+ double controlAnegR;
+ double controlBposR;
+ double controlBnegR;
+ double targetposR;
+ double targetnegR;
+ double avgRA;
+ double avgRB;
+ double nvgRA;
+ double nvgRB;
+ //end ButterComp
+ //flip is already covered in EQ
+
+ float A;
+ float B;
+ float C;
+ float D;
+ float E;
+ float F;
+ float G;
+ float H;
+ float I;
+ float J;
+ float K;
+ float L;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/CStrip/CStrip.ttl b/plugins/LV2/src/CStrip/CStrip.ttl
new file mode 100644
index 0000000..6d04848
--- /dev/null
+++ b/plugins/LV2/src/CStrip/CStrip.ttl
@@ -0,0 +1,132 @@
+# Airwindows CStrip 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/cstrip>
+ 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 "Treble" ;
+ 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 "Mid" ;
+ 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 "Bass" ;
+ 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 "Lowpass" ;
+ 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 "TrebFrq" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 5 ;
+ lv2:symbol "F" ;
+ lv2:name "BassFrq" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 6 ;
+ lv2:symbol "G" ;
+ lv2:name "Hipass" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 7 ;
+ lv2:symbol "H" ;
+ lv2:name "Gate" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 8 ;
+ lv2:symbol "I" ;
+ lv2:name "Compres" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 9 ;
+ lv2:symbol "J" ;
+ lv2:name "CompSpd" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 10 ;
+ lv2:symbol "K" ;
+ lv2:name "TimeLag" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 11 ;
+ lv2:symbol "L" ;
+ lv2:name "OutGain" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 12 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 13 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 14 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 15 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/CStrip/manifest.ttl.in b/plugins/LV2/src/CStrip/manifest.ttl.in
new file mode 100644
index 0000000..7733752
--- /dev/null
+++ b/plugins/LV2/src/CStrip/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:cstrip
+ a lv2:Plugin ;
+ doap:name "Airwindows CStrip" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <CStrip@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <CStrip.ttl> .