aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/src/Slew2
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2021-07-31 21:34:28 +0200
committerHarald Eilertsen <haraldei@anduin.net>2021-07-31 21:34:28 +0200
commit1bd34fa795d0eac15d0dc9d4c756f19fc6624872 (patch)
treefdb9bb2e5e20a0adb2953597beafd66aa7c924fc /plugins/LV2/src/Slew2
parent94a6cc3d6c70883e08fd7be16e9405d44bfb94e5 (diff)
downloadairwindows-lv2-port-1bd34fa795d0eac15d0dc9d4c756f19fc6624872.tar.gz
airwindows-lv2-port-1bd34fa795d0eac15d0dc9d4c756f19fc6624872.tar.bz2
airwindows-lv2-port-1bd34fa795d0eac15d0dc9d4c756f19fc6624872.zip
LV2: Port another batch of plugins, EQ - SurgeTide
Some plugins won't compile for various reasons, these have been left out for now. One plugin failed autoporting, so that one's left out too. I have not tested these plugins yet, so no guarantees that they work, or that they work right. Please report any problems or if there's missing control info to the mailing list.
Diffstat (limited to 'plugins/LV2/src/Slew2')
-rw-r--r--plugins/LV2/src/Slew2/Slew2.cpp47
-rw-r--r--plugins/LV2/src/Slew2/Slew2.h67
-rw-r--r--plugins/LV2/src/Slew2/Slew2.ttl44
-rw-r--r--plugins/LV2/src/Slew2/manifest.ttl.in6
4 files changed, 164 insertions, 0 deletions
diff --git a/plugins/LV2/src/Slew2/Slew2.cpp b/plugins/LV2/src/Slew2/Slew2.cpp
new file mode 100644
index 0000000..ad79c99
--- /dev/null
+++ b/plugins/LV2/src/Slew2/Slew2.cpp
@@ -0,0 +1,47 @@
+#include "Slew2.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Slew2::Slew2(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Slew2::activate()
+{
+ A = 0.0;
+
+ LataLast3Sample = LataLast2Sample = LataLast1Sample = 0.0;
+ LataHalfwaySample = LataHalfDrySample = LataHalfDiffSample = 0.0;
+ LataA = LataB = LataC = LataDrySample = LataDiffSample = LataPrevDiffSample = 0.0;
+ LataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling
+ LataDecay = 0.915965594177219015; //Catalan's constant, more adds focus and clarity
+ lastSampleL = 0.0;
+
+ RataLast3Sample = RataLast2Sample = RataLast1Sample = 0.0;
+ RataHalfwaySample = RataHalfDrySample = RataHalfDiffSample = 0.0;
+ RataA = RataB = RataC = RataDrySample = RataDiffSample = RataPrevDiffSample = 0.0;
+ RataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling
+ RataDecay = 0.915965594177219015; //CRatalan's constant, more adds focus and clarity
+ LataFlip = false; //end reset of antialias parameters
+ RataFlip = false; //end reset of antialias parameters
+ lastSampleR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Slew2::run(uint32_t num_samples)
+{
+ A = *params[0];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Slew2/Slew2Proc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Slew2> plugin;
diff --git a/plugins/LV2/src/Slew2/Slew2.h b/plugins/LV2/src/Slew2/Slew2.h
new file mode 100644
index 0000000..ac6c0a4
--- /dev/null
+++ b/plugins/LV2/src/Slew2/Slew2.h
@@ -0,0 +1,67 @@
+#ifndef __Slew2_H
+#define __Slew2_H
+
+#include <lv2plugin.h>
+
+class Slew2 : public LV2Plugin<1> {
+public:
+ Slew2(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/slew2";
+
+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.
+ */
+
+ double LataLast3Sample;
+ double LataLast2Sample;
+ double LataLast1Sample;
+ double LataHalfwaySample;
+ double LataHalfDrySample;
+ double LataHalfDiffSample;
+ double LataA;
+ double LataB;
+ double LataC;
+ double LataDecay;
+ double LataUpsampleHighTweak;
+ double LataDrySample;
+ double LataDiffSample;
+ double LataPrevDiffSample;
+
+ double RataLast3Sample;
+ double RataLast2Sample;
+ double RataLast1Sample;
+ double RataHalfwaySample;
+ double RataHalfDrySample;
+ double RataHalfDiffSample;
+ double RataA;
+ double RataB;
+ double RataC;
+ double RataDecay;
+ double RataUpsampleHighTweak;
+ double RataDrySample;
+ double RataDiffSample;
+ double RataPrevDiffSample;
+
+ bool LataFlip; //end defining of antialiasing variables
+ bool RataFlip; //end defining of antialiasing variables
+
+ double lastSampleL;
+ double lastSampleR;
+
+ float A;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/Slew2/Slew2.ttl b/plugins/LV2/src/Slew2/Slew2.ttl
new file mode 100644
index 0000000..5f3d56d
--- /dev/null
+++ b/plugins/LV2/src/Slew2/Slew2.ttl
@@ -0,0 +1,44 @@
+# Airwindows Slew2 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/slew2>
+ a lv2:Plugin ,
+ lv2:EQPlugin ;
+ 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 "Clamping" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 1 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Slew2/manifest.ttl.in b/plugins/LV2/src/Slew2/manifest.ttl.in
new file mode 100644
index 0000000..28adb42
--- /dev/null
+++ b/plugins/LV2/src/Slew2/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:slew2
+ a lv2:Plugin ;
+ doap:name "Airwindows Slew2" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Slew2@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Slew2.ttl> .