aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/src/Energy
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/LV2/src/Energy')
-rw-r--r--plugins/LV2/src/Energy/Energy.cpp188
-rw-r--r--plugins/LV2/src/Energy/Energy.h189
-rw-r--r--plugins/LV2/src/Energy/Energy.ttl108
-rw-r--r--plugins/LV2/src/Energy/manifest.ttl.in6
4 files changed, 491 insertions, 0 deletions
diff --git a/plugins/LV2/src/Energy/Energy.cpp b/plugins/LV2/src/Energy/Energy.cpp
new file mode 100644
index 0000000..2613fd2
--- /dev/null
+++ b/plugins/LV2/src/Energy/Energy.cpp
@@ -0,0 +1,188 @@
+#include "Energy.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Energy::Energy(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Energy::activate()
+{
+ A = 0.5;
+ B = 0.5;
+ C = 0.5;
+ D = 0.5;
+ E = 0.5;
+ F = 0.5;
+ G = 0.5;
+ H = 0.5;
+ I = 1.0;
+
+ duoEvenL = 0.0;
+ duoOddL = 0.0;
+ duoFactorL = 0.0;
+ duoEvenR = 0.0;
+ duoOddR = 0.0;
+ duoFactorR = 0.0;
+ flip = false;
+
+ tripletAL = 0.0;
+ tripletBL = 0.0;
+ tripletCL = 0.0;
+ tripletFactorL = 0.0;
+ tripletAR = 0.0;
+ tripletBR = 0.0;
+ tripletCR = 0.0;
+ tripletFactorR = 0.0;
+ countA = 1;
+
+ quadAL = 0.0;
+ quadBL = 0.0;
+ quadCL = 0.0;
+ quadDL = 0.0;
+ quadFactorL = 0.0;
+ quadAR = 0.0;
+ quadBR = 0.0;
+ quadCR = 0.0;
+ quadDR = 0.0;
+ quadFactorR = 0.0;
+ countB = 1;
+
+ quintAL = 0.0;
+ quintBL = 0.0;
+ quintCL = 0.0;
+ quintDL = 0.0;
+ quintEL = 0.0;
+ quintFactorL = 0.0;
+ quintAR = 0.0;
+ quintBR = 0.0;
+ quintCR = 0.0;
+ quintDR = 0.0;
+ quintER = 0.0;
+ quintFactorR = 0.0;
+ countC = 1;
+
+ sextAL = 0.0;
+ sextBL = 0.0;
+ sextCL = 0.0;
+ sextDL = 0.0;
+ sextEL = 0.0;
+ sextFL = 0.0;
+ sextFactorL = 0.0;
+ sextAR = 0.0;
+ sextBR = 0.0;
+ sextCR = 0.0;
+ sextDR = 0.0;
+ sextER = 0.0;
+ sextFR = 0.0;
+ sextFactorR = 0.0;
+ countD = 1;
+
+ septAL = 0.0;
+ septBL = 0.0;
+ septCL = 0.0;
+ septDL = 0.0;
+ septEL = 0.0;
+ septFL = 0.0;
+ septGL = 0.0;
+ septFactorL = 0.0;
+ septAR = 0.0;
+ septBR = 0.0;
+ septCR = 0.0;
+ septDR = 0.0;
+ septER = 0.0;
+ septFR = 0.0;
+ septGR = 0.0;
+ septFactorR = 0.0;
+ countE = 1;
+
+ octAL = 0.0;
+ octBL = 0.0;
+ octCL = 0.0;
+ octDL = 0.0;
+ octEL = 0.0;
+ octFL = 0.0;
+ octGL = 0.0;
+ octHL = 0.0;
+ octFactorL = 0.0;
+ octAR = 0.0;
+ octBR = 0.0;
+ octCR = 0.0;
+ octDR = 0.0;
+ octER = 0.0;
+ octFR = 0.0;
+ octGR = 0.0;
+ octHR = 0.0;
+ octFactorR = 0.0;
+ countF = 1;
+
+ nintAL = 0.0;
+ nintBL = 0.0;
+ nintCL = 0.0;
+ nintDL = 0.0;
+ nintEL = 0.0;
+ nintFL = 0.0;
+ nintGL = 0.0;
+ nintHL = 0.0;
+ nintIL = 0.0;
+ nintFactorL = 0.0;
+ nintAR = 0.0;
+ nintBR = 0.0;
+ nintCR = 0.0;
+ nintDR = 0.0;
+ nintER = 0.0;
+ nintFR = 0.0;
+ nintGR = 0.0;
+ nintHR = 0.0;
+ nintIR = 0.0;
+ nintFactorR = 0.0;
+ countG = 1;
+
+ PrevHL = 0.0;
+ PrevGL = 0.0;
+ PrevFL = 0.0;
+ PrevEL = 0.0;
+ PrevDL = 0.0;
+ PrevCL = 0.0;
+ PrevBL = 0.0;
+ PrevAL = 0.0;
+ PrevHR = 0.0;
+ PrevGR = 0.0;
+ PrevFR = 0.0;
+ PrevER = 0.0;
+ PrevDR = 0.0;
+ PrevCR = 0.0;
+ PrevBR = 0.0;
+ PrevAR = 0.0;
+
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Energy::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];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Energy/EnergyProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Energy> plugin;
diff --git a/plugins/LV2/src/Energy/Energy.h b/plugins/LV2/src/Energy/Energy.h
new file mode 100644
index 0000000..e489585
--- /dev/null
+++ b/plugins/LV2/src/Energy/Energy.h
@@ -0,0 +1,189 @@
+#ifndef __Energy_H
+#define __Energy_H
+
+#include <lv2plugin.h>
+
+class Energy : public LV2Plugin<9> {
+public:
+ Energy(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/energy";
+
+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 duoEvenL;
+ double duoOddL;
+ double duoFactorL;
+ bool flip;
+
+ double tripletAL;
+ double tripletBL;
+ double tripletCL;
+ double tripletFactorL;
+ int countA;
+
+ double quadAL;
+ double quadBL;
+ double quadCL;
+ double quadDL;
+ double quadFactorL;
+ int countB;
+
+ double quintAL;
+ double quintBL;
+ double quintCL;
+ double quintDL;
+ double quintEL;
+ double quintFactorL;
+ int countC;
+
+ double sextAL;
+ double sextBL;
+ double sextCL;
+ double sextDL;
+ double sextEL;
+ double sextFL;
+ double sextFactorL;
+ int countD;
+
+ double septAL;
+ double septBL;
+ double septCL;
+ double septDL;
+ double septEL;
+ double septFL;
+ double septGL;
+ double septFactorL;
+ int countE;
+
+ double octAL;
+ double octBL;
+ double octCL;
+ double octDL;
+ double octEL;
+ double octFL;
+ double octGL;
+ double octHL;
+ double octFactorL;
+ int countF;
+
+ double nintAL;
+ double nintBL;
+ double nintCL;
+ double nintDL;
+ double nintEL;
+ double nintFL;
+ double nintGL;
+ double nintHL;
+ double nintIL;
+ double nintFactorL;
+ int countG;
+
+ double PrevHL;
+ double PrevGL;
+ double PrevFL;
+ double PrevEL;
+ double PrevDL;
+ double PrevCL;
+ double PrevBL;
+ double PrevAL;
+
+ double duoEvenR;
+ double duoOddR;
+ double duoFactorR;
+
+ double tripletAR;
+ double tripletBR;
+ double tripletCR;
+ double tripletFactorR;
+
+ double quadAR;
+ double quadBR;
+ double quadCR;
+ double quadDR;
+ double quadFactorR;
+
+ double quintAR;
+ double quintBR;
+ double quintCR;
+ double quintDR;
+ double quintER;
+ double quintFactorR;
+
+ double sextAR;
+ double sextBR;
+ double sextCR;
+ double sextDR;
+ double sextER;
+ double sextFR;
+ double sextFactorR;
+
+ double septAR;
+ double septBR;
+ double septCR;
+ double septDR;
+ double septER;
+ double septFR;
+ double septGR;
+ double septFactorR;
+
+ double octAR;
+ double octBR;
+ double octCR;
+ double octDR;
+ double octER;
+ double octFR;
+ double octGR;
+ double octHR;
+ double octFactorR;
+
+ double nintAR;
+ double nintBR;
+ double nintCR;
+ double nintDR;
+ double nintER;
+ double nintFR;
+ double nintGR;
+ double nintHR;
+ double nintIR;
+ double nintFactorR;
+
+ double PrevHR;
+ double PrevGR;
+ double PrevFR;
+ double PrevER;
+ double PrevDR;
+ double PrevCR;
+ double PrevBR;
+ double PrevAR;
+
+ float A;
+ float B;
+ float C;
+ float D;
+ float E;
+ float F;
+ float G;
+ float H;
+ float I;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/Energy/Energy.ttl b/plugins/LV2/src/Energy/Energy.ttl
new file mode 100644
index 0000000..df5e9fc
--- /dev/null
+++ b/plugins/LV2/src/Energy/Energy.ttl
@@ -0,0 +1,108 @@
+# Airwindows Energy 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/energy>
+ 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 "Hiss" ;
+ 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 "Glitter" ;
+ 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 "Rat" ;
+ 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 "Fizz" ;
+ 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 "Scrape" ;
+ 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 "Chug" ;
+ 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 "Yowr" ;
+ 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 "Snarl" ;
+ 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 "I/Dr/Wt" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 9 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 10 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 11 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 12 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Energy/manifest.ttl.in b/plugins/LV2/src/Energy/manifest.ttl.in
new file mode 100644
index 0000000..f471bc2
--- /dev/null
+++ b/plugins/LV2/src/Energy/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:energy
+ a lv2:Plugin ;
+ doap:name "Airwindows Energy" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Energy@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Energy.ttl> .