diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2021-07-31 21:43:40 +0200 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2021-07-31 21:43:40 +0200 |
commit | 5d98905408fa7ca143acecaa47d2d7df160ce4e7 (patch) | |
tree | 1f4c221fc68685856b5244abceea52c8329a8113 | |
parent | 1bd34fa795d0eac15d0dc9d4c756f19fc6624872 (diff) | |
download | airwindows-lv2-port-5d98905408fa7ca143acecaa47d2d7df160ce4e7.tar.gz airwindows-lv2-port-5d98905408fa7ca143acecaa47d2d7df160ce4e7.tar.bz2 airwindows-lv2-port-5d98905408fa7ca143acecaa47d2d7df160ce4e7.zip |
LV2: Port rest of plugins, Swell - Wider
Again, not tested. Report problems or missing control info to the
mailing list.
98 files changed, 4444 insertions, 24 deletions
diff --git a/plugins/LV2/CMakeLists.txt b/plugins/LV2/CMakeLists.txt index 91fcaf3..cb8e461 100755 --- a/plugins/LV2/CMakeLists.txt +++ b/plugins/LV2/CMakeLists.txt @@ -196,27 +196,27 @@ add_airwindows_plugin(StudioTan) add_airwindows_plugin(SubsOnly) add_airwindows_plugin(Surge) add_airwindows_plugin(SurgeTide) -# add_airwindows_plugin(Swell) -# add_airwindows_plugin(Tape) -# add_airwindows_plugin(TapeDelay) -# add_airwindows_plugin(TapeDither) -# add_airwindows_plugin(TapeDust) -# add_airwindows_plugin(TapeFat) -# add_airwindows_plugin(Thunder) -# add_airwindows_plugin(ToneSlant) -# add_airwindows_plugin(ToTape5) -# add_airwindows_plugin(ToTape6) -# add_airwindows_plugin(ToVinyl4) -# add_airwindows_plugin(TPDFDither) -# add_airwindows_plugin(TransDesk) -# add_airwindows_plugin(Tremolo) -# add_airwindows_plugin(TubeDesk) -# add_airwindows_plugin(uLawDecode) -# add_airwindows_plugin(uLawEncode) -# add_airwindows_plugin(UnBox) -# add_airwindows_plugin(VariMu) -# add_airwindows_plugin(Vibrato) -# add_airwindows_plugin(VinylDither) -# add_airwindows_plugin(VoiceOfTheStarship) -# add_airwindows_plugin(VoiceTrick) -# add_airwindows_plugin(Wider) +add_airwindows_plugin(Swell) +add_airwindows_plugin(Tape) +add_airwindows_plugin(TapeDelay) +add_airwindows_plugin(TapeDither) +add_airwindows_plugin(TapeDust) +add_airwindows_plugin(TapeFat) +add_airwindows_plugin(Thunder) +add_airwindows_plugin(ToneSlant) +add_airwindows_plugin(ToTape5) +add_airwindows_plugin(ToTape6) +add_airwindows_plugin(ToVinyl4) +add_airwindows_plugin(TPDFDither) +add_airwindows_plugin(TransDesk) +add_airwindows_plugin(Tremolo) +add_airwindows_plugin(TubeDesk) +add_airwindows_plugin(uLawDecode) +add_airwindows_plugin(uLawEncode) +add_airwindows_plugin(UnBox) +add_airwindows_plugin(VariMu) +add_airwindows_plugin(Vibrato) +add_airwindows_plugin(VinylDither) +add_airwindows_plugin(VoiceOfTheStarship) +add_airwindows_plugin(VoiceTrick) +add_airwindows_plugin(Wider) diff --git a/plugins/LV2/manifest.ttl.in b/plugins/LV2/manifest.ttl.in index 6c1bb5f..782ef45 100644 --- a/plugins/LV2/manifest.ttl.in +++ b/plugins/LV2/manifest.ttl.in @@ -1249,3 +1249,459 @@ airwindows:surgetide doap:license <http://opensource.org/licenses/mit> ; lv2:binary <SurgeTide@CMAKE_SHARED_LIBRARY_SUFFIX@> ; rdfs:seeAlso <SurgeTide.ttl> . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +airwindows:swell + a lv2:Plugin ; + doap:name "Airwindows Swell" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Swell@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Swell.ttl> . + +airwindows:tpdfdither + a lv2:Plugin ; + doap:name "Airwindows TPDFDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TPDFDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TPDFDither.ttl> . + +airwindows:tape + a lv2:Plugin ; + doap:name "Airwindows Tape" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Tape@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Tape.ttl> . + +airwindows:tapedelay + a lv2:Plugin ; + doap:name "Airwindows TapeDelay" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeDelay@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeDelay.ttl> . + +airwindows:tapedither + a lv2:Plugin ; + doap:name "Airwindows TapeDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeDither.ttl> . + +airwindows:tapedust + a lv2:Plugin ; + doap:name "Airwindows TapeDust" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeDust@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeDust.ttl> . + +airwindows:tapefat + a lv2:Plugin ; + doap:name "Airwindows TapeFat" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeFat@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeFat.ttl> . + +airwindows:thunder + a lv2:Plugin ; + doap:name "Airwindows Thunder" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Thunder@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Thunder.ttl> . + +airwindows:totape5 + a lv2:Plugin ; + doap:name "Airwindows ToTape5" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToTape5@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToTape5.ttl> . + +airwindows:totape6 + a lv2:Plugin ; + doap:name "Airwindows ToTape6" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToTape6@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToTape6.ttl> . + +airwindows:tovinyl4 + a lv2:Plugin ; + doap:name "Airwindows ToVinyl4" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToVinyl4@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToVinyl4.ttl> . + +airwindows:toneslant + a lv2:Plugin ; + doap:name "Airwindows ToneSlant" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToneSlant@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToneSlant.ttl> . + +airwindows:transdesk + a lv2:Plugin ; + doap:name "Airwindows TransDesk" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TransDesk@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TransDesk.ttl> . + +airwindows:tremolo + a lv2:Plugin ; + doap:name "Airwindows Tremolo" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Tremolo@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Tremolo.ttl> . + +airwindows:tubedesk + a lv2:Plugin ; + doap:name "Airwindows TubeDesk" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TubeDesk@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TubeDesk.ttl> . + +airwindows:unbox + a lv2:Plugin ; + doap:name "Airwindows UnBox" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <UnBox@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <UnBox.ttl> . + +airwindows:varimu + a lv2:Plugin ; + doap:name "Airwindows VariMu" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VariMu@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VariMu.ttl> . + +airwindows:vibrato + a lv2:Plugin ; + doap:name "Airwindows Vibrato" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Vibrato@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Vibrato.ttl> . + +airwindows:vinyldither + a lv2:Plugin ; + doap:name "Airwindows VinylDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VinylDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VinylDither.ttl> . + +airwindows:voiceofthestarship + a lv2:Plugin ; + doap:name "Airwindows VoiceOfTheStarship" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VoiceOfTheStarship@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VoiceOfTheStarship.ttl> . + +airwindows:voicetrick + a lv2:Plugin ; + doap:name "Airwindows VoiceTrick" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VoiceTrick@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VoiceTrick.ttl> . + +airwindows:wider + a lv2:Plugin ; + doap:name "Airwindows Wider" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Wider@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Wider.ttl> . + +airwindows:ulawdecode + a lv2:Plugin ; + doap:name "Airwindows uLawDecode" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <uLawDecode@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <uLawDecode.ttl> . + +airwindows:ulawencode + a lv2:Plugin ; + doap:name "Airwindows uLawEncode" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <uLawEncode@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <uLawEncode.ttl> . diff --git a/plugins/LV2/src/Swell/Swell.cpp b/plugins/LV2/src/Swell/Swell.cpp new file mode 100644 index 0000000..52c9fae --- /dev/null +++ b/plugins/LV2/src/Swell/Swell.cpp @@ -0,0 +1,43 @@ +#include "Swell.h" +#include <iostream> +#include <lv2wrapper.h> + +Swell::Swell(double rate) + : LV2Plugin(rate) +{ +} + +void Swell::activate() +{ + A = 0.9; + B = 0.5; + C = 1.0; + + swellL = 0.0; + swellR = 0.0; + louderL = false; + louderR = false; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Swell::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/Swell/SwellProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Swell> plugin; diff --git a/plugins/LV2/src/Swell/Swell.h b/plugins/LV2/src/Swell/Swell.h new file mode 100644 index 0000000..9cb2113 --- /dev/null +++ b/plugins/LV2/src/Swell/Swell.h @@ -0,0 +1,43 @@ +#ifndef __Swell_H +#define __Swell_H + +#include <lv2plugin.h> + +class Swell : public LV2Plugin<3> { +public: + Swell(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/swell"; + +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 swellL; + long double swellR; + bool louderL; + bool louderR; + + float A; + float B; + float C; + +}; + +#endif diff --git a/plugins/LV2/src/Swell/Swell.ttl b/plugins/LV2/src/Swell/Swell.ttl new file mode 100644 index 0000000..84ca107 --- /dev/null +++ b/plugins/LV2/src/Swell/Swell.ttl @@ -0,0 +1,60 @@ +# Airwindows Swell 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/swell> + 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 "Swell" ; + 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/Swell/manifest.ttl.in b/plugins/LV2/src/Swell/manifest.ttl.in new file mode 100644 index 0000000..ec09308 --- /dev/null +++ b/plugins/LV2/src/Swell/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:swell + a lv2:Plugin ; + doap:name "Airwindows Swell" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Swell@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Swell.ttl> . diff --git a/plugins/LV2/src/TPDFDither/TPDFDither.cpp b/plugins/LV2/src/TPDFDither/TPDFDither.cpp new file mode 100644 index 0000000..7309c61 --- /dev/null +++ b/plugins/LV2/src/TPDFDither/TPDFDither.cpp @@ -0,0 +1,29 @@ +#include "TPDFDither.h" +#include <iostream> +#include <lv2wrapper.h> + +TPDFDither::TPDFDither(double rate) + : LV2Plugin(rate) +{ +} + +void TPDFDither::activate() +{ + +} + +void TPDFDither::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/TPDFDither/TPDFDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TPDFDither> plugin; diff --git a/plugins/LV2/src/TPDFDither/TPDFDither.h b/plugins/LV2/src/TPDFDither/TPDFDither.h new file mode 100644 index 0000000..49f3439 --- /dev/null +++ b/plugins/LV2/src/TPDFDither/TPDFDither.h @@ -0,0 +1,29 @@ +#ifndef __TPDFDither_H +#define __TPDFDither_H + +#include <lv2plugin.h> + +class TPDFDither : public LV2Plugin<0> { +public: + TPDFDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tpdfdither"; + +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. + */ + +}; + +#endif diff --git a/plugins/LV2/src/TPDFDither/TPDFDither.ttl b/plugins/LV2/src/TPDFDither/TPDFDither.ttl new file mode 100644 index 0000000..ce5baf0 --- /dev/null +++ b/plugins/LV2/src/TPDFDither/TPDFDither.ttl @@ -0,0 +1,38 @@ +# Airwindows TPDFDither 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/tpdfdither> + 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/TPDFDither/manifest.ttl.in b/plugins/LV2/src/TPDFDither/manifest.ttl.in new file mode 100644 index 0000000..36bc918 --- /dev/null +++ b/plugins/LV2/src/TPDFDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tpdfdither + a lv2:Plugin ; + doap:name "Airwindows TPDFDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TPDFDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TPDFDither.ttl> . diff --git a/plugins/LV2/src/Tape/Tape.cpp b/plugins/LV2/src/Tape/Tape.cpp new file mode 100644 index 0000000..6f4eb99 --- /dev/null +++ b/plugins/LV2/src/Tape/Tape.cpp @@ -0,0 +1,49 @@ +#include "Tape.h" +#include <iostream> +#include <lv2wrapper.h> + +Tape::Tape(double rate) + : LV2Plugin(rate) +{ +} + +void Tape::activate() +{ + A = 0.5; + B = 0.5; + iirMidRollerAL = 0.0; + iirMidRollerBL = 0.0; + iirHeadBumpAL = 0.0; + iirHeadBumpBL = 0.0; + iirMidRollerAR = 0.0; + iirMidRollerBR = 0.0; + iirHeadBumpAR = 0.0; + iirHeadBumpBR = 0.0; + for (int x = 0; x < 9; x++) { + biquadAL[x] = 0.0;biquadBL[x] = 0.0;biquadCL[x] = 0.0;biquadDL[x] = 0.0; + biquadAR[x] = 0.0;biquadBR[x] = 0.0;biquadCR[x] = 0.0;biquadDR[x] = 0.0; + } + flip = false; + lastSampleL = 0.0; + lastSampleR = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Tape::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/Tape/TapeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Tape> plugin; diff --git a/plugins/LV2/src/Tape/Tape.h b/plugins/LV2/src/Tape/Tape.h new file mode 100644 index 0000000..b2c0a4b --- /dev/null +++ b/plugins/LV2/src/Tape/Tape.h @@ -0,0 +1,58 @@ +#ifndef __Tape_H +#define __Tape_H + +#include <lv2plugin.h> + +class Tape : public LV2Plugin<2> { +public: + Tape(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tape"; + +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 iirMidRollerAL; + double iirMidRollerBL; + double iirHeadBumpAL; + double iirHeadBumpBL; + + double iirMidRollerAR; + double iirMidRollerBR; + double iirHeadBumpAR; + double iirHeadBumpBR; + + long double biquadAL[9]; + long double biquadBL[9]; + long double biquadCL[9]; + long double biquadDL[9]; + + long double biquadAR[9]; + long double biquadBR[9]; + long double biquadCR[9]; + long double biquadDR[9]; + bool flip; + + long double lastSampleL; + long double lastSampleR; + + uint32_t fpd; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/Tape/Tape.ttl b/plugins/LV2/src/Tape/Tape.ttl new file mode 100644 index 0000000..60f2cf2 --- /dev/null +++ b/plugins/LV2/src/Tape/Tape.ttl @@ -0,0 +1,52 @@ +# Airwindows Tape 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/tape> + 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 "Slam" ; + 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 "Bump" ; + 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/Tape/manifest.ttl.in b/plugins/LV2/src/Tape/manifest.ttl.in new file mode 100644 index 0000000..ee042a6 --- /dev/null +++ b/plugins/LV2/src/Tape/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tape + a lv2:Plugin ; + doap:name "Airwindows Tape" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Tape@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Tape.ttl> . diff --git a/plugins/LV2/src/TapeDelay/TapeDelay.cpp b/plugins/LV2/src/TapeDelay/TapeDelay.cpp new file mode 100644 index 0000000..798e42e --- /dev/null +++ b/plugins/LV2/src/TapeDelay/TapeDelay.cpp @@ -0,0 +1,51 @@ +#include "TapeDelay.h" +#include <iostream> +#include <lv2wrapper.h> + +TapeDelay::TapeDelay(double rate) + : LV2Plugin(rate) +{ +} + +void TapeDelay::activate() +{ + A = 1.0; + B = 0.0; + C = 0.5; + D = 0.0; //0 to 130% + E = 1.0; //-1.0 to 1.0 + F = 0.0; //8 taps + + for(int count = 0; count < 257; count++) {pL[count] = 0;pR[count] = 0;} + for(delay = 0; delay < 44100; delay++) {dL[delay] = 0.0;dR[delay] = 0.0;} + maxdelay = 0; + delay = 0; + gcount = 0; + chase = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void TapeDelay::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/TapeDelay/TapeDelayProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TapeDelay> plugin; diff --git a/plugins/LV2/src/TapeDelay/TapeDelay.h b/plugins/LV2/src/TapeDelay/TapeDelay.h new file mode 100644 index 0000000..7d1a38c --- /dev/null +++ b/plugins/LV2/src/TapeDelay/TapeDelay.h @@ -0,0 +1,48 @@ +#ifndef __TapeDelay_H +#define __TapeDelay_H + +#include <lv2plugin.h> + +class TapeDelay : public LV2Plugin<6> { +public: + TapeDelay(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tapedelay"; + +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. + */ + + int pL[258]; + int pR[258]; + double dL[44100]; + double dR[44100]; + int gcount; + int delay; + int maxdelay; + int chase; + + 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/TapeDelay/TapeDelay.ttl b/plugins/LV2/src/TapeDelay/TapeDelay.ttl new file mode 100644 index 0000000..a62ee2d --- /dev/null +++ b/plugins/LV2/src/TapeDelay/TapeDelay.ttl @@ -0,0 +1,84 @@ +# Airwindows TapeDelay 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/tapedelay> + 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 "Dry" ; + 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 "Wet" ; + 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 "Delay" ; + 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 "Feedbak" ; + 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 "Lean/Ft" ; + 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 "Depth" ; + 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/TapeDelay/manifest.ttl.in b/plugins/LV2/src/TapeDelay/manifest.ttl.in new file mode 100644 index 0000000..b573eba --- /dev/null +++ b/plugins/LV2/src/TapeDelay/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tapedelay + a lv2:Plugin ; + doap:name "Airwindows TapeDelay" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeDelay@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeDelay.ttl> . diff --git a/plugins/LV2/src/TapeDither/TapeDither.cpp b/plugins/LV2/src/TapeDither/TapeDither.cpp new file mode 100644 index 0000000..24a8ca8 --- /dev/null +++ b/plugins/LV2/src/TapeDither/TapeDither.cpp @@ -0,0 +1,38 @@ +#include "TapeDither.h" +#include <iostream> +#include <lv2wrapper.h> + +TapeDither::TapeDither(double rate) + : LV2Plugin(rate) +{ +} + +void TapeDither::activate() +{ + previousDither1L = 0.0; + previousDither2L = 0.0; + previousDither3L = 0.0; + previousDither4L = 0.0; + previousDither1R = 0.0; + previousDither2R = 0.0; + previousDither3R = 0.0; + previousDither4R = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void TapeDither::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/TapeDither/TapeDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TapeDither> plugin; diff --git a/plugins/LV2/src/TapeDither/TapeDither.h b/plugins/LV2/src/TapeDither/TapeDither.h new file mode 100644 index 0000000..ee3e616 --- /dev/null +++ b/plugins/LV2/src/TapeDither/TapeDither.h @@ -0,0 +1,38 @@ +#ifndef __TapeDither_H +#define __TapeDither_H + +#include <lv2plugin.h> + +class TapeDither : public LV2Plugin<0> { +public: + TapeDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tapedither"; + +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 previousDither1L; + double previousDither2L; + double previousDither3L; + double previousDither4L; + double previousDither1R; + double previousDither2R; + double previousDither3R; + double previousDither4R; + +}; + +#endif diff --git a/plugins/LV2/src/TapeDither/TapeDither.ttl b/plugins/LV2/src/TapeDither/TapeDither.ttl new file mode 100644 index 0000000..ce1c176 --- /dev/null +++ b/plugins/LV2/src/TapeDither/TapeDither.ttl @@ -0,0 +1,38 @@ +# Airwindows TapeDither 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/tapedither> + 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/TapeDither/manifest.ttl.in b/plugins/LV2/src/TapeDither/manifest.ttl.in new file mode 100644 index 0000000..fe1da42 --- /dev/null +++ b/plugins/LV2/src/TapeDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tapedither + a lv2:Plugin ; + doap:name "Airwindows TapeDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeDither.ttl> . diff --git a/plugins/LV2/src/TapeDust/TapeDust.cpp b/plugins/LV2/src/TapeDust/TapeDust.cpp new file mode 100644 index 0000000..9cdf9f2 --- /dev/null +++ b/plugins/LV2/src/TapeDust/TapeDust.cpp @@ -0,0 +1,44 @@ +#include "TapeDust.h" +#include <iostream> +#include <lv2wrapper.h> + +TapeDust::TapeDust(double rate) + : LV2Plugin(rate) +{ +} + +void TapeDust::activate() +{ + A = 0.0; + B = 1.0; + + for(int count = 0; count < 11; count++) { + bL[count] = 0.0; + fL[count] = 0.0; + bR[count] = 0.0; + fR[count] = 0.0; + } + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + fpFlip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void TapeDust::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/TapeDust/TapeDustProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TapeDust> plugin; diff --git a/plugins/LV2/src/TapeDust/TapeDust.h b/plugins/LV2/src/TapeDust/TapeDust.h new file mode 100644 index 0000000..4041168 --- /dev/null +++ b/plugins/LV2/src/TapeDust/TapeDust.h @@ -0,0 +1,42 @@ +#ifndef __TapeDust_H +#define __TapeDust_H + +#include <lv2plugin.h> + +class TapeDust : public LV2Plugin<2> { +public: + TapeDust(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tapedust"; + +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; + bool fpFlip; + //default stuff + + double bL[11]; + double fL[11]; + double bR[11]; + double fR[11]; + + float A; + float B; + +}; + +#endif diff --git a/plugins/LV2/src/TapeDust/TapeDust.ttl b/plugins/LV2/src/TapeDust/TapeDust.ttl new file mode 100644 index 0000000..41c3d49 --- /dev/null +++ b/plugins/LV2/src/TapeDust/TapeDust.ttl @@ -0,0 +1,52 @@ +# Airwindows TapeDust 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/tapedust> + 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 "Dust" ; + 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/TapeDust/manifest.ttl.in b/plugins/LV2/src/TapeDust/manifest.ttl.in new file mode 100644 index 0000000..617e675 --- /dev/null +++ b/plugins/LV2/src/TapeDust/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tapedust + a lv2:Plugin ; + doap:name "Airwindows TapeDust" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeDust@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeDust.ttl> . diff --git a/plugins/LV2/src/TapeFat/TapeFat.cpp b/plugins/LV2/src/TapeFat/TapeFat.cpp new file mode 100644 index 0000000..63be923 --- /dev/null +++ b/plugins/LV2/src/TapeFat/TapeFat.cpp @@ -0,0 +1,39 @@ +#include "TapeFat.h" +#include <iostream> +#include <lv2wrapper.h> + +TapeFat::TapeFat(double rate) + : LV2Plugin(rate) +{ +} + +void TapeFat::activate() +{ + A = 1.0; + B = 0.0; + + for(int count = 0; count < 257; count++) {pL[count] = 0;pR[count] = 0;} + gcount = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void TapeFat::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/TapeFat/TapeFatProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TapeFat> plugin; diff --git a/plugins/LV2/src/TapeFat/TapeFat.h b/plugins/LV2/src/TapeFat/TapeFat.h new file mode 100644 index 0000000..7ce01af --- /dev/null +++ b/plugins/LV2/src/TapeFat/TapeFat.h @@ -0,0 +1,39 @@ +#ifndef __TapeFat_H +#define __TapeFat_H + +#include <lv2plugin.h> + +class TapeFat : public LV2Plugin<2> { +public: + TapeFat(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tapefat"; + +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. + */ + + int pL[258]; + int pR[258]; + int gcount; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/TapeFat/TapeFat.ttl b/plugins/LV2/src/TapeFat/TapeFat.ttl new file mode 100644 index 0000000..bd97262 --- /dev/null +++ b/plugins/LV2/src/TapeFat/TapeFat.ttl @@ -0,0 +1,52 @@ +# Airwindows TapeFat 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/tapefat> + a lv2:Plugin , + lv2:EQPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Lean/Ft" ; + 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 "Depth" ; + 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/TapeFat/manifest.ttl.in b/plugins/LV2/src/TapeFat/manifest.ttl.in new file mode 100644 index 0000000..cfb4370 --- /dev/null +++ b/plugins/LV2/src/TapeFat/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tapefat + a lv2:Plugin ; + doap:name "Airwindows TapeFat" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TapeFat@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TapeFat.ttl> . diff --git a/plugins/LV2/src/Thunder/Thunder.cpp b/plugins/LV2/src/Thunder/Thunder.cpp new file mode 100644 index 0000000..ca210ef --- /dev/null +++ b/plugins/LV2/src/Thunder/Thunder.cpp @@ -0,0 +1,51 @@ +#include "Thunder.h" +#include <iostream> +#include <lv2wrapper.h> + +Thunder::Thunder(double rate) + : LV2Plugin(rate) +{ +} + +void Thunder::activate() +{ + A = 0.0; + B = 1.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + muSpeedA = 10000; + muSpeedB = 10000; + muCoefficientA = 1; + muCoefficientB = 1; + muVary = 1; + gateL = 0.0; + gateR = 0.0; + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + iirSampleAM = 0.0; + iirSampleBM = 0.0; + iirSampleCM = 0.0; + flip = false; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Thunder::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/Thunder/ThunderProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Thunder> plugin; diff --git a/plugins/LV2/src/Thunder/Thunder.h b/plugins/LV2/src/Thunder/Thunder.h new file mode 100644 index 0000000..6260839 --- /dev/null +++ b/plugins/LV2/src/Thunder/Thunder.h @@ -0,0 +1,52 @@ +#ifndef __Thunder_H +#define __Thunder_H + +#include <lv2plugin.h> + +class Thunder : public LV2Plugin<2> { +public: + Thunder(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/thunder"; + +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 muVary; + double muAttack; + double muNewSpeed; + double muSpeedA; + double muSpeedB; + double muCoefficientA; + double muCoefficientB; + double gateL; + double gateR; + double iirSampleAL; + double iirSampleBL; + double iirSampleAR; + double iirSampleBR; + double iirSampleAM; + double iirSampleBM; + double iirSampleCM; + long double fpNShapeL; + long double fpNShapeR; + bool flip; + + float A; + float B; + +}; + +#endif diff --git a/plugins/LV2/src/Thunder/Thunder.ttl b/plugins/LV2/src/Thunder/Thunder.ttl new file mode 100644 index 0000000..39e4eea --- /dev/null +++ b/plugins/LV2/src/Thunder/Thunder.ttl @@ -0,0 +1,52 @@ +# Airwindows Thunder 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/thunder> + a lv2:Plugin , + lv2:CompressorPlugin ; + 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 "Thunder" ; + 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 Trim" ; + 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/Thunder/manifest.ttl.in b/plugins/LV2/src/Thunder/manifest.ttl.in new file mode 100644 index 0000000..e2318ab --- /dev/null +++ b/plugins/LV2/src/Thunder/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:thunder + a lv2:Plugin ; + doap:name "Airwindows Thunder" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Thunder@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Thunder.ttl> . diff --git a/plugins/LV2/src/ToTape5/ToTape5.cpp b/plugins/LV2/src/ToTape5/ToTape5.cpp new file mode 100644 index 0000000..7807a61 --- /dev/null +++ b/plugins/LV2/src/ToTape5/ToTape5.cpp @@ -0,0 +1,123 @@ +#include "ToTape5.h" +#include <iostream> +#include <lv2wrapper.h> + +ToTape5::ToTape5(double rate) + : LV2Plugin(rate) +{ +} + +void ToTape5::activate() +{ + A = 0.25; + B = 0.0; + C = 0.0; + D = 0.0; + E = 1.0; + F = 1.0; + + iirMidRollerAL = 0.0; + iirMidRollerBL = 0.0; + iirMidRollerCL = 0.0; + iirHeadBumpAL = 0.0; + iirHeadBumpBL = 0.0; + iirHeadBumpCL = 0.0; + iirMinHeadBumpL = 0.0; + + iirMidRollerAR = 0.0; + iirMidRollerBR = 0.0; + iirMidRollerCR = 0.0; + iirHeadBumpAR = 0.0; + iirHeadBumpBR = 0.0; + iirHeadBumpCR = 0.0; + iirMinHeadBumpR = 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; + + for (int temp = 0; temp < 999; temp++) {dL[temp] = 0.0; eL[temp] = 0.0; dR[temp] = 0.0; eR[temp] = 0.0;} + + gcount = 0; + rateof = 0.5; + sweep = 0.0; + nextmax = 0.5; + hcount = 0; + flip = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void ToTape5::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/ToTape5/ToTape5Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<ToTape5> plugin; diff --git a/plugins/LV2/src/ToTape5/ToTape5.h b/plugins/LV2/src/ToTape5/ToTape5.h new file mode 100644 index 0000000..f1661f8 --- /dev/null +++ b/plugins/LV2/src/ToTape5/ToTape5.h @@ -0,0 +1,122 @@ +#ifndef __ToTape5_H +#define __ToTape5_H + +#include <lv2plugin.h> + +class ToTape5 : public LV2Plugin<6> { +public: + ToTape5(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/totape5"; + +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. + */ + + int gcount; + double rateof; + double sweep; + double nextmax; + int hcount; + int flip; + + double dL[1000]; + double eL[1000]; + double dR[1000]; + double eR[1000]; + + double iirMidRollerAL; + double iirMidRollerBL; + double iirMidRollerCL; + double iirHeadBumpAL; + double iirHeadBumpBL; + double iirHeadBumpCL; + double iirMinHeadBumpL; + + double iirMidRollerAR; + double iirMidRollerBR; + double iirMidRollerCR; + double iirHeadBumpAR; + double iirHeadBumpBR; + double iirHeadBumpCR; + double iirMinHeadBumpR; + + 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; + + + 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/ToTape5/ToTape5.ttl b/plugins/LV2/src/ToTape5/ToTape5.ttl new file mode 100644 index 0000000..7e87c4b --- /dev/null +++ b/plugins/LV2/src/ToTape5/ToTape5.ttl @@ -0,0 +1,84 @@ +# Airwindows ToTape5 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/totape5> + 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 "Louder" ; + 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 "Softer" ; + 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 "Fatter" ; + 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 "Flutter" ; + 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" ; + 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/ToTape5/manifest.ttl.in b/plugins/LV2/src/ToTape5/manifest.ttl.in new file mode 100644 index 0000000..bb02750 --- /dev/null +++ b/plugins/LV2/src/ToTape5/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:totape5 + a lv2:Plugin ; + doap:name "Airwindows ToTape5" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToTape5@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToTape5.ttl> . diff --git a/plugins/LV2/src/ToTape6/ToTape6.cpp b/plugins/LV2/src/ToTape6/ToTape6.cpp new file mode 100644 index 0000000..df29825 --- /dev/null +++ b/plugins/LV2/src/ToTape6/ToTape6.cpp @@ -0,0 +1,68 @@ +#include "ToTape6.h" +#include <iostream> +#include <lv2wrapper.h> + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/ToTape6/ToTape6Proc.cpp" + +ToTape6::ToTape6(double rate) + : LV2Plugin(rate) +{ +} + +void ToTape6::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.5; + E = 0.5; + F = 1.0; + iirMidRollerAL = 0.0; + iirMidRollerBL = 0.0; + iirHeadBumpAL = 0.0; + iirHeadBumpBL = 0.0; + + iirMidRollerAR = 0.0; + iirMidRollerBR = 0.0; + iirHeadBumpAR = 0.0; + iirHeadBumpBR = 0.0; + + for (int x = 0; x < 9; x++) { + biquadAL[x] = 0.0;biquadBL[x] = 0.0;biquadCL[x] = 0.0;biquadDL[x] = 0.0; + biquadAR[x] = 0.0;biquadBR[x] = 0.0;biquadCR[x] = 0.0;biquadDR[x] = 0.0; + } + flip = false; + for (int temp = 0; temp < 501; temp++) {dL[temp] = 0.0;dR[temp] = 0.0;} + + gcount = 0; + rateof = 0.5; + sweep = M_PI; + nextmax = 0.5; + lastSampleL = 0.0; + lastSampleR = 0.0; + flip = 0; + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void ToTape6::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); +} + + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<ToTape6> plugin; diff --git a/plugins/LV2/src/ToTape6/ToTape6.h b/plugins/LV2/src/ToTape6/ToTape6.h new file mode 100644 index 0000000..4e945fd --- /dev/null +++ b/plugins/LV2/src/ToTape6/ToTape6.h @@ -0,0 +1,68 @@ +#ifndef __ToTape6_H +#define __ToTape6_H + +#include <lv2plugin.h> + +class ToTape6 : public LV2Plugin<6> { +public: + ToTape6(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/totape6"; + +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[502]; + double dR[502]; + int gcount; + double rateof; + double sweep; + double nextmax; + + double iirMidRollerAL; + double iirMidRollerBL; + double iirHeadBumpAL; + double iirHeadBumpBL; + + double iirMidRollerAR; + double iirMidRollerBR; + double iirHeadBumpAR; + double iirHeadBumpBR; + long double biquadAL[9]; + long double biquadBL[9]; + long double biquadCL[9]; + long double biquadDL[9]; + + long double biquadAR[9]; + long double biquadBR[9]; + long double biquadCR[9]; + long double biquadDR[9]; + bool flip; + + long double lastSampleL; + long double lastSampleR; + + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; + float E; + float F; +}; + +#endif diff --git a/plugins/LV2/src/ToTape6/ToTape6.ttl b/plugins/LV2/src/ToTape6/ToTape6.ttl new file mode 100644 index 0000000..ff464fc --- /dev/null +++ b/plugins/LV2/src/ToTape6/ToTape6.ttl @@ -0,0 +1,84 @@ +# Airwindows ToTape6 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/totape6> + 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 "Soften" ; + 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 "Head B" ; + 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 "Flutter" ; + 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" ; + 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/ToTape6/manifest.ttl.in b/plugins/LV2/src/ToTape6/manifest.ttl.in new file mode 100644 index 0000000..d1a5733 --- /dev/null +++ b/plugins/LV2/src/ToTape6/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:totape6 + a lv2:Plugin ; + doap:name "Airwindows ToTape6" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToTape6@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToTape6.ttl> . diff --git a/plugins/LV2/src/ToVinyl4/ToVinyl4.cpp b/plugins/LV2/src/ToVinyl4/ToVinyl4.cpp new file mode 100644 index 0000000..a2e3e06 --- /dev/null +++ b/plugins/LV2/src/ToVinyl4/ToVinyl4.cpp @@ -0,0 +1,110 @@ +#include "ToVinyl4.h" +#include <iostream> +#include <lv2wrapper.h> + +ToVinyl4::ToVinyl4(double rate) + : LV2Plugin(rate) +{ +} + +void ToVinyl4::activate() +{ + for(int count = 0; count < 11; count++) { + aMid[count] = 0.0; + bMid[count] = 0.0; + fMid[count] = 0.0; + aSide[count] = 0.0; + bSide[count] = 0.0; + fSide[count] = 0.0; + } + aMidPrev = 0.0; aSidePrev = 0.0; + bMidPrev = 0.0; bSidePrev = 0.0; + ataLastOutL = ataLastOutR = 0.0; + midSampleA = 0.0; + midSampleB = 0.0; + midSampleC = 0.0; + midSampleD = 0.0; + midSampleE = 0.0; + midSampleF = 0.0; + midSampleG = 0.0; + midSampleH = 0.0; + midSampleI = 0.0; + midSampleJ = 0.0; + midSampleK = 0.0; + midSampleL = 0.0; + midSampleM = 0.0; + midSampleN = 0.0; + midSampleO = 0.0; + midSampleP = 0.0; + midSampleQ = 0.0; + midSampleR = 0.0; + midSampleS = 0.0; + midSampleT = 0.0; + midSampleU = 0.0; + midSampleV = 0.0; + midSampleW = 0.0; + midSampleX = 0.0; + midSampleY = 0.0; + midSampleZ = 0.0; + + sideSampleA = 0.0; + sideSampleB = 0.0; + sideSampleC = 0.0; + sideSampleD = 0.0; + sideSampleE = 0.0; + sideSampleF = 0.0; + sideSampleG = 0.0; + sideSampleH = 0.0; + sideSampleI = 0.0; + sideSampleJ = 0.0; + sideSampleK = 0.0; + sideSampleL = 0.0; + sideSampleM = 0.0; + sideSampleN = 0.0; + sideSampleO = 0.0; + sideSampleP = 0.0; + sideSampleQ = 0.0; + sideSampleR = 0.0; + sideSampleS = 0.0; + sideSampleT = 0.0; + sideSampleU = 0.0; + sideSampleV = 0.0; + sideSampleW = 0.0; + sideSampleX = 0.0; + sideSampleY = 0.0; + sideSampleZ = 0.0; + s1L = s2L = s3L = 0.0; + o1L = o2L = o3L = 0.0; + m1L = m2L = desL = 0.0; + s1R = s2R = s3R = 0.0; + o1R = o2R = o3R = 0.0; + m1R = m2R = desR = 0.0; + + A = 0.203419; //22.0 hz = ((A*A)*290)+10 (A*A)*290 = 12 (A*A) = 0.0413793 sqrt() = 0.203419 + B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051 + C = 0.32; + D = 0.064; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void ToVinyl4::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/ToVinyl4/ToVinyl4Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<ToVinyl4> plugin; diff --git a/plugins/LV2/src/ToVinyl4/ToVinyl4.h b/plugins/LV2/src/ToVinyl4/ToVinyl4.h new file mode 100644 index 0000000..e2fca15 --- /dev/null +++ b/plugins/LV2/src/ToVinyl4/ToVinyl4.h @@ -0,0 +1,124 @@ +#ifndef __ToVinyl4_H +#define __ToVinyl4_H + +#include <lv2plugin.h> + +class ToVinyl4 : public LV2Plugin<4> { +public: + ToVinyl4(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tovinyl4"; + +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 ataLastOutL; + double ataLastOutR; + + double s1L; + double s2L; + double s3L; + double o1L; + double o2L; + double o3L; + double m1L; + double m2L; + double s1R; + double s2R; + double s3R; + double o1R; + double o2R; + double o3R; + double m1R; + double m2R; + double desL; + double desR; + + double midSampleA; + double midSampleB; + double midSampleC; + double midSampleD; + double midSampleE; + double midSampleF; + double midSampleG; + double midSampleH; + double midSampleI; + double midSampleJ; + double midSampleK; + double midSampleL; + double midSampleM; + double midSampleN; + double midSampleO; + double midSampleP; + double midSampleQ; + double midSampleR; + double midSampleS; + double midSampleT; + double midSampleU; + double midSampleV; + double midSampleW; + double midSampleX; + double midSampleY; + double midSampleZ; + + double sideSampleA; + double sideSampleB; + double sideSampleC; + double sideSampleD; + double sideSampleE; + double sideSampleF; + double sideSampleG; + double sideSampleH; + double sideSampleI; + double sideSampleJ; + double sideSampleK; + double sideSampleL; + double sideSampleM; + double sideSampleN; + double sideSampleO; + double sideSampleP; + double sideSampleQ; + double sideSampleR; + double sideSampleS; + double sideSampleT; + double sideSampleU; + double sideSampleV; + double sideSampleW; + double sideSampleX; + double sideSampleY; + double sideSampleZ; + + double aMid[11]; + double bMid[11]; + double fMid[11]; + double aSide[11]; + double bSide[11]; + double fSide[11]; + double aMidPrev; + double aSidePrev; + double bMidPrev; + double bSidePrev; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/ToVinyl4/ToVinyl4.ttl b/plugins/LV2/src/ToVinyl4/ToVinyl4.ttl new file mode 100644 index 0000000..03e5820 --- /dev/null +++ b/plugins/LV2/src/ToVinyl4/ToVinyl4.ttl @@ -0,0 +1,68 @@ +# Airwindows ToVinyl4 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/tovinyl4> + a lv2:Plugin , + lv2:EQPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Mid HiP" ; + 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 "SideHiP" ; + 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 "H Limit" ; + 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 "Gv Wear" ; + 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/ToVinyl4/manifest.ttl.in b/plugins/LV2/src/ToVinyl4/manifest.ttl.in new file mode 100644 index 0000000..545da84 --- /dev/null +++ b/plugins/LV2/src/ToVinyl4/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tovinyl4 + a lv2:Plugin ; + doap:name "Airwindows ToVinyl4" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToVinyl4@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToVinyl4.ttl> . diff --git a/plugins/LV2/src/ToneSlant/ToneSlant.cpp b/plugins/LV2/src/ToneSlant/ToneSlant.cpp new file mode 100644 index 0000000..811bf19 --- /dev/null +++ b/plugins/LV2/src/ToneSlant/ToneSlant.cpp @@ -0,0 +1,36 @@ +#include "ToneSlant.h" +#include <iostream> +#include <lv2wrapper.h> + +ToneSlant::ToneSlant(double rate) + : LV2Plugin(rate) +{ +} + +void ToneSlant::activate() +{ + A = 0.0; + B = 0.0; + for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void ToneSlant::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/ToneSlant/ToneSlantProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<ToneSlant> plugin; diff --git a/plugins/LV2/src/ToneSlant/ToneSlant.h b/plugins/LV2/src/ToneSlant/ToneSlant.h new file mode 100644 index 0000000..23d6806 --- /dev/null +++ b/plugins/LV2/src/ToneSlant/ToneSlant.h @@ -0,0 +1,39 @@ +#ifndef __ToneSlant_H +#define __ToneSlant_H + +#include <lv2plugin.h> + +class ToneSlant : public LV2Plugin<2> { +public: + ToneSlant(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/toneslant"; + +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 + + float A; + float B; + double bL[102]; + double bR[102]; + double f[102]; + +}; + +#endif diff --git a/plugins/LV2/src/ToneSlant/ToneSlant.ttl b/plugins/LV2/src/ToneSlant/ToneSlant.ttl new file mode 100644 index 0000000..b50ff62 --- /dev/null +++ b/plugins/LV2/src/ToneSlant/ToneSlant.ttl @@ -0,0 +1,52 @@ +# Airwindows ToneSlant 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/toneslant> + a lv2:Plugin , + lv2:EQPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Voicing" ; + 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 "Highs" ; + 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/ToneSlant/manifest.ttl.in b/plugins/LV2/src/ToneSlant/manifest.ttl.in new file mode 100644 index 0000000..85c5af5 --- /dev/null +++ b/plugins/LV2/src/ToneSlant/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:toneslant + a lv2:Plugin ; + doap:name "Airwindows ToneSlant" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ToneSlant@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ToneSlant.ttl> . diff --git a/plugins/LV2/src/TransDesk/TransDesk.cpp b/plugins/LV2/src/TransDesk/TransDesk.cpp new file mode 100644 index 0000000..48edab5 --- /dev/null +++ b/plugins/LV2/src/TransDesk/TransDesk.cpp @@ -0,0 +1,45 @@ +#include "TransDesk.h" +#include <iostream> +#include <lv2wrapper.h> + +TransDesk::TransDesk(double rate) + : LV2Plugin(rate) +{ +} + +void TransDesk::activate() +{ + for(int count = 0; count < 19; count++) {dL[count] = 0; dR[count] = 0;} + gcount = 0; + + controlL = 0; + lastSampleL = 0.0; + lastOutSampleL = 0.0; + lastSlewL = 0.0; + + controlR = 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 TransDesk::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/TransDesk/TransDeskProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TransDesk> plugin; diff --git a/plugins/LV2/src/TransDesk/TransDesk.h b/plugins/LV2/src/TransDesk/TransDesk.h new file mode 100644 index 0000000..13664c9 --- /dev/null +++ b/plugins/LV2/src/TransDesk/TransDesk.h @@ -0,0 +1,46 @@ +#ifndef __TransDesk_H +#define __TransDesk_H + +#include <lv2plugin.h> + +class TransDesk : public LV2Plugin<0> { +public: + TransDesk(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/transdesk"; + +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 + int gcount; + + double dL[20]; + double controlL; + long double lastSampleL; + long double lastOutSampleL; + double lastSlewL; + + double dR[20]; + double controlR; + long double lastSampleR; + long double lastOutSampleR; + double lastSlewR; + +}; + +#endif diff --git a/plugins/LV2/src/TransDesk/TransDesk.ttl b/plugins/LV2/src/TransDesk/TransDesk.ttl new file mode 100644 index 0000000..d3fcdda --- /dev/null +++ b/plugins/LV2/src/TransDesk/TransDesk.ttl @@ -0,0 +1,38 @@ +# Airwindows TransDesk 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/transdesk> + 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/TransDesk/manifest.ttl.in b/plugins/LV2/src/TransDesk/manifest.ttl.in new file mode 100644 index 0000000..72ee98e --- /dev/null +++ b/plugins/LV2/src/TransDesk/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:transdesk + a lv2:Plugin ; + doap:name "Airwindows TransDesk" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TransDesk@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TransDesk.ttl> . diff --git a/plugins/LV2/src/Tremolo/Tremolo.cpp b/plugins/LV2/src/Tremolo/Tremolo.cpp new file mode 100644 index 0000000..3770310 --- /dev/null +++ b/plugins/LV2/src/Tremolo/Tremolo.cpp @@ -0,0 +1,42 @@ +#include "Tremolo.h" +#include <iostream> +#include <lv2wrapper.h> + +Tremolo::Tremolo(double rate) + : LV2Plugin(rate) +{ +} + +void Tremolo::activate() +{ + A = 0.5; + B = 1.0; + sweep = 3.141592653589793238 / 2.0; + speedChase = 0.0; + depthChase = 0.0; + speedAmount = 1.0; + depthAmount = 0.0; + lastSpeed = 1000.0; + lastDepth = 1000.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Tremolo::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/Tremolo/TremoloProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Tremolo> plugin; diff --git a/plugins/LV2/src/Tremolo/Tremolo.h b/plugins/LV2/src/Tremolo/Tremolo.h new file mode 100644 index 0000000..dcdc799 --- /dev/null +++ b/plugins/LV2/src/Tremolo/Tremolo.h @@ -0,0 +1,43 @@ +#ifndef __Tremolo_H +#define __Tremolo_H + +#include <lv2plugin.h> + +class Tremolo : public LV2Plugin<2> { +public: + Tremolo(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tremolo"; + +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 sweep; + double speedChase; + double depthChase; + double speedAmount; + double depthAmount; + double lastSpeed; + double lastDepth; + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/Tremolo/Tremolo.ttl b/plugins/LV2/src/Tremolo/Tremolo.ttl new file mode 100644 index 0000000..14b61b1 --- /dev/null +++ b/plugins/LV2/src/Tremolo/Tremolo.ttl @@ -0,0 +1,52 @@ +# Airwindows Tremolo 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/tremolo> + a lv2:Plugin , + lv2:ModulationPlugin ; + 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 "Speed" ; + 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 "Depth" ; + 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/Tremolo/manifest.ttl.in b/plugins/LV2/src/Tremolo/manifest.ttl.in new file mode 100644 index 0000000..02b0d39 --- /dev/null +++ b/plugins/LV2/src/Tremolo/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tremolo + a lv2:Plugin ; + doap:name "Airwindows Tremolo" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Tremolo@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Tremolo.ttl> . diff --git a/plugins/LV2/src/TubeDesk/TubeDesk.cpp b/plugins/LV2/src/TubeDesk/TubeDesk.cpp new file mode 100644 index 0000000..46e6664 --- /dev/null +++ b/plugins/LV2/src/TubeDesk/TubeDesk.cpp @@ -0,0 +1,45 @@ +#include "TubeDesk.h" +#include <iostream> +#include <lv2wrapper.h> + +TubeDesk::TubeDesk(double rate) + : LV2Plugin(rate) +{ +} + +void TubeDesk::activate() +{ + for(int count = 0; count < 4999; count++) {dL[count] = 0; dR[count] = 0;} + gcount = 0; + + controlL = 0; + lastSampleL = 0.0; + lastOutSampleL = 0.0; + lastSlewL = 0.0; + + controlR = 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 TubeDesk::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/TubeDesk/TubeDeskProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<TubeDesk> plugin; diff --git a/plugins/LV2/src/TubeDesk/TubeDesk.h b/plugins/LV2/src/TubeDesk/TubeDesk.h new file mode 100644 index 0000000..f4624be --- /dev/null +++ b/plugins/LV2/src/TubeDesk/TubeDesk.h @@ -0,0 +1,46 @@ +#ifndef __TubeDesk_H +#define __TubeDesk_H + +#include <lv2plugin.h> + +class TubeDesk : public LV2Plugin<0> { +public: + TubeDesk(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/tubedesk"; + +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 + int gcount; + + double dL[5000]; + double controlL; + long double lastSampleL; + long double lastOutSampleL; + double lastSlewL; + + double dR[5000]; + double controlR; + long double lastSampleR; + long double lastOutSampleR; + double lastSlewR; + +}; + +#endif diff --git a/plugins/LV2/src/TubeDesk/TubeDesk.ttl b/plugins/LV2/src/TubeDesk/TubeDesk.ttl new file mode 100644 index 0000000..2b291db --- /dev/null +++ b/plugins/LV2/src/TubeDesk/TubeDesk.ttl @@ -0,0 +1,38 @@ +# Airwindows TubeDesk 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/tubedesk> + 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/TubeDesk/manifest.ttl.in b/plugins/LV2/src/TubeDesk/manifest.ttl.in new file mode 100644 index 0000000..43976df --- /dev/null +++ b/plugins/LV2/src/TubeDesk/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:tubedesk + a lv2:Plugin ; + doap:name "Airwindows TubeDesk" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <TubeDesk@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <TubeDesk.ttl> . diff --git a/plugins/LV2/src/UnBox/UnBox.cpp b/plugins/LV2/src/UnBox/UnBox.cpp new file mode 100644 index 0000000..3b62e84 --- /dev/null +++ b/plugins/LV2/src/UnBox/UnBox.cpp @@ -0,0 +1,45 @@ +#include "UnBox.h" +#include <iostream> +#include <lv2wrapper.h> + +UnBox::UnBox(double rate) + : LV2Plugin(rate) +{ +} + +void UnBox::activate() +{ + A = 0.5; + B = 0.0; + C = 0.5; + + for(int count = 0; count < 5; count++) {aL[count] = 0.0; bL[count] = 0.0; aR[count] = 0.0; bR[count] = 0.0; e[count] = 0.0;} + for(int count = 0; count < 11; count++) {cL[count] = 0.0; cR[count] = 0.0; f[count] = 0.0;} + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void UnBox::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/UnBox/UnBoxProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<UnBox> plugin; diff --git a/plugins/LV2/src/UnBox/UnBox.h b/plugins/LV2/src/UnBox/UnBox.h new file mode 100644 index 0000000..dc59ede --- /dev/null +++ b/plugins/LV2/src/UnBox/UnBox.h @@ -0,0 +1,49 @@ +#ifndef __UnBox_H +#define __UnBox_H + +#include <lv2plugin.h> + +class UnBox : public LV2Plugin<3> { +public: + UnBox(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/unbox"; + +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 aL[5]; + long double bL[5]; + long double cL[11]; + long double aR[5]; + long double bR[5]; + long double cR[11]; + long double e[5]; + long double f[11]; + long double iirSampleAL; + long double iirSampleBL; + long double iirSampleAR; + long double iirSampleBR; + + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/UnBox/UnBox.ttl b/plugins/LV2/src/UnBox/UnBox.ttl new file mode 100644 index 0000000..04a3b95 --- /dev/null +++ b/plugins/LV2/src/UnBox/UnBox.ttl @@ -0,0 +1,60 @@ +# Airwindows UnBox 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/unbox> + 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 "UnBox" ; + 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 "Output" ; + 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/UnBox/manifest.ttl.in b/plugins/LV2/src/UnBox/manifest.ttl.in new file mode 100644 index 0000000..8173b19 --- /dev/null +++ b/plugins/LV2/src/UnBox/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:unbox + a lv2:Plugin ; + doap:name "Airwindows UnBox" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <UnBox@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <UnBox.ttl> . diff --git a/plugins/LV2/src/VariMu/VariMu.cpp b/plugins/LV2/src/VariMu/VariMu.cpp new file mode 100644 index 0000000..e8ac181 --- /dev/null +++ b/plugins/LV2/src/VariMu/VariMu.cpp @@ -0,0 +1,55 @@ +#include "VariMu.h" +#include <iostream> +#include <lv2wrapper.h> + +VariMu::VariMu(double rate) + : LV2Plugin(rate) +{ +} + +void VariMu::activate() +{ + + muSpeedAL = 10000; + muSpeedBL = 10000; + muCoefficientAL = 1; + muCoefficientBL = 1; + muVaryL = 1; + previousL = 0.0; + + muSpeedAR = 10000; + muSpeedBR = 10000; + muCoefficientAR = 1; + muCoefficientBR = 1; + muVaryR = 1; + previousR = 0.0; + flip = false; + + A = 0.0; + B = 0.5; + C = 1.0; + D = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void VariMu::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/VariMu/VariMuProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<VariMu> plugin; diff --git a/plugins/LV2/src/VariMu/VariMu.h b/plugins/LV2/src/VariMu/VariMu.h new file mode 100644 index 0000000..2cc5d3a --- /dev/null +++ b/plugins/LV2/src/VariMu/VariMu.h @@ -0,0 +1,56 @@ +#ifndef __VariMu_H +#define __VariMu_H + +#include <lv2plugin.h> + +class VariMu : public LV2Plugin<4> { +public: + VariMu(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/varimu"; + +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 muVaryL; + double muAttackL; + double muNewSpeedL; + double muSpeedAL; + double muSpeedBL; + double muCoefficientAL; + double muCoefficientBL; + double previousL; + + double muVaryR; + double muAttackR; + double muNewSpeedR; + double muSpeedAR; + double muSpeedBR; + double muCoefficientAR; + double muCoefficientBR; + double previousR; + bool flip; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/VariMu/VariMu.ttl b/plugins/LV2/src/VariMu/VariMu.ttl new file mode 100644 index 0000000..0f15518 --- /dev/null +++ b/plugins/LV2/src/VariMu/VariMu.ttl @@ -0,0 +1,68 @@ +# Airwindows VariMu 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/varimu> + a lv2:Plugin , + lv2:CompressorPlugin ; + 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 "Intensty" ; + 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 "Speed" ; + 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 "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/VariMu/manifest.ttl.in b/plugins/LV2/src/VariMu/manifest.ttl.in new file mode 100644 index 0000000..2e63b47 --- /dev/null +++ b/plugins/LV2/src/VariMu/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:varimu + a lv2:Plugin ; + doap:name "Airwindows VariMu" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VariMu@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VariMu.ttl> . diff --git a/plugins/LV2/src/Vibrato/Vibrato.cpp b/plugins/LV2/src/Vibrato/Vibrato.cpp new file mode 100644 index 0000000..82f448b --- /dev/null +++ b/plugins/LV2/src/Vibrato/Vibrato.cpp @@ -0,0 +1,57 @@ +#include "Vibrato.h" +#include <iostream> +#include <lv2wrapper.h> + +Vibrato::Vibrato(double rate) + : LV2Plugin(rate) +{ +} + +void Vibrato::activate() +{ + A = 0.3; + B = 0.0; + C = 0.4; + D = 0.0; + E = 1.0; + + for(int count = 0; count < 16385; count++) {pL[count] = 0.0; pR[count] = 0.0;} + sweep = 3.141592653589793238 / 2.0; + sweepB = 3.141592653589793238 / 2.0; + gcount = 0; + + airPrevL = 0.0; + airEvenL = 0.0; + airOddL = 0.0; + airFactorL = 0.0; + airPrevR = 0.0; + airEvenR = 0.0; + airOddR = 0.0; + airFactorR = 0.0; + + flip = false; + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Vibrato::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/Vibrato/VibratoProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Vibrato> plugin; diff --git a/plugins/LV2/src/Vibrato/Vibrato.h b/plugins/LV2/src/Vibrato/Vibrato.h new file mode 100644 index 0000000..13da664 --- /dev/null +++ b/plugins/LV2/src/Vibrato/Vibrato.h @@ -0,0 +1,54 @@ +#ifndef __Vibrato_H +#define __Vibrato_H + +#include <lv2plugin.h> + +class Vibrato : public LV2Plugin<5> { +public: + Vibrato(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/vibrato"; + +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 pL[16386]; //this is processed, not raw incoming samples + double pR[16386]; //this is processed, not raw incoming samples + double sweep; + double sweepB; + int gcount; + + double airPrevL; + double airEvenL; + double airOddL; + double airFactorL; + double airPrevR; + double airEvenR; + double airOddR; + double airFactorR; + + 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/Vibrato/Vibrato.ttl b/plugins/LV2/src/Vibrato/Vibrato.ttl new file mode 100644 index 0000000..2bd4ce5 --- /dev/null +++ b/plugins/LV2/src/Vibrato/Vibrato.ttl @@ -0,0 +1,76 @@ +# Airwindows Vibrato 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/vibrato> + a lv2:Plugin , + lv2:ModulationPlugin ; + 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 "Speed" ; + 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 "Depth" ; + 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 "FMSpeed" ; + 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 "FMDepth" ; + 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 "Inv/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 5 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 6 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 7 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 8 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Vibrato/manifest.ttl.in b/plugins/LV2/src/Vibrato/manifest.ttl.in new file mode 100644 index 0000000..0fa0d04 --- /dev/null +++ b/plugins/LV2/src/Vibrato/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:vibrato + a lv2:Plugin ; + doap:name "Airwindows Vibrato" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Vibrato@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Vibrato.ttl> . diff --git a/plugins/LV2/src/VinylDither/VinylDither.cpp b/plugins/LV2/src/VinylDither/VinylDither.cpp new file mode 100644 index 0000000..5d92f97 --- /dev/null +++ b/plugins/LV2/src/VinylDither/VinylDither.cpp @@ -0,0 +1,66 @@ +#include "VinylDither.h" +#include <iostream> +#include <lv2wrapper.h> + +VinylDither::VinylDither(double rate) + : LV2Plugin(rate) +{ +} + +void VinylDither::activate() +{ + 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; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void VinylDither::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/VinylDither/VinylDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<VinylDither> plugin; diff --git a/plugins/LV2/src/VinylDither/VinylDither.h b/plugins/LV2/src/VinylDither/VinylDither.h new file mode 100644 index 0000000..3c1ed26 --- /dev/null +++ b/plugins/LV2/src/VinylDither/VinylDither.h @@ -0,0 +1,36 @@ +#ifndef __VinylDither_H +#define __VinylDither_H + +#include <lv2plugin.h> + +class VinylDither : public LV2Plugin<0> { +public: + VinylDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/vinyldither"; + +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 NSOddL; + double prevL; + double nsL[16]; + double NSOddR; + double prevR; + double nsR[16]; + +}; + +#endif diff --git a/plugins/LV2/src/VinylDither/VinylDither.ttl b/plugins/LV2/src/VinylDither/VinylDither.ttl new file mode 100644 index 0000000..8e9096f --- /dev/null +++ b/plugins/LV2/src/VinylDither/VinylDither.ttl @@ -0,0 +1,38 @@ +# Airwindows VinylDither 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/vinyldither> + 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/VinylDither/manifest.ttl.in b/plugins/LV2/src/VinylDither/manifest.ttl.in new file mode 100644 index 0000000..8abe285 --- /dev/null +++ b/plugins/LV2/src/VinylDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:vinyldither + a lv2:Plugin ; + doap:name "Airwindows VinylDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VinylDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VinylDither.ttl> . diff --git a/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp new file mode 100644 index 0000000..36b3266 --- /dev/null +++ b/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp @@ -0,0 +1,49 @@ +#include "VoiceOfTheStarship.h" +#include <iostream> +#include <lv2wrapper.h> + +VoiceOfTheStarship::VoiceOfTheStarship(double rate) + : LV2Plugin(rate) +{ +} + +void VoiceOfTheStarship::activate() +{ + A = 0.5; + B = 0.0; + position = 99999999; + quadratic = 0; + noiseAL = 0.0; + noiseBL = 0.0; + noiseCL = 0.0; + flipL = false; + noiseAR = 0.0; + noiseBR = 0.0; + noiseCR = 0.0; + flipR = false; + filterflip = false; + for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} + lastAlgorithm = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void VoiceOfTheStarship::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/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<VoiceOfTheStarship> plugin; diff --git a/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.h new file mode 100644 index 0000000..b1c8008 --- /dev/null +++ b/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.h @@ -0,0 +1,55 @@ +#ifndef __VoiceOfTheStarship_H +#define __VoiceOfTheStarship_H + +#include <lv2plugin.h> + +class VoiceOfTheStarship : public LV2Plugin<2> { +public: + VoiceOfTheStarship(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/voiceofthestarship"; + +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 noiseAL; + double noiseBL; + double noiseCL; + double noiseAR; + double noiseBR; + double noiseCR; + + int position; + int quadratic; + bool flipL; + bool flipR; + bool filterflip; + + double bL[11]; + double bR[11]; + + double f[11]; + + int lastAlgorithm; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.ttl b/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.ttl new file mode 100644 index 0000000..b2a990b --- /dev/null +++ b/plugins/LV2/src/VoiceOfTheStarship/VoiceOfTheStarship.ttl @@ -0,0 +1,52 @@ +# Airwindows VoiceOfTheStarship 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/voiceofthestarship> + 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 "Filter" ; + 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 "Algrthm" ; + 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/VoiceOfTheStarship/manifest.ttl.in b/plugins/LV2/src/VoiceOfTheStarship/manifest.ttl.in new file mode 100644 index 0000000..d11695b --- /dev/null +++ b/plugins/LV2/src/VoiceOfTheStarship/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:voiceofthestarship + a lv2:Plugin ; + doap:name "Airwindows VoiceOfTheStarship" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VoiceOfTheStarship@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VoiceOfTheStarship.ttl> . diff --git a/plugins/LV2/src/VoiceTrick/VoiceTrick.cpp b/plugins/LV2/src/VoiceTrick/VoiceTrick.cpp new file mode 100644 index 0000000..4ad9dc9 --- /dev/null +++ b/plugins/LV2/src/VoiceTrick/VoiceTrick.cpp @@ -0,0 +1,42 @@ +#include "VoiceTrick.h" +#include <iostream> +#include <lv2wrapper.h> + +VoiceTrick::VoiceTrick(double rate) + : LV2Plugin(rate) +{ +} + +void VoiceTrick::activate() +{ + A = 1.0; + iirLowpassA = 0.0; + iirLowpassB = 0.0; + iirLowpassC = 0.0; + iirLowpassD = 0.0; + iirLowpassE = 0.0; + iirLowpassF = 0.0; + count = 0; + lowpassChase = 0.0; + lowpassAmount = 1.0; + lastLowpass = 1000.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void VoiceTrick::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/VoiceTrick/VoiceTrickProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<VoiceTrick> plugin; diff --git a/plugins/LV2/src/VoiceTrick/VoiceTrick.h b/plugins/LV2/src/VoiceTrick/VoiceTrick.h new file mode 100644 index 0000000..0ad1979 --- /dev/null +++ b/plugins/LV2/src/VoiceTrick/VoiceTrick.h @@ -0,0 +1,42 @@ +#ifndef __VoiceTrick_H +#define __VoiceTrick_H + +#include <lv2plugin.h> + +class VoiceTrick : public LV2Plugin<1> { +public: + VoiceTrick(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/voicetrick"; + +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 iirLowpassA; + double iirLowpassB; + double iirLowpassC; + double iirLowpassD; + double iirLowpassE; + double iirLowpassF; + int count; + double lowpassChase; + double lowpassAmount; + double lastLowpass; + float A; +}; + +#endif diff --git a/plugins/LV2/src/VoiceTrick/VoiceTrick.ttl b/plugins/LV2/src/VoiceTrick/VoiceTrick.ttl new file mode 100644 index 0000000..d0ddae8 --- /dev/null +++ b/plugins/LV2/src/VoiceTrick/VoiceTrick.ttl @@ -0,0 +1,44 @@ +# Airwindows VoiceTrick 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/voicetrick> + 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 "Tone" ; + 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/VoiceTrick/manifest.ttl.in b/plugins/LV2/src/VoiceTrick/manifest.ttl.in new file mode 100644 index 0000000..0e13f8b --- /dev/null +++ b/plugins/LV2/src/VoiceTrick/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:voicetrick + a lv2:Plugin ; + doap:name "Airwindows VoiceTrick" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <VoiceTrick@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <VoiceTrick.ttl> . diff --git a/plugins/LV2/src/Wider/Wider.cpp b/plugins/LV2/src/Wider/Wider.cpp new file mode 100644 index 0000000..86c761c --- /dev/null +++ b/plugins/LV2/src/Wider/Wider.cpp @@ -0,0 +1,39 @@ +#include "Wider.h" +#include <iostream> +#include <lv2wrapper.h> + +Wider::Wider(double rate) + : LV2Plugin(rate) +{ +} + +void Wider::activate() +{ + A = 0.5; + B = 0.5; + C = 1.0; + for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;} + count = 0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Wider::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/Wider/WiderProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Wider> plugin; diff --git a/plugins/LV2/src/Wider/Wider.h b/plugins/LV2/src/Wider/Wider.h new file mode 100644 index 0000000..4869c7d --- /dev/null +++ b/plugins/LV2/src/Wider/Wider.h @@ -0,0 +1,39 @@ +#ifndef __Wider_H +#define __Wider_H + +#include <lv2plugin.h> + +class Wider : public LV2Plugin<3> { +public: + Wider(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/wider"; + +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 p[4099]; + int count; + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Wider/Wider.ttl b/plugins/LV2/src/Wider/Wider.ttl new file mode 100644 index 0000000..cc0e0fc --- /dev/null +++ b/plugins/LV2/src/Wider/Wider.ttl @@ -0,0 +1,60 @@ +# Airwindows Wider 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/wider> + 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 "Width" ; + 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 "Center" ; + 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/Wider/manifest.ttl.in b/plugins/LV2/src/Wider/manifest.ttl.in new file mode 100644 index 0000000..393d5e8 --- /dev/null +++ b/plugins/LV2/src/Wider/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:wider + a lv2:Plugin ; + doap:name "Airwindows Wider" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Wider@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Wider.ttl> . diff --git a/plugins/LV2/src/uLawDecode/manifest.ttl.in b/plugins/LV2/src/uLawDecode/manifest.ttl.in new file mode 100644 index 0000000..f122d73 --- /dev/null +++ b/plugins/LV2/src/uLawDecode/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:ulawdecode + a lv2:Plugin ; + doap:name "Airwindows uLawDecode" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <uLawDecode@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <uLawDecode.ttl> . diff --git a/plugins/LV2/src/uLawDecode/uLawDecode.cpp b/plugins/LV2/src/uLawDecode/uLawDecode.cpp new file mode 100644 index 0000000..13629b8 --- /dev/null +++ b/plugins/LV2/src/uLawDecode/uLawDecode.cpp @@ -0,0 +1,35 @@ +#include "uLawDecode.h" +#include <iostream> +#include <lv2wrapper.h> + +uLawDecode::uLawDecode(double rate) + : LV2Plugin(rate) +{ +} + +void uLawDecode::activate() +{ + A = 1.0; + B = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void uLawDecode::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/uLawDecode/uLawDecodeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<uLawDecode> plugin; diff --git a/plugins/LV2/src/uLawDecode/uLawDecode.h b/plugins/LV2/src/uLawDecode/uLawDecode.h new file mode 100644 index 0000000..dc6ff5d --- /dev/null +++ b/plugins/LV2/src/uLawDecode/uLawDecode.h @@ -0,0 +1,35 @@ +#ifndef __uLawDecode_H +#define __uLawDecode_H + +#include <lv2plugin.h> + +class uLawDecode : public LV2Plugin<2> { +public: + uLawDecode(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/ulawdecode"; + +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 + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/uLawDecode/uLawDecode.ttl b/plugins/LV2/src/uLawDecode/uLawDecode.ttl new file mode 100644 index 0000000..5eddebf --- /dev/null +++ b/plugins/LV2/src/uLawDecode/uLawDecode.ttl @@ -0,0 +1,52 @@ +# Airwindows uLawDecode 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/ulawdecode> + 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 "Gain" ; + 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/uLawEncode/manifest.ttl.in b/plugins/LV2/src/uLawEncode/manifest.ttl.in new file mode 100644 index 0000000..8a2b180 --- /dev/null +++ b/plugins/LV2/src/uLawEncode/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:ulawencode + a lv2:Plugin ; + doap:name "Airwindows uLawEncode" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <uLawEncode@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <uLawEncode.ttl> . diff --git a/plugins/LV2/src/uLawEncode/uLawEncode.cpp b/plugins/LV2/src/uLawEncode/uLawEncode.cpp new file mode 100644 index 0000000..2f07880 --- /dev/null +++ b/plugins/LV2/src/uLawEncode/uLawEncode.cpp @@ -0,0 +1,35 @@ +#include "uLawEncode.h" +#include <iostream> +#include <lv2wrapper.h> + +uLawEncode::uLawEncode(double rate) + : LV2Plugin(rate) +{ +} + +void uLawEncode::activate() +{ + A = 1.0; + B = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void uLawEncode::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/uLawEncode/uLawEncodeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<uLawEncode> plugin; diff --git a/plugins/LV2/src/uLawEncode/uLawEncode.h b/plugins/LV2/src/uLawEncode/uLawEncode.h new file mode 100644 index 0000000..fa8d430 --- /dev/null +++ b/plugins/LV2/src/uLawEncode/uLawEncode.h @@ -0,0 +1,35 @@ +#ifndef __uLawEncode_H +#define __uLawEncode_H + +#include <lv2plugin.h> + +class uLawEncode : public LV2Plugin<2> { +public: + uLawEncode(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/ulawencode"; + +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 + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/uLawEncode/uLawEncode.ttl b/plugins/LV2/src/uLawEncode/uLawEncode.ttl new file mode 100644 index 0000000..5623ac9 --- /dev/null +++ b/plugins/LV2/src/uLawEncode/uLawEncode.ttl @@ -0,0 +1,52 @@ +# Airwindows uLawEncode 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/ulawencode> + 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 "Gain" ; + 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" ; + ] . |