aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2021-04-03 21:11:50 +0200
committerHarald Eilertsen <haraldei@anduin.net>2021-04-03 21:34:22 +0200
commit42b16a0e9989acec15d0129a8f5275ac3af8a570 (patch)
tree16f539b3ae3f0fe46045caf527a617944656ec47
parent17250447334e6fefcf4b6bc803c0bae8d44850dd (diff)
downloadairwindows-lv2-port-42b16a0e9989acec15d0129a8f5275ac3af8a570.tar.gz
airwindows-lv2-port-42b16a0e9989acec15d0129a8f5275ac3af8a570.tar.bz2
airwindows-lv2-port-42b16a0e9989acec15d0129a8f5275ac3af8a570.zip
LV2: Big batch of plugins, all of 'D'
-rwxr-xr-xplugins/LV2/CMakeLists.txt52
-rw-r--r--plugins/LV2/manifest.ttl.in182
-rw-r--r--plugins/LV2/src/DCVoltage/DCVoltage.cpp31
-rw-r--r--plugins/LV2/src/DCVoltage/DCVoltage.h30
-rw-r--r--plugins/LV2/src/DCVoltage/DCVoltage.ttl44
-rw-r--r--plugins/LV2/src/DCVoltage/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Dark/Dark.cpp38
-rw-r--r--plugins/LV2/src/Dark/Dark.h36
-rw-r--r--plugins/LV2/src/Dark/Dark.ttl52
-rw-r--r--plugins/LV2/src/Dark/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DeBess/DeBess.cpp52
-rw-r--r--plugins/LV2/src/DeBess/DeBess.h52
-rw-r--r--plugins/LV2/src/DeBess/DeBess.ttl76
-rw-r--r--plugins/LV2/src/DeBess/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DeEss/DeEss.cpp54
-rw-r--r--plugins/LV2/src/DeEss/DeEss.h85
-rw-r--r--plugins/LV2/src/DeEss/DeEss.ttl60
-rw-r--r--plugins/LV2/src/DeEss/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DeHiss/DeHiss.cpp45
-rw-r--r--plugins/LV2/src/DeHiss/DeHiss.h43
-rw-r--r--plugins/LV2/src/DeHiss/DeHiss.ttl52
-rw-r--r--plugins/LV2/src/DeHiss/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DeRez/DeRez.cpp44
-rw-r--r--plugins/LV2/src/DeRez/DeRez.h43
-rw-r--r--plugins/LV2/src/DeRez/DeRez.ttl52
-rw-r--r--plugins/LV2/src/DeRez/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DeRez2/DeRez2.cpp51
-rw-r--r--plugins/LV2/src/DeRez2/DeRez2.h51
-rw-r--r--plugins/LV2/src/DeRez2/DeRez2.ttl68
-rw-r--r--plugins/LV2/src/DeRez2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Deckwrecka/Deckwrecka.cpp96
-rw-r--r--plugins/LV2/src/Deckwrecka/Deckwrecka.h97
-rw-r--r--plugins/LV2/src/Deckwrecka/Deckwrecka.ttl44
-rw-r--r--plugins/LV2/src/Deckwrecka/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Density/Density.cpp44
-rw-r--r--plugins/LV2/src/Density/Density.h42
-rw-r--r--plugins/LV2/src/Density/Density.ttl68
-rw-r--r--plugins/LV2/src/Density/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Desk/Desk.cpp38
-rw-r--r--plugins/LV2/src/Desk/Desk.h40
-rw-r--r--plugins/LV2/src/Desk/Desk.ttl38
-rw-r--r--plugins/LV2/src/Desk/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Desk4/Desk4.cpp55
-rw-r--r--plugins/LV2/src/Desk4/Desk4.h52
-rw-r--r--plugins/LV2/src/Desk4/Desk4.ttl84
-rw-r--r--plugins/LV2/src/Desk4/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DigitalBlack/DigitalBlack.cpp40
-rw-r--r--plugins/LV2/src/DigitalBlack/DigitalBlack.h40
-rw-r--r--plugins/LV2/src/DigitalBlack/DigitalBlack.ttl52
-rw-r--r--plugins/LV2/src/DigitalBlack/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Distance/Distance.cpp37
-rw-r--r--plugins/LV2/src/Distance/Distance.h49
-rw-r--r--plugins/LV2/src/Distance/Distance.ttl52
-rw-r--r--plugins/LV2/src/Distance/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Distance2/Distance2.cpp83
-rw-r--r--plugins/LV2/src/Distance2/Distance2.h84
-rw-r--r--plugins/LV2/src/Distance2/Distance2.ttl60
-rw-r--r--plugins/LV2/src/Distance2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Distortion/Distortion.cpp42
-rw-r--r--plugins/LV2/src/Distortion/Distortion.h41
-rw-r--r--plugins/LV2/src/Distortion/Distortion.ttl74
-rw-r--r--plugins/LV2/src/Distortion/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DitherFloat/DitherFloat.cpp34
-rw-r--r--plugins/LV2/src/DitherFloat/DitherFloat.h34
-rw-r--r--plugins/LV2/src/DitherFloat/DitherFloat.ttl52
-rw-r--r--plugins/LV2/src/DitherFloat/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.cpp36
-rw-r--r--plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.h35
-rw-r--r--plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.ttl38
-rw-r--r--plugins/LV2/src/DitherMeDiskers/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.cpp36
-rw-r--r--plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.h35
-rw-r--r--plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.ttl38
-rw-r--r--plugins/LV2/src/DitherMeTimbers/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Ditherbox/Ditherbox.cpp157
-rw-r--r--plugins/LV2/src/Ditherbox/Ditherbox.h105
-rw-r--r--plugins/LV2/src/Ditherbox/Ditherbox.ttl70
-rw-r--r--plugins/LV2/src/Ditherbox/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DoublePaul/DoublePaul.cpp31
-rw-r--r--plugins/LV2/src/DoublePaul/DoublePaul.h32
-rw-r--r--plugins/LV2/src/DoublePaul/DoublePaul.ttl38
-rw-r--r--plugins/LV2/src/DoublePaul/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Drive/Drive.cpp44
-rw-r--r--plugins/LV2/src/Drive/Drive.h42
-rw-r--r--plugins/LV2/src/Drive/Drive.ttl68
-rw-r--r--plugins/LV2/src/Drive/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DrumSlam/DrumSlam.cpp58
-rw-r--r--plugins/LV2/src/DrumSlam/DrumSlam.h59
-rw-r--r--plugins/LV2/src/DrumSlam/DrumSlam.ttl60
-rw-r--r--plugins/LV2/src/DrumSlam/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DubCenter/DubCenter.cpp109
-rw-r--r--plugins/LV2/src/DubCenter/DubCenter.h100
-rw-r--r--plugins/LV2/src/DubCenter/DubCenter.ttl116
-rw-r--r--plugins/LV2/src/DubCenter/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DubSub/DubSub.cpp147
-rw-r--r--plugins/LV2/src/DubSub/DubSub.h142
-rw-r--r--plugins/LV2/src/DubSub/DubSub.ttl116
-rw-r--r--plugins/LV2/src/DubSub/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/DustBunny/DustBunny.cpp45
-rw-r--r--plugins/LV2/src/DustBunny/DustBunny.h63
-rw-r--r--plugins/LV2/src/DustBunny/DustBunny.ttl44
-rw-r--r--plugins/LV2/src/DustBunny/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Dyno/Dyno.cpp32
-rw-r--r--plugins/LV2/src/Dyno/Dyno.h33
-rw-r--r--plugins/LV2/src/Dyno/Dyno.ttl44
-rw-r--r--plugins/LV2/src/Dyno/manifest.ttl.in6
106 files changed, 4868 insertions, 26 deletions
diff --git a/plugins/LV2/CMakeLists.txt b/plugins/LV2/CMakeLists.txt
index c2a9cdb..0f7e489 100755
--- a/plugins/LV2/CMakeLists.txt
+++ b/plugins/LV2/CMakeLists.txt
@@ -68,32 +68,32 @@ add_airwindows_plugin(CrunchyGrooveWear)
add_airwindows_plugin(Crystal)
add_airwindows_plugin(CStrip)
add_airwindows_plugin(curve)
-# add_airwindows_plugin(Dark)
-# add_airwindows_plugin(DCVoltage)
-# add_airwindows_plugin(Deckwrecka)
-# add_airwindows_plugin(DeBess)
-# add_airwindows_plugin(DeEss)
-# add_airwindows_plugin(DeHiss)
-# add_airwindows_plugin(Density)
-# add_airwindows_plugin(DeRez)
-# add_airwindows_plugin(DeRez2)
-# add_airwindows_plugin(Desk)
-# add_airwindows_plugin(Desk4)
-# add_airwindows_plugin(DigitalBlack)
-# add_airwindows_plugin(Distance)
-# add_airwindows_plugin(Distance2)
-# add_airwindows_plugin(Distortion)
-# add_airwindows_plugin(DoublePaul)
-# add_airwindows_plugin(Ditherbox)
-# add_airwindows_plugin(DitherFloat)
-# add_airwindows_plugin(DitherMeDiskers)
-# add_airwindows_plugin(DitherMeTimbers)
-# add_airwindows_plugin(Drive)
-# add_airwindows_plugin(DrumSlam)
-# add_airwindows_plugin(DubCenter)
-# add_airwindows_plugin(DubSub)
-# add_airwindows_plugin(DustBunny)
-# add_airwindows_plugin(Dyno)
+add_airwindows_plugin(Dark)
+add_airwindows_plugin(DCVoltage)
+add_airwindows_plugin(Deckwrecka)
+add_airwindows_plugin(DeBess)
+add_airwindows_plugin(DeEss)
+add_airwindows_plugin(DeHiss)
+add_airwindows_plugin(Density)
+add_airwindows_plugin(DeRez)
+add_airwindows_plugin(DeRez2)
+add_airwindows_plugin(Desk)
+add_airwindows_plugin(Desk4)
+add_airwindows_plugin(DigitalBlack)
+add_airwindows_plugin(Distance)
+add_airwindows_plugin(Distance2)
+add_airwindows_plugin(Distortion)
+add_airwindows_plugin(DoublePaul)
+add_airwindows_plugin(Ditherbox)
+add_airwindows_plugin(DitherFloat)
+add_airwindows_plugin(DitherMeDiskers)
+add_airwindows_plugin(DitherMeTimbers)
+add_airwindows_plugin(Drive)
+add_airwindows_plugin(DrumSlam)
+add_airwindows_plugin(DubCenter)
+add_airwindows_plugin(DubSub)
+add_airwindows_plugin(DustBunny)
+add_airwindows_plugin(Dyno)
# add_airwindows_plugin(EQ)
# add_airwindows_plugin(EdIsDim)
# add_airwindows_plugin(Elation)
diff --git a/plugins/LV2/manifest.ttl.in b/plugins/LV2/manifest.ttl.in
index 521a596..072d235 100644
--- a/plugins/LV2/manifest.ttl.in
+++ b/plugins/LV2/manifest.ttl.in
@@ -395,3 +395,185 @@ airwindows:curve
doap:license <http://opensource.org/licenses/mit> ;
lv2:binary <curve@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
rdfs:seeAlso <curve.ttl> .
+
+airwindows:dcvoltage
+ a lv2:Plugin ;
+ doap:name "Airwindows DCVoltage" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DCVoltage@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DCVoltage.ttl> .
+
+airwindows:dark
+ a lv2:Plugin ;
+ doap:name "Airwindows Dark" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Dark@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Dark.ttl> .
+
+airwindows:debess
+ a lv2:Plugin ;
+ doap:name "Airwindows DeBess" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeBess@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeBess.ttl> .
+
+airwindows:deess
+ a lv2:Plugin ;
+ doap:name "Airwindows DeEss" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeEss@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeEss.ttl> .
+
+airwindows:dehiss
+ a lv2:Plugin ;
+ doap:name "Airwindows DeHiss" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeHiss@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeHiss.ttl> .
+
+airwindows:derez
+ a lv2:Plugin ;
+ doap:name "Airwindows DeRez" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeRez@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeRez.ttl> .
+
+airwindows:derez2
+ a lv2:Plugin ;
+ doap:name "Airwindows DeRez2" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeRez2@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeRez2.ttl> .
+
+airwindows:deckwrecka
+ a lv2:Plugin ;
+ doap:name "Airwindows Deckwrecka" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Deckwrecka@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Deckwrecka.ttl> .
+
+airwindows:density
+ a lv2:Plugin ;
+ doap:name "Airwindows Density" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Density@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Density.ttl> .
+
+airwindows:desk
+ a lv2:Plugin ;
+ doap:name "Airwindows Desk" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Desk@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Desk.ttl> .
+
+airwindows:desk4
+ a lv2:Plugin ;
+ doap:name "Airwindows Desk4" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Desk4@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Desk4.ttl> .
+
+airwindows:digitalblack
+ a lv2:Plugin ;
+ doap:name "Airwindows DigitalBlack" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DigitalBlack@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DigitalBlack.ttl> .
+
+airwindows:distance
+ a lv2:Plugin ;
+ doap:name "Airwindows Distance" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Distance@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Distance.ttl> .
+
+airwindows:distance2
+ a lv2:Plugin ;
+ doap:name "Airwindows Distance2" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Distance2@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Distance2.ttl> .
+
+airwindows:distortion
+ a lv2:Plugin ;
+ doap:name "Airwindows Distortion" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Distortion@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Distortion.ttl> .
+
+airwindows:ditherfloat
+ a lv2:Plugin ;
+ doap:name "Airwindows DitherFloat" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DitherFloat@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DitherFloat.ttl> .
+
+airwindows:dithermediskers
+ a lv2:Plugin ;
+ doap:name "Airwindows DitherMeDiskers" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DitherMeDiskers@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DitherMeDiskers.ttl> .
+
+airwindows:dithermetimbers
+ a lv2:Plugin ;
+ doap:name "Airwindows DitherMeTimbers" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DitherMeTimbers@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DitherMeTimbers.ttl> .
+
+airwindows:ditherbox
+ a lv2:Plugin ;
+ doap:name "Airwindows Ditherbox" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Ditherbox@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Ditherbox.ttl> .
+
+airwindows:doublepaul
+ a lv2:Plugin ;
+ doap:name "Airwindows DoublePaul" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DoublePaul@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DoublePaul.ttl> .
+
+airwindows:drive
+ a lv2:Plugin ;
+ doap:name "Airwindows Drive" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Drive@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Drive.ttl> .
+
+airwindows:drumslam
+ a lv2:Plugin ;
+ doap:name "Airwindows DrumSlam" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DrumSlam@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DrumSlam.ttl> .
+
+airwindows:dubcenter
+ a lv2:Plugin ;
+ doap:name "Airwindows DubCenter" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DubCenter@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DubCenter.ttl> .
+
+airwindows:dubsub
+ a lv2:Plugin ;
+ doap:name "Airwindows DubSub" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DubSub@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DubSub.ttl> .
+
+airwindows:dustbunny
+ a lv2:Plugin ;
+ doap:name "Airwindows DustBunny" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DustBunny@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DustBunny.ttl> .
+
+airwindows:dyno
+ a lv2:Plugin ;
+ doap:name "Airwindows Dyno" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Dyno@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Dyno.ttl> .
diff --git a/plugins/LV2/src/DCVoltage/DCVoltage.cpp b/plugins/LV2/src/DCVoltage/DCVoltage.cpp
new file mode 100644
index 0000000..06c84fe
--- /dev/null
+++ b/plugins/LV2/src/DCVoltage/DCVoltage.cpp
@@ -0,0 +1,31 @@
+#include "DCVoltage.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DCVoltage::DCVoltage(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DCVoltage::activate()
+{
+ A = 0.5;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DCVoltage::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/DCVoltage/DCVoltageProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DCVoltage> plugin;
diff --git a/plugins/LV2/src/DCVoltage/DCVoltage.h b/plugins/LV2/src/DCVoltage/DCVoltage.h
new file mode 100644
index 0000000..587b8c5
--- /dev/null
+++ b/plugins/LV2/src/DCVoltage/DCVoltage.h
@@ -0,0 +1,30 @@
+#ifndef __DCVoltage_H
+#define __DCVoltage_H
+
+#include <lv2plugin.h>
+
+class DCVoltage : public LV2Plugin<1> {
+public:
+ DCVoltage(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dcvoltage";
+
+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.
+ */
+
+ float A;
+};
+
+#endif
diff --git a/plugins/LV2/src/DCVoltage/DCVoltage.ttl b/plugins/LV2/src/DCVoltage/DCVoltage.ttl
new file mode 100644
index 0000000..80fd8f4
--- /dev/null
+++ b/plugins/LV2/src/DCVoltage/DCVoltage.ttl
@@ -0,0 +1,44 @@
+# Airwindows DCVoltage 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/dcvoltage>
+ a lv2:Plugin ,
+ lv2:UtilityPlugin ;
+ 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 "Voltage" ;
+ 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/DCVoltage/manifest.ttl.in b/plugins/LV2/src/DCVoltage/manifest.ttl.in
new file mode 100644
index 0000000..d87c38a
--- /dev/null
+++ b/plugins/LV2/src/DCVoltage/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dcvoltage
+ a lv2:Plugin ;
+ doap:name "Airwindows DCVoltage" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DCVoltage@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DCVoltage.ttl> .
diff --git a/plugins/LV2/src/Dark/Dark.cpp b/plugins/LV2/src/Dark/Dark.cpp
new file mode 100644
index 0000000..abaf5d5
--- /dev/null
+++ b/plugins/LV2/src/Dark/Dark.cpp
@@ -0,0 +1,38 @@
+#include "Dark.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Dark::Dark(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Dark::activate()
+{
+ A = 1.0;
+ B = 0.0;
+ fpd = 17;
+ for(int count = 0; count < 99; count++) {
+ lastSampleL[count] = 0;
+ lastSampleR[count] = 0;
+ }
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Dark::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Dark/DarkProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Dark> plugin;
diff --git a/plugins/LV2/src/Dark/Dark.h b/plugins/LV2/src/Dark/Dark.h
new file mode 100644
index 0000000..674872c
--- /dev/null
+++ b/plugins/LV2/src/Dark/Dark.h
@@ -0,0 +1,36 @@
+#ifndef __Dark_H
+#define __Dark_H
+
+#include <lv2plugin.h>
+
+class Dark : public LV2Plugin<2> {
+public:
+ Dark(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dark";
+
+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.
+ */
+
+ float lastSampleL[100];
+ float lastSampleR[100];
+ uint32_t fpd;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/LV2/src/Dark/Dark.ttl b/plugins/LV2/src/Dark/Dark.ttl
new file mode 100644
index 0000000..70e6ada
--- /dev/null
+++ b/plugins/LV2/src/Dark/Dark.ttl
@@ -0,0 +1,52 @@
+# Airwindows Dark 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/dark>
+ 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 "Quant" ;
+ 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 "DeRez" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Dark/manifest.ttl.in b/plugins/LV2/src/Dark/manifest.ttl.in
new file mode 100644
index 0000000..6d571db
--- /dev/null
+++ b/plugins/LV2/src/Dark/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dark
+ a lv2:Plugin ;
+ doap:name "Airwindows Dark" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Dark@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Dark.ttl> .
diff --git a/plugins/LV2/src/DeBess/DeBess.cpp b/plugins/LV2/src/DeBess/DeBess.cpp
new file mode 100644
index 0000000..a1a14e5
--- /dev/null
+++ b/plugins/LV2/src/DeBess/DeBess.cpp
@@ -0,0 +1,52 @@
+#include "DeBess.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DeBess::DeBess(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DeBess::activate()
+{
+ A = 0.0;
+ B = 0.5;
+ C = 0.5;
+ D = 0.5;
+ E = 0.0;
+ for (int x = 0; x < 41; x++) {
+ sL[x] = 0.0; mL[x] = 0.0; cL[x] = 0.0;
+ sR[x] = 0.0; mR[x] = 0.0; cR[x] = 0.0;
+ }
+ ratioAL = ratioBL = 1.0;
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ ratioAR = ratioBR = 1.0;
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+
+ flip = false;
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DeBess::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/DeBess/DeBessProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DeBess> plugin;
diff --git a/plugins/LV2/src/DeBess/DeBess.h b/plugins/LV2/src/DeBess/DeBess.h
new file mode 100644
index 0000000..e7e2438
--- /dev/null
+++ b/plugins/LV2/src/DeBess/DeBess.h
@@ -0,0 +1,52 @@
+#ifndef __DeBess_H
+#define __DeBess_H
+
+#include <lv2plugin.h>
+
+class DeBess : public LV2Plugin<5> {
+public:
+ DeBess(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/debess";
+
+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 sL[41], mL[41], cL[41];
+ double ratioAL;
+ double ratioBL;
+ double iirSampleAL;
+ double iirSampleBL;
+
+ long double sR[41], mR[41], cR[41];
+ double ratioAR;
+ double ratioBR;
+ double iirSampleAR;
+ double iirSampleBR;
+
+
+ bool flip;
+ 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.
+
+};
+
+#endif
diff --git a/plugins/LV2/src/DeBess/DeBess.ttl b/plugins/LV2/src/DeBess/DeBess.ttl
new file mode 100644
index 0000000..7fc338b
--- /dev/null
+++ b/plugins/LV2/src/DeBess/DeBess.ttl
@@ -0,0 +1,76 @@
+# Airwindows DeBess 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/debess>
+ 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 "Intense" ;
+ 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 "Sharp" ;
+ 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 "Depth" ;
+ 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 "Filter" ;
+ 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 "Sense" ;
+ 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/DeBess/manifest.ttl.in b/plugins/LV2/src/DeBess/manifest.ttl.in
new file mode 100644
index 0000000..877119e
--- /dev/null
+++ b/plugins/LV2/src/DeBess/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:debess
+ a lv2:Plugin ;
+ doap:name "Airwindows DeBess" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeBess@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeBess.ttl> .
diff --git a/plugins/LV2/src/DeEss/DeEss.cpp b/plugins/LV2/src/DeEss/DeEss.cpp
new file mode 100644
index 0000000..c6e8e60
--- /dev/null
+++ b/plugins/LV2/src/DeEss/DeEss.cpp
@@ -0,0 +1,54 @@
+#include "DeEss.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DeEss::DeEss(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DeEss::activate()
+{
+ A = 0.0;
+ B = 0.5; //-48.0 to 0.0
+ C = 0.5;
+
+ s1L = s2L = s3L = s4L = s5L = s6L= s7L = 0.0;
+ m1L = m2L = m3L = m4L = m5L = m6L = 0.0;
+ c1L = c2L = c3L = c4L = c5L = 0.0;
+ ratioAL = ratioBL = 1.0;
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+
+ s1R = s2R = s3R = s4R = s5R = s6R = s7R = 0.0;
+ m1R = m2R = m3R = m4R = m5R = m6R = 0.0;
+ c1R = c2R = c3R = c4R = c5R = 0.0;
+ ratioAR = ratioBR = 1.0;
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+
+ flip = false;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DeEss::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DeEss/DeEssProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DeEss> plugin;
diff --git a/plugins/LV2/src/DeEss/DeEss.h b/plugins/LV2/src/DeEss/DeEss.h
new file mode 100644
index 0000000..b3c2d4e
--- /dev/null
+++ b/plugins/LV2/src/DeEss/DeEss.h
@@ -0,0 +1,85 @@
+#ifndef __DeEss_H
+#define __DeEss_H
+
+#include <lv2plugin.h>
+
+class DeEss : public LV2Plugin<3> {
+public:
+ DeEss(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/deess";
+
+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 s1L;
+ double s2L;
+ double s3L;
+ double s4L;
+ double s5L;
+ double s6L;
+ double s7L;
+ double m1L;
+ double m2L;
+ double m3L;
+ double m4L;
+ double m5L;
+ double m6L;
+ double c1L;
+ double c2L;
+ double c3L;
+ double c4L;
+ double c5L;
+ double ratioAL;
+ double ratioBL;
+ double iirSampleAL;
+ double iirSampleBL;
+
+ double s1R;
+ double s2R;
+ double s3R;
+ double s4R;
+ double s5R;
+ double s6R;
+ double s7R;
+ double m1R;
+ double m2R;
+ double m3R;
+ double m4R;
+ double m5R;
+ double m6R;
+ double c1R;
+ double c2R;
+ double c3R;
+ double c4R;
+ double c5R;
+ double ratioAR;
+ double ratioBR;
+ double iirSampleAR;
+ double iirSampleBR;
+
+
+ bool flip;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+};
+
+#endif
diff --git a/plugins/LV2/src/DeEss/DeEss.ttl b/plugins/LV2/src/DeEss/DeEss.ttl
new file mode 100644
index 0000000..348bc69
--- /dev/null
+++ b/plugins/LV2/src/DeEss/DeEss.ttl
@@ -0,0 +1,60 @@
+# Airwindows DeEss 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/deess>
+ 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 "Intense" ;
+ 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 "Max DS" ;
+ 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 "Freq" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DeEss/manifest.ttl.in b/plugins/LV2/src/DeEss/manifest.ttl.in
new file mode 100644
index 0000000..4228e29
--- /dev/null
+++ b/plugins/LV2/src/DeEss/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:deess
+ a lv2:Plugin ;
+ doap:name "Airwindows DeEss" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeEss@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeEss.ttl> .
diff --git a/plugins/LV2/src/DeHiss/DeHiss.cpp b/plugins/LV2/src/DeHiss/DeHiss.cpp
new file mode 100644
index 0000000..b6d78c5
--- /dev/null
+++ b/plugins/LV2/src/DeHiss/DeHiss.cpp
@@ -0,0 +1,45 @@
+#include "DeHiss.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DeHiss::DeHiss(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DeHiss::activate()
+{
+ A = 0.0;
+ B = 1.0;
+
+ storedL[0] = storedL[1] = 0.0;
+ diffL[0] = diffL[1] = diffL[2] = diffL[3] = diffL[4] = diffL[5] = 0.0;
+ gateL = 1.0;
+ rawL = 2.0;
+
+ storedR[0] = storedR[1] = 0.0;
+ diffR[0] = diffR[1] = diffR[2] = diffR[3] = diffR[4] = diffR[5] = 0.0;
+ gateR = 1.0;
+ rawR = 2.0;
+
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DeHiss::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DeHiss/DeHissProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DeHiss> plugin;
diff --git a/plugins/LV2/src/DeHiss/DeHiss.h b/plugins/LV2/src/DeHiss/DeHiss.h
new file mode 100644
index 0000000..1d22cf1
--- /dev/null
+++ b/plugins/LV2/src/DeHiss/DeHiss.h
@@ -0,0 +1,43 @@
+#ifndef __DeHiss_H
+#define __DeHiss_H
+
+#include <lv2plugin.h>
+
+class DeHiss : public LV2Plugin<2> {
+public:
+ DeHiss(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dehiss";
+
+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
+ double storedL[2];
+ double diffL[6];
+ double gateL;
+ double rawL;
+
+ double storedR[2];
+ double diffR[6];
+ double gateR;
+ double rawR;
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/LV2/src/DeHiss/DeHiss.ttl b/plugins/LV2/src/DeHiss/DeHiss.ttl
new file mode 100644
index 0000000..bcad11c
--- /dev/null
+++ b/plugins/LV2/src/DeHiss/DeHiss.ttl
@@ -0,0 +1,52 @@
+# Airwindows DeHiss 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/dehiss>
+ 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 "Thresh" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DeHiss/manifest.ttl.in b/plugins/LV2/src/DeHiss/manifest.ttl.in
new file mode 100644
index 0000000..8108a4a
--- /dev/null
+++ b/plugins/LV2/src/DeHiss/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dehiss
+ a lv2:Plugin ;
+ doap:name "Airwindows DeHiss" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeHiss@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeHiss.ttl> .
diff --git a/plugins/LV2/src/DeRez/DeRez.cpp b/plugins/LV2/src/DeRez/DeRez.cpp
new file mode 100644
index 0000000..411f0bc
--- /dev/null
+++ b/plugins/LV2/src/DeRez/DeRez.cpp
@@ -0,0 +1,44 @@
+#include "DeRez.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DeRez::DeRez(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DeRez::activate()
+{
+ A = 1.0;
+ B = 1.0;
+
+ lastSampleL = 0.0;
+ heldSampleL = 0.0;
+ lastSampleR = 0.0;
+ heldSampleR = 0.0;
+ position = 0.0;
+ incrementA = 0.0;
+ incrementB = 0.0;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DeRez::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DeRez/DeRezProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DeRez> plugin;
diff --git a/plugins/LV2/src/DeRez/DeRez.h b/plugins/LV2/src/DeRez/DeRez.h
new file mode 100644
index 0000000..7778ae4
--- /dev/null
+++ b/plugins/LV2/src/DeRez/DeRez.h
@@ -0,0 +1,43 @@
+#ifndef __DeRez_H
+#define __DeRez_H
+
+#include <lv2plugin.h>
+
+class DeRez : public LV2Plugin<2> {
+public:
+ DeRez(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/derez";
+
+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 heldSampleL;
+ double lastSampleR;
+ double heldSampleR;
+ double position;
+ double incrementA;
+ double incrementB;
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/LV2/src/DeRez/DeRez.ttl b/plugins/LV2/src/DeRez/DeRez.ttl
new file mode 100644
index 0000000..7a45716
--- /dev/null
+++ b/plugins/LV2/src/DeRez/DeRez.ttl
@@ -0,0 +1,52 @@
+# Airwindows DeRez 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/derez>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Rate" ;
+ 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 "Rez" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DeRez/manifest.ttl.in b/plugins/LV2/src/DeRez/manifest.ttl.in
new file mode 100644
index 0000000..b2697de
--- /dev/null
+++ b/plugins/LV2/src/DeRez/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:derez
+ a lv2:Plugin ;
+ doap:name "Airwindows DeRez" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeRez@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeRez.ttl> .
diff --git a/plugins/LV2/src/DeRez2/DeRez2.cpp b/plugins/LV2/src/DeRez2/DeRez2.cpp
new file mode 100644
index 0000000..0766bc6
--- /dev/null
+++ b/plugins/LV2/src/DeRez2/DeRez2.cpp
@@ -0,0 +1,51 @@
+#include "DeRez2.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DeRez2::DeRez2(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DeRez2::activate()
+{
+ A = 1.0;
+ B = 1.0;
+ C = 1.0;
+ D = 1.0;
+ lastSampleL = 0.0;
+ heldSampleL = 0.0;
+ lastDrySampleL = 0.0;
+ lastOutputSampleL = 0.0;
+
+ lastSampleR = 0.0;
+ heldSampleR = 0.0;
+ lastDrySampleR = 0.0;
+ lastOutputSampleR = 0.0;
+
+ position = 0.0;
+ incrementA = 0.0;
+ incrementB = 0.0;
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DeRez2::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DeRez2/DeRez2Proc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DeRez2> plugin;
diff --git a/plugins/LV2/src/DeRez2/DeRez2.h b/plugins/LV2/src/DeRez2/DeRez2.h
new file mode 100644
index 0000000..d5e92ee
--- /dev/null
+++ b/plugins/LV2/src/DeRez2/DeRez2.h
@@ -0,0 +1,51 @@
+#ifndef __DeRez2_H
+#define __DeRez2_H
+
+#include <lv2plugin.h>
+
+class DeRez2 : public LV2Plugin<4> {
+public:
+ DeRez2(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/derez2";
+
+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 lastSampleL;
+ double heldSampleL;
+ double lastDrySampleL;
+ double lastOutputSampleL;
+
+ double lastSampleR;
+ double heldSampleR;
+ double lastDrySampleR;
+ double lastOutputSampleR;
+
+ double position;
+ double incrementA;
+ double incrementB;
+
+ uint32_t fpd;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+ float D;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/DeRez2/DeRez2.ttl b/plugins/LV2/src/DeRez2/DeRez2.ttl
new file mode 100644
index 0000000..5306065
--- /dev/null
+++ b/plugins/LV2/src/DeRez2/DeRez2.ttl
@@ -0,0 +1,68 @@
+# Airwindows DeRez2 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/derez2>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Rate" ;
+ 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 "Rez" ;
+ 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 "Hard" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 7 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DeRez2/manifest.ttl.in b/plugins/LV2/src/DeRez2/manifest.ttl.in
new file mode 100644
index 0000000..c683940
--- /dev/null
+++ b/plugins/LV2/src/DeRez2/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:derez2
+ a lv2:Plugin ;
+ doap:name "Airwindows DeRez2" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DeRez2@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DeRez2.ttl> .
diff --git a/plugins/LV2/src/Deckwrecka/Deckwrecka.cpp b/plugins/LV2/src/Deckwrecka/Deckwrecka.cpp
new file mode 100644
index 0000000..44fc474
--- /dev/null
+++ b/plugins/LV2/src/Deckwrecka/Deckwrecka.cpp
@@ -0,0 +1,96 @@
+#include "Deckwrecka.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Deckwrecka::Deckwrecka(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Deckwrecka::activate()
+{
+ A = 0.0;
+ fpd = 17;
+ bflip = 1;
+
+ iirHeadBumpAL = 0.0;
+ iirHeadBumpBL = 0.0;
+ iirHeadBumpCL = 0.0;
+
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ iirSampleCL = 0.0;
+ iirSampleDL = 0.0;
+ iirSampleEL = 0.0;
+ iirSampleFL = 0.0;
+ iirSampleGL = 0.0;
+ iirSampleHL = 0.0;
+ iirSampleIL = 0.0;
+ iirSampleJL = 0.0;
+ iirSampleKL = 0.0;
+ iirSampleLL = 0.0;
+ iirSampleML = 0.0;
+ iirSampleNL = 0.0;
+ iirSampleOL = 0.0;
+ iirSamplePL = 0.0;
+ iirSampleQL = 0.0;
+ iirSampleRL = 0.0;
+ iirSampleSL = 0.0;
+ iirSampleTL = 0.0;
+ iirSampleUL = 0.0;
+ iirSampleVL = 0.0;
+ iirSampleWL = 0.0;
+ iirSampleXL = 0.0;
+ iirSampleYL = 0.0;
+ iirSampleZL = 0.0;
+
+ iirHeadBumpAR = 0.0;
+ iirHeadBumpBR = 0.0;
+ iirHeadBumpCR = 0.0;
+
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ iirSampleCR = 0.0;
+ iirSampleDR = 0.0;
+ iirSampleER = 0.0;
+ iirSampleFR = 0.0;
+ iirSampleGR = 0.0;
+ iirSampleHR = 0.0;
+ iirSampleIR = 0.0;
+ iirSampleJR = 0.0;
+ iirSampleKR = 0.0;
+ iirSampleLR = 0.0;
+ iirSampleMR = 0.0;
+ iirSampleNR = 0.0;
+ iirSampleOR = 0.0;
+ iirSamplePR = 0.0;
+ iirSampleQR = 0.0;
+ iirSampleRR = 0.0;
+ iirSampleSR = 0.0;
+ iirSampleTR = 0.0;
+ iirSampleUR = 0.0;
+ iirSampleVR = 0.0;
+ iirSampleWR = 0.0;
+ iirSampleXR = 0.0;
+ iirSampleYR = 0.0;
+ iirSampleZR = 0.0;
+
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Deckwrecka::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/Deckwrecka/DeckwreckaProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Deckwrecka> plugin;
diff --git a/plugins/LV2/src/Deckwrecka/Deckwrecka.h b/plugins/LV2/src/Deckwrecka/Deckwrecka.h
new file mode 100644
index 0000000..bf307a2
--- /dev/null
+++ b/plugins/LV2/src/Deckwrecka/Deckwrecka.h
@@ -0,0 +1,97 @@
+#ifndef __Deckwrecka_H
+#define __Deckwrecka_H
+
+#include <lv2plugin.h>
+
+class Deckwrecka : public LV2Plugin<1> {
+public:
+ Deckwrecka(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/deckwrecka";
+
+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
+
+ int bflip;
+
+ double iirHeadBumpAL;
+ double iirHeadBumpBL;
+ double iirHeadBumpCL;
+
+ double iirSampleAL;
+ double iirSampleBL;
+ double iirSampleCL;
+ double iirSampleDL;
+ double iirSampleEL;
+ double iirSampleFL;
+ double iirSampleGL;
+ double iirSampleHL;
+ double iirSampleIL;
+ double iirSampleJL;
+ double iirSampleKL;
+ double iirSampleLL;
+ double iirSampleML;
+ double iirSampleNL;
+ double iirSampleOL;
+ double iirSamplePL;
+ double iirSampleQL;
+ double iirSampleRL;
+ double iirSampleSL;
+ double iirSampleTL;
+ double iirSampleUL;
+ double iirSampleVL;
+ double iirSampleWL;
+ double iirSampleXL;
+ double iirSampleYL;
+ double iirSampleZL;
+
+ double iirHeadBumpAR;
+ double iirHeadBumpBR;
+ double iirHeadBumpCR;
+
+ double iirSampleAR;
+ double iirSampleBR;
+ double iirSampleCR;
+ double iirSampleDR;
+ double iirSampleER;
+ double iirSampleFR;
+ double iirSampleGR;
+ double iirSampleHR;
+ double iirSampleIR;
+ double iirSampleJR;
+ double iirSampleKR;
+ double iirSampleLR;
+ double iirSampleMR;
+ double iirSampleNR;
+ double iirSampleOR;
+ double iirSamplePR;
+ double iirSampleQR;
+ double iirSampleRR;
+ double iirSampleSR;
+ double iirSampleTR;
+ double iirSampleUR;
+ double iirSampleVR;
+ double iirSampleWR;
+ double iirSampleXR;
+ double iirSampleYR;
+ double iirSampleZR;
+
+ float A;
+};
+
+#endif
diff --git a/plugins/LV2/src/Deckwrecka/Deckwrecka.ttl b/plugins/LV2/src/Deckwrecka/Deckwrecka.ttl
new file mode 100644
index 0000000..4e498d7
--- /dev/null
+++ b/plugins/LV2/src/Deckwrecka/Deckwrecka.ttl
@@ -0,0 +1,44 @@
+# Airwindows Deckwrecka 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/deckwrecka>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Wreck" ;
+ 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/Deckwrecka/manifest.ttl.in b/plugins/LV2/src/Deckwrecka/manifest.ttl.in
new file mode 100644
index 0000000..2150015
--- /dev/null
+++ b/plugins/LV2/src/Deckwrecka/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:deckwrecka
+ a lv2:Plugin ;
+ doap:name "Airwindows Deckwrecka" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Deckwrecka@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Deckwrecka.ttl> .
diff --git a/plugins/LV2/src/Density/Density.cpp b/plugins/LV2/src/Density/Density.cpp
new file mode 100644
index 0000000..c9c4bb9
--- /dev/null
+++ b/plugins/LV2/src/Density/Density.cpp
@@ -0,0 +1,44 @@
+#include "Density.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Density::Density(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Density::activate()
+{
+ A = 0.2; //equivalent of 0.0 in VST 0-1 scale for 'Density' control
+ B = 0.0;
+ C = 1.0;
+ D = 1.0;
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Density::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Density/DensityProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Density> plugin;
diff --git a/plugins/LV2/src/Density/Density.h b/plugins/LV2/src/Density/Density.h
new file mode 100644
index 0000000..bf0632d
--- /dev/null
+++ b/plugins/LV2/src/Density/Density.h
@@ -0,0 +1,42 @@
+#ifndef __Density_H
+#define __Density_H
+
+#include <lv2plugin.h>
+
+class Density : public LV2Plugin<4> {
+public:
+ Density(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/density";
+
+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 iirSampleAL;
+ double iirSampleBL;
+ double iirSampleAR;
+ double iirSampleBR;
+ bool fpFlip;
+ float A;
+ float B;
+ float C;
+ float D; //parameters. Always 0-1, and we scale/alter them elsewhere.
+
+};
+
+#endif
diff --git a/plugins/LV2/src/Density/Density.ttl b/plugins/LV2/src/Density/Density.ttl
new file mode 100644
index 0000000..420befc
--- /dev/null
+++ b/plugins/LV2/src/Density/Density.ttl
@@ -0,0 +1,68 @@
+# Airwindows Density 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/density>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Density" ;
+ 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 "Highpass" ;
+ 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 "Out Level" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 7 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Density/manifest.ttl.in b/plugins/LV2/src/Density/manifest.ttl.in
new file mode 100644
index 0000000..94cbf9f
--- /dev/null
+++ b/plugins/LV2/src/Density/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:density
+ a lv2:Plugin ;
+ doap:name "Airwindows Density" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Density@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Density.ttl> .
diff --git a/plugins/LV2/src/Desk/Desk.cpp b/plugins/LV2/src/Desk/Desk.cpp
new file mode 100644
index 0000000..e9c3e97
--- /dev/null
+++ b/plugins/LV2/src/Desk/Desk.cpp
@@ -0,0 +1,38 @@
+#include "Desk.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Desk::Desk(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Desk::activate()
+{
+ lastSampleL = 0.0;
+ lastOutSampleL = 0.0;
+ lastSlewL = 0.0;
+ lastSampleR = 0.0;
+ lastOutSampleR = 0.0;
+ lastSlewR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Desk::run(uint32_t num_samples)
+{
+
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Desk/DeskProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Desk> plugin;
diff --git a/plugins/LV2/src/Desk/Desk.h b/plugins/LV2/src/Desk/Desk.h
new file mode 100644
index 0000000..7dc8aa5
--- /dev/null
+++ b/plugins/LV2/src/Desk/Desk.h
@@ -0,0 +1,40 @@
+#ifndef __Desk_H
+#define __Desk_H
+
+#include <lv2plugin.h>
+
+class Desk : public LV2Plugin<0> {
+public:
+ Desk(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/desk";
+
+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
+
+ long double lastSampleL;
+ long double lastOutSampleL;
+ double lastSlewL;
+ long double lastSampleR;
+ long double lastOutSampleR;
+ double lastSlewR;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/Desk/Desk.ttl b/plugins/LV2/src/Desk/Desk.ttl
new file mode 100644
index 0000000..e910962
--- /dev/null
+++ b/plugins/LV2/src/Desk/Desk.ttl
@@ -0,0 +1,38 @@
+# Airwindows Desk 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/desk>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ lv2:project <https://www.airwindows.com> ;
+
+ lv2:optionalFeature lv2:hardRTCapable ;
+
+ # Define the ports for this plugin.
+ lv2:port [
+
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 0 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 1 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Desk/manifest.ttl.in b/plugins/LV2/src/Desk/manifest.ttl.in
new file mode 100644
index 0000000..88a3da2
--- /dev/null
+++ b/plugins/LV2/src/Desk/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:desk
+ a lv2:Plugin ;
+ doap:name "Airwindows Desk" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Desk@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Desk.ttl> .
diff --git a/plugins/LV2/src/Desk4/Desk4.cpp b/plugins/LV2/src/Desk4/Desk4.cpp
new file mode 100644
index 0000000..84c361a
--- /dev/null
+++ b/plugins/LV2/src/Desk4/Desk4.cpp
@@ -0,0 +1,55 @@
+#include "Desk4.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Desk4::Desk4(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Desk4::activate()
+{
+ A = 0.27;
+ B = 0.18;
+ C = 0.26;
+ D = 0.54;
+ E = 0.84;
+ F = 1.0;
+
+ for(int count = 0; count < 9999; count++) {dL[count] = 0; dR[count] = 0;}
+ controlL = 0;
+ lastSampleL = 0.0;
+ lastOutSampleL = 0.0;
+ lastSlewL = 0.0;
+ controlR = 0;
+ lastSampleR = 0.0;
+ lastOutSampleR = 0.0;
+ lastSlewR = 0.0;
+ gcount = 0;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Desk4::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+ E = *params[4];
+ F = *params[5];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Desk4/Desk4Proc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Desk4> plugin;
diff --git a/plugins/LV2/src/Desk4/Desk4.h b/plugins/LV2/src/Desk4/Desk4.h
new file mode 100644
index 0000000..2baff55
--- /dev/null
+++ b/plugins/LV2/src/Desk4/Desk4.h
@@ -0,0 +1,52 @@
+#ifndef __Desk4_H
+#define __Desk4_H
+
+#include <lv2plugin.h>
+
+class Desk4 : public LV2Plugin<6> {
+public:
+ Desk4(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/desk4";
+
+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 dL[10000];
+ double controlL;
+ double lastSampleL;
+ double lastOutSampleL;
+ double lastSlewL;
+
+ double dR[10000];
+ double controlR;
+ double lastSampleR;
+ double lastOutSampleR;
+ double lastSlewR;
+
+ int gcount;
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+ float D;
+ float E;
+ float F;
+};
+
+#endif
diff --git a/plugins/LV2/src/Desk4/Desk4.ttl b/plugins/LV2/src/Desk4/Desk4.ttl
new file mode 100644
index 0000000..a0564a7
--- /dev/null
+++ b/plugins/LV2/src/Desk4/Desk4.ttl
@@ -0,0 +1,84 @@
+# Airwindows Desk4 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/desk4>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Overdrive" ;
+ 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 "Hi Choke" ;
+ 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 "Power Sag" ;
+ 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 "Frequency" ;
+ 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 "Output Trim" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 7 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 8 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 9 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Desk4/manifest.ttl.in b/plugins/LV2/src/Desk4/manifest.ttl.in
new file mode 100644
index 0000000..e7abb95
--- /dev/null
+++ b/plugins/LV2/src/Desk4/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:desk4
+ a lv2:Plugin ;
+ doap:name "Airwindows Desk4" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Desk4@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Desk4.ttl> .
diff --git a/plugins/LV2/src/DigitalBlack/DigitalBlack.cpp b/plugins/LV2/src/DigitalBlack/DigitalBlack.cpp
new file mode 100644
index 0000000..337dd77
--- /dev/null
+++ b/plugins/LV2/src/DigitalBlack/DigitalBlack.cpp
@@ -0,0 +1,40 @@
+#include "DigitalBlack.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DigitalBlack::DigitalBlack(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DigitalBlack::activate()
+{
+ A = 0.0;
+ B = 1.0;
+ WasNegativeL = false;
+ ZeroCrossL = 0;
+ gaterollerL = 0.0;
+ WasNegativeR = false;
+ ZeroCrossR = 0;
+ gaterollerR = 0.0;
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DigitalBlack::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DigitalBlack/DigitalBlackProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DigitalBlack> plugin;
diff --git a/plugins/LV2/src/DigitalBlack/DigitalBlack.h b/plugins/LV2/src/DigitalBlack/DigitalBlack.h
new file mode 100644
index 0000000..fe58d92
--- /dev/null
+++ b/plugins/LV2/src/DigitalBlack/DigitalBlack.h
@@ -0,0 +1,40 @@
+#ifndef __DigitalBlack_H
+#define __DigitalBlack_H
+
+#include <lv2plugin.h>
+
+class DigitalBlack : public LV2Plugin<2> {
+public:
+ DigitalBlack(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/digitalblack";
+
+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.
+ */
+
+ bool WasNegativeL;
+ int ZeroCrossL;
+ double gaterollerL;
+ bool WasNegativeR;
+ int ZeroCrossR;
+ double gaterollerR;
+ uint32_t fpd;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/LV2/src/DigitalBlack/DigitalBlack.ttl b/plugins/LV2/src/DigitalBlack/DigitalBlack.ttl
new file mode 100644
index 0000000..ebb50c0
--- /dev/null
+++ b/plugins/LV2/src/DigitalBlack/DigitalBlack.ttl
@@ -0,0 +1,52 @@
+# Airwindows DigitalBlack 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/digitalblack>
+ 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 "Thresh" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DigitalBlack/manifest.ttl.in b/plugins/LV2/src/DigitalBlack/manifest.ttl.in
new file mode 100644
index 0000000..2c1fe0e
--- /dev/null
+++ b/plugins/LV2/src/DigitalBlack/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:digitalblack
+ a lv2:Plugin ;
+ doap:name "Airwindows DigitalBlack" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DigitalBlack@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DigitalBlack.ttl> .
diff --git a/plugins/LV2/src/Distance/Distance.cpp b/plugins/LV2/src/Distance/Distance.cpp
new file mode 100644
index 0000000..fb3dce4
--- /dev/null
+++ b/plugins/LV2/src/Distance/Distance.cpp
@@ -0,0 +1,37 @@
+#include "Distance.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Distance::Distance(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Distance::activate()
+{
+ A = 0.0;
+ B = 1.0;
+ thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0;
+ thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Distance::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Distance/DistanceProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Distance> plugin;
diff --git a/plugins/LV2/src/Distance/Distance.h b/plugins/LV2/src/Distance/Distance.h
new file mode 100644
index 0000000..d6697a0
--- /dev/null
+++ b/plugins/LV2/src/Distance/Distance.h
@@ -0,0 +1,49 @@
+#ifndef __Distance_H
+#define __Distance_H
+
+#include <lv2plugin.h>
+
+class Distance : public LV2Plugin<2> {
+public:
+ Distance(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/distance";
+
+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 lastclampL;
+ double clampL;
+ double changeL;
+ double thirdresultL;
+ double prevresultL;
+ double lastL;
+
+ double lastclampR;
+ double clampR;
+ double changeR;
+ double thirdresultR;
+ double prevresultR;
+ double lastR;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/LV2/src/Distance/Distance.ttl b/plugins/LV2/src/Distance/Distance.ttl
new file mode 100644
index 0000000..fa06993
--- /dev/null
+++ b/plugins/LV2/src/Distance/Distance.ttl
@@ -0,0 +1,52 @@
+# Airwindows Distance 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/distance>
+ 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 "Distance" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Distance/manifest.ttl.in b/plugins/LV2/src/Distance/manifest.ttl.in
new file mode 100644
index 0000000..03d28a9
--- /dev/null
+++ b/plugins/LV2/src/Distance/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:distance
+ a lv2:Plugin ;
+ doap:name "Airwindows Distance" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Distance@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Distance.ttl> .
diff --git a/plugins/LV2/src/Distance2/Distance2.cpp b/plugins/LV2/src/Distance2/Distance2.cpp
new file mode 100644
index 0000000..3fa2788
--- /dev/null
+++ b/plugins/LV2/src/Distance2/Distance2.cpp
@@ -0,0 +1,83 @@
+#include "Distance2.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Distance2::Distance2(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Distance2::activate()
+{
+ A = 0.85;
+ B = 0.618;
+ C = 0.618;
+
+ thirdSampleL = lastSampleL = 0.0;
+ thirdSampleR = lastSampleR = 0.0;
+
+ lastSampleAL = 0.0;
+ lastSampleBL = 0.0;
+ lastSampleCL = 0.0;
+ lastSampleDL = 0.0;
+ lastSampleEL = 0.0;
+ lastSampleFL = 0.0;
+ lastSampleGL = 0.0;
+ lastSampleHL = 0.0;
+ lastSampleIL = 0.0;
+ lastSampleJL = 0.0;
+ lastSampleKL = 0.0;
+ lastSampleLL = 0.0;
+ lastSampleML = 0.0;
+
+ lastSampleAR = 0.0;
+ lastSampleBR = 0.0;
+ lastSampleCR = 0.0;
+ lastSampleDR = 0.0;
+ lastSampleER = 0.0;
+ lastSampleFR = 0.0;
+ lastSampleGR = 0.0;
+ lastSampleHR = 0.0;
+ lastSampleIR = 0.0;
+ lastSampleJR = 0.0;
+ lastSampleKR = 0.0;
+ lastSampleLR = 0.0;
+ lastSampleMR = 0.0;
+
+ thresholdA = 0.618033988749894;
+ thresholdB = 0.679837387624884;
+ thresholdC = 0.747821126387373;
+ thresholdD = 0.82260323902611;
+ thresholdE = 0.904863562928721;
+ thresholdF = 0.995349919221593;
+ thresholdG = 1.094884911143752;
+ thresholdH = 1.204373402258128;
+ thresholdI = 1.32481074248394;
+ thresholdJ = 1.457291816732335;
+ thresholdK = 1.603020998405568;
+ thresholdL = 1.763323098246125;
+ thresholdM = 1.939655408070737;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Distance2::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Distance2/Distance2Proc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Distance2> plugin;
diff --git a/plugins/LV2/src/Distance2/Distance2.h b/plugins/LV2/src/Distance2/Distance2.h
new file mode 100644
index 0000000..e49e0df
--- /dev/null
+++ b/plugins/LV2/src/Distance2/Distance2.h
@@ -0,0 +1,84 @@
+#ifndef __Distance2_H
+#define __Distance2_H
+
+#include <lv2plugin.h>
+
+class Distance2 : public LV2Plugin<3> {
+public:
+ Distance2(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/distance2";
+
+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
+
+ long double lastSampleAL;
+ long double lastSampleBL;
+ long double lastSampleCL;
+ long double lastSampleDL;
+ long double lastSampleEL;
+ long double lastSampleFL;
+ long double lastSampleGL;
+ long double lastSampleHL;
+ long double lastSampleIL;
+ long double lastSampleJL;
+ long double lastSampleKL;
+ long double lastSampleLL;
+ long double lastSampleML;
+
+ long double lastSampleAR;
+ long double lastSampleBR;
+ long double lastSampleCR;
+ long double lastSampleDR;
+ long double lastSampleER;
+ long double lastSampleFR;
+ long double lastSampleGR;
+ long double lastSampleHR;
+ long double lastSampleIR;
+ long double lastSampleJR;
+ long double lastSampleKR;
+ long double lastSampleLR;
+ long double lastSampleMR;
+
+ long double thresholdA;
+ long double thresholdB;
+ long double thresholdC;
+ long double thresholdD;
+ long double thresholdE;
+ long double thresholdF;
+ long double thresholdG;
+ long double thresholdH;
+ long double thresholdI;
+ long double thresholdJ;
+ long double thresholdK;
+ long double thresholdL;
+ long double thresholdM;
+
+ double thirdSampleL;
+ double lastSampleL;
+
+ double thirdSampleR;
+ double lastSampleR;
+
+ float A;
+ float B;
+ float C;
+};
+
+#endif
diff --git a/plugins/LV2/src/Distance2/Distance2.ttl b/plugins/LV2/src/Distance2/Distance2.ttl
new file mode 100644
index 0000000..0d7dc0c
--- /dev/null
+++ b/plugins/LV2/src/Distance2/Distance2.ttl
@@ -0,0 +1,60 @@
+# Airwindows Distance2 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/distance2>
+ 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 "Atmosph" ;
+ 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 "Darken" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Distance2/manifest.ttl.in b/plugins/LV2/src/Distance2/manifest.ttl.in
new file mode 100644
index 0000000..e3388c3
--- /dev/null
+++ b/plugins/LV2/src/Distance2/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:distance2
+ a lv2:Plugin ;
+ doap:name "Airwindows Distance2" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Distance2@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Distance2.ttl> .
diff --git a/plugins/LV2/src/Distortion/Distortion.cpp b/plugins/LV2/src/Distortion/Distortion.cpp
new file mode 100644
index 0000000..eac47e7
--- /dev/null
+++ b/plugins/LV2/src/Distortion/Distortion.cpp
@@ -0,0 +1,42 @@
+#include "Distortion.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Distortion::Distortion(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Distortion::activate()
+{
+ A = 0.5;
+ B = 0.5;
+ C = 0.5;
+ D = 1.0;
+ for (int x = 0; x < 9; x++) {
+ previousInL[x] = 0.0; previousOutL[x] = 0.0;
+ previousInR[x] = 0.0; previousOutR[x] = 0.0;
+ }
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Distortion::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Distortion/DistortionProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Distortion> plugin;
diff --git a/plugins/LV2/src/Distortion/Distortion.h b/plugins/LV2/src/Distortion/Distortion.h
new file mode 100644
index 0000000..c3e97a0
--- /dev/null
+++ b/plugins/LV2/src/Distortion/Distortion.h
@@ -0,0 +1,41 @@
+#ifndef __Distortion_H
+#define __Distortion_H
+
+#include <lv2plugin.h>
+
+class Distortion : public LV2Plugin<4> {
+public:
+ Distortion(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/distortion";
+
+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 previousInL[9];
+ long double previousOutL[9];
+ long double previousInR[9];
+ long double previousOutR[9];
+
+ uint32_t fpd;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+ float D;
+};
+
+#endif
diff --git a/plugins/LV2/src/Distortion/Distortion.ttl b/plugins/LV2/src/Distortion/Distortion.ttl
new file mode 100644
index 0000000..be4fa35
--- /dev/null
+++ b/plugins/LV2/src/Distortion/Distortion.ttl
@@ -0,0 +1,74 @@
+# Airwindows Distortion 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/distortion>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Input" ;
+ 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 "Mode" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ lv2:portProperty lv2:integer, lv2:enumeration ;
+ lv2:scalePoint [ rdfs:label "Density" ; rdf:value 0.0 ] ;
+ lv2:scalePoint [ rdfs:label "Drive" ; rdf:value 0.21 ] ;
+ lv2:scalePoint [ rdfs:label "Spiral" ; rdf:value 0.41 ] ;
+ lv2:scalePoint [ rdfs:label "Mojo" ; rdf:value 0.61 ] ;
+ lv2:scalePoint [ rdfs:label "Dyno" ; rdf:value 0.81 ] ;
+ ] , [
+ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index 2 ;
+ lv2:symbol "C" ;
+ lv2:name "Output" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 7 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Distortion/manifest.ttl.in b/plugins/LV2/src/Distortion/manifest.ttl.in
new file mode 100644
index 0000000..3ebb721
--- /dev/null
+++ b/plugins/LV2/src/Distortion/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:distortion
+ a lv2:Plugin ;
+ doap:name "Airwindows Distortion" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Distortion@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Distortion.ttl> .
diff --git a/plugins/LV2/src/DitherFloat/DitherFloat.cpp b/plugins/LV2/src/DitherFloat/DitherFloat.cpp
new file mode 100644
index 0000000..0336f6b
--- /dev/null
+++ b/plugins/LV2/src/DitherFloat/DitherFloat.cpp
@@ -0,0 +1,34 @@
+#include "DitherFloat.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DitherFloat::DitherFloat(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DitherFloat::activate()
+{
+ A = 0.0;
+ B = 1.0;
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DitherFloat::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DitherFloat/DitherFloatProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DitherFloat> plugin;
diff --git a/plugins/LV2/src/DitherFloat/DitherFloat.h b/plugins/LV2/src/DitherFloat/DitherFloat.h
new file mode 100644
index 0000000..bbb5f56
--- /dev/null
+++ b/plugins/LV2/src/DitherFloat/DitherFloat.h
@@ -0,0 +1,34 @@
+#ifndef __DitherFloat_H
+#define __DitherFloat_H
+
+#include <lv2plugin.h>
+
+class DitherFloat : public LV2Plugin<2> {
+public:
+ DitherFloat(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/ditherfloat";
+
+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;
+};
+
+#endif
diff --git a/plugins/LV2/src/DitherFloat/DitherFloat.ttl b/plugins/LV2/src/DitherFloat/DitherFloat.ttl
new file mode 100644
index 0000000..a33d2da
--- /dev/null
+++ b/plugins/LV2/src/DitherFloat/DitherFloat.ttl
@@ -0,0 +1,52 @@
+# Airwindows DitherFloat 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/ditherfloat>
+ 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 "Offset" ;
+ 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 "Dither" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DitherFloat/manifest.ttl.in b/plugins/LV2/src/DitherFloat/manifest.ttl.in
new file mode 100644
index 0000000..5cff5bc
--- /dev/null
+++ b/plugins/LV2/src/DitherFloat/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:ditherfloat
+ a lv2:Plugin ;
+ doap:name "Airwindows DitherFloat" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DitherFloat@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DitherFloat.ttl> .
diff --git a/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.cpp b/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.cpp
new file mode 100644
index 0000000..ece870e
--- /dev/null
+++ b/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.cpp
@@ -0,0 +1,36 @@
+#include "DitherMeDiskers.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DitherMeDiskers::DitherMeDiskers(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DitherMeDiskers::activate()
+{
+ noiseShapingL = 0.0;
+ noiseShapingR = 0.0;
+ lastSampleL = 0.0;
+ lastSample2L = 0.0;
+ lastSampleR = 0.0;
+ lastSample2R = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DitherMeDiskers::run(uint32_t num_samples)
+{
+
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DitherMeDiskers/DitherMeDiskersProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DitherMeDiskers> plugin;
diff --git a/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.h b/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.h
new file mode 100644
index 0000000..ac8f8cb
--- /dev/null
+++ b/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.h
@@ -0,0 +1,35 @@
+#ifndef __DitherMeDiskers_H
+#define __DitherMeDiskers_H
+
+#include <lv2plugin.h>
+
+class DitherMeDiskers : public LV2Plugin<0> {
+public:
+ DitherMeDiskers(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dithermediskers";
+
+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 noiseShapingL;
+ long double noiseShapingR;
+ double lastSampleL;
+ double lastSample2L;
+ double lastSampleR;
+ double lastSample2R;
+};
+
+#endif
diff --git a/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.ttl b/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.ttl
new file mode 100644
index 0000000..3d995fa
--- /dev/null
+++ b/plugins/LV2/src/DitherMeDiskers/DitherMeDiskers.ttl
@@ -0,0 +1,38 @@
+# Airwindows DitherMeDiskers 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/dithermediskers>
+ 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:AudioPort ;
+ lv2:index 0 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 1 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DitherMeDiskers/manifest.ttl.in b/plugins/LV2/src/DitherMeDiskers/manifest.ttl.in
new file mode 100644
index 0000000..72d6043
--- /dev/null
+++ b/plugins/LV2/src/DitherMeDiskers/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dithermediskers
+ a lv2:Plugin ;
+ doap:name "Airwindows DitherMeDiskers" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DitherMeDiskers@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DitherMeDiskers.ttl> .
diff --git a/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.cpp b/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.cpp
new file mode 100644
index 0000000..b31a473
--- /dev/null
+++ b/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.cpp
@@ -0,0 +1,36 @@
+#include "DitherMeTimbers.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DitherMeTimbers::DitherMeTimbers(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DitherMeTimbers::activate()
+{
+ noiseShapingL = 0.0;
+ noiseShapingR = 0.0;
+ lastSampleL = 0.0;
+ lastSample2L = 0.0;
+ lastSampleR = 0.0;
+ lastSample2R = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DitherMeTimbers::run(uint32_t num_samples)
+{
+
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DitherMeTimbers/DitherMeTimbersProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DitherMeTimbers> plugin;
diff --git a/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.h b/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.h
new file mode 100644
index 0000000..a9476ba
--- /dev/null
+++ b/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.h
@@ -0,0 +1,35 @@
+#ifndef __DitherMeTimbers_H
+#define __DitherMeTimbers_H
+
+#include <lv2plugin.h>
+
+class DitherMeTimbers : public LV2Plugin<0> {
+public:
+ DitherMeTimbers(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dithermetimbers";
+
+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 noiseShapingL;
+ long double noiseShapingR;
+ double lastSampleL;
+ double lastSample2L;
+ double lastSampleR;
+ double lastSample2R;
+};
+
+#endif
diff --git a/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.ttl b/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.ttl
new file mode 100644
index 0000000..9f42072
--- /dev/null
+++ b/plugins/LV2/src/DitherMeTimbers/DitherMeTimbers.ttl
@@ -0,0 +1,38 @@
+# Airwindows DitherMeTimbers 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/dithermetimbers>
+ 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:AudioPort ;
+ lv2:index 0 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 1 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DitherMeTimbers/manifest.ttl.in b/plugins/LV2/src/DitherMeTimbers/manifest.ttl.in
new file mode 100644
index 0000000..7ea372a
--- /dev/null
+++ b/plugins/LV2/src/DitherMeTimbers/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dithermetimbers
+ a lv2:Plugin ;
+ doap:name "Airwindows DitherMeTimbers" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DitherMeTimbers@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DitherMeTimbers.ttl> .
diff --git a/plugins/LV2/src/Ditherbox/Ditherbox.cpp b/plugins/LV2/src/Ditherbox/Ditherbox.cpp
new file mode 100644
index 0000000..682fc81
--- /dev/null
+++ b/plugins/LV2/src/Ditherbox/Ditherbox.cpp
@@ -0,0 +1,157 @@
+#include "Ditherbox.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Ditherbox::Ditherbox(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Ditherbox::activate()
+{
+ A = 0.86;
+
+ Position = 99999999;
+ contingentErrL = 0.0;
+ contingentErrR = 0.0;
+ currentDitherL = 0.0;
+ currentDitherR = 0.0;
+ bynL[0] = 1000;
+ bynL[1] = 301;
+ bynL[2] = 176;
+ bynL[3] = 125;
+ bynL[4] = 97;
+ bynL[5] = 79;
+ bynL[6] = 67;
+ bynL[7] = 58;
+ bynL[8] = 51;
+ bynL[9] = 46;
+ bynL[10] = 1000;
+ noiseShapingL = 0.0;
+ bynR[0] = 1000;
+ bynR[1] = 301;
+ bynR[2] = 176;
+ bynR[3] = 125;
+ bynR[4] = 97;
+ bynR[5] = 79;
+ bynR[6] = 67;
+ bynR[7] = 58;
+ bynR[8] = 51;
+ bynR[9] = 46;
+ bynR[10] = 1000;
+ noiseShapingR = 0.0;
+
+ NSOddL = 0.0;
+ prevL = 0.0;
+ nsL[0] = 0;
+ nsL[1] = 0;
+ nsL[2] = 0;
+ nsL[3] = 0;
+ nsL[4] = 0;
+ nsL[5] = 0;
+ nsL[6] = 0;
+ nsL[7] = 0;
+ nsL[8] = 0;
+ nsL[9] = 0;
+ nsL[10] = 0;
+ nsL[11] = 0;
+ nsL[12] = 0;
+ nsL[13] = 0;
+ nsL[14] = 0;
+ nsL[15] = 0;
+ NSOddR = 0.0;
+ prevR = 0.0;
+ nsR[0] = 0;
+ nsR[1] = 0;
+ nsR[2] = 0;
+ nsR[3] = 0;
+ nsR[4] = 0;
+ nsR[5] = 0;
+ nsR[6] = 0;
+ nsR[7] = 0;
+ nsR[8] = 0;
+ nsR[9] = 0;
+ nsR[10] = 0;
+ nsR[11] = 0;
+ nsR[12] = 0;
+ nsR[13] = 0;
+ nsR[14] = 0;
+ nsR[15] = 0;
+
+ lastSampleL = 0.0;
+ outSampleL = 0.0;
+ lastSampleR = 0.0;
+ outSampleR = 0.0;
+
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ iirSampleCL = 0.0;
+ iirSampleDL = 0.0;
+ iirSampleEL = 0.0;
+ iirSampleFL = 0.0;
+ iirSampleGL = 0.0;
+ iirSampleHL = 0.0;
+ iirSampleIL = 0.0;
+ iirSampleJL = 0.0;
+ iirSampleKL = 0.0;
+ iirSampleLL = 0.0;
+ iirSampleML = 0.0;
+ iirSampleNL = 0.0;
+ iirSampleOL = 0.0;
+ iirSamplePL = 0.0;
+ iirSampleQL = 0.0;
+ iirSampleRL = 0.0;
+ iirSampleSL = 0.0;
+ iirSampleTL = 0.0;
+ iirSampleUL = 0.0;
+ iirSampleVL = 0.0;
+ iirSampleWL = 0.0;
+ iirSampleXL = 0.0;
+ iirSampleYL = 0.0;
+ iirSampleZL = 0.0;
+
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ iirSampleCR = 0.0;
+ iirSampleDR = 0.0;
+ iirSampleER = 0.0;
+ iirSampleFR = 0.0;
+ iirSampleGR = 0.0;
+ iirSampleHR = 0.0;
+ iirSampleIR = 0.0;
+ iirSampleJR = 0.0;
+ iirSampleKR = 0.0;
+ iirSampleLR = 0.0;
+ iirSampleMR = 0.0;
+ iirSampleNR = 0.0;
+ iirSampleOR = 0.0;
+ iirSamplePR = 0.0;
+ iirSampleQR = 0.0;
+ iirSampleRR = 0.0;
+ iirSampleSR = 0.0;
+ iirSampleTR = 0.0;
+ iirSampleUR = 0.0;
+ iirSampleVR = 0.0;
+ iirSampleWR = 0.0;
+ iirSampleXR = 0.0;
+ iirSampleYR = 0.0;
+ iirSampleZR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Ditherbox::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/Ditherbox/DitherboxProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Ditherbox> plugin;
diff --git a/plugins/LV2/src/Ditherbox/Ditherbox.h b/plugins/LV2/src/Ditherbox/Ditherbox.h
new file mode 100644
index 0000000..fb81642
--- /dev/null
+++ b/plugins/LV2/src/Ditherbox/Ditherbox.h
@@ -0,0 +1,105 @@
+#ifndef __Ditherbox_H
+#define __Ditherbox_H
+
+#include <lv2plugin.h>
+
+class Ditherbox : public LV2Plugin<1> {
+public:
+ Ditherbox(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/ditherbox";
+
+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 bynL[13];
+ double bynR[13];
+ long double noiseShapingL;
+ long double noiseShapingR;
+ double contingentErrL;
+ double contingentErrR;
+ double currentDitherL;
+ double currentDitherR;
+ int Position;
+ bool flip;
+ double NSOddL;
+ double prevL;
+ double nsL[16];
+ double NSOddR;
+ double prevR;
+ double nsR[16];
+ long double lastSampleL;
+ long double outSampleL;
+ long double lastSampleR;
+ long double outSampleR;
+
+ double iirSampleAL;
+ double iirSampleBL;
+ double iirSampleCL;
+ double iirSampleDL;
+ double iirSampleEL;
+ double iirSampleFL;
+ double iirSampleGL;
+ double iirSampleHL;
+ double iirSampleIL;
+ double iirSampleJL;
+ double iirSampleKL;
+ double iirSampleLL;
+ double iirSampleML;
+ double iirSampleNL;
+ double iirSampleOL;
+ double iirSamplePL;
+ double iirSampleQL;
+ double iirSampleRL;
+ double iirSampleSL;
+ double iirSampleTL;
+ double iirSampleUL;
+ double iirSampleVL;
+ double iirSampleWL;
+ double iirSampleXL;
+ double iirSampleYL;
+ double iirSampleZL;
+
+ double iirSampleAR;
+ double iirSampleBR;
+ double iirSampleCR;
+ double iirSampleDR;
+ double iirSampleER;
+ double iirSampleFR;
+ double iirSampleGR;
+ double iirSampleHR;
+ double iirSampleIR;
+ double iirSampleJR;
+ double iirSampleKR;
+ double iirSampleLR;
+ double iirSampleMR;
+ double iirSampleNR;
+ double iirSampleOR;
+ double iirSamplePR;
+ double iirSampleQR;
+ double iirSampleRR;
+ double iirSampleSR;
+ double iirSampleTR;
+ double iirSampleUR;
+ double iirSampleVR;
+ double iirSampleWR;
+ double iirSampleXR;
+ double iirSampleYR;
+ double iirSampleZR;
+
+ float A;
+};
+
+#endif
diff --git a/plugins/LV2/src/Ditherbox/Ditherbox.ttl b/plugins/LV2/src/Ditherbox/Ditherbox.ttl
new file mode 100644
index 0000000..9b6880e
--- /dev/null
+++ b/plugins/LV2/src/Ditherbox/Ditherbox.ttl
@@ -0,0 +1,70 @@
+# Airwindows Ditherbox 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/ditherbox>
+ 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 "Type" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ lv2:portProperty lv2:integer, lv2:enumeration ;
+ lv2:scalePoint [ rdfs:label "Trunc16" ; rdf:value 0.0 ] ;
+ lv2:scalePoint [ rdfs:label "Flat16" ; rdf:value 0.044 ] ;
+ lv2:scalePoint [ rdfs:label "TPDF16" ; rdf:value 0.084 ] ;
+ lv2:scalePoint [ rdfs:label "Paul16" ; rdf:value 0.124 ] ;
+ lv2:scalePoint [ rdfs:label "DbPaul16" ; rdf:value 0.164 ] ;
+ lv2:scalePoint [ rdfs:label "Tape16" ; rdf:value 0.202 ] ;
+ lv2:scalePoint [ rdfs:label "HiGloss16" ; rdf:value 0.244 ] ;
+ lv2:scalePoint [ rdfs:label "Vinyl16" ; rdf:value 0.284 ] ;
+ lv2:scalePoint [ rdfs:label "Spatial16" ; rdf:value 0.324 ] ;
+ lv2:scalePoint [ rdfs:label "Natural16" ; rdf:value 0.364 ] ;
+ lv2:scalePoint [ rdfs:label "NJAD16" ; rdf:value 0.404 ] ;
+ lv2:scalePoint [ rdfs:label "Trunc24" ; rdf:value 0.444 ] ;
+ lv2:scalePoint [ rdfs:label "Flat24" ; rdf:value 0.484 ] ;
+ lv2:scalePoint [ rdfs:label "TPDF24" ; rdf:value 0.524 ] ;
+ lv2:scalePoint [ rdfs:label "Paul24" ; rdf:value 0.564 ] ;
+ lv2:scalePoint [ rdfs:label "DbPaul24" ; rdf:value 0.604 ] ;
+ lv2:scalePoint [ rdfs:label "Tape24" ; rdf:value 0.644 ] ;
+ lv2:scalePoint [ rdfs:label "HiGloss24" ; rdf:value 0.684 ] ;
+ lv2:scalePoint [ rdfs:label "Vinyl24" ; rdf:value 0.724 ] ;
+ lv2:scalePoint [ rdfs:label "Spatial24" ; rdf:value 0.764 ] ;
+ lv2:scalePoint [ rdfs:label "Natural24" ; rdf:value 0.804 ] ;
+ lv2:scalePoint [ rdfs:label "NJAD24" ; rdf:value 0.844 ] ;
+ lv2:scalePoint [ rdfs:label "SlewOnly" ; rdf:value 0.884 ] ;
+ lv2:scalePoint [ rdfs:label "SubsOnly" ; rdf:value 0.924 ] ;
+ lv2:scalePoint [ rdfs:label "Silhouette" ; rdf:value 0.964 ] ;
+ ] , [
+ 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/Ditherbox/manifest.ttl.in b/plugins/LV2/src/Ditherbox/manifest.ttl.in
new file mode 100644
index 0000000..dcf3e34
--- /dev/null
+++ b/plugins/LV2/src/Ditherbox/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:ditherbox
+ a lv2:Plugin ;
+ doap:name "Airwindows Ditherbox" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Ditherbox@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Ditherbox.ttl> .
diff --git a/plugins/LV2/src/DoublePaul/DoublePaul.cpp b/plugins/LV2/src/DoublePaul/DoublePaul.cpp
new file mode 100644
index 0000000..57093a4
--- /dev/null
+++ b/plugins/LV2/src/DoublePaul/DoublePaul.cpp
@@ -0,0 +1,31 @@
+#include "DoublePaul.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DoublePaul::DoublePaul(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DoublePaul::activate()
+{
+ for(int count = 0; count < 11; count++) {bL[count] = 0.0;bR[count] = 0.0;}
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DoublePaul::run(uint32_t num_samples)
+{
+
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DoublePaul/DoublePaulProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DoublePaul> plugin;
diff --git a/plugins/LV2/src/DoublePaul/DoublePaul.h b/plugins/LV2/src/DoublePaul/DoublePaul.h
new file mode 100644
index 0000000..337528a
--- /dev/null
+++ b/plugins/LV2/src/DoublePaul/DoublePaul.h
@@ -0,0 +1,32 @@
+#ifndef __DoublePaul_H
+#define __DoublePaul_H
+
+#include <lv2plugin.h>
+
+class DoublePaul : public LV2Plugin<0> {
+public:
+ DoublePaul(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/doublepaul";
+
+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 bL[11];
+ double bR[11];
+
+};
+
+#endif
diff --git a/plugins/LV2/src/DoublePaul/DoublePaul.ttl b/plugins/LV2/src/DoublePaul/DoublePaul.ttl
new file mode 100644
index 0000000..4f5b022
--- /dev/null
+++ b/plugins/LV2/src/DoublePaul/DoublePaul.ttl
@@ -0,0 +1,38 @@
+# Airwindows DoublePaul 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/doublepaul>
+ 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:AudioPort ;
+ lv2:index 0 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 1 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 2 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DoublePaul/manifest.ttl.in b/plugins/LV2/src/DoublePaul/manifest.ttl.in
new file mode 100644
index 0000000..b4e7488
--- /dev/null
+++ b/plugins/LV2/src/DoublePaul/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:doublepaul
+ a lv2:Plugin ;
+ doap:name "Airwindows DoublePaul" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DoublePaul@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DoublePaul.ttl> .
diff --git a/plugins/LV2/src/Drive/Drive.cpp b/plugins/LV2/src/Drive/Drive.cpp
new file mode 100644
index 0000000..ef64fa2
--- /dev/null
+++ b/plugins/LV2/src/Drive/Drive.cpp
@@ -0,0 +1,44 @@
+#include "Drive.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Drive::Drive(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Drive::activate()
+{
+ A = 0.0;
+ B = 0.0;
+ C = 1.0;
+ D = 1.0;
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Drive::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+ D = *params[3];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/Drive/DriveProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Drive> plugin;
diff --git a/plugins/LV2/src/Drive/Drive.h b/plugins/LV2/src/Drive/Drive.h
new file mode 100644
index 0000000..39d1eb8
--- /dev/null
+++ b/plugins/LV2/src/Drive/Drive.h
@@ -0,0 +1,42 @@
+#ifndef __Drive_H
+#define __Drive_H
+
+#include <lv2plugin.h>
+
+class Drive : public LV2Plugin<4> {
+public:
+ Drive(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/drive";
+
+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 iirSampleAL;
+ double iirSampleBL;
+ double iirSampleAR;
+ double iirSampleBR;
+ bool fpFlip;
+ float A;
+ float B;
+ float C;
+ float D; //parameters. Always 0-1, and we scale/alter them elsewhere.
+
+};
+
+#endif
diff --git a/plugins/LV2/src/Drive/Drive.ttl b/plugins/LV2/src/Drive/Drive.ttl
new file mode 100644
index 0000000..50c5f71
--- /dev/null
+++ b/plugins/LV2/src/Drive/Drive.ttl
@@ -0,0 +1,68 @@
+# Airwindows Drive 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/drive>
+ 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 "Drive" ;
+ 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 "Highpass" ;
+ 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 "Out Level" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 7 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/Drive/manifest.ttl.in b/plugins/LV2/src/Drive/manifest.ttl.in
new file mode 100644
index 0000000..8154a4d
--- /dev/null
+++ b/plugins/LV2/src/Drive/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:drive
+ a lv2:Plugin ;
+ doap:name "Airwindows Drive" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Drive@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Drive.ttl> .
diff --git a/plugins/LV2/src/DrumSlam/DrumSlam.cpp b/plugins/LV2/src/DrumSlam/DrumSlam.cpp
new file mode 100644
index 0000000..5c4b1eb
--- /dev/null
+++ b/plugins/LV2/src/DrumSlam/DrumSlam.cpp
@@ -0,0 +1,58 @@
+#include "DrumSlam.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DrumSlam::DrumSlam(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DrumSlam::activate()
+{
+ A = 0.0;
+ B = 1.0;
+ C = 1.0;
+
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ iirSampleCL = 0.0;
+ iirSampleDL = 0.0;
+ iirSampleEL = 0.0;
+ iirSampleFL = 0.0;
+ iirSampleGL = 0.0;
+ iirSampleHL = 0.0;
+ lastSampleL = 0.0;
+
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ iirSampleCR = 0.0;
+ iirSampleDR = 0.0;
+ iirSampleER = 0.0;
+ iirSampleFR = 0.0;
+ iirSampleGR = 0.0;
+ iirSampleHR = 0.0;
+ lastSampleR = 0.0;
+ fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DrumSlam::run(uint32_t num_samples)
+{
+ A = *params[0];
+ B = *params[1];
+ C = *params[2];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DrumSlam/DrumSlamProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DrumSlam> plugin;
diff --git a/plugins/LV2/src/DrumSlam/DrumSlam.h b/plugins/LV2/src/DrumSlam/DrumSlam.h
new file mode 100644
index 0000000..1e7f7e8
--- /dev/null
+++ b/plugins/LV2/src/DrumSlam/DrumSlam.h
@@ -0,0 +1,59 @@
+#ifndef __DrumSlam_H
+#define __DrumSlam_H
+
+#include <lv2plugin.h>
+
+class DrumSlam : public LV2Plugin<3> {
+public:
+ DrumSlam(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/drumslam";
+
+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 iirSampleAL;
+ double iirSampleBL;
+ double iirSampleCL;
+ double iirSampleDL;
+ double iirSampleEL;
+ double iirSampleFL;
+ double iirSampleGL;
+ double iirSampleHL;
+ double lastSampleL;
+
+ double iirSampleAR;
+ double iirSampleBR;
+ double iirSampleCR;
+ double iirSampleDR;
+ double iirSampleER;
+ double iirSampleFR;
+ double iirSampleGR;
+ double iirSampleHR;
+ double lastSampleR;
+ bool fpFlip;
+ float A;
+ float B;
+ float C;
+ float D;
+ float E; //parameters. Always 0-1, and we scale/alter them elsewhere.
+
+};
+
+#endif
diff --git a/plugins/LV2/src/DrumSlam/DrumSlam.ttl b/plugins/LV2/src/DrumSlam/DrumSlam.ttl
new file mode 100644
index 0000000..82da043
--- /dev/null
+++ b/plugins/LV2/src/DrumSlam/DrumSlam.ttl
@@ -0,0 +1,60 @@
+# Airwindows DrumSlam 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/drumslam>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Drive" ;
+ 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 "Output" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 3 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 4 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 5 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 6 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DrumSlam/manifest.ttl.in b/plugins/LV2/src/DrumSlam/manifest.ttl.in
new file mode 100644
index 0000000..da396db
--- /dev/null
+++ b/plugins/LV2/src/DrumSlam/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:drumslam
+ a lv2:Plugin ;
+ doap:name "Airwindows DrumSlam" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DrumSlam@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DrumSlam.ttl> .
diff --git a/plugins/LV2/src/DubCenter/DubCenter.cpp b/plugins/LV2/src/DubCenter/DubCenter.cpp
new file mode 100644
index 0000000..6104650
--- /dev/null
+++ b/plugins/LV2/src/DubCenter/DubCenter.cpp
@@ -0,0 +1,109 @@
+#include "DubCenter.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DubCenter::DubCenter(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DubCenter::activate()
+{
+ A = 0.9;
+ B = 0.5;
+ C = 0.74;
+ D = 1.0;
+ E = 0.95;
+ F = 0.5;
+ G = 0.2;
+ H = 0.2;
+ I = 0.5;
+ J = 1.0;
+
+ WasNegative = false;
+ SubOctave = false;
+ flip = false;
+ bflip = 0;
+ iirDriveSampleAL = 0.0;
+ iirDriveSampleBL = 0.0;
+ iirDriveSampleCL = 0.0;
+ iirDriveSampleDL = 0.0;
+ iirDriveSampleEL = 0.0;
+ iirDriveSampleFL = 0.0;
+ iirDriveSampleAR = 0.0;
+ iirDriveSampleBR = 0.0;
+ iirDriveSampleCR = 0.0;
+ iirDriveSampleDR = 0.0;
+ iirDriveSampleER = 0.0;
+ iirDriveSampleFR = 0.0;
+
+ iirHeadBumpA = 0.0;
+ iirHeadBumpB = 0.0;
+ iirHeadBumpC = 0.0;
+
+ iirSubBumpA = 0.0;
+ iirSubBumpB = 0.0;
+ iirSubBumpC = 0.0;
+
+ lastHeadBump = 0.0;
+ lastSubBump = 0.0;
+
+ iirSampleA = 0.0;
+ iirSampleB = 0.0;
+ iirSampleC = 0.0;
+ iirSampleD = 0.0;
+ iirSampleE = 0.0;
+ iirSampleF = 0.0;
+ iirSampleG = 0.0;
+ iirSampleH = 0.0;
+ iirSampleI = 0.0;
+ iirSampleJ = 0.0;
+ iirSampleK = 0.0;
+ iirSampleL = 0.0;
+ iirSampleM = 0.0;
+ iirSampleN = 0.0;
+ iirSampleO = 0.0;
+ iirSampleP = 0.0;
+ iirSampleQ = 0.0;
+ iirSampleR = 0.0;
+ iirSampleS = 0.0;
+ iirSampleT = 0.0;
+ iirSampleU = 0.0;
+ iirSampleV = 0.0;
+ iirSampleW = 0.0;
+ iirSampleX = 0.0;
+ iirSampleY = 0.0;
+ iirSampleZ = 0.0;
+
+ oscGate = 1.0;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DubCenter::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];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DubCenter/DubCenterProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DubCenter> plugin;
diff --git a/plugins/LV2/src/DubCenter/DubCenter.h b/plugins/LV2/src/DubCenter/DubCenter.h
new file mode 100644
index 0000000..f6c85e0
--- /dev/null
+++ b/plugins/LV2/src/DubCenter/DubCenter.h
@@ -0,0 +1,100 @@
+#ifndef __DubCenter_H
+#define __DubCenter_H
+
+#include <lv2plugin.h>
+
+class DubCenter : public LV2Plugin<10> {
+public:
+ DubCenter(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dubcenter";
+
+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 iirDriveSampleAL;
+ double iirDriveSampleBL;
+ double iirDriveSampleCL;
+ double iirDriveSampleDL;
+ double iirDriveSampleEL;
+ double iirDriveSampleFL;
+ double iirDriveSampleAR;
+ double iirDriveSampleBR;
+ double iirDriveSampleCR;
+ double iirDriveSampleDR;
+ double iirDriveSampleER;
+ double iirDriveSampleFR;
+ bool flip; //drive things
+
+ int bflip;
+ bool WasNegative;
+ bool SubOctave;
+ double iirHeadBumpA;
+ double iirHeadBumpB;
+ double iirHeadBumpC;
+
+ double iirSubBumpA;
+ double iirSubBumpB;
+ double iirSubBumpC;
+
+ double lastHeadBump;
+ double lastSubBump;
+
+ double iirSampleA;
+ double iirSampleB;
+ double iirSampleC;
+ double iirSampleD;
+ double iirSampleE;
+ double iirSampleF;
+ double iirSampleG;
+ double iirSampleH;
+ double iirSampleI;
+ double iirSampleJ;
+ double iirSampleK;
+ double iirSampleL;
+ double iirSampleM;
+ double iirSampleN;
+ double iirSampleO;
+ double iirSampleP;
+ double iirSampleQ;
+ double iirSampleR;
+ double iirSampleS;
+ double iirSampleT;
+ double iirSampleU;
+ double iirSampleV;
+ double iirSampleW;
+ double iirSampleX;
+ double iirSampleY;
+ double iirSampleZ;
+ double oscGate;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+ float D;
+ float E;
+ float F;
+ float G;
+ float H;
+ float I;
+ float J;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/DubCenter/DubCenter.ttl b/plugins/LV2/src/DubCenter/DubCenter.ttl
new file mode 100644
index 0000000..22f7b3d
--- /dev/null
+++ b/plugins/LV2/src/DubCenter/DubCenter.ttl
@@ -0,0 +1,116 @@
+# Airwindows DubCenter 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/dubcenter>
+ a lv2:Plugin ,
+ lv2:UtilityPlugin ;
+ 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 "TGrind" ;
+ 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 "Grd/Out" ;
+ 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 "XOver" ;
+ 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 "BsDrive" ;
+ 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 "BsVoice" ;
+ 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 "BassOut" ;
+ 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 "SbDrive" ;
+ 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 "SbVoice" ;
+ 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 "SubOut" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 10 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 11 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 12 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 13 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DubCenter/manifest.ttl.in b/plugins/LV2/src/DubCenter/manifest.ttl.in
new file mode 100644
index 0000000..9db1328
--- /dev/null
+++ b/plugins/LV2/src/DubCenter/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dubcenter
+ a lv2:Plugin ;
+ doap:name "Airwindows DubCenter" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DubCenter@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DubCenter.ttl> .
diff --git a/plugins/LV2/src/DubSub/DubSub.cpp b/plugins/LV2/src/DubSub/DubSub.cpp
new file mode 100644
index 0000000..a0e9c7b
--- /dev/null
+++ b/plugins/LV2/src/DubSub/DubSub.cpp
@@ -0,0 +1,147 @@
+#include "DubSub.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DubSub::DubSub(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DubSub::activate()
+{
+ A = 0.9;
+ B = 0.5;
+ C = 0.74;
+ D = 1.0;
+ E = 0.95;
+ F = 0.5;
+ G = 0.2;
+ H = 0.2;
+ I = 0.5;
+ J = 1.0;
+
+ WasNegativeL = false;
+ SubOctaveL = false;
+ WasNegativeR = false;
+ SubOctaveR = false;
+ flip = false;
+ bflip = 0;
+
+ iirDriveSampleAL = 0.0;
+ iirDriveSampleBL = 0.0;
+ iirDriveSampleCL = 0.0;
+ iirDriveSampleDL = 0.0;
+ iirDriveSampleEL = 0.0;
+ iirDriveSampleFL = 0.0;
+ iirDriveSampleAR = 0.0;
+ iirDriveSampleBR = 0.0;
+ iirDriveSampleCR = 0.0;
+ iirDriveSampleDR = 0.0;
+ iirDriveSampleER = 0.0;
+ iirDriveSampleFR = 0.0;
+
+ iirHeadBumpAL = 0.0;
+ iirHeadBumpBL = 0.0;
+ iirHeadBumpCL = 0.0;
+ iirHeadBumpAR = 0.0;
+ iirHeadBumpBR = 0.0;
+ iirHeadBumpCR = 0.0;
+
+ iirSubBumpAL = 0.0;
+ iirSubBumpBL = 0.0;
+ iirSubBumpCL = 0.0;
+ iirSubBumpAR = 0.0;
+ iirSubBumpBR = 0.0;
+ iirSubBumpCR = 0.0;
+
+ lastHeadBumpL = 0.0;
+ lastSubBumpL = 0.0;
+ lastHeadBumpR = 0.0;
+ lastSubBumpR = 0.0;
+
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ iirSampleCL = 0.0;
+ iirSampleDL = 0.0;
+ iirSampleEL = 0.0;
+ iirSampleFL = 0.0;
+ iirSampleGL = 0.0;
+ iirSampleHL = 0.0;
+ iirSampleIL = 0.0;
+ iirSampleJL = 0.0;
+ iirSampleKL = 0.0;
+ iirSampleLL = 0.0;
+ iirSampleML = 0.0;
+ iirSampleNL = 0.0;
+ iirSampleOL = 0.0;
+ iirSamplePL = 0.0;
+ iirSampleQL = 0.0;
+ iirSampleRL = 0.0;
+ iirSampleSL = 0.0;
+ iirSampleTL = 0.0;
+ iirSampleUL = 0.0;
+ iirSampleVL = 0.0;
+ iirSampleWL = 0.0;
+ iirSampleXL = 0.0;
+ iirSampleYL = 0.0;
+ iirSampleZL = 0.0;
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ iirSampleCR = 0.0;
+ iirSampleDR = 0.0;
+ iirSampleER = 0.0;
+ iirSampleFR = 0.0;
+ iirSampleGR = 0.0;
+ iirSampleHR = 0.0;
+ iirSampleIR = 0.0;
+ iirSampleJR = 0.0;
+ iirSampleKR = 0.0;
+ iirSampleLR = 0.0;
+ iirSampleMR = 0.0;
+ iirSampleNR = 0.0;
+ iirSampleOR = 0.0;
+ iirSamplePR = 0.0;
+ iirSampleQR = 0.0;
+ iirSampleRR = 0.0;
+ iirSampleSR = 0.0;
+ iirSampleTR = 0.0;
+ iirSampleUR = 0.0;
+ iirSampleVR = 0.0;
+ iirSampleWR = 0.0;
+ iirSampleXR = 0.0;
+ iirSampleYR = 0.0;
+ iirSampleZR = 0.0;
+
+ oscGateL = 1.0;
+ oscGateR = 1.0;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DubSub::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];
+
+ processReplacing(const_cast<float **>(in), out, num_samples);
+}
+
+//
+// Include the processing code from the VST version.
+//
+#include <cmath>
+#include "../../../LinuxVST/src/DubSub/DubSubProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DubSub> plugin;
diff --git a/plugins/LV2/src/DubSub/DubSub.h b/plugins/LV2/src/DubSub/DubSub.h
new file mode 100644
index 0000000..f8ab528
--- /dev/null
+++ b/plugins/LV2/src/DubSub/DubSub.h
@@ -0,0 +1,142 @@
+#ifndef __DubSub_H
+#define __DubSub_H
+
+#include <lv2plugin.h>
+
+class DubSub : public LV2Plugin<10> {
+public:
+ DubSub(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dubsub";
+
+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.
+ */
+
+
+private:
+ double iirDriveSampleAL;
+ double iirDriveSampleBL;
+ double iirDriveSampleCL;
+ double iirDriveSampleDL;
+ double iirDriveSampleEL;
+ double iirDriveSampleFL;
+ double iirDriveSampleAR;
+ double iirDriveSampleBR;
+ double iirDriveSampleCR;
+ double iirDriveSampleDR;
+ double iirDriveSampleER;
+ double iirDriveSampleFR;
+ bool flip; //drive things
+
+ int bflip;
+ bool WasNegativeL;
+ bool SubOctaveL;
+ bool WasNegativeR;
+ bool SubOctaveR;
+
+ double iirHeadBumpAL;
+ double iirHeadBumpBL;
+ double iirHeadBumpCL;
+ double iirHeadBumpAR;
+ double iirHeadBumpBR;
+ double iirHeadBumpCR;
+
+ double iirSubBumpAL;
+ double iirSubBumpBL;
+ double iirSubBumpCL;
+ double iirSubBumpAR;
+ double iirSubBumpBR;
+ double iirSubBumpCR;
+
+ double lastHeadBumpL;
+ double lastSubBumpL;
+ double lastHeadBumpR;
+ double lastSubBumpR;
+
+ double iirSampleAL;
+ double iirSampleBL;
+ double iirSampleCL;
+ double iirSampleDL;
+ double iirSampleEL;
+ double iirSampleFL;
+ double iirSampleGL;
+ double iirSampleHL;
+ double iirSampleIL;
+ double iirSampleJL;
+ double iirSampleKL;
+ double iirSampleLL;
+ double iirSampleML;
+ double iirSampleNL;
+ double iirSampleOL;
+ double iirSamplePL;
+ double iirSampleQL;
+ double iirSampleRL;
+ double iirSampleSL;
+ double iirSampleTL;
+ double iirSampleUL;
+ double iirSampleVL;
+ double iirSampleWL;
+ double iirSampleXL;
+ double iirSampleYL;
+ double iirSampleZL;
+ double iirSampleAR;
+ double iirSampleBR;
+ double iirSampleCR;
+ double iirSampleDR;
+ double iirSampleER;
+ double iirSampleFR;
+ double iirSampleGR;
+ double iirSampleHR;
+ double iirSampleIR;
+ double iirSampleJR;
+ double iirSampleKR;
+ double iirSampleLR;
+ double iirSampleMR;
+ double iirSampleNR;
+ double iirSampleOR;
+ double iirSamplePR;
+ double iirSampleQR;
+ double iirSampleRR;
+ double iirSampleSR;
+ double iirSampleTR;
+ double iirSampleUR;
+ double iirSampleVR;
+ double iirSampleWR;
+ double iirSampleXR;
+ double iirSampleYR;
+ double iirSampleZR;
+
+ double oscGateL;
+ double oscGateR;
+
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+ float C;
+ float D;
+ float E;
+ float F;
+ float G;
+ float H;
+ float I;
+ float J;
+
+};
+
+#endif
diff --git a/plugins/LV2/src/DubSub/DubSub.ttl b/plugins/LV2/src/DubSub/DubSub.ttl
new file mode 100644
index 0000000..f53c1f7
--- /dev/null
+++ b/plugins/LV2/src/DubSub/DubSub.ttl
@@ -0,0 +1,116 @@
+# Airwindows DubSub 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/dubsub>
+ a lv2:Plugin ,
+ lv2:UtilityPlugin ;
+ 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 "TGrind" ;
+ 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 "Grd/Out" ;
+ 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 "XOver" ;
+ 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 "BsDrive" ;
+ 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 "BsVoice" ;
+ 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 "BassOut" ;
+ 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 "SbDrive" ;
+ 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 "SbVoice" ;
+ 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 "SubOut" ;
+ 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 "Dry/Wet" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 10 ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index 11 ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 12 ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index 13 ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;
+ ] .
diff --git a/plugins/LV2/src/DubSub/manifest.ttl.in b/plugins/LV2/src/DubSub/manifest.ttl.in
new file mode 100644
index 0000000..7b57050
--- /dev/null
+++ b/plugins/LV2/src/DubSub/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dubsub
+ a lv2:Plugin ;
+ doap:name "Airwindows DubSub" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DubSub@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DubSub.ttl> .
diff --git a/plugins/LV2/src/DustBunny/DustBunny.cpp b/plugins/LV2/src/DustBunny/DustBunny.cpp
new file mode 100644
index 0000000..d5530b9
--- /dev/null
+++ b/plugins/LV2/src/DustBunny/DustBunny.cpp
@@ -0,0 +1,45 @@
+#include "DustBunny.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+DustBunny::DustBunny(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void DustBunny::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
+
+ 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
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void DustBunny::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/DustBunny/DustBunnyProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<DustBunny> plugin;
diff --git a/plugins/LV2/src/DustBunny/DustBunny.h b/plugins/LV2/src/DustBunny/DustBunny.h
new file mode 100644
index 0000000..59f5bc4
--- /dev/null
+++ b/plugins/LV2/src/DustBunny/DustBunny.h
@@ -0,0 +1,63 @@
+#ifndef __DustBunny_H
+#define __DustBunny_H
+
+#include <lv2plugin.h>
+
+class DustBunny : public LV2Plugin<1> {
+public:
+ DustBunny(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dustbunny";
+
+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.
+ */
+
+ float LataLast3Sample;
+ float LataLast2Sample;
+ float LataLast1Sample;
+ float LataHalfwaySample;
+ float LataHalfDrySample;
+ float LataHalfDiffSample;
+ float LataA;
+ float LataB;
+ float LataC;
+ float LataDecay;
+ float LataUpsampleHighTweak;
+ float LataDrySample;
+ float LataDiffSample;
+ float LataPrevDiffSample;
+
+ float RataLast3Sample;
+ float RataLast2Sample;
+ float RataLast1Sample;
+ float RataHalfwaySample;
+ float RataHalfDrySample;
+ float RataHalfDiffSample;
+ float RataA;
+ float RataB;
+ float RataC;
+ float RataDecay;
+ float RataUpsampleHighTweak;
+ float RataDrySample;
+ float RataDiffSample;
+ float RataPrevDiffSample;
+
+ bool LataFlip; //end defining of antialiasing variables
+ bool RataFlip; //end defining of antialiasing variables
+
+ float A;
+};
+
+#endif
diff --git a/plugins/LV2/src/DustBunny/DustBunny.ttl b/plugins/LV2/src/DustBunny/DustBunny.ttl
new file mode 100644
index 0000000..63cc4bd
--- /dev/null
+++ b/plugins/LV2/src/DustBunny/DustBunny.ttl
@@ -0,0 +1,44 @@
+# Airwindows DustBunny 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/dustbunny>
+ 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 "Bunny" ;
+ 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/DustBunny/manifest.ttl.in b/plugins/LV2/src/DustBunny/manifest.ttl.in
new file mode 100644
index 0000000..f9d952d
--- /dev/null
+++ b/plugins/LV2/src/DustBunny/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dustbunny
+ a lv2:Plugin ;
+ doap:name "Airwindows DustBunny" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <DustBunny@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <DustBunny.ttl> .
diff --git a/plugins/LV2/src/Dyno/Dyno.cpp b/plugins/LV2/src/Dyno/Dyno.cpp
new file mode 100644
index 0000000..13d0e5c
--- /dev/null
+++ b/plugins/LV2/src/Dyno/Dyno.cpp
@@ -0,0 +1,32 @@
+#include "Dyno.h"
+#include <iostream>
+#include <lv2wrapper.h>
+
+Dyno::Dyno(double rate)
+ : LV2Plugin(rate)
+{
+}
+
+void Dyno::activate()
+{
+ A = 0.5;
+ fpd = 17;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+}
+
+void Dyno::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/Dyno/DynoProc.cpp"
+
+// Create the LV2Wrapper and register the plugin
+LV2Wrapper<Dyno> plugin;
diff --git a/plugins/LV2/src/Dyno/Dyno.h b/plugins/LV2/src/Dyno/Dyno.h
new file mode 100644
index 0000000..aaf6a45
--- /dev/null
+++ b/plugins/LV2/src/Dyno/Dyno.h
@@ -0,0 +1,33 @@
+#ifndef __Dyno_H
+#define __Dyno_H
+
+#include <lv2plugin.h>
+
+class Dyno : public LV2Plugin<1> {
+public:
+ Dyno(double rate);
+
+ void activate();
+ void run(uint32_t num_samples);
+
+ static constexpr const char * URI = "https://www.airwindows.com/dyno";
+
+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;
+};
+
+#endif
diff --git a/plugins/LV2/src/Dyno/Dyno.ttl b/plugins/LV2/src/Dyno/Dyno.ttl
new file mode 100644
index 0000000..a196578
--- /dev/null
+++ b/plugins/LV2/src/Dyno/Dyno.ttl
@@ -0,0 +1,44 @@
+# Airwindows Dyno 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/dyno>
+ a lv2:Plugin ,
+ lv2:DistortionPlugin ;
+ 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 "Input" ;
+ 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/Dyno/manifest.ttl.in b/plugins/LV2/src/Dyno/manifest.ttl.in
new file mode 100644
index 0000000..4047928
--- /dev/null
+++ b/plugins/LV2/src/Dyno/manifest.ttl.in
@@ -0,0 +1,6 @@
+airwindows:dyno
+ a lv2:Plugin ;
+ doap:name "Airwindows Dyno" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+ lv2:binary <Dyno@CMAKE_SHARED_LIBRARY_SUFFIX@> ;
+ rdfs:seeAlso <Dyno.ttl> .