diff options
386 files changed, 17250 insertions, 101 deletions
diff --git a/plugins/LV2/CMakeLists.txt b/plugins/LV2/CMakeLists.txt index 72d14c6..91fcaf3 100755 --- a/plugins/LV2/CMakeLists.txt +++ b/plugins/LV2/CMakeLists.txt @@ -95,107 +95,107 @@ add_airwindows_plugin(DubCenter) add_airwindows_plugin(DubSub) add_airwindows_plugin(DustBunny) add_airwindows_plugin(Dyno) -# add_airwindows_plugin(EQ) -# add_airwindows_plugin(EdIsDim) -# add_airwindows_plugin(Elation) -# add_airwindows_plugin(ElectroHat) -# add_airwindows_plugin(Energy) -# add_airwindows_plugin(Ensemble) -# add_airwindows_plugin(EveryTrim) -# add_airwindows_plugin(Facet) -# add_airwindows_plugin(FathomFive) -# add_airwindows_plugin(Floor) -# add_airwindows_plugin(Focus) -# add_airwindows_plugin(Fracture) -# add_airwindows_plugin(FromTape) -# add_airwindows_plugin(Gatelope) -# add_airwindows_plugin(Golem) -# add_airwindows_plugin(Gringer) -# add_airwindows_plugin(GrooveWear) -# add_airwindows_plugin(GuitarConditioner) -# add_airwindows_plugin(HardVacuum) -# add_airwindows_plugin(Hermepass) -# add_airwindows_plugin(HermeTrim) -# add_airwindows_plugin(HighGlossDither) -# add_airwindows_plugin(HighImpact) -# add_airwindows_plugin(Highpass) -# add_airwindows_plugin(Highpass2) -# add_airwindows_plugin(Holt) -# add_airwindows_plugin(Hombre) -# add_airwindows_plugin(Interstage) -# add_airwindows_plugin(IronOxide5) -# add_airwindows_plugin(IronOxideClassic) -# add_airwindows_plugin(LeftoMono) -# add_airwindows_plugin(Logical4) -# add_airwindows_plugin(Loud) -# add_airwindows_plugin(Lowpass) -# add_airwindows_plugin(Lowpass2) -# add_airwindows_plugin(Luxor) -# add_airwindows_plugin(Melt) -# add_airwindows_plugin(MidSide) -# add_airwindows_plugin(Mojo) -# add_airwindows_plugin(Monitoring) -# add_airwindows_plugin(MoNoam) -# add_airwindows_plugin(MV) -# add_airwindows_plugin(NaturalizeDither) -# add_airwindows_plugin(NCSeventeen) -# add_airwindows_plugin(Neverland) -# add_airwindows_plugin(NodeDither) -# add_airwindows_plugin(Noise) -# add_airwindows_plugin(NonlinearSpace) -# add_airwindows_plugin(NotJustAnotherCD) -# add_airwindows_plugin(NotJustAnotherDither) -# add_airwindows_plugin(OneCornerClip) -# add_airwindows_plugin(Pafnuty) -# add_airwindows_plugin(PaulDither) -# add_airwindows_plugin(PeaksOnly) -# add_airwindows_plugin(PDBuss) -# add_airwindows_plugin(PDChannel) -# add_airwindows_plugin(PhaseNudge) -# add_airwindows_plugin(PocketVerbs) -# add_airwindows_plugin(Podcast) -# add_airwindows_plugin(PodcastDeluxe) -# add_airwindows_plugin(Point) -# add_airwindows_plugin(Pop) -# add_airwindows_plugin(PowerSag) -# add_airwindows_plugin(PowerSag2) -# add_airwindows_plugin(Precious) -# add_airwindows_plugin(Pressure4) -# add_airwindows_plugin(PurestAir) -# add_airwindows_plugin(PurestConsoleBuss) -# add_airwindows_plugin(PurestConsoleChannel) -# add_airwindows_plugin(PurestDrive) -# add_airwindows_plugin(PurestEcho) -# add_airwindows_plugin(PurestFade) -# add_airwindows_plugin(PurestGain) -# add_airwindows_plugin(PurestSquish) -# add_airwindows_plugin(PurestWarm) -# add_airwindows_plugin(Pyewacket) -# add_airwindows_plugin(RawGlitters) -# add_airwindows_plugin(RawTimbers) -# add_airwindows_plugin(Recurve) -# add_airwindows_plugin(Remap) -# add_airwindows_plugin(ResEQ) -# add_airwindows_plugin(Righteous4) -# add_airwindows_plugin(RightoMono) -# add_airwindows_plugin(SideDull) -# add_airwindows_plugin(Sidepass) -# add_airwindows_plugin(SingleEndedTriode) -# add_airwindows_plugin(Slew) -# add_airwindows_plugin(Slew2) -# add_airwindows_plugin(SlewOnly) -# add_airwindows_plugin(Smooth) -# add_airwindows_plugin(SoftGate) -# add_airwindows_plugin(SpatializeDither) -# add_airwindows_plugin(Spiral) -# add_airwindows_plugin(Spiral2) -# add_airwindows_plugin(Srsly) -# add_airwindows_plugin(StarChild) -# add_airwindows_plugin(StereoFX) -# add_airwindows_plugin(StudioTan) -# add_airwindows_plugin(SubsOnly) -# add_airwindows_plugin(Surge) -# add_airwindows_plugin(SurgeTide) +add_airwindows_plugin(EQ) +add_airwindows_plugin(EdIsDim) +add_airwindows_plugin(Elation) +add_airwindows_plugin(ElectroHat) +add_airwindows_plugin(Energy) +add_airwindows_plugin(Ensemble) +add_airwindows_plugin(EveryTrim) +add_airwindows_plugin(Facet) +add_airwindows_plugin(FathomFive) +add_airwindows_plugin(Floor) +add_airwindows_plugin(Focus) +add_airwindows_plugin(Fracture) +add_airwindows_plugin(FromTape) +add_airwindows_plugin(Gatelope) +add_airwindows_plugin(Golem) +add_airwindows_plugin(Gringer) +add_airwindows_plugin(GrooveWear) +add_airwindows_plugin(GuitarConditioner) +add_airwindows_plugin(HardVacuum) +add_airwindows_plugin(Hermepass) +add_airwindows_plugin(HermeTrim) +add_airwindows_plugin(HighGlossDither) +add_airwindows_plugin(HighImpact) +add_airwindows_plugin(Highpass) +add_airwindows_plugin(Highpass2) +add_airwindows_plugin(Holt) +add_airwindows_plugin(Hombre) +add_airwindows_plugin(Interstage) +add_airwindows_plugin(IronOxide5) +add_airwindows_plugin(IronOxideClassic) +add_airwindows_plugin(LeftoMono) +add_airwindows_plugin(Logical4) +add_airwindows_plugin(Loud) +add_airwindows_plugin(Lowpass) +add_airwindows_plugin(Lowpass2) +add_airwindows_plugin(Luxor) +add_airwindows_plugin(Melt) +add_airwindows_plugin(MidSide) +add_airwindows_plugin(Mojo) +add_airwindows_plugin(Monitoring) +add_airwindows_plugin(MoNoam) +add_airwindows_plugin(MV) +# add_airwindows_plugin(NaturalizeDither) -- Buggy code, don't compile +# add_airwindows_plugin(NCSeventeen) -- Buggy code, don't compile +add_airwindows_plugin(Neverland) +add_airwindows_plugin(NodeDither) +add_airwindows_plugin(Noise) +add_airwindows_plugin(NonlinearSpace) +# add_airwindows_plugin(NotJustAnotherCD) -- Buggy code, don't compile +add_airwindows_plugin(NotJustAnotherDither) +add_airwindows_plugin(OneCornerClip) +add_airwindows_plugin(Pafnuty) +add_airwindows_plugin(PaulDither) +add_airwindows_plugin(PeaksOnly) +add_airwindows_plugin(PDBuss) +add_airwindows_plugin(PDChannel) +add_airwindows_plugin(PhaseNudge) +add_airwindows_plugin(PocketVerbs) +add_airwindows_plugin(Podcast) +add_airwindows_plugin(PodcastDeluxe) +add_airwindows_plugin(Point) +add_airwindows_plugin(Pop) +add_airwindows_plugin(PowerSag) +add_airwindows_plugin(PowerSag2) +add_airwindows_plugin(Precious) +add_airwindows_plugin(Pressure4) +add_airwindows_plugin(PurestAir) +add_airwindows_plugin(PurestConsoleBuss) +add_airwindows_plugin(PurestConsoleChannel) +add_airwindows_plugin(PurestDrive) +add_airwindows_plugin(PurestEcho) +add_airwindows_plugin(PurestFade) +add_airwindows_plugin(PurestGain) +add_airwindows_plugin(PurestSquish) +add_airwindows_plugin(PurestWarm) +add_airwindows_plugin(Pyewacket) +add_airwindows_plugin(RawGlitters) +add_airwindows_plugin(RawTimbers) +add_airwindows_plugin(Recurve) +add_airwindows_plugin(Remap) +add_airwindows_plugin(ResEQ) +# add_airwindows_plugin(Righteous4) -- Buggy code, don't compile +add_airwindows_plugin(RightoMono) +add_airwindows_plugin(SideDull) +add_airwindows_plugin(Sidepass) +add_airwindows_plugin(SingleEndedTriode) +# add_airwindows_plugin(Slew) -- Failed autoconvert +add_airwindows_plugin(Slew2) +add_airwindows_plugin(SlewOnly) +add_airwindows_plugin(Smooth) +add_airwindows_plugin(SoftGate) +add_airwindows_plugin(SpatializeDither) +add_airwindows_plugin(Spiral) +add_airwindows_plugin(Spiral2) +add_airwindows_plugin(Srsly) +add_airwindows_plugin(StarChild) +add_airwindows_plugin(StereoFX) +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) diff --git a/plugins/LV2/manifest.ttl.in b/plugins/LV2/manifest.ttl.in index 072d235..6c1bb5f 100644 --- a/plugins/LV2/manifest.ttl.in +++ b/plugins/LV2/manifest.ttl.in @@ -577,3 +577,675 @@ airwindows:dyno doap:license <http://opensource.org/licenses/mit> ; lv2:binary <Dyno@CMAKE_SHARED_LIBRARY_SUFFIX@> ; rdfs:seeAlso <Dyno.ttl> . + +airwindows:eq + a lv2:Plugin ; + doap:name "Airwindows EQ" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <EQ@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <EQ.ttl> . + +airwindows:edisdim + a lv2:Plugin ; + doap:name "Airwindows EdIsDim" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <EdIsDim@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <EdIsDim.ttl> . + +airwindows:elation + a lv2:Plugin ; + doap:name "Airwindows Elation" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Elation@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Elation.ttl> . + +airwindows:electrohat + a lv2:Plugin ; + doap:name "Airwindows ElectroHat" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ElectroHat@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ElectroHat.ttl> . + +airwindows:energy + a lv2:Plugin ; + doap:name "Airwindows Energy" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Energy@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Energy.ttl> . + +airwindows:ensemble + a lv2:Plugin ; + doap:name "Airwindows Ensemble" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Ensemble@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Ensemble.ttl> . + +airwindows:everytrim + a lv2:Plugin ; + doap:name "Airwindows EveryTrim" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <EveryTrim@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <EveryTrim.ttl> . + +airwindows:facet + a lv2:Plugin ; + doap:name "Airwindows Facet" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Facet@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Facet.ttl> . + +airwindows:fathomfive + a lv2:Plugin ; + doap:name "Airwindows FathomFive" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <FathomFive@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <FathomFive.ttl> . + +airwindows:floor + a lv2:Plugin ; + doap:name "Airwindows Floor" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Floor@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Floor.ttl> . + +airwindows:focus + a lv2:Plugin ; + doap:name "Airwindows Focus" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Focus@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Focus.ttl> . + +airwindows:fracture + a lv2:Plugin ; + doap:name "Airwindows Fracture" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Fracture@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Fracture.ttl> . + +airwindows:fromtape + a lv2:Plugin ; + doap:name "Airwindows FromTape" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <FromTape@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <FromTape.ttl> . + +airwindows:gatelope + a lv2:Plugin ; + doap:name "Airwindows Gatelope" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Gatelope@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Gatelope.ttl> . + +airwindows:golem + a lv2:Plugin ; + doap:name "Airwindows Golem" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Golem@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Golem.ttl> . + +airwindows:gringer + a lv2:Plugin ; + doap:name "Airwindows Gringer" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Gringer@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Gringer.ttl> . + +airwindows:groovewear + a lv2:Plugin ; + doap:name "Airwindows GrooveWear" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <GrooveWear@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <GrooveWear.ttl> . + +airwindows:guitarconditioner + a lv2:Plugin ; + doap:name "Airwindows GuitarConditioner" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <GuitarConditioner@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <GuitarConditioner.ttl> . + +airwindows:hardvacuum + a lv2:Plugin ; + doap:name "Airwindows HardVacuum" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HardVacuum@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HardVacuum.ttl> . + +airwindows:hermetrim + a lv2:Plugin ; + doap:name "Airwindows HermeTrim" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HermeTrim@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HermeTrim.ttl> . + +airwindows:hermepass + a lv2:Plugin ; + doap:name "Airwindows Hermepass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Hermepass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Hermepass.ttl> . + +airwindows:highglossdither + a lv2:Plugin ; + doap:name "Airwindows HighGlossDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HighGlossDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HighGlossDither.ttl> . + +airwindows:highimpact + a lv2:Plugin ; + doap:name "Airwindows HighImpact" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HighImpact@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HighImpact.ttl> . + +airwindows:highpass + a lv2:Plugin ; + doap:name "Airwindows Highpass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Highpass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Highpass.ttl> . + +airwindows:highpass2 + a lv2:Plugin ; + doap:name "Airwindows Highpass2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Highpass2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Highpass2.ttl> . + +airwindows:holt + a lv2:Plugin ; + doap:name "Airwindows Holt" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Holt@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Holt.ttl> . + +airwindows:hombre + a lv2:Plugin ; + doap:name "Airwindows Hombre" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Hombre@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Hombre.ttl> . + +airwindows:interstage + a lv2:Plugin ; + doap:name "Airwindows Interstage" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Interstage@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Interstage.ttl> . + +airwindows:ironoxide5 + a lv2:Plugin ; + doap:name "Airwindows IronOxide5" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <IronOxide5@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <IronOxide5.ttl> . + +airwindows:ironoxideclassic + a lv2:Plugin ; + doap:name "Airwindows IronOxideClassic" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <IronOxideClassic@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <IronOxideClassic.ttl> . + +airwindows:leftomono + a lv2:Plugin ; + doap:name "Airwindows LeftoMono" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <LeftoMono@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <LeftoMono.ttl> . + +airwindows:logical4 + a lv2:Plugin ; + doap:name "Airwindows Logical4" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Logical4@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Logical4.ttl> . + +airwindows:loud + a lv2:Plugin ; + doap:name "Airwindows Loud" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Loud@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Loud.ttl> . + +airwindows:lowpass + a lv2:Plugin ; + doap:name "Airwindows Lowpass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Lowpass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Lowpass.ttl> . + +airwindows:lowpass2 + a lv2:Plugin ; + doap:name "Airwindows Lowpass2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Lowpass2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Lowpass2.ttl> . + +airwindows:luxor + a lv2:Plugin ; + doap:name "Airwindows Luxor" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Luxor@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Luxor.ttl> . + +airwindows:mv + a lv2:Plugin ; + doap:name "Airwindows MV" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <MV@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <MV.ttl> . + +airwindows:melt + a lv2:Plugin ; + doap:name "Airwindows Melt" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Melt@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Melt.ttl> . + +airwindows:midside + a lv2:Plugin ; + doap:name "Airwindows MidSide" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <MidSide@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <MidSide.ttl> . + +airwindows:monoam + a lv2:Plugin ; + doap:name "Airwindows MoNoam" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <MoNoam@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <MoNoam.ttl> . + +airwindows:mojo + a lv2:Plugin ; + doap:name "Airwindows Mojo" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Mojo@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Mojo.ttl> . + +airwindows:monitoring + a lv2:Plugin ; + doap:name "Airwindows Monitoring" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Monitoring@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Monitoring.ttl> . + +airwindows:neverland + a lv2:Plugin ; + doap:name "Airwindows Neverland" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Neverland@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Neverland.ttl> . + +airwindows:nodedither + a lv2:Plugin ; + doap:name "Airwindows NodeDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <NodeDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <NodeDither.ttl> . + +airwindows:noise + a lv2:Plugin ; + doap:name "Airwindows Noise" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Noise@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Noise.ttl> . + +airwindows:nonlinearspace + a lv2:Plugin ; + doap:name "Airwindows NonlinearSpace" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <NonlinearSpace@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <NonlinearSpace.ttl> . + +airwindows:notjustanotherdither + a lv2:Plugin ; + doap:name "Airwindows NotJustAnotherDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <NotJustAnotherDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <NotJustAnotherDither.ttl> . + +airwindows:onecornerclip + a lv2:Plugin ; + doap:name "Airwindows OneCornerClip" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <OneCornerClip@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <OneCornerClip.ttl> . + +airwindows:pdbuss + a lv2:Plugin ; + doap:name "Airwindows PDBuss" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PDBuss@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PDBuss.ttl> . + +airwindows:pdchannel + a lv2:Plugin ; + doap:name "Airwindows PDChannel" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PDChannel@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PDChannel.ttl> . + +airwindows:pafnuty + a lv2:Plugin ; + doap:name "Airwindows Pafnuty" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pafnuty@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pafnuty.ttl> . + +airwindows:pauldither + a lv2:Plugin ; + doap:name "Airwindows PaulDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PaulDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PaulDither.ttl> . + +airwindows:peaksonly + a lv2:Plugin ; + doap:name "Airwindows PeaksOnly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PeaksOnly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PeaksOnly.ttl> . + +airwindows:phasenudge + a lv2:Plugin ; + doap:name "Airwindows PhaseNudge" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PhaseNudge@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PhaseNudge.ttl> . + +airwindows:pocketverbs + a lv2:Plugin ; + doap:name "Airwindows PocketVerbs" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PocketVerbs@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PocketVerbs.ttl> . + +airwindows:podcast + a lv2:Plugin ; + doap:name "Airwindows Podcast" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Podcast@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Podcast.ttl> . + +airwindows:podcastdeluxe + a lv2:Plugin ; + doap:name "Airwindows PodcastDeluxe" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PodcastDeluxe@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PodcastDeluxe.ttl> . + +airwindows:point + a lv2:Plugin ; + doap:name "Airwindows Point" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Point@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Point.ttl> . + +airwindows:pop + a lv2:Plugin ; + doap:name "Airwindows Pop" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pop@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pop.ttl> . + +airwindows:powersag + a lv2:Plugin ; + doap:name "Airwindows PowerSag" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PowerSag@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PowerSag.ttl> . + +airwindows:powersag2 + a lv2:Plugin ; + doap:name "Airwindows PowerSag2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PowerSag2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PowerSag2.ttl> . + +airwindows:precious + a lv2:Plugin ; + doap:name "Airwindows Precious" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Precious@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Precious.ttl> . + +airwindows:pressure4 + a lv2:Plugin ; + doap:name "Airwindows Pressure4" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pressure4@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pressure4.ttl> . + +airwindows:purestair + a lv2:Plugin ; + doap:name "Airwindows PurestAir" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestAir@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestAir.ttl> . + +airwindows:purestconsolebuss + a lv2:Plugin ; + doap:name "Airwindows PurestConsoleBuss" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestConsoleBuss@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestConsoleBuss.ttl> . + +airwindows:purestconsolechannel + a lv2:Plugin ; + doap:name "Airwindows PurestConsoleChannel" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestConsoleChannel@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestConsoleChannel.ttl> . + +airwindows:purestdrive + a lv2:Plugin ; + doap:name "Airwindows PurestDrive" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestDrive@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestDrive.ttl> . + +airwindows:purestecho + a lv2:Plugin ; + doap:name "Airwindows PurestEcho" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestEcho@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestEcho.ttl> . + +airwindows:purestfade + a lv2:Plugin ; + doap:name "Airwindows PurestFade" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestFade@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestFade.ttl> . + +airwindows:purestgain + a lv2:Plugin ; + doap:name "Airwindows PurestGain" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestGain@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestGain.ttl> . + +airwindows:purestsquish + a lv2:Plugin ; + doap:name "Airwindows PurestSquish" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestSquish@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestSquish.ttl> . + +airwindows:purestwarm + a lv2:Plugin ; + doap:name "Airwindows PurestWarm" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestWarm@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestWarm.ttl> . + +airwindows:pyewacket + a lv2:Plugin ; + doap:name "Airwindows Pyewacket" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pyewacket@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pyewacket.ttl> . + +airwindows:rawglitters + a lv2:Plugin ; + doap:name "Airwindows RawGlitters" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <RawGlitters@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <RawGlitters.ttl> . + +airwindows:rawtimbers + a lv2:Plugin ; + doap:name "Airwindows RawTimbers" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <RawTimbers@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <RawTimbers.ttl> . + +airwindows:recurve + a lv2:Plugin ; + doap:name "Airwindows Recurve" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Recurve@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Recurve.ttl> . + +airwindows:remap + a lv2:Plugin ; + doap:name "Airwindows Remap" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Remap@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Remap.ttl> . + +airwindows:reseq + a lv2:Plugin ; + doap:name "Airwindows ResEQ" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ResEQ@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ResEQ.ttl> . + +airwindows:rightomono + a lv2:Plugin ; + doap:name "Airwindows RightoMono" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <RightoMono@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <RightoMono.ttl> . + +airwindows:sidedull + a lv2:Plugin ; + doap:name "Airwindows SideDull" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SideDull@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SideDull.ttl> . + +airwindows:sidepass + a lv2:Plugin ; + doap:name "Airwindows Sidepass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Sidepass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Sidepass.ttl> . + +airwindows:singleendedtriode + a lv2:Plugin ; + doap:name "Airwindows SingleEndedTriode" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SingleEndedTriode@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SingleEndedTriode.ttl> . + +airwindows:slew2 + a lv2:Plugin ; + doap:name "Airwindows Slew2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Slew2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Slew2.ttl> . + +airwindows:slewonly + a lv2:Plugin ; + doap:name "Airwindows SlewOnly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SlewOnly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SlewOnly.ttl> . + +airwindows:smooth + a lv2:Plugin ; + doap:name "Airwindows Smooth" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Smooth@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Smooth.ttl> . + +airwindows:softgate + a lv2:Plugin ; + doap:name "Airwindows SoftGate" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SoftGate@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SoftGate.ttl> . + +airwindows:spatializedither + a lv2:Plugin ; + doap:name "Airwindows SpatializeDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SpatializeDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SpatializeDither.ttl> . + +airwindows:spiral + a lv2:Plugin ; + doap:name "Airwindows Spiral" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Spiral@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Spiral.ttl> . + +airwindows:spiral2 + a lv2:Plugin ; + doap:name "Airwindows Spiral2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Spiral2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Spiral2.ttl> . + +airwindows:srsly + a lv2:Plugin ; + doap:name "Airwindows Srsly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Srsly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Srsly.ttl> . + +airwindows:starchild + a lv2:Plugin ; + doap:name "Airwindows StarChild" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <StarChild@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <StarChild.ttl> . + +airwindows:stereofx + a lv2:Plugin ; + doap:name "Airwindows StereoFX" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <StereoFX@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <StereoFX.ttl> . + +airwindows:studiotan + a lv2:Plugin ; + doap:name "Airwindows StudioTan" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <StudioTan@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <StudioTan.ttl> . + +airwindows:subsonly + a lv2:Plugin ; + doap:name "Airwindows SubsOnly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SubsOnly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SubsOnly.ttl> . + +airwindows:surge + a lv2:Plugin ; + doap:name "Airwindows Surge" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Surge@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Surge.ttl> . + +airwindows:surgetide + a lv2:Plugin ; + doap:name "Airwindows SurgeTide" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SurgeTide@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SurgeTide.ttl> . diff --git a/plugins/LV2/src/EQ/EQ.cpp b/plugins/LV2/src/EQ/EQ.cpp new file mode 100644 index 0000000..6698760 --- /dev/null +++ b/plugins/LV2/src/EQ/EQ.cpp @@ -0,0 +1,138 @@ +#include "EQ.h" +#include <iostream> +#include <lv2wrapper.h> + +EQ::EQ(double rate) + : LV2Plugin(rate) +{ +} + +void EQ::activate() +{ + A = 0.5; //Treble -12 to 12 + B = 0.5; //Mid -12 to 12 + C = 0.5; //Bass -12 to 12 + D = 1.0; //Lowpass 16.0K log 1 to 16 defaulting to 16K + E = 0.4; //TrebFrq 6.0 log 1 to 16 defaulting to 6K + F = 0.4; //BassFrq 100.0 log 30 to 1600 defaulting to 100 hz + G = 0.0; //Hipass 30.0 log 30 to 1600 defaulting to 30 + H = 0.5; //OutGain -18 to 18 + + lastSampleL = 0.0; + last2SampleL = 0.0; + lastSampleR = 0.0; + last2SampleR = 0.0; + + iirHighSampleLA = 0.0; + iirHighSampleLB = 0.0; + iirHighSampleLC = 0.0; + iirHighSampleLD = 0.0; + iirHighSampleLE = 0.0; + iirLowSampleLA = 0.0; + iirLowSampleLB = 0.0; + iirLowSampleLC = 0.0; + iirLowSampleLD = 0.0; + iirLowSampleLE = 0.0; + iirHighSampleL = 0.0; + iirLowSampleL = 0.0; + + iirHighSampleRA = 0.0; + iirHighSampleRB = 0.0; + iirHighSampleRC = 0.0; + iirHighSampleRD = 0.0; + iirHighSampleRE = 0.0; + iirLowSampleRA = 0.0; + iirLowSampleRB = 0.0; + iirLowSampleRC = 0.0; + iirLowSampleRD = 0.0; + iirLowSampleRE = 0.0; + iirHighSampleR = 0.0; + iirLowSampleR = 0.0; + + tripletLA = 0.0; + tripletLB = 0.0; + tripletLC = 0.0; + tripletFactorL = 0.0; + + tripletRA = 0.0; + tripletRB = 0.0; + tripletRC = 0.0; + tripletFactorR = 0.0; + + lowpassSampleLAA = 0.0; + lowpassSampleLAB = 0.0; + lowpassSampleLBA = 0.0; + lowpassSampleLBB = 0.0; + lowpassSampleLCA = 0.0; + lowpassSampleLCB = 0.0; + lowpassSampleLDA = 0.0; + lowpassSampleLDB = 0.0; + lowpassSampleLE = 0.0; + lowpassSampleLF = 0.0; + lowpassSampleLG = 0.0; + + lowpassSampleRAA = 0.0; + lowpassSampleRAB = 0.0; + lowpassSampleRBA = 0.0; + lowpassSampleRBB = 0.0; + lowpassSampleRCA = 0.0; + lowpassSampleRCB = 0.0; + lowpassSampleRDA = 0.0; + lowpassSampleRDB = 0.0; + lowpassSampleRE = 0.0; + lowpassSampleRF = 0.0; + lowpassSampleRG = 0.0; + + highpassSampleLAA = 0.0; + highpassSampleLAB = 0.0; + highpassSampleLBA = 0.0; + highpassSampleLBB = 0.0; + highpassSampleLCA = 0.0; + highpassSampleLCB = 0.0; + highpassSampleLDA = 0.0; + highpassSampleLDB = 0.0; + highpassSampleLE = 0.0; + highpassSampleLF = 0.0; + + highpassSampleRAA = 0.0; + highpassSampleRAB = 0.0; + highpassSampleRBA = 0.0; + highpassSampleRBB = 0.0; + highpassSampleRCA = 0.0; + highpassSampleRCB = 0.0; + highpassSampleRDA = 0.0; + highpassSampleRDB = 0.0; + highpassSampleRE = 0.0; + highpassSampleRF = 0.0; + + flip = false; + flipthree = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void EQ::run(uint32_t num_samples) +{ + A = *params[0]; + B = *params[1]; + C = *params[2]; + D = *params[3]; + E = *params[4]; + F = *params[5]; + G = *params[6]; + H = *params[7]; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/EQ/EQProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<EQ> plugin; diff --git a/plugins/LV2/src/EQ/EQ.h b/plugins/LV2/src/EQ/EQ.h new file mode 100644 index 0000000..619b1aa --- /dev/null +++ b/plugins/LV2/src/EQ/EQ.h @@ -0,0 +1,135 @@ +#ifndef __EQ_H +#define __EQ_H + +#include <lv2plugin.h> + +class EQ : public LV2Plugin<8> { +public: + EQ(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/eq"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + double lastSampleL; + double last2SampleL; + double lastSampleR; + double last2SampleR; + + //begin EQ + double iirHighSampleLA; + double iirHighSampleLB; + double iirHighSampleLC; + double iirHighSampleLD; + double iirHighSampleLE; + double iirLowSampleLA; + double iirLowSampleLB; + double iirLowSampleLC; + double iirLowSampleLD; + double iirLowSampleLE; + double iirHighSampleL; + double iirLowSampleL; + + double iirHighSampleRA; + double iirHighSampleRB; + double iirHighSampleRC; + double iirHighSampleRD; + double iirHighSampleRE; + double iirLowSampleRA; + double iirLowSampleRB; + double iirLowSampleRC; + double iirLowSampleRD; + double iirLowSampleRE; + double iirHighSampleR; + double iirLowSampleR; + + double tripletLA; + double tripletLB; + double tripletLC; + double tripletFactorL; + + double tripletRA; + double tripletRB; + double tripletRC; + double tripletFactorR; + + double lowpassSampleLAA; + double lowpassSampleLAB; + double lowpassSampleLBA; + double lowpassSampleLBB; + double lowpassSampleLCA; + double lowpassSampleLCB; + double lowpassSampleLDA; + double lowpassSampleLDB; + double lowpassSampleLE; + double lowpassSampleLF; + double lowpassSampleLG; + + double lowpassSampleRAA; + double lowpassSampleRAB; + double lowpassSampleRBA; + double lowpassSampleRBB; + double lowpassSampleRCA; + double lowpassSampleRCB; + double lowpassSampleRDA; + double lowpassSampleRDB; + double lowpassSampleRE; + double lowpassSampleRF; + double lowpassSampleRG; + + double highpassSampleLAA; + double highpassSampleLAB; + double highpassSampleLBA; + double highpassSampleLBB; + double highpassSampleLCA; + double highpassSampleLCB; + double highpassSampleLDA; + double highpassSampleLDB; + double highpassSampleLE; + double highpassSampleLF; + + double highpassSampleRAA; + double highpassSampleRAB; + double highpassSampleRBA; + double highpassSampleRBB; + double highpassSampleRCA; + double highpassSampleRCB; + double highpassSampleRDA; + double highpassSampleRDB; + double highpassSampleRE; + double highpassSampleRF; + + bool flip; + int flipthree; + //end EQ + + + float A; + float B; + float C; + float D; + float E; + float F; + float G; + float H; + +}; + +#endif diff --git a/plugins/LV2/src/EQ/EQ.ttl b/plugins/LV2/src/EQ/EQ.ttl new file mode 100644 index 0000000..768a8e0 --- /dev/null +++ b/plugins/LV2/src/EQ/EQ.ttl @@ -0,0 +1,100 @@ +# Airwindows EQ 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/eq> + 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 "Treble" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Mid" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Bass" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 3 ; + lv2:symbol "D" ; + lv2:name "Lowpass" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 4 ; + lv2:symbol "E" ; + lv2:name "TrebFrq" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 5 ; + lv2:symbol "F" ; + lv2:name "BassFrq" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 6 ; + lv2:symbol "G" ; + lv2:name "Hipass" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 7 ; + lv2:symbol "H" ; + lv2:name "OutGain" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 8 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 9 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 10 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 11 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/EQ/manifest.ttl.in b/plugins/LV2/src/EQ/manifest.ttl.in new file mode 100644 index 0000000..8b8f7b4 --- /dev/null +++ b/plugins/LV2/src/EQ/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:eq + a lv2:Plugin ; + doap:name "Airwindows EQ" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <EQ@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <EQ.ttl> . diff --git a/plugins/LV2/src/EdIsDim/EdIsDim.cpp b/plugins/LV2/src/EdIsDim/EdIsDim.cpp new file mode 100644 index 0000000..461b22d --- /dev/null +++ b/plugins/LV2/src/EdIsDim/EdIsDim.cpp @@ -0,0 +1,33 @@ +#include "EdIsDim.h" +#include <iostream> +#include <lv2wrapper.h> + +EdIsDim::EdIsDim(double rate) + : LV2Plugin(rate) +{ +} + +void EdIsDim::activate() +{ + A = 0.5; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void EdIsDim::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/EdIsDim/EdIsDimProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<EdIsDim> plugin; diff --git a/plugins/LV2/src/EdIsDim/EdIsDim.h b/plugins/LV2/src/EdIsDim/EdIsDim.h new file mode 100644 index 0000000..4c81a09 --- /dev/null +++ b/plugins/LV2/src/EdIsDim/EdIsDim.h @@ -0,0 +1,34 @@ +#ifndef __EdIsDim_H +#define __EdIsDim_H + +#include <lv2plugin.h> + +class EdIsDim : public LV2Plugin<1> { +public: + EdIsDim(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/edisdim"; + +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; +}; + +#endif diff --git a/plugins/LV2/src/EdIsDim/EdIsDim.ttl b/plugins/LV2/src/EdIsDim/EdIsDim.ttl new file mode 100644 index 0000000..1e54652 --- /dev/null +++ b/plugins/LV2/src/EdIsDim/EdIsDim.ttl @@ -0,0 +1,44 @@ +# Airwindows EdIsDim 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/edisdim> + 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 "ediS/diM" ; + 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/EdIsDim/manifest.ttl.in b/plugins/LV2/src/EdIsDim/manifest.ttl.in new file mode 100644 index 0000000..300b8b8 --- /dev/null +++ b/plugins/LV2/src/EdIsDim/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:edisdim + a lv2:Plugin ; + doap:name "Airwindows EdIsDim" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <EdIsDim@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <EdIsDim.ttl> . diff --git a/plugins/LV2/src/Elation/Elation.cpp b/plugins/LV2/src/Elation/Elation.cpp new file mode 100644 index 0000000..aa16f92 --- /dev/null +++ b/plugins/LV2/src/Elation/Elation.cpp @@ -0,0 +1,45 @@ +#include "Elation.h" +#include <iostream> +#include <lv2wrapper.h> + +Elation::Elation(double rate) + : LV2Plugin(rate) +{ +} + +void Elation::activate() +{ + A = 1.0; + B = 0.3333333; + C = 0.3333333; + D = 1.0; + for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;} + compAL = 1.0; compBL = 1.0; previousL = 0.0; + compCL = 1.0; compDL = 1.0; previousBL = 0.0; + compAR = 1.0; compBR = 1.0; previousR = 0.0; + compCR = 1.0; compDR = 1.0; previousBR = 0.0; + flip = false; + lastSampleR = 0.0;lastSampleL = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Elation::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/Elation/ElationProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Elation> plugin; diff --git a/plugins/LV2/src/Elation/Elation.h b/plugins/LV2/src/Elation/Elation.h new file mode 100644 index 0000000..1cb014a --- /dev/null +++ b/plugins/LV2/src/Elation/Elation.h @@ -0,0 +1,55 @@ +#ifndef __Elation_H +#define __Elation_H + +#include <lv2plugin.h> + +class Elation : public LV2Plugin<4> { +public: + Elation(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/elation"; + +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 compAL; + double compBL; + double compCL; + double compDL; + double previousL; + double previousBL; + double compAR; + double compBR; + double compCR; + double compDR; + double previousR; + double previousBR; + bool flip; + + + double bR[35]; + double lastSampleR; + double bL[35]; + double lastSampleL; + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/Elation/Elation.ttl b/plugins/LV2/src/Elation/Elation.ttl new file mode 100644 index 0000000..913143c --- /dev/null +++ b/plugins/LV2/src/Elation/Elation.ttl @@ -0,0 +1,68 @@ +# Airwindows Elation 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/elation> + 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 "Dry/Wet" ; + 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 "Persnlty" ; + 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 "Drive" ; + 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 "Output" ; + 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/Elation/manifest.ttl.in b/plugins/LV2/src/Elation/manifest.ttl.in new file mode 100644 index 0000000..5f7e11f --- /dev/null +++ b/plugins/LV2/src/Elation/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:elation + a lv2:Plugin ; + doap:name "Airwindows Elation" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Elation@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Elation.ttl> . diff --git a/plugins/LV2/src/ElectroHat/ElectroHat.cpp b/plugins/LV2/src/ElectroHat/ElectroHat.cpp new file mode 100644 index 0000000..ef34d4f --- /dev/null +++ b/plugins/LV2/src/ElectroHat/ElectroHat.cpp @@ -0,0 +1,49 @@ +#include "ElectroHat.h" +#include <iostream> +#include <lv2wrapper.h> + +ElectroHat::ElectroHat(double rate) + : LV2Plugin(rate) +{ +} + +void ElectroHat::activate() +{ + A = 0.0; + B = 0.5; + C = 1.0; + D = 0.1; + E = 1.0; + storedSampleL = 0.0; + storedSampleR = 0.0; + lastSampleL = 0.0; + lastSampleR = 0.0; + tik = 3746926; + lok = 0; + flip = true; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void ElectroHat::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/ElectroHat/ElectroHatProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<ElectroHat> plugin; diff --git a/plugins/LV2/src/ElectroHat/ElectroHat.h b/plugins/LV2/src/ElectroHat/ElectroHat.h new file mode 100644 index 0000000..1aa49eb --- /dev/null +++ b/plugins/LV2/src/ElectroHat/ElectroHat.h @@ -0,0 +1,47 @@ +#ifndef __ElectroHat_H +#define __ElectroHat_H + +#include <lv2plugin.h> + +class ElectroHat : public LV2Plugin<5> { +public: + ElectroHat(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/electrohat"; + +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 storedSampleL; + double storedSampleR; + double lastSampleL; + double lastSampleR; + int tik; + int lok; + bool flip; + + 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/ElectroHat/ElectroHat.ttl b/plugins/LV2/src/ElectroHat/ElectroHat.ttl new file mode 100644 index 0000000..4e28814 --- /dev/null +++ b/plugins/LV2/src/ElectroHat/ElectroHat.ttl @@ -0,0 +1,76 @@ +# Airwindows ElectroHat 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/electrohat> + 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 "HiHat" ; + 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 "Trim" ; + 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 "Bright" ; + 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 "Output" ; + 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 "Dry/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/ElectroHat/manifest.ttl.in b/plugins/LV2/src/ElectroHat/manifest.ttl.in new file mode 100644 index 0000000..77295e7 --- /dev/null +++ b/plugins/LV2/src/ElectroHat/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:electrohat + a lv2:Plugin ; + doap:name "Airwindows ElectroHat" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ElectroHat@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ElectroHat.ttl> . diff --git a/plugins/LV2/src/Energy/Energy.cpp b/plugins/LV2/src/Energy/Energy.cpp new file mode 100644 index 0000000..2613fd2 --- /dev/null +++ b/plugins/LV2/src/Energy/Energy.cpp @@ -0,0 +1,188 @@ +#include "Energy.h" +#include <iostream> +#include <lv2wrapper.h> + +Energy::Energy(double rate) + : LV2Plugin(rate) +{ +} + +void Energy::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.5; + E = 0.5; + F = 0.5; + G = 0.5; + H = 0.5; + I = 1.0; + + duoEvenL = 0.0; + duoOddL = 0.0; + duoFactorL = 0.0; + duoEvenR = 0.0; + duoOddR = 0.0; + duoFactorR = 0.0; + flip = false; + + tripletAL = 0.0; + tripletBL = 0.0; + tripletCL = 0.0; + tripletFactorL = 0.0; + tripletAR = 0.0; + tripletBR = 0.0; + tripletCR = 0.0; + tripletFactorR = 0.0; + countA = 1; + + quadAL = 0.0; + quadBL = 0.0; + quadCL = 0.0; + quadDL = 0.0; + quadFactorL = 0.0; + quadAR = 0.0; + quadBR = 0.0; + quadCR = 0.0; + quadDR = 0.0; + quadFactorR = 0.0; + countB = 1; + + quintAL = 0.0; + quintBL = 0.0; + quintCL = 0.0; + quintDL = 0.0; + quintEL = 0.0; + quintFactorL = 0.0; + quintAR = 0.0; + quintBR = 0.0; + quintCR = 0.0; + quintDR = 0.0; + quintER = 0.0; + quintFactorR = 0.0; + countC = 1; + + sextAL = 0.0; + sextBL = 0.0; + sextCL = 0.0; + sextDL = 0.0; + sextEL = 0.0; + sextFL = 0.0; + sextFactorL = 0.0; + sextAR = 0.0; + sextBR = 0.0; + sextCR = 0.0; + sextDR = 0.0; + sextER = 0.0; + sextFR = 0.0; + sextFactorR = 0.0; + countD = 1; + + septAL = 0.0; + septBL = 0.0; + septCL = 0.0; + septDL = 0.0; + septEL = 0.0; + septFL = 0.0; + septGL = 0.0; + septFactorL = 0.0; + septAR = 0.0; + septBR = 0.0; + septCR = 0.0; + septDR = 0.0; + septER = 0.0; + septFR = 0.0; + septGR = 0.0; + septFactorR = 0.0; + countE = 1; + + octAL = 0.0; + octBL = 0.0; + octCL = 0.0; + octDL = 0.0; + octEL = 0.0; + octFL = 0.0; + octGL = 0.0; + octHL = 0.0; + octFactorL = 0.0; + octAR = 0.0; + octBR = 0.0; + octCR = 0.0; + octDR = 0.0; + octER = 0.0; + octFR = 0.0; + octGR = 0.0; + octHR = 0.0; + octFactorR = 0.0; + countF = 1; + + nintAL = 0.0; + nintBL = 0.0; + nintCL = 0.0; + nintDL = 0.0; + nintEL = 0.0; + nintFL = 0.0; + nintGL = 0.0; + nintHL = 0.0; + nintIL = 0.0; + nintFactorL = 0.0; + nintAR = 0.0; + nintBR = 0.0; + nintCR = 0.0; + nintDR = 0.0; + nintER = 0.0; + nintFR = 0.0; + nintGR = 0.0; + nintHR = 0.0; + nintIR = 0.0; + nintFactorR = 0.0; + countG = 1; + + PrevHL = 0.0; + PrevGL = 0.0; + PrevFL = 0.0; + PrevEL = 0.0; + PrevDL = 0.0; + PrevCL = 0.0; + PrevBL = 0.0; + PrevAL = 0.0; + PrevHR = 0.0; + PrevGR = 0.0; + PrevFR = 0.0; + PrevER = 0.0; + PrevDR = 0.0; + PrevCR = 0.0; + PrevBR = 0.0; + PrevAR = 0.0; + + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Energy::run(uint32_t num_samples) +{ + A = *params[0]; + B = *params[1]; + C = *params[2]; + D = *params[3]; + E = *params[4]; + F = *params[5]; + G = *params[6]; + H = *params[7]; + I = *params[8]; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/Energy/EnergyProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Energy> plugin; diff --git a/plugins/LV2/src/Energy/Energy.h b/plugins/LV2/src/Energy/Energy.h new file mode 100644 index 0000000..e489585 --- /dev/null +++ b/plugins/LV2/src/Energy/Energy.h @@ -0,0 +1,189 @@ +#ifndef __Energy_H +#define __Energy_H + +#include <lv2plugin.h> + +class Energy : public LV2Plugin<9> { +public: + Energy(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/energy"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + double duoEvenL; + double duoOddL; + double duoFactorL; + bool flip; + + double tripletAL; + double tripletBL; + double tripletCL; + double tripletFactorL; + int countA; + + double quadAL; + double quadBL; + double quadCL; + double quadDL; + double quadFactorL; + int countB; + + double quintAL; + double quintBL; + double quintCL; + double quintDL; + double quintEL; + double quintFactorL; + int countC; + + double sextAL; + double sextBL; + double sextCL; + double sextDL; + double sextEL; + double sextFL; + double sextFactorL; + int countD; + + double septAL; + double septBL; + double septCL; + double septDL; + double septEL; + double septFL; + double septGL; + double septFactorL; + int countE; + + double octAL; + double octBL; + double octCL; + double octDL; + double octEL; + double octFL; + double octGL; + double octHL; + double octFactorL; + int countF; + + double nintAL; + double nintBL; + double nintCL; + double nintDL; + double nintEL; + double nintFL; + double nintGL; + double nintHL; + double nintIL; + double nintFactorL; + int countG; + + double PrevHL; + double PrevGL; + double PrevFL; + double PrevEL; + double PrevDL; + double PrevCL; + double PrevBL; + double PrevAL; + + double duoEvenR; + double duoOddR; + double duoFactorR; + + double tripletAR; + double tripletBR; + double tripletCR; + double tripletFactorR; + + double quadAR; + double quadBR; + double quadCR; + double quadDR; + double quadFactorR; + + double quintAR; + double quintBR; + double quintCR; + double quintDR; + double quintER; + double quintFactorR; + + double sextAR; + double sextBR; + double sextCR; + double sextDR; + double sextER; + double sextFR; + double sextFactorR; + + double septAR; + double septBR; + double septCR; + double septDR; + double septER; + double septFR; + double septGR; + double septFactorR; + + double octAR; + double octBR; + double octCR; + double octDR; + double octER; + double octFR; + double octGR; + double octHR; + double octFactorR; + + double nintAR; + double nintBR; + double nintCR; + double nintDR; + double nintER; + double nintFR; + double nintGR; + double nintHR; + double nintIR; + double nintFactorR; + + double PrevHR; + double PrevGR; + double PrevFR; + double PrevER; + double PrevDR; + double PrevCR; + double PrevBR; + double PrevAR; + + float A; + float B; + float C; + float D; + float E; + float F; + float G; + float H; + float I; + +}; + +#endif diff --git a/plugins/LV2/src/Energy/Energy.ttl b/plugins/LV2/src/Energy/Energy.ttl new file mode 100644 index 0000000..df5e9fc --- /dev/null +++ b/plugins/LV2/src/Energy/Energy.ttl @@ -0,0 +1,108 @@ +# Airwindows Energy plugin description + +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<https://www.airwindows.com/energy> + a lv2:Plugin , + lv2:EQPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Hiss" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Glitter" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Rat" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 3 ; + lv2:symbol "D" ; + lv2:name "Fizz" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 4 ; + lv2:symbol "E" ; + lv2:name "Scrape" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 5 ; + lv2:symbol "F" ; + lv2:name "Chug" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 6 ; + lv2:symbol "G" ; + lv2:name "Yowr" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 7 ; + lv2:symbol "H" ; + lv2:name "Snarl" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 8 ; + lv2:symbol "I" ; + lv2:name "I/Dr/Wt" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 9 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 10 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 11 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 12 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Energy/manifest.ttl.in b/plugins/LV2/src/Energy/manifest.ttl.in new file mode 100644 index 0000000..f471bc2 --- /dev/null +++ b/plugins/LV2/src/Energy/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:energy + a lv2:Plugin ; + doap:name "Airwindows Energy" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Energy@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Energy.ttl> . diff --git a/plugins/LV2/src/Ensemble/Ensemble.cpp b/plugins/LV2/src/Ensemble/Ensemble.cpp new file mode 100644 index 0000000..ced5735 --- /dev/null +++ b/plugins/LV2/src/Ensemble/Ensemble.cpp @@ -0,0 +1,52 @@ +#include "Ensemble.h" +#include <iostream> +#include <lv2wrapper.h> + +Ensemble::Ensemble(double rate) + : LV2Plugin(rate) +{ +} + +void Ensemble::activate() +{ + A = 0.5; + B = 0.0; + C = 1.0; + D = 1.0; + + for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0; dR[count] = 0;} + for(int count = 0; count < 49; count++) {sweep[count] = 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; + fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Ensemble::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/Ensemble/EnsembleProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Ensemble> plugin; diff --git a/plugins/LV2/src/Ensemble/Ensemble.h b/plugins/LV2/src/Ensemble/Ensemble.h new file mode 100644 index 0000000..56b79d3 --- /dev/null +++ b/plugins/LV2/src/Ensemble/Ensemble.h @@ -0,0 +1,51 @@ +#ifndef __Ensemble_H +#define __Ensemble_H + +#include <lv2plugin.h> + +class Ensemble : public LV2Plugin<4> { +public: + Ensemble(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/ensemble"; + +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 + const static int totalsamples = 65540; + float dL[totalsamples]; + float dR[totalsamples]; + double sweep[49]; + int gcount; + double airPrevL; + double airEvenL; + double airOddL; + double airFactorL; + double airPrevR; + double airEvenR; + double airOddR; + double airFactorR; + bool fpFlip; + float A; + float B; + float C; + float D; + +}; + +#endif diff --git a/plugins/LV2/src/Ensemble/Ensemble.ttl b/plugins/LV2/src/Ensemble/Ensemble.ttl new file mode 100644 index 0000000..871d274 --- /dev/null +++ b/plugins/LV2/src/Ensemble/Ensemble.ttl @@ -0,0 +1,68 @@ +# Airwindows Ensemble 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/ensemble> + 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 "Ensemble" ; + 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 "Fullness" ; + 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 "Brighten" ; + 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/Ensemble/manifest.ttl.in b/plugins/LV2/src/Ensemble/manifest.ttl.in new file mode 100644 index 0000000..9e0afee --- /dev/null +++ b/plugins/LV2/src/Ensemble/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:ensemble + a lv2:Plugin ; + doap:name "Airwindows Ensemble" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Ensemble@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Ensemble.ttl> . diff --git a/plugins/LV2/src/EveryTrim/EveryTrim.cpp b/plugins/LV2/src/EveryTrim/EveryTrim.cpp new file mode 100644 index 0000000..a05b0b8 --- /dev/null +++ b/plugins/LV2/src/EveryTrim/EveryTrim.cpp @@ -0,0 +1,41 @@ +#include "EveryTrim.h" +#include <iostream> +#include <lv2wrapper.h> + +EveryTrim::EveryTrim(double rate) + : LV2Plugin(rate) +{ +} + +void EveryTrim::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.5; + E = 0.5; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void EveryTrim::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/EveryTrim/EveryTrimProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<EveryTrim> plugin; diff --git a/plugins/LV2/src/EveryTrim/EveryTrim.h b/plugins/LV2/src/EveryTrim/EveryTrim.h new file mode 100644 index 0000000..be61cee --- /dev/null +++ b/plugins/LV2/src/EveryTrim/EveryTrim.h @@ -0,0 +1,39 @@ +#ifndef __EveryTrim_H +#define __EveryTrim_H + +#include <lv2plugin.h> + +class EveryTrim : public LV2Plugin<5> { +public: + EveryTrim(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/everytrim"; + +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; + float C; + float D; + float E; //parameters. Always 0-1, and we scale/alter them elsewhere. + +}; + +#endif diff --git a/plugins/LV2/src/EveryTrim/EveryTrim.ttl b/plugins/LV2/src/EveryTrim/EveryTrim.ttl new file mode 100644 index 0000000..366e198 --- /dev/null +++ b/plugins/LV2/src/EveryTrim/EveryTrim.ttl @@ -0,0 +1,76 @@ +# Airwindows EveryTrim 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/everytrim> + 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 "Left" ; + 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 "Right" ; + 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 "Mid" ; + 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 "Side" ; + 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 "Master" ; + 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/EveryTrim/manifest.ttl.in b/plugins/LV2/src/EveryTrim/manifest.ttl.in new file mode 100644 index 0000000..95fd356 --- /dev/null +++ b/plugins/LV2/src/EveryTrim/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:everytrim + a lv2:Plugin ; + doap:name "Airwindows EveryTrim" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <EveryTrim@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <EveryTrim.ttl> . diff --git a/plugins/LV2/src/Facet/Facet.cpp b/plugins/LV2/src/Facet/Facet.cpp new file mode 100644 index 0000000..86660c4 --- /dev/null +++ b/plugins/LV2/src/Facet/Facet.cpp @@ -0,0 +1,32 @@ +#include "Facet.h" +#include <iostream> +#include <lv2wrapper.h> + +Facet::Facet(double rate) + : LV2Plugin(rate) +{ +} + +void Facet::activate() +{ + A = 1.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Facet::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/Facet/FacetProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Facet> plugin; diff --git a/plugins/LV2/src/Facet/Facet.h b/plugins/LV2/src/Facet/Facet.h new file mode 100644 index 0000000..66e279c --- /dev/null +++ b/plugins/LV2/src/Facet/Facet.h @@ -0,0 +1,33 @@ +#ifndef __Facet_H +#define __Facet_H + +#include <lv2plugin.h> + +class Facet : public LV2Plugin<1> { +public: + Facet(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/facet"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + uint32_t fpd; + //default stuff + + float A; +}; + +#endif diff --git a/plugins/LV2/src/Facet/Facet.ttl b/plugins/LV2/src/Facet/Facet.ttl new file mode 100644 index 0000000..732256b --- /dev/null +++ b/plugins/LV2/src/Facet/Facet.ttl @@ -0,0 +1,44 @@ +# Airwindows Facet 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/facet> + a lv2:Plugin , + lv2:LimiterPlugin ; + 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 "Facet" ; + 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/Facet/manifest.ttl.in b/plugins/LV2/src/Facet/manifest.ttl.in new file mode 100644 index 0000000..88d41a2 --- /dev/null +++ b/plugins/LV2/src/Facet/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:facet + a lv2:Plugin ; + doap:name "Airwindows Facet" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Facet@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Facet.ttl> . diff --git a/plugins/LV2/src/FathomFive/FathomFive.cpp b/plugins/LV2/src/FathomFive/FathomFive.cpp new file mode 100644 index 0000000..c9dd127 --- /dev/null +++ b/plugins/LV2/src/FathomFive/FathomFive.cpp @@ -0,0 +1,51 @@ +#include "FathomFive.h" +#include <iostream> +#include <lv2wrapper.h> + +FathomFive::FathomFive(double rate) + : LV2Plugin(rate) +{ +} + +void FathomFive::activate() +{ + A = 1.0; + B = 0.0; + C = 0.5; + D = 1.0; + WasNegativeL = false; + SubOctaveL = false; + iirSampleLA = 0.0; + iirSampleLB = 0.0; + iirSampleLC = 0.0; + iirSampleLD = 0.0; + WasNegativeR = false; + SubOctaveR = false; + iirSampleRA = 0.0; + iirSampleRB = 0.0; + iirSampleRC = 0.0; + iirSampleRD = 0.0; + + + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void FathomFive::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/FathomFive/FathomFiveProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<FathomFive> plugin; diff --git a/plugins/LV2/src/FathomFive/FathomFive.h b/plugins/LV2/src/FathomFive/FathomFive.h new file mode 100644 index 0000000..f4400ce --- /dev/null +++ b/plugins/LV2/src/FathomFive/FathomFive.h @@ -0,0 +1,48 @@ +#ifndef __FathomFive_H +#define __FathomFive_H + +#include <lv2plugin.h> + +class FathomFive : public LV2Plugin<4> { +public: + FathomFive(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/fathomfive"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + bool WasNegativeL; + bool SubOctaveL; + double iirSampleLA; + double iirSampleLB; + double iirSampleLC; + double iirSampleLD; + + bool WasNegativeR; + bool SubOctaveR; + double iirSampleRA; + double iirSampleRB; + double iirSampleRC; + double iirSampleRD; + + float A; //Root Note + float B; //SubOctave + float C; //Frequency + float D; //Dry/Wet + //parameters. Always 0-1, and we scale/alter them elsewhere. +}; + +#endif diff --git a/plugins/LV2/src/FathomFive/FathomFive.ttl b/plugins/LV2/src/FathomFive/FathomFive.ttl new file mode 100644 index 0000000..57de306 --- /dev/null +++ b/plugins/LV2/src/FathomFive/FathomFive.ttl @@ -0,0 +1,68 @@ +# Airwindows FathomFive 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/fathomfive> + 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 "Root Note" ; + 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 "SubOctave" ; + 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 "Frequency" ; + 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/FathomFive/manifest.ttl.in b/plugins/LV2/src/FathomFive/manifest.ttl.in new file mode 100644 index 0000000..f16767f --- /dev/null +++ b/plugins/LV2/src/FathomFive/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:fathomfive + a lv2:Plugin ; + doap:name "Airwindows FathomFive" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <FathomFive@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <FathomFive.ttl> . diff --git a/plugins/LV2/src/Floor/Floor.cpp b/plugins/LV2/src/Floor/Floor.cpp new file mode 100644 index 0000000..95a0c1f --- /dev/null +++ b/plugins/LV2/src/Floor/Floor.cpp @@ -0,0 +1,61 @@ +#include "Floor.h" +#include <iostream> +#include <lv2wrapper.h> + +Floor::Floor(double rate) + : LV2Plugin(rate) +{ +} + +void Floor::activate() +{ + A = 0.0; + B = 0.0; + C = 1.0; + + flip = false; + iirSample1AL = 0.0; + iirSample1BL = 0.0; + iirSample1CL = 0.0; + iirSample1DL = 0.0; + iirSample1EL = 0.0; + iirSample2AL = 0.0; + iirSample2BL = 0.0; + iirSample2CL = 0.0; + iirSample2DL = 0.0; + iirSample2EL = 0.0; + + iirSample1AR = 0.0; + iirSample1BR = 0.0; + iirSample1CR = 0.0; + iirSample1DR = 0.0; + iirSample1ER = 0.0; + iirSample2AR = 0.0; + iirSample2BR = 0.0; + iirSample2CR = 0.0; + iirSample2DR = 0.0; + iirSample2ER = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Floor::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/Floor/FloorProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Floor> plugin; diff --git a/plugins/LV2/src/Floor/Floor.h b/plugins/LV2/src/Floor/Floor.h new file mode 100644 index 0000000..d2f9f75 --- /dev/null +++ b/plugins/LV2/src/Floor/Floor.h @@ -0,0 +1,60 @@ +#ifndef __Floor_H +#define __Floor_H + +#include <lv2plugin.h> + +class Floor : public LV2Plugin<3> { +public: + Floor(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/floor"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + bool flip; //end defining of antialiasing variables + + double iirSample1AL; + double iirSample1BL; + double iirSample1CL; + double iirSample1DL; + double iirSample1EL; + double iirSample2AL; + double iirSample2BL; + double iirSample2CL; + double iirSample2DL; + double iirSample2EL; + + double iirSample1AR; + double iirSample1BR; + double iirSample1CR; + double iirSample1DR; + double iirSample1ER; + double iirSample2AR; + double iirSample2BR; + double iirSample2CR; + double iirSample2DR; + double iirSample2ER; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Floor/Floor.ttl b/plugins/LV2/src/Floor/Floor.ttl new file mode 100644 index 0000000..5e20a19 --- /dev/null +++ b/plugins/LV2/src/Floor/Floor.ttl @@ -0,0 +1,60 @@ +# Airwindows Floor 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/floor> + 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 "Floor" ; + 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 "Drive" ; + 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/Floor/manifest.ttl.in b/plugins/LV2/src/Floor/manifest.ttl.in new file mode 100644 index 0000000..0b72658 --- /dev/null +++ b/plugins/LV2/src/Floor/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:floor + a lv2:Plugin ; + doap:name "Airwindows Floor" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Floor@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Floor.ttl> . diff --git a/plugins/LV2/src/Focus/Focus.cpp b/plugins/LV2/src/Focus/Focus.cpp new file mode 100644 index 0000000..0d6147a --- /dev/null +++ b/plugins/LV2/src/Focus/Focus.cpp @@ -0,0 +1,41 @@ +#include "Focus.h" +#include <iostream> +#include <lv2wrapper.h> + +Focus::Focus(double rate) + : LV2Plugin(rate) +{ +} + +void Focus::activate() +{ + A = 0.0; + B = 0.5; + C = 0.5; + D = 1.0; + E = 1.0; + for (int x = 0; x < 9; x++) {figureL[x] = 0.0;figureR[x] = 0.0;} + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Focus::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/Focus/FocusProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Focus> plugin; diff --git a/plugins/LV2/src/Focus/Focus.h b/plugins/LV2/src/Focus/Focus.h new file mode 100644 index 0000000..41dc829 --- /dev/null +++ b/plugins/LV2/src/Focus/Focus.h @@ -0,0 +1,40 @@ +#ifndef __Focus_H +#define __Focus_H + +#include <lv2plugin.h> + +class Focus : public LV2Plugin<5> { +public: + Focus(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/focus"; + +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 figureL[9]; + long double figureR[9]; + 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/Focus/Focus.ttl b/plugins/LV2/src/Focus/Focus.ttl new file mode 100644 index 0000000..6dd5641 --- /dev/null +++ b/plugins/LV2/src/Focus/Focus.ttl @@ -0,0 +1,76 @@ +# Airwindows Focus 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/focus> + 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 "Boost" ; + 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 "Focus" ; + 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 "Mode" ; + 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 "Output" ; + 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 "Dry/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/Focus/manifest.ttl.in b/plugins/LV2/src/Focus/manifest.ttl.in new file mode 100644 index 0000000..1f7b567 --- /dev/null +++ b/plugins/LV2/src/Focus/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:focus + a lv2:Plugin ; + doap:name "Airwindows Focus" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Focus@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Focus.ttl> . diff --git a/plugins/LV2/src/Fracture/Fracture.cpp b/plugins/LV2/src/Fracture/Fracture.cpp new file mode 100644 index 0000000..d5d443f --- /dev/null +++ b/plugins/LV2/src/Fracture/Fracture.cpp @@ -0,0 +1,39 @@ +#include "Fracture.h" +#include <iostream> +#include <lv2wrapper.h> + +Fracture::Fracture(double rate) + : LV2Plugin(rate) +{ +} + +void Fracture::activate() +{ + A = 0.25; //1 from 0 to 4: A*4 + B = 0.5; //2 from 1 to 3: (B*2.999)+1 + 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 Fracture::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/Fracture/FractureProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Fracture> plugin; diff --git a/plugins/LV2/src/Fracture/Fracture.h b/plugins/LV2/src/Fracture/Fracture.h new file mode 100644 index 0000000..773a8cb --- /dev/null +++ b/plugins/LV2/src/Fracture/Fracture.h @@ -0,0 +1,38 @@ +#ifndef __Fracture_H +#define __Fracture_H + +#include <lv2plugin.h> + +class Fracture : public LV2Plugin<4> { +public: + Fracture(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/fracture"; + +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; + float C; + float D; //parameters. Always 0-1, and we scale/alter them elsewhere. + +}; + +#endif diff --git a/plugins/LV2/src/Fracture/Fracture.ttl b/plugins/LV2/src/Fracture/Fracture.ttl new file mode 100644 index 0000000..66af4f5 --- /dev/null +++ b/plugins/LV2/src/Fracture/Fracture.ttl @@ -0,0 +1,68 @@ +# Airwindows Fracture 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/fracture> + 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 "Drive" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Fracture" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Out Lvl" ; + 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/Fracture/manifest.ttl.in b/plugins/LV2/src/Fracture/manifest.ttl.in new file mode 100644 index 0000000..1cb23f5 --- /dev/null +++ b/plugins/LV2/src/Fracture/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:fracture + a lv2:Plugin ; + doap:name "Airwindows Fracture" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Fracture@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Fracture.ttl> . diff --git a/plugins/LV2/src/FromTape/FromTape.cpp b/plugins/LV2/src/FromTape/FromTape.cpp new file mode 100644 index 0000000..e899c38 --- /dev/null +++ b/plugins/LV2/src/FromTape/FromTape.cpp @@ -0,0 +1,106 @@ +#include "FromTape.h" +#include <iostream> +#include <lv2wrapper.h> + +FromTape::FromTape(double rate) + : LV2Plugin(rate) +{ +} + +void FromTape::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.5; + E = 1.0; + + iirMidRollerAL = 0.0; + iirMidRollerBL = 0.0; + iirMidRollerCL = 0.0; + + iirMidRollerAR = 0.0; + iirMidRollerBR = 0.0; + iirMidRollerCR = 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; + + flip = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void FromTape::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/FromTape/FromTapeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<FromTape> plugin; diff --git a/plugins/LV2/src/FromTape/FromTape.h b/plugins/LV2/src/FromTape/FromTape.h new file mode 100644 index 0000000..5a2bab5 --- /dev/null +++ b/plugins/LV2/src/FromTape/FromTape.h @@ -0,0 +1,103 @@ +#ifndef __FromTape_H +#define __FromTape_H + +#include <lv2plugin.h> + +class FromTape : public LV2Plugin<5> { +public: + FromTape(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/fromtape"; + +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 flip; + + double iirMidRollerAL; + double iirMidRollerBL; + double iirMidRollerCL; + + double iirMidRollerAR; + double iirMidRollerBR; + double iirMidRollerCR; + + 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; + +}; + +#endif diff --git a/plugins/LV2/src/FromTape/FromTape.ttl b/plugins/LV2/src/FromTape/FromTape.ttl new file mode 100644 index 0000000..4a4e746 --- /dev/null +++ b/plugins/LV2/src/FromTape/FromTape.ttl @@ -0,0 +1,76 @@ +# Airwindows FromTape 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/fromtape> + 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 "Weight" ; + 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 "Output" ; + 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 "Dry/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/FromTape/manifest.ttl.in b/plugins/LV2/src/FromTape/manifest.ttl.in new file mode 100644 index 0000000..54e1d46 --- /dev/null +++ b/plugins/LV2/src/FromTape/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:fromtape + a lv2:Plugin ; + doap:name "Airwindows FromTape" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <FromTape@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <FromTape.ttl> . diff --git a/plugins/LV2/src/Gatelope/Gatelope.cpp b/plugins/LV2/src/Gatelope/Gatelope.cpp new file mode 100644 index 0000000..409b74d --- /dev/null +++ b/plugins/LV2/src/Gatelope/Gatelope.cpp @@ -0,0 +1,52 @@ +#include "Gatelope.h" +#include <iostream> +#include <lv2wrapper.h> + +Gatelope::Gatelope(double rate) + : LV2Plugin(rate) +{ +} + +void Gatelope::activate() +{ + A = 0.0; + B = 1.0; + C = 0.5; + D = 0.0; + E = 1.0; + iirLowpassAL = 0.0; + iirLowpassBL = 0.0; + iirHighpassAL = 0.0; + iirHighpassBL = 0.0; + iirLowpassAR = 0.0; + iirLowpassBR = 0.0; + iirHighpassAR = 0.0; + iirHighpassBR = 0.0; + treblefreq = 1.0; + bassfreq = 0.0; + flip = false; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Gatelope::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/Gatelope/GatelopeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Gatelope> plugin; diff --git a/plugins/LV2/src/Gatelope/Gatelope.h b/plugins/LV2/src/Gatelope/Gatelope.h new file mode 100644 index 0000000..23fb671 --- /dev/null +++ b/plugins/LV2/src/Gatelope/Gatelope.h @@ -0,0 +1,50 @@ +#ifndef __Gatelope_H +#define __Gatelope_H + +#include <lv2plugin.h> + +class Gatelope : public LV2Plugin<5> { +public: + Gatelope(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/gatelope"; + +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 iirLowpassAR; + double iirLowpassBR; + double iirHighpassAR; + double iirHighpassBR; + double iirLowpassAL; + double iirLowpassBL; + double iirHighpassAL; + double iirHighpassBL; + double treblefreq; + double bassfreq; + bool flip; + long double fpNShapeL; + long double fpNShapeR; + //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/Gatelope/Gatelope.ttl b/plugins/LV2/src/Gatelope/Gatelope.ttl new file mode 100644 index 0000000..5af6ab2 --- /dev/null +++ b/plugins/LV2/src/Gatelope/Gatelope.ttl @@ -0,0 +1,76 @@ +# Airwindows Gatelope 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/gatelope> + 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 "TrebSus" ; + 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 "BassSus" ; + 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 "AttackS" ; + 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 "Dry/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/Gatelope/manifest.ttl.in b/plugins/LV2/src/Gatelope/manifest.ttl.in new file mode 100644 index 0000000..4d523c5 --- /dev/null +++ b/plugins/LV2/src/Gatelope/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:gatelope + a lv2:Plugin ; + doap:name "Airwindows Gatelope" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Gatelope@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Gatelope.ttl> . diff --git a/plugins/LV2/src/Golem/Golem.cpp b/plugins/LV2/src/Golem/Golem.cpp new file mode 100644 index 0000000..a3f61be --- /dev/null +++ b/plugins/LV2/src/Golem/Golem.cpp @@ -0,0 +1,40 @@ +#include "Golem.h" +#include <iostream> +#include <lv2wrapper.h> + +Golem::Golem(double rate) + : LV2Plugin(rate) +{ +} + +void Golem::activate() +{ + A = 0.5; + B = 0.5; + C = 0.0; + for(count = 0; count < 4098; count++) {p[count] = 0.0;} + count = 0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + flip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Golem::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/Golem/GolemProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Golem> plugin; diff --git a/plugins/LV2/src/Golem/Golem.h b/plugins/LV2/src/Golem/Golem.h new file mode 100644 index 0000000..fb48166 --- /dev/null +++ b/plugins/LV2/src/Golem/Golem.h @@ -0,0 +1,39 @@ +#ifndef __Golem_H +#define __Golem_H + +#include <lv2plugin.h> + +class Golem : public LV2Plugin<3> { +public: + Golem(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/golem"; + +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 flip; + //default stuff + double p[4099]; + int count; + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Golem/Golem.ttl b/plugins/LV2/src/Golem/Golem.ttl new file mode 100644 index 0000000..995d944 --- /dev/null +++ b/plugins/LV2/src/Golem/Golem.ttl @@ -0,0 +1,60 @@ +# Airwindows Golem 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/golem> + 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 "Balance" ; + 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 "Offset" ; + 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 "Phase" ; + 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/Golem/manifest.ttl.in b/plugins/LV2/src/Golem/manifest.ttl.in new file mode 100644 index 0000000..6c11a7d --- /dev/null +++ b/plugins/LV2/src/Golem/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:golem + a lv2:Plugin ; + doap:name "Airwindows Golem" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Golem@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Golem.ttl> . diff --git a/plugins/LV2/src/Gringer/Gringer.cpp b/plugins/LV2/src/Gringer/Gringer.cpp new file mode 100644 index 0000000..4050a3e --- /dev/null +++ b/plugins/LV2/src/Gringer/Gringer.cpp @@ -0,0 +1,32 @@ +#include "Gringer.h" +#include <iostream> +#include <lv2wrapper.h> + +Gringer::Gringer(double rate) + : LV2Plugin(rate) +{ +} + +void Gringer::activate() +{ + for (int x = 0; x < 9; x++) {inbandL[x] = 0.0; outbandL[x] = 0.0; inbandR[x] = 0.0; outbandR[x] = 0.0;} + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Gringer::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/Gringer/GringerProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Gringer> plugin; diff --git a/plugins/LV2/src/Gringer/Gringer.h b/plugins/LV2/src/Gringer/Gringer.h new file mode 100644 index 0000000..28b2824 --- /dev/null +++ b/plugins/LV2/src/Gringer/Gringer.h @@ -0,0 +1,38 @@ +#ifndef __Gringer_H +#define __Gringer_H + +#include <lv2plugin.h> + +class Gringer : public LV2Plugin<0> { +public: + Gringer(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/gringer"; + +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 + + long double inbandL[9]; + long double outbandL[9]; + long double inbandR[9]; + long double outbandR[9]; + + +}; + +#endif diff --git a/plugins/LV2/src/Gringer/Gringer.ttl b/plugins/LV2/src/Gringer/Gringer.ttl new file mode 100644 index 0000000..72a890e --- /dev/null +++ b/plugins/LV2/src/Gringer/Gringer.ttl @@ -0,0 +1,38 @@ +# Airwindows Gringer 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/gringer> + 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/Gringer/manifest.ttl.in b/plugins/LV2/src/Gringer/manifest.ttl.in new file mode 100644 index 0000000..0bc121e --- /dev/null +++ b/plugins/LV2/src/Gringer/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:gringer + a lv2:Plugin ; + doap:name "Airwindows Gringer" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Gringer@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Gringer.ttl> . diff --git a/plugins/LV2/src/GrooveWear/GrooveWear.cpp b/plugins/LV2/src/GrooveWear/GrooveWear.cpp new file mode 100644 index 0000000..8dd20ce --- /dev/null +++ b/plugins/LV2/src/GrooveWear/GrooveWear.cpp @@ -0,0 +1,57 @@ +#include "GrooveWear.h" +#include <iostream> +#include <lv2wrapper.h> + +GrooveWear::GrooveWear(double rate) + : LV2Plugin(rate) +{ +} + +void GrooveWear::activate() +{ + A = 0.064; + B = 1.0; + + for(int count = 0; count < 21; count++) { + aMidL[count] = 0.0; + bMidL[count] = 0.0; + cMidL[count] = 0.0; + dMidL[count] = 0.0; + aMidR[count] = 0.0; + bMidR[count] = 0.0; + cMidR[count] = 0.0; + dMidR[count] = 0.0; + fMid[count] = 0.0; + } + aMidPrevL = 0.0; + bMidPrevL = 0.0; + cMidPrevL = 0.0; + dMidPrevL = 0.0; + + aMidPrevR = 0.0; + bMidPrevR = 0.0; + cMidPrevR = 0.0; + dMidPrevR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void GrooveWear::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/GrooveWear/GrooveWearProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<GrooveWear> plugin; diff --git a/plugins/LV2/src/GrooveWear/GrooveWear.h b/plugins/LV2/src/GrooveWear/GrooveWear.h new file mode 100644 index 0000000..963fe49 --- /dev/null +++ b/plugins/LV2/src/GrooveWear/GrooveWear.h @@ -0,0 +1,55 @@ +#ifndef __GrooveWear_H +#define __GrooveWear_H + +#include <lv2plugin.h> + +class GrooveWear : public LV2Plugin<2> { +public: + GrooveWear(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/groovewear"; + +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 aMidL[21]; + double aMidPrevL; + double bMidL[21]; + double bMidPrevL; + double cMidL[21]; + double cMidPrevL; + double dMidL[21]; + double dMidPrevL; + + double aMidR[21]; + double aMidPrevR; + double bMidR[21]; + double bMidPrevR; + double cMidR[21]; + double cMidPrevR; + double dMidR[21]; + double dMidPrevR; + + double fMid[21]; + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/GrooveWear/GrooveWear.ttl b/plugins/LV2/src/GrooveWear/GrooveWear.ttl new file mode 100644 index 0000000..a89a35e --- /dev/null +++ b/plugins/LV2/src/GrooveWear/GrooveWear.ttl @@ -0,0 +1,52 @@ +# Airwindows GrooveWear 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/groovewear> + 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 "Wear" ; + 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/GrooveWear/manifest.ttl.in b/plugins/LV2/src/GrooveWear/manifest.ttl.in new file mode 100644 index 0000000..590a104 --- /dev/null +++ b/plugins/LV2/src/GrooveWear/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:groovewear + a lv2:Plugin ; + doap:name "Airwindows GrooveWear" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <GrooveWear@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <GrooveWear.ttl> . diff --git a/plugins/LV2/src/GuitarConditioner/GuitarConditioner.cpp b/plugins/LV2/src/GuitarConditioner/GuitarConditioner.cpp new file mode 100644 index 0000000..0df4f27 --- /dev/null +++ b/plugins/LV2/src/GuitarConditioner/GuitarConditioner.cpp @@ -0,0 +1,46 @@ +#include "GuitarConditioner.h" +#include <iostream> +#include <lv2wrapper.h> + +GuitarConditioner::GuitarConditioner(double rate) + : LV2Plugin(rate) +{ +} + +void GuitarConditioner::activate() +{ + fpNShapeL = 0.0; + fpNShapeR = 0.0; + fpFlip = true; + lastSampleTL = 0.0; + lastSampleBL = 0.0; //for Slews. T for treble, B for bass + iirSampleTAL = 0.0; + iirSampleTBL = 0.0; + iirSampleBAL = 0.0; + iirSampleBBL = 0.0; //for Highpasses + //this is reset: values being initialized only once. Startup values, whatever they are. + lastSampleTR = 0.0; + lastSampleBR = 0.0; //for Slews. T for treble, B for bass + iirSampleTAR = 0.0; + iirSampleTBR = 0.0; + iirSampleBAR = 0.0; + iirSampleBBR = 0.0; //for Highpasses + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void GuitarConditioner::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/GuitarConditioner/GuitarConditionerProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<GuitarConditioner> plugin; diff --git a/plugins/LV2/src/GuitarConditioner/GuitarConditioner.h b/plugins/LV2/src/GuitarConditioner/GuitarConditioner.h new file mode 100644 index 0000000..2d93599 --- /dev/null +++ b/plugins/LV2/src/GuitarConditioner/GuitarConditioner.h @@ -0,0 +1,47 @@ +#ifndef __GuitarConditioner_H +#define __GuitarConditioner_H + +#include <lv2plugin.h> + +class GuitarConditioner : public LV2Plugin<0> { +public: + GuitarConditioner(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/guitarconditioner"; + +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 + bool fpFlip; + double lastSampleTL; + double lastSampleBL; //for Slews + double iirSampleTAL; + double iirSampleTBL; + double iirSampleBAL; + double iirSampleBBL; //for Highpasses + + double lastSampleTR; + double lastSampleBR; //for Slews + double iirSampleTAR; + double iirSampleTBR; + double iirSampleBAR; + double iirSampleBBR; //for Highpasses + +}; + +#endif diff --git a/plugins/LV2/src/GuitarConditioner/GuitarConditioner.ttl b/plugins/LV2/src/GuitarConditioner/GuitarConditioner.ttl new file mode 100644 index 0000000..7b10320 --- /dev/null +++ b/plugins/LV2/src/GuitarConditioner/GuitarConditioner.ttl @@ -0,0 +1,38 @@ +# Airwindows GuitarConditioner 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/guitarconditioner> + 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/GuitarConditioner/manifest.ttl.in b/plugins/LV2/src/GuitarConditioner/manifest.ttl.in new file mode 100644 index 0000000..5bae89d --- /dev/null +++ b/plugins/LV2/src/GuitarConditioner/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:guitarconditioner + a lv2:Plugin ; + doap:name "Airwindows GuitarConditioner" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <GuitarConditioner@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <GuitarConditioner.ttl> . diff --git a/plugins/LV2/src/HardVacuum/HardVacuum.cpp b/plugins/LV2/src/HardVacuum/HardVacuum.cpp new file mode 100644 index 0000000..7d1b850 --- /dev/null +++ b/plugins/LV2/src/HardVacuum/HardVacuum.cpp @@ -0,0 +1,43 @@ +#include "HardVacuum.h" +#include <iostream> +#include <lv2wrapper.h> + +HardVacuum::HardVacuum(double rate) + : LV2Plugin(rate) +{ +} + +void HardVacuum::activate() +{ + A = 0.0; + B = 0.0; + C = 0.0; + D = 1.0; + E = 1.0; + lastSampleL = 0.0; + lastSampleR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void HardVacuum::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/HardVacuum/HardVacuumProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<HardVacuum> plugin; diff --git a/plugins/LV2/src/HardVacuum/HardVacuum.h b/plugins/LV2/src/HardVacuum/HardVacuum.h new file mode 100644 index 0000000..720ab3e --- /dev/null +++ b/plugins/LV2/src/HardVacuum/HardVacuum.h @@ -0,0 +1,42 @@ +#ifndef __HardVacuum_H +#define __HardVacuum_H + +#include <lv2plugin.h> + +class HardVacuum : public LV2Plugin<5> { +public: + HardVacuum(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/hardvacuum"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + double lastSampleL; + double lastSampleR; + + 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/HardVacuum/HardVacuum.ttl b/plugins/LV2/src/HardVacuum/HardVacuum.ttl new file mode 100644 index 0000000..6965f4c --- /dev/null +++ b/plugins/LV2/src/HardVacuum/HardVacuum.ttl @@ -0,0 +1,76 @@ +# Airwindows HardVacuum 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/hardvacuum> + a lv2:Plugin , + lv2:DistortionPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Drive" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Warmth" ; + 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 "Aura" ; + 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 "Output" ; + 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 "Dry/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/HardVacuum/manifest.ttl.in b/plugins/LV2/src/HardVacuum/manifest.ttl.in new file mode 100644 index 0000000..84f7e68 --- /dev/null +++ b/plugins/LV2/src/HardVacuum/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:hardvacuum + a lv2:Plugin ; + doap:name "Airwindows HardVacuum" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HardVacuum@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HardVacuum.ttl> . diff --git a/plugins/LV2/src/HermeTrim/HermeTrim.cpp b/plugins/LV2/src/HermeTrim/HermeTrim.cpp new file mode 100644 index 0000000..155751b --- /dev/null +++ b/plugins/LV2/src/HermeTrim/HermeTrim.cpp @@ -0,0 +1,41 @@ +#include "HermeTrim.h" +#include <iostream> +#include <lv2wrapper.h> + +HermeTrim::HermeTrim(double rate) + : LV2Plugin(rate) +{ +} + +void HermeTrim::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.5; + E = 0.5; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void HermeTrim::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/HermeTrim/HermeTrimProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<HermeTrim> plugin; diff --git a/plugins/LV2/src/HermeTrim/HermeTrim.h b/plugins/LV2/src/HermeTrim/HermeTrim.h new file mode 100644 index 0000000..51970c9 --- /dev/null +++ b/plugins/LV2/src/HermeTrim/HermeTrim.h @@ -0,0 +1,39 @@ +#ifndef __HermeTrim_H +#define __HermeTrim_H + +#include <lv2plugin.h> + +class HermeTrim : public LV2Plugin<5> { +public: + HermeTrim(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/hermetrim"; + +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; + float C; + float D; + float E; //parameters. Always 0-1, and we scale/alter them elsewhere. + +}; + +#endif diff --git a/plugins/LV2/src/HermeTrim/HermeTrim.ttl b/plugins/LV2/src/HermeTrim/HermeTrim.ttl new file mode 100644 index 0000000..6f36c6f --- /dev/null +++ b/plugins/LV2/src/HermeTrim/HermeTrim.ttl @@ -0,0 +1,76 @@ +# Airwindows HermeTrim 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/hermetrim> + 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 "Left" ; + 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 "Right" ; + 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 "Mid" ; + 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 "Side" ; + 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 "Master" ; + 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/HermeTrim/manifest.ttl.in b/plugins/LV2/src/HermeTrim/manifest.ttl.in new file mode 100644 index 0000000..38cf8b3 --- /dev/null +++ b/plugins/LV2/src/HermeTrim/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:hermetrim + a lv2:Plugin ; + doap:name "Airwindows HermeTrim" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HermeTrim@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HermeTrim.ttl> . diff --git a/plugins/LV2/src/Hermepass/Hermepass.cpp b/plugins/LV2/src/Hermepass/Hermepass.cpp new file mode 100644 index 0000000..619625c --- /dev/null +++ b/plugins/LV2/src/Hermepass/Hermepass.cpp @@ -0,0 +1,54 @@ +#include "Hermepass.h" +#include <iostream> +#include <lv2wrapper.h> + +Hermepass::Hermepass(double rate) + : LV2Plugin(rate) +{ +} + +void Hermepass::activate() +{ + A = 0.5; + B = 0.5; + + iirAL = 0.0; + iirBL = 0.0; + iirCL = 0.0; + iirDL = 0.0; + iirEL = 0.0; + iirFL = 0.0; + iirGL = 0.0; + iirHL = 0.0; + + iirAR = 0.0; + iirBR = 0.0; + iirCR = 0.0; + iirDR = 0.0; + iirER = 0.0; + iirFR = 0.0; + iirGR = 0.0; + iirHR = 0.0; + fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Hermepass::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/Hermepass/HermepassProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Hermepass> plugin; diff --git a/plugins/LV2/src/Hermepass/Hermepass.h b/plugins/LV2/src/Hermepass/Hermepass.h new file mode 100644 index 0000000..edf15fd --- /dev/null +++ b/plugins/LV2/src/Hermepass/Hermepass.h @@ -0,0 +1,54 @@ +#ifndef __Hermepass_H +#define __Hermepass_H + +#include <lv2plugin.h> + +class Hermepass : public LV2Plugin<2> { +public: + Hermepass(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/hermepass"; + +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 iirAL; + double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one + double iirCL; //we introduce the second pole at the same frequency, to become a pseudo-Capacitor behavior + double iirDL; + double iirEL; + double iirFL; //our slope control will have a pow() on it so that the high orders are way to the right side + double iirGL; + double iirHL; //seven poles max, and the final pole is always at 20hz directly. + + double iirAR; + double iirBR; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one + double iirCR; //we introduce the second pole at the same frequency, to become a pseudo-Capacitor behavior + double iirDR; + double iirER; + double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side + double iirGR; + double iirHR; //seven poles max, and the final pole is always at 20hz directly. + bool fpFlip; + + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/Hermepass/Hermepass.ttl b/plugins/LV2/src/Hermepass/Hermepass.ttl new file mode 100644 index 0000000..3201d26 --- /dev/null +++ b/plugins/LV2/src/Hermepass/Hermepass.ttl @@ -0,0 +1,52 @@ +# Airwindows Hermepass 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/hermepass> + 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 "Cutoff" ; + 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 "Slope" ; + 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/Hermepass/manifest.ttl.in b/plugins/LV2/src/Hermepass/manifest.ttl.in new file mode 100644 index 0000000..c9742ed --- /dev/null +++ b/plugins/LV2/src/Hermepass/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:hermepass + a lv2:Plugin ; + doap:name "Airwindows Hermepass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Hermepass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Hermepass.ttl> . diff --git a/plugins/LV2/src/HighGlossDither/HighGlossDither.cpp b/plugins/LV2/src/HighGlossDither/HighGlossDither.cpp new file mode 100644 index 0000000..54065d9 --- /dev/null +++ b/plugins/LV2/src/HighGlossDither/HighGlossDither.cpp @@ -0,0 +1,32 @@ +#include "HighGlossDither.h" +#include <iostream> +#include <lv2wrapper.h> + +HighGlossDither::HighGlossDither(double rate) + : LV2Plugin(rate) +{ +} + +void HighGlossDither::activate() +{ + Position = 99999999; + flip = false; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void HighGlossDither::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/HighGlossDither/HighGlossDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<HighGlossDither> plugin; diff --git a/plugins/LV2/src/HighGlossDither/HighGlossDither.h b/plugins/LV2/src/HighGlossDither/HighGlossDither.h new file mode 100644 index 0000000..f0a1d44 --- /dev/null +++ b/plugins/LV2/src/HighGlossDither/HighGlossDither.h @@ -0,0 +1,31 @@ +#ifndef __HighGlossDither_H +#define __HighGlossDither_H + +#include <lv2plugin.h> + +class HighGlossDither : public LV2Plugin<0> { +public: + HighGlossDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/highglossdither"; + +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 Position; + bool flip; +}; + +#endif diff --git a/plugins/LV2/src/HighGlossDither/HighGlossDither.ttl b/plugins/LV2/src/HighGlossDither/HighGlossDither.ttl new file mode 100644 index 0000000..c6de8c7 --- /dev/null +++ b/plugins/LV2/src/HighGlossDither/HighGlossDither.ttl @@ -0,0 +1,38 @@ +# Airwindows HighGlossDither 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/highglossdither> + 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/HighGlossDither/manifest.ttl.in b/plugins/LV2/src/HighGlossDither/manifest.ttl.in new file mode 100644 index 0000000..b70215f --- /dev/null +++ b/plugins/LV2/src/HighGlossDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:highglossdither + a lv2:Plugin ; + doap:name "Airwindows HighGlossDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HighGlossDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HighGlossDither.ttl> . diff --git a/plugins/LV2/src/HighImpact/HighImpact.cpp b/plugins/LV2/src/HighImpact/HighImpact.cpp new file mode 100644 index 0000000..610c16d --- /dev/null +++ b/plugins/LV2/src/HighImpact/HighImpact.cpp @@ -0,0 +1,39 @@ +#include "HighImpact.h" +#include <iostream> +#include <lv2wrapper.h> + +HighImpact::HighImpact(double rate) + : LV2Plugin(rate) +{ +} + +void HighImpact::activate() +{ + A = 0.0; + B = 0.0; + C = 0.0; + lastSampleL = 0.0; + lastSampleR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void HighImpact::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/HighImpact/HighImpactProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<HighImpact> plugin; diff --git a/plugins/LV2/src/HighImpact/HighImpact.h b/plugins/LV2/src/HighImpact/HighImpact.h new file mode 100644 index 0000000..88f3cde --- /dev/null +++ b/plugins/LV2/src/HighImpact/HighImpact.h @@ -0,0 +1,40 @@ +#ifndef __HighImpact_H +#define __HighImpact_H + +#include <lv2plugin.h> + +class HighImpact : public LV2Plugin<3> { +public: + HighImpact(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/highimpact"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + double lastSampleL; + double lastSampleR; + + float A; + float B; + float C; + +}; + +#endif diff --git a/plugins/LV2/src/HighImpact/HighImpact.ttl b/plugins/LV2/src/HighImpact/HighImpact.ttl new file mode 100644 index 0000000..dba065e --- /dev/null +++ b/plugins/LV2/src/HighImpact/HighImpact.ttl @@ -0,0 +1,60 @@ +# Airwindows HighImpact 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/highimpact> + 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 "Impact" ; + 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 Level" ; + 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/HighImpact/manifest.ttl.in b/plugins/LV2/src/HighImpact/manifest.ttl.in new file mode 100644 index 0000000..2db81b2 --- /dev/null +++ b/plugins/LV2/src/HighImpact/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:highimpact + a lv2:Plugin ; + doap:name "Airwindows HighImpact" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <HighImpact@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <HighImpact.ttl> . diff --git a/plugins/LV2/src/Highpass/Highpass.cpp b/plugins/LV2/src/Highpass/Highpass.cpp new file mode 100644 index 0000000..234692d --- /dev/null +++ b/plugins/LV2/src/Highpass/Highpass.cpp @@ -0,0 +1,42 @@ +#include "Highpass.h" +#include <iostream> +#include <lv2wrapper.h> + +Highpass::Highpass(double rate) + : LV2Plugin(rate) +{ +} + +void Highpass::activate() +{ + A = 0.0; + B = 0.5; + C = 1.0; + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + fpFlip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Highpass::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/Highpass/HighpassProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Highpass> plugin; diff --git a/plugins/LV2/src/Highpass/Highpass.h b/plugins/LV2/src/Highpass/Highpass.h new file mode 100644 index 0000000..ca226d8 --- /dev/null +++ b/plugins/LV2/src/Highpass/Highpass.h @@ -0,0 +1,41 @@ +#ifndef __Highpass_H +#define __Highpass_H + +#include <lv2plugin.h> + +class Highpass : public LV2Plugin<3> { +public: + Highpass(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/highpass"; + +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; + float C; + double iirSampleAL; + double iirSampleBL; + double iirSampleAR; + double iirSampleBR; + bool fpFlip; +}; + +#endif diff --git a/plugins/LV2/src/Highpass/Highpass.ttl b/plugins/LV2/src/Highpass/Highpass.ttl new file mode 100644 index 0000000..d9ebef5 --- /dev/null +++ b/plugins/LV2/src/Highpass/Highpass.ttl @@ -0,0 +1,60 @@ +# Airwindows Highpass 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/highpass> + 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 "Highpass" ; + 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 "Loose/Tight" ; + 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/Highpass/manifest.ttl.in b/plugins/LV2/src/Highpass/manifest.ttl.in new file mode 100644 index 0000000..8108f21 --- /dev/null +++ b/plugins/LV2/src/Highpass/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:highpass + a lv2:Plugin ; + doap:name "Airwindows Highpass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Highpass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Highpass.ttl> . diff --git a/plugins/LV2/src/Highpass2/Highpass2.cpp b/plugins/LV2/src/Highpass2/Highpass2.cpp new file mode 100644 index 0000000..bc4c304 --- /dev/null +++ b/plugins/LV2/src/Highpass2/Highpass2.cpp @@ -0,0 +1,58 @@ +#include "Highpass2.h" +#include <iostream> +#include <lv2wrapper.h> + +Highpass2::Highpass2(double rate) + : LV2Plugin(rate) +{ +} + +void Highpass2::activate() +{ + A = 0.0; + B = 0.5; //-1.0 to 1.0 + C = 0.25; // 0.0 to 4.0 + D = 1.0; + fpd = 17; + + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleCL = 0.0; + iirSampleDL = 0.0; + iirSampleEL = 0.0; + iirSampleFL = 0.0; + iirSampleGL = 0.0; + iirSampleHL = 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; + + fpFlip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Highpass2::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/Highpass2/Highpass2Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Highpass2> plugin; diff --git a/plugins/LV2/src/Highpass2/Highpass2.h b/plugins/LV2/src/Highpass2/Highpass2.h new file mode 100644 index 0000000..615b713 --- /dev/null +++ b/plugins/LV2/src/Highpass2/Highpass2.h @@ -0,0 +1,56 @@ +#ifndef __Highpass2_H +#define __Highpass2_H + +#include <lv2plugin.h> + +class Highpass2 : public LV2Plugin<4> { +public: + Highpass2(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/highpass2"; + +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 iirSampleAL; + double iirSampleBL; + double iirSampleCL; + double iirSampleDL; + double iirSampleEL; + double iirSampleFL; + double iirSampleGL; + double iirSampleHL; + + double iirSampleAR; + double iirSampleBR; + double iirSampleCR; + double iirSampleDR; + double iirSampleER; + double iirSampleFR; + double iirSampleGR; + double iirSampleHR; + + bool fpFlip; + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/Highpass2/Highpass2.ttl b/plugins/LV2/src/Highpass2/Highpass2.ttl new file mode 100644 index 0000000..96c2c4d --- /dev/null +++ b/plugins/LV2/src/Highpass2/Highpass2.ttl @@ -0,0 +1,68 @@ +# Airwindows Highpass2 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/highpass2> + 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 "Hipass" ; + 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 "Ls/Tite" ; + 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 "Poles" ; + 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/Highpass2/manifest.ttl.in b/plugins/LV2/src/Highpass2/manifest.ttl.in new file mode 100644 index 0000000..a5b75ed --- /dev/null +++ b/plugins/LV2/src/Highpass2/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:highpass2 + a lv2:Plugin ; + doap:name "Airwindows Highpass2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Highpass2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Highpass2.ttl> . diff --git a/plugins/LV2/src/Holt/Holt.cpp b/plugins/LV2/src/Holt/Holt.cpp new file mode 100644 index 0000000..9a5dbc9 --- /dev/null +++ b/plugins/LV2/src/Holt/Holt.cpp @@ -0,0 +1,60 @@ +#include "Holt.h" +#include <iostream> +#include <lv2wrapper.h> + +Holt::Holt(double rate) + : LV2Plugin(rate) +{ +} + +void Holt::activate() +{ + A = 1.0; + B = 0.5; + C = 1.0; + D = 1.0; + E = 1.0; + + previousSampleAL = 0.0; + previousTrendAL = 0.0; + previousSampleBL = 0.0; + previousTrendBL = 0.0; + previousSampleCL = 0.0; + previousTrendCL = 0.0; + previousSampleDL = 0.0; + previousTrendDL = 0.0; + + previousSampleAR = 0.0; + previousTrendAR = 0.0; + previousSampleBR = 0.0; + previousTrendBR = 0.0; + previousSampleCR = 0.0; + previousTrendCR = 0.0; + previousSampleDR = 0.0; + previousTrendDR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Holt::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/Holt/HoltProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Holt> plugin; diff --git a/plugins/LV2/src/Holt/Holt.h b/plugins/LV2/src/Holt/Holt.h new file mode 100644 index 0000000..9be93e0 --- /dev/null +++ b/plugins/LV2/src/Holt/Holt.h @@ -0,0 +1,58 @@ +#ifndef __Holt_H +#define __Holt_H + +#include <lv2plugin.h> + +class Holt : public LV2Plugin<5> { +public: + Holt(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/holt"; + +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 previousSampleAL; + long double previousTrendAL; + long double previousSampleBL; + long double previousTrendBL; + long double previousSampleCL; + long double previousTrendCL; + long double previousSampleDL; + long double previousTrendDL; + + long double previousSampleAR; + long double previousTrendAR; + long double previousSampleBR; + long double previousTrendBR; + long double previousSampleCR; + long double previousTrendCR; + long double previousSampleDR; + long double previousTrendDR; + + + 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/Holt/Holt.ttl b/plugins/LV2/src/Holt/Holt.ttl new file mode 100644 index 0000000..6e407b7 --- /dev/null +++ b/plugins/LV2/src/Holt/Holt.ttl @@ -0,0 +1,76 @@ +# Airwindows Holt 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/holt> + 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 "Freq" ; + 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 "Reso" ; + 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 "Poles" ; + 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 "Output" ; + 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 "Dry/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/Holt/manifest.ttl.in b/plugins/LV2/src/Holt/manifest.ttl.in new file mode 100644 index 0000000..4b61e48 --- /dev/null +++ b/plugins/LV2/src/Holt/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:holt + a lv2:Plugin ; + doap:name "Airwindows Holt" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Holt@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Holt.ttl> . diff --git a/plugins/LV2/src/Hombre/Hombre.cpp b/plugins/LV2/src/Hombre/Hombre.cpp new file mode 100644 index 0000000..76ef3c0 --- /dev/null +++ b/plugins/LV2/src/Hombre/Hombre.cpp @@ -0,0 +1,38 @@ +#include "Hombre.h" +#include <iostream> +#include <lv2wrapper.h> + +Hombre::Hombre(double rate) + : LV2Plugin(rate) +{ +} + +void Hombre::activate() +{ + A = 0.421; + B = 0.5; + for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;} + gcount = 0; + slide = 0.421; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Hombre::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/Hombre/HombreProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Hombre> plugin; diff --git a/plugins/LV2/src/Hombre/Hombre.h b/plugins/LV2/src/Hombre/Hombre.h new file mode 100644 index 0000000..088f53c --- /dev/null +++ b/plugins/LV2/src/Hombre/Hombre.h @@ -0,0 +1,40 @@ +#ifndef __Hombre_H +#define __Hombre_H + +#include <lv2plugin.h> + +class Hombre : public LV2Plugin<2> { +public: + Hombre(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/hombre"; + +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[4001]; + double pR[4001]; + double slide; + int gcount; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/Hombre/Hombre.ttl b/plugins/LV2/src/Hombre/Hombre.ttl new file mode 100644 index 0000000..1fa39bf --- /dev/null +++ b/plugins/LV2/src/Hombre/Hombre.ttl @@ -0,0 +1,52 @@ +# Airwindows Hombre 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/hombre> + 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 "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 "Intensity" ; + 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/Hombre/manifest.ttl.in b/plugins/LV2/src/Hombre/manifest.ttl.in new file mode 100644 index 0000000..f6d1dc8 --- /dev/null +++ b/plugins/LV2/src/Hombre/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:hombre + a lv2:Plugin ; + doap:name "Airwindows Hombre" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Hombre@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Hombre.ttl> . diff --git a/plugins/LV2/src/Interstage/Interstage.cpp b/plugins/LV2/src/Interstage/Interstage.cpp new file mode 100644 index 0000000..0621925 --- /dev/null +++ b/plugins/LV2/src/Interstage/Interstage.cpp @@ -0,0 +1,46 @@ +#include "Interstage.h" +#include <iostream> +#include <lv2wrapper.h> + +Interstage::Interstage(double rate) + : LV2Plugin(rate) +{ +} + +void Interstage::activate() +{ + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleCL = 0.0; + iirSampleDL = 0.0; + iirSampleEL = 0.0; + iirSampleFL = 0.0; + lastSampleL = 0.0; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + iirSampleCR = 0.0; + iirSampleDR = 0.0; + iirSampleER = 0.0; + iirSampleFR = 0.0; + lastSampleR = 0.0; + fpd = 17; + flip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Interstage::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/Interstage/InterstageProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Interstage> plugin; diff --git a/plugins/LV2/src/Interstage/Interstage.h b/plugins/LV2/src/Interstage/Interstage.h new file mode 100644 index 0000000..afda10a --- /dev/null +++ b/plugins/LV2/src/Interstage/Interstage.h @@ -0,0 +1,45 @@ +#ifndef __Interstage_H +#define __Interstage_H + +#include <lv2plugin.h> + +class Interstage : public LV2Plugin<0> { +public: + Interstage(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/interstage"; + +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 iirSampleAL; + double iirSampleBL; + double iirSampleCL; + double iirSampleDL; + double iirSampleEL; + double iirSampleFL; + long double lastSampleL; + double iirSampleAR; + double iirSampleBR; + double iirSampleCR; + double iirSampleDR; + double iirSampleER; + double iirSampleFR; + long double lastSampleR; + uint32_t fpd; + bool flip; +}; + +#endif diff --git a/plugins/LV2/src/Interstage/Interstage.ttl b/plugins/LV2/src/Interstage/Interstage.ttl new file mode 100644 index 0000000..33c3054 --- /dev/null +++ b/plugins/LV2/src/Interstage/Interstage.ttl @@ -0,0 +1,38 @@ +# Airwindows Interstage 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/interstage> + 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/Interstage/manifest.ttl.in b/plugins/LV2/src/Interstage/manifest.ttl.in new file mode 100644 index 0000000..04b8ace --- /dev/null +++ b/plugins/LV2/src/Interstage/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:interstage + a lv2:Plugin ; + doap:name "Airwindows Interstage" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Interstage@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Interstage.ttl> . diff --git a/plugins/LV2/src/IronOxide5/IronOxide5.cpp b/plugins/LV2/src/IronOxide5/IronOxide5.cpp new file mode 100644 index 0000000..77a9424 --- /dev/null +++ b/plugins/LV2/src/IronOxide5/IronOxide5.cpp @@ -0,0 +1,71 @@ +#include "IronOxide5.h" +#include <iostream> +#include <lv2wrapper.h> + +IronOxide5::IronOxide5(double rate) + : LV2Plugin(rate) +{ +} + +void IronOxide5::activate() +{ + A = 0.5; //0.0 input trim in dB -18 to +18, default 0 ((A*36.0)-18.0) + B = 0.562341325190349; //15.0 ips 1.5 to 150.0 logarithmic. B*B + C = 0.562341325190349; // (C*C) * (C*C) * 150 gives 15 ips (clamp to 1.5 minimum) + //15.0 (0.316227766016838)squared * 150 gives 15 ips + D = 0.5; //0.5 flutter 0 to 1 + E = 0.5; //0.5 noise 0 to 1 + F = 0.5; //0.0 output trim in dB -18 to +18, default 0 ((E*36.0)-18.0) + G = 1.0; //1.0 inv/dry/wet -1 0 1 ((F*2.0)-1.0) + //needs very fussy defaults to comply with unusual defaults + + for (int temp = 0; temp < 263; temp++) {dL[temp] = 0.0; dR[temp] = 0.0;} + gcount = 0; + + fastIIRAL = fastIIRBL = slowIIRAL = slowIIRBL = 0.0; + fastIIHAL = fastIIHBL = slowIIHAL = slowIIHBL = 0.0; + iirSamplehAL = iirSamplehBL = 0.0; + iirSampleAL = iirSampleBL = 0.0; + prevInputSampleL = 0.0; + + fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0; + fastIIHAR = fastIIHBR = slowIIHAR = slowIIHBR = 0.0; + iirSamplehAR = iirSamplehBR = 0.0; + iirSampleAR = iirSampleBR = 0.0; + prevInputSampleR = 0.0; + + flip = false; + for (int temp = 0; temp < 99; temp++) {flL[temp] = 0.0; flR[temp] = 0.0;} + + fstoredcount = 0; + sweep = 0.0; + rateof = 0.5; + nextmax = 0.5; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void IronOxide5::run(uint32_t num_samples) +{ + A = *params[0]; + B = *params[1]; + C = *params[2]; + D = *params[3]; + E = *params[4]; + F = *params[5]; + G = *params[6]; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/IronOxide5/IronOxide5Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<IronOxide5> plugin; diff --git a/plugins/LV2/src/IronOxide5/IronOxide5.h b/plugins/LV2/src/IronOxide5/IronOxide5.h new file mode 100644 index 0000000..9447326 --- /dev/null +++ b/plugins/LV2/src/IronOxide5/IronOxide5.h @@ -0,0 +1,83 @@ +#ifndef __IronOxide5_H +#define __IronOxide5_H + +#include <lv2plugin.h> + +class IronOxide5 : public LV2Plugin<7> { +public: + IronOxide5(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/ironoxide5"; + +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 iirSamplehAL; + double iirSamplehBL; + double iirSampleAL; + double iirSampleBL; + double dL[264]; + double fastIIRAL; + double fastIIRBL; + double slowIIRAL; + double slowIIRBL; + double fastIIHAL; + double fastIIHBL; + double slowIIHAL; + double slowIIHBL; + double prevInputSampleL; + + double iirSamplehAR; + double iirSamplehBR; + double iirSampleAR; + double iirSampleBR; + double dR[264]; + double fastIIRAR; + double fastIIRBR; + double slowIIRAR; + double slowIIRBR; + double fastIIHAR; + double fastIIHBR; + double slowIIHAR; + double slowIIHBR; + double prevInputSampleR; + + int gcount; + bool flip; + + double flL[100]; + double flR[100]; + + int fstoredcount; + double rateof; + double sweep; + double nextmax; + + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; + float E; + float F; + float G; + +}; + +#endif diff --git a/plugins/LV2/src/IronOxide5/IronOxide5.ttl b/plugins/LV2/src/IronOxide5/IronOxide5.ttl new file mode 100644 index 0000000..65da368 --- /dev/null +++ b/plugins/LV2/src/IronOxide5/IronOxide5.ttl @@ -0,0 +1,92 @@ +# Airwindows IronOxide5 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/ironoxide5> + 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 "Input Trim" ; + 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 "Tape High" ; + 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 "Tape Low" ; + 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 "Noise" ; + 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 "Output Trim" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 6 ; + lv2:symbol "G" ; + lv2:name "Inv/Dry/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 7 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 8 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 9 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 10 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/IronOxide5/manifest.ttl.in b/plugins/LV2/src/IronOxide5/manifest.ttl.in new file mode 100644 index 0000000..951e687 --- /dev/null +++ b/plugins/LV2/src/IronOxide5/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:ironoxide5 + a lv2:Plugin ; + doap:name "Airwindows IronOxide5" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <IronOxide5@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <IronOxide5.ttl> . diff --git a/plugins/LV2/src/IronOxideClassic/IronOxideClassic.cpp b/plugins/LV2/src/IronOxideClassic/IronOxideClassic.cpp new file mode 100644 index 0000000..71c3738 --- /dev/null +++ b/plugins/LV2/src/IronOxideClassic/IronOxideClassic.cpp @@ -0,0 +1,45 @@ +#include "IronOxideClassic.h" +#include <iostream> +#include <lv2wrapper.h> + +IronOxideClassic::IronOxideClassic(double rate) + : LV2Plugin(rate) +{ +} + +void IronOxideClassic::activate() +{ + A = 0.5; + B = 0.562341325190349; + C = 0.5; + + for (int temp = 0; temp < 263; temp++) {dL[temp] = 0.0;dR[temp] = 0.0;} + gcount = 0; + fastIIRAL = fastIIRBL = slowIIRAL = slowIIRBL = 0.0; + iirSampleAL = iirSampleBL = 0.0; + fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0; + iirSampleAR = iirSampleBR = 0.0; + fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void IronOxideClassic::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/IronOxideClassic/IronOxideClassicProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<IronOxideClassic> plugin; diff --git a/plugins/LV2/src/IronOxideClassic/IronOxideClassic.h b/plugins/LV2/src/IronOxideClassic/IronOxideClassic.h new file mode 100644 index 0000000..a236452 --- /dev/null +++ b/plugins/LV2/src/IronOxideClassic/IronOxideClassic.h @@ -0,0 +1,54 @@ +#ifndef __IronOxideClassic_H +#define __IronOxideClassic_H + +#include <lv2plugin.h> + +class IronOxideClassic : public LV2Plugin<3> { +public: + IronOxideClassic(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/ironoxideclassic"; + +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 iirSampleAL; + double iirSampleBL; + double dL[264]; + double fastIIRAL; + double fastIIRBL; + double slowIIRAL; + double slowIIRBL; + + double iirSampleAR; + double iirSampleBR; + double dR[264]; + double fastIIRAR; + double fastIIRBR; + double slowIIRAR; + double slowIIRBR; + + int gcount; + bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/IronOxideClassic/IronOxideClassic.ttl b/plugins/LV2/src/IronOxideClassic/IronOxideClassic.ttl new file mode 100644 index 0000000..c932827 --- /dev/null +++ b/plugins/LV2/src/IronOxideClassic/IronOxideClassic.ttl @@ -0,0 +1,60 @@ +# Airwindows IronOxideClassic 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/ironoxideclassic> + 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 "Input Trim" ; + 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 "Tape 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 Trim" ; + 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/IronOxideClassic/manifest.ttl.in b/plugins/LV2/src/IronOxideClassic/manifest.ttl.in new file mode 100644 index 0000000..9381ec1 --- /dev/null +++ b/plugins/LV2/src/IronOxideClassic/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:ironoxideclassic + a lv2:Plugin ; + doap:name "Airwindows IronOxideClassic" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <IronOxideClassic@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <IronOxideClassic.ttl> . diff --git a/plugins/LV2/src/LeftoMono/LeftoMono.cpp b/plugins/LV2/src/LeftoMono/LeftoMono.cpp new file mode 100644 index 0000000..f887d79 --- /dev/null +++ b/plugins/LV2/src/LeftoMono/LeftoMono.cpp @@ -0,0 +1,29 @@ +#include "LeftoMono.h" +#include <iostream> +#include <lv2wrapper.h> + +LeftoMono::LeftoMono(double rate) + : LV2Plugin(rate) +{ +} + +void LeftoMono::activate() +{ + +} + +void LeftoMono::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/LeftoMono/LeftoMonoProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<LeftoMono> plugin; diff --git a/plugins/LV2/src/LeftoMono/LeftoMono.h b/plugins/LV2/src/LeftoMono/LeftoMono.h new file mode 100644 index 0000000..ad3a84b --- /dev/null +++ b/plugins/LV2/src/LeftoMono/LeftoMono.h @@ -0,0 +1,29 @@ +#ifndef __LeftoMono_H +#define __LeftoMono_H + +#include <lv2plugin.h> + +class LeftoMono : public LV2Plugin<0> { +public: + LeftoMono(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/leftomono"; + +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/LeftoMono/LeftoMono.ttl b/plugins/LV2/src/LeftoMono/LeftoMono.ttl new file mode 100644 index 0000000..ea74d7e --- /dev/null +++ b/plugins/LV2/src/LeftoMono/LeftoMono.ttl @@ -0,0 +1,38 @@ +# Airwindows LeftoMono 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/leftomono> + 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/LeftoMono/manifest.ttl.in b/plugins/LV2/src/LeftoMono/manifest.ttl.in new file mode 100644 index 0000000..62c10d5 --- /dev/null +++ b/plugins/LV2/src/LeftoMono/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:leftomono + a lv2:Plugin ; + doap:name "Airwindows LeftoMono" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <LeftoMono@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <LeftoMono.ttl> . diff --git a/plugins/LV2/src/Logical4/Logical4.cpp b/plugins/LV2/src/Logical4/Logical4.cpp new file mode 100644 index 0000000..167e198 --- /dev/null +++ b/plugins/LV2/src/Logical4/Logical4.cpp @@ -0,0 +1,102 @@ +#include "Logical4.h" +#include <iostream> +#include <lv2wrapper.h> + +Logical4::Logical4(double rate) + : LV2Plugin(rate) +{ +} + +void Logical4::activate() +{ + A = 0.5; + B = 0.2; + C = 0.19202020202020202; + D = 0.5; + E = 1.0; + + //begin ButterComps + controlAposL = 1.0; + controlAnegL = 1.0; + controlBposL = 1.0; + controlBnegL = 1.0; + targetposL = 1.0; + targetnegL = 1.0; + + controlAposBL = 1.0; + controlAnegBL = 1.0; + controlBposBL = 1.0; + controlBnegBL = 1.0; + targetposBL = 1.0; + targetnegBL = 1.0; + + controlAposCL = 1.0; + controlAnegCL = 1.0; + controlBposCL = 1.0; + controlBnegCL = 1.0; + targetposCL = 1.0; + targetnegCL = 1.0; + + avgAL = avgBL = avgCL = avgDL = avgEL = avgFL = 0.0; + nvgAL = nvgBL = nvgCL = nvgDL = nvgEL = nvgFL = 0.0; + //end ButterComps + + //begin ButterComps + controlAposR = 1.0; + controlAnegR = 1.0; + controlBposR = 1.0; + controlBnegR = 1.0; + targetposR = 1.0; + targetnegR = 1.0; + + controlAposBR = 1.0; + controlAnegBR = 1.0; + controlBposBR = 1.0; + controlBnegBR = 1.0; + targetposBR = 1.0; + targetnegBR = 1.0; + + controlAposCR = 1.0; + controlAnegCR = 1.0; + controlBposCR = 1.0; + controlBnegCR = 1.0; + targetposCR = 1.0; + targetnegCR = 1.0; + + avgAR = avgBR = avgCR = avgDR = avgER = avgFR = 0.0; + nvgAR = nvgBR = nvgCR = nvgDR = nvgER = nvgFR = 0.0; + //end ButterComps + + //begin Power Sags + for(int count = 0; count < 999; count++) {dL[count] = 0; bL[count] = 0; cL[count] = 0; dR[count] = 0; bR[count] = 0; cR[count] = 0;} + controlL = 0; controlBL = 0; controlCL = 0; + controlR = 0; controlBR = 0; controlCR = 0; + + gcount = 0; + //end Power Sags + fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Logical4::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/Logical4/Logical4Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Logical4> plugin; diff --git a/plugins/LV2/src/Logical4/Logical4.h b/plugins/LV2/src/Logical4/Logical4.h new file mode 100644 index 0000000..75ec58d --- /dev/null +++ b/plugins/LV2/src/Logical4/Logical4.h @@ -0,0 +1,126 @@ +#ifndef __Logical4_H +#define __Logical4_H + +#include <lv2plugin.h> + +class Logical4 : public LV2Plugin<5> { +public: + Logical4(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/logical4"; + +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. + */ + + //begin ButterComp + double controlAposL; + double controlAnegL; + double controlBposL; + double controlBnegL; + double targetposL; + double targetnegL; + double controlAposBL; + double controlAnegBL; + double controlBposBL; + double controlBnegBL; + double targetposBL; + double targetnegBL; + double controlAposCL; + double controlAnegCL; + double controlBposCL; + double controlBnegCL; + double targetposCL; + double targetnegCL; + double avgAL; + double avgBL; + double avgCL; + double avgDL; + double avgEL; + double avgFL; + double nvgAL; + double nvgBL; + double nvgCL; + double nvgDL; + double nvgEL; + double nvgFL; + //end ButterComp + + //begin Power Sag + double dL[1000]; + double controlL; + double bL[1000]; + double controlBL; + double cL[1000]; + double controlCL; + //end Power Sag + + //begin ButterComp + double controlAposR; + double controlAnegR; + double controlBposR; + double controlBnegR; + double targetposR; + double targetnegR; + double controlAposBR; + double controlAnegBR; + double controlBposBR; + double controlBnegBR; + double targetposBR; + double targetnegBR; + double controlAposCR; + double controlAnegCR; + double controlBposCR; + double controlBnegCR; + double targetposCR; + double targetnegCR; + double avgAR; + double avgBR; + double avgCR; + double avgDR; + double avgER; + double avgFR; + double nvgAR; + double nvgBR; + double nvgCR; + double nvgDR; + double nvgER; + double nvgFR; + //end ButterComp + + //begin Power Sag + double dR[1000]; + double controlR; + double bR[1000]; + double controlBR; + double cR[1000]; + double controlCR; + //end Power Sag + + int gcount; + + + double fpNShapeL; + double fpNShapeR; + bool fpFlip; + //default stuff + + float A; + float B; + float C; + float D; + float E; +}; + +#endif diff --git a/plugins/LV2/src/Logical4/Logical4.ttl b/plugins/LV2/src/Logical4/Logical4.ttl new file mode 100644 index 0000000..d7fef63 --- /dev/null +++ b/plugins/LV2/src/Logical4/Logical4.ttl @@ -0,0 +1,76 @@ +# Airwindows Logical4 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/logical4> + 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 "Threshold" ; + 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 "Ratio" ; + 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 "Speed" ; + 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 "MakeupGn" ; + 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 "Dry/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/Logical4/manifest.ttl.in b/plugins/LV2/src/Logical4/manifest.ttl.in new file mode 100644 index 0000000..83420dd --- /dev/null +++ b/plugins/LV2/src/Logical4/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:logical4 + a lv2:Plugin ; + doap:name "Airwindows Logical4" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Logical4@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Logical4.ttl> . diff --git a/plugins/LV2/src/Loud/Loud.cpp b/plugins/LV2/src/Loud/Loud.cpp new file mode 100644 index 0000000..f0d9ed2 --- /dev/null +++ b/plugins/LV2/src/Loud/Loud.cpp @@ -0,0 +1,37 @@ +#include "Loud.h" +#include <iostream> +#include <lv2wrapper.h> + +Loud::Loud(double rate) + : LV2Plugin(rate) +{ +} + +void Loud::activate() +{ + A = 0.0; + B = 1.0; + C = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Loud::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/Loud/LoudProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Loud> plugin; diff --git a/plugins/LV2/src/Loud/Loud.h b/plugins/LV2/src/Loud/Loud.h new file mode 100644 index 0000000..fa23d83 --- /dev/null +++ b/plugins/LV2/src/Loud/Loud.h @@ -0,0 +1,38 @@ +#ifndef __Loud_H +#define __Loud_H + +#include <lv2plugin.h> + +class Loud : public LV2Plugin<3> { +public: + Loud(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/loud"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + double lastSampleL; + double lastSampleR; + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Loud/Loud.ttl b/plugins/LV2/src/Loud/Loud.ttl new file mode 100644 index 0000000..a255e31 --- /dev/null +++ b/plugins/LV2/src/Loud/Loud.ttl @@ -0,0 +1,60 @@ +# Airwindows Loud 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/loud> + 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 "Boost" ; + 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 Level" ; + 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/Loud/manifest.ttl.in b/plugins/LV2/src/Loud/manifest.ttl.in new file mode 100644 index 0000000..58c2785 --- /dev/null +++ b/plugins/LV2/src/Loud/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:loud + a lv2:Plugin ; + doap:name "Airwindows Loud" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Loud@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Loud.ttl> . diff --git a/plugins/LV2/src/Lowpass/Lowpass.cpp b/plugins/LV2/src/Lowpass/Lowpass.cpp new file mode 100644 index 0000000..6a17f91 --- /dev/null +++ b/plugins/LV2/src/Lowpass/Lowpass.cpp @@ -0,0 +1,42 @@ +#include "Lowpass.h" +#include <iostream> +#include <lv2wrapper.h> + +Lowpass::Lowpass(double rate) + : LV2Plugin(rate) +{ +} + +void Lowpass::activate() +{ + A = 1.0; + B = 0.5; + C = 1.0; + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + fpFlip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Lowpass::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/Lowpass/LowpassProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Lowpass> plugin; diff --git a/plugins/LV2/src/Lowpass/Lowpass.h b/plugins/LV2/src/Lowpass/Lowpass.h new file mode 100644 index 0000000..f34edce --- /dev/null +++ b/plugins/LV2/src/Lowpass/Lowpass.h @@ -0,0 +1,41 @@ +#ifndef __Lowpass_H +#define __Lowpass_H + +#include <lv2plugin.h> + +class Lowpass : public LV2Plugin<3> { +public: + Lowpass(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/lowpass"; + +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; + float C; + double iirSampleAL; + double iirSampleBL; + double iirSampleAR; + double iirSampleBR; + bool fpFlip; +}; + +#endif diff --git a/plugins/LV2/src/Lowpass/Lowpass.ttl b/plugins/LV2/src/Lowpass/Lowpass.ttl new file mode 100644 index 0000000..f74336d --- /dev/null +++ b/plugins/LV2/src/Lowpass/Lowpass.ttl @@ -0,0 +1,60 @@ +# Airwindows Lowpass 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/lowpass> + 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 "Lowpass" ; + 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 "Soft/Hard" ; + 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/Lowpass/manifest.ttl.in b/plugins/LV2/src/Lowpass/manifest.ttl.in new file mode 100644 index 0000000..95b8e17 --- /dev/null +++ b/plugins/LV2/src/Lowpass/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:lowpass + a lv2:Plugin ; + doap:name "Airwindows Lowpass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Lowpass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Lowpass.ttl> . diff --git a/plugins/LV2/src/Lowpass2/Lowpass2.cpp b/plugins/LV2/src/Lowpass2/Lowpass2.cpp new file mode 100644 index 0000000..2b9f6f7 --- /dev/null +++ b/plugins/LV2/src/Lowpass2/Lowpass2.cpp @@ -0,0 +1,59 @@ +#include "Lowpass2.h" +#include <iostream> +#include <lv2wrapper.h> + +Lowpass2::Lowpass2(double rate) + : LV2Plugin(rate) +{ +} + +void Lowpass2::activate() +{ + A = 0.0; + B = 0.5; //-1.0 to 1.0 + C = 0.25; // 0.0 to 4.0 + D = 1.0; + fpd = 17; + + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleCL = 0.0; + iirSampleDL = 0.0; + iirSampleEL = 0.0; + iirSampleFL = 0.0; + iirSampleGL = 0.0; + iirSampleHL = 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; + + fpFlip = true; + + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Lowpass2::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/Lowpass2/Lowpass2Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Lowpass2> plugin; diff --git a/plugins/LV2/src/Lowpass2/Lowpass2.h b/plugins/LV2/src/Lowpass2/Lowpass2.h new file mode 100644 index 0000000..5a1fd55 --- /dev/null +++ b/plugins/LV2/src/Lowpass2/Lowpass2.h @@ -0,0 +1,56 @@ +#ifndef __Lowpass2_H +#define __Lowpass2_H + +#include <lv2plugin.h> + +class Lowpass2 : public LV2Plugin<4> { +public: + Lowpass2(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/lowpass2"; + +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 iirSampleAL; + double iirSampleBL; + double iirSampleCL; + double iirSampleDL; + double iirSampleEL; + double iirSampleFL; + double iirSampleGL; + double iirSampleHL; + + double iirSampleAR; + double iirSampleBR; + double iirSampleCR; + double iirSampleDR; + double iirSampleER; + double iirSampleFR; + double iirSampleGR; + double iirSampleHR; + + bool fpFlip; + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/Lowpass2/Lowpass2.ttl b/plugins/LV2/src/Lowpass2/Lowpass2.ttl new file mode 100644 index 0000000..3a0b7a3 --- /dev/null +++ b/plugins/LV2/src/Lowpass2/Lowpass2.ttl @@ -0,0 +1,68 @@ +# Airwindows Lowpass2 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/lowpass2> + 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 "Lowpass" ; + 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 "Sft/Hrd" ; + 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 "Poles" ; + 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/Lowpass2/manifest.ttl.in b/plugins/LV2/src/Lowpass2/manifest.ttl.in new file mode 100644 index 0000000..5e2dbe4 --- /dev/null +++ b/plugins/LV2/src/Lowpass2/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:lowpass2 + a lv2:Plugin ; + doap:name "Airwindows Lowpass2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Lowpass2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Lowpass2.ttl> . diff --git a/plugins/LV2/src/Luxor/Luxor.cpp b/plugins/LV2/src/Luxor/Luxor.cpp new file mode 100644 index 0000000..3854e39 --- /dev/null +++ b/plugins/LV2/src/Luxor/Luxor.cpp @@ -0,0 +1,40 @@ +#include "Luxor.h" +#include <iostream> +#include <lv2wrapper.h> + +Luxor::Luxor(double rate) + : LV2Plugin(rate) +{ +} + +void Luxor::activate() +{ + A = 0.70; + B = 0.3333333; + C = 0.3333333; + D = 1.0; + for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;} + lastSampleR = 0.0;lastSampleL = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Luxor::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/Luxor/LuxorProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Luxor> plugin; diff --git a/plugins/LV2/src/Luxor/Luxor.h b/plugins/LV2/src/Luxor/Luxor.h new file mode 100644 index 0000000..5b44cfd --- /dev/null +++ b/plugins/LV2/src/Luxor/Luxor.h @@ -0,0 +1,40 @@ +#ifndef __Luxor_H +#define __Luxor_H + +#include <lv2plugin.h> + +class Luxor : public LV2Plugin<4> { +public: + Luxor(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/luxor"; + +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 bR[35]; + double lastSampleR; + double bL[35]; + double lastSampleL; + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/Luxor/Luxor.ttl b/plugins/LV2/src/Luxor/Luxor.ttl new file mode 100644 index 0000000..d99f034 --- /dev/null +++ b/plugins/LV2/src/Luxor/Luxor.ttl @@ -0,0 +1,68 @@ +# Airwindows Luxor 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/luxor> + 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 "Hardns" ; + 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 "Persnlty" ; + 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 "Drive" ; + 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 "Output" ; + 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/Luxor/manifest.ttl.in b/plugins/LV2/src/Luxor/manifest.ttl.in new file mode 100644 index 0000000..9ac728f --- /dev/null +++ b/plugins/LV2/src/Luxor/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:luxor + a lv2:Plugin ; + doap:name "Airwindows Luxor" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Luxor@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Luxor.ttl> . diff --git a/plugins/LV2/src/MV/MV.cpp b/plugins/LV2/src/MV/MV.cpp new file mode 100644 index 0000000..6415822 --- /dev/null +++ b/plugins/LV2/src/MV/MV.cpp @@ -0,0 +1,99 @@ +#include "MV.h" +#include <iostream> +#include <lv2wrapper.h> + +MV::MV(double rate) + : LV2Plugin(rate) +{ +} + +void MV::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 1.0; + E = 1.0; + + int count; + for(count = 0; count < 15149; count++) {aAL[count] = 0.0; aAR[count] = 0.0;} + for(count = 0; count < 14617; count++) {aBL[count] = 0.0; aBR[count] = 0.0;} + for(count = 0; count < 14357; count++) {aCL[count] = 0.0; aCR[count] = 0.0;} + for(count = 0; count < 13817; count++) {aDL[count] = 0.0; aDR[count] = 0.0;} + for(count = 0; count < 13561; count++) {aEL[count] = 0.0; aER[count] = 0.0;} + for(count = 0; count < 13045; count++) {aFL[count] = 0.0; aFR[count] = 0.0;} + for(count = 0; count < 11965; count++) {aGL[count] = 0.0; aGR[count] = 0.0;} + for(count = 0; count < 11129; count++) {aHL[count] = 0.0; aHR[count] = 0.0;} + for(count = 0; count < 10597; count++) {aIL[count] = 0.0; aIR[count] = 0.0;} + for(count = 0; count < 9809; count++) {aJL[count] = 0.0; aJR[count] = 0.0;} + for(count = 0; count < 9521; count++) {aKL[count] = 0.0; aKR[count] = 0.0;} + for(count = 0; count < 8981; count++) {aLL[count] = 0.0; aLR[count] = 0.0;} + for(count = 0; count < 8785; count++) {aML[count] = 0.0; aMR[count] = 0.0;} + for(count = 0; count < 8461; count++) {aNL[count] = 0.0; aNR[count] = 0.0;} + for(count = 0; count < 8309; count++) {aOL[count] = 0.0; aOR[count] = 0.0;} + for(count = 0; count < 7981; count++) {aPL[count] = 0.0; aPR[count] = 0.0;} + for(count = 0; count < 7321; count++) {aQL[count] = 0.0; aQR[count] = 0.0;} + for(count = 0; count < 6817; count++) {aRL[count] = 0.0; aRR[count] = 0.0;} + for(count = 0; count < 6505; count++) {aSL[count] = 0.0; aSR[count] = 0.0;} + for(count = 0; count < 6001; count++) {aTL[count] = 0.0; aTR[count] = 0.0;} + for(count = 0; count < 5837; count++) {aUL[count] = 0.0; aUR[count] = 0.0;} + for(count = 0; count < 5501; count++) {aVL[count] = 0.0; aVR[count] = 0.0;} + for(count = 0; count < 5009; count++) {aWL[count] = 0.0; aWR[count] = 0.0;} + for(count = 0; count < 4849; count++) {aXL[count] = 0.0; aXR[count] = 0.0;} + for(count = 0; count < 4295; count++) {aYL[count] = 0.0; aYR[count] = 0.0;} + for(count = 0; count < 4179; count++) {aZL[count] = 0.0; aZR[count] = 0.0;} + + alpA = 1; delayA = 7573; avgAL = 0.0; avgAR = 0.0; + alpB = 1; delayB = 7307; avgBL = 0.0; avgBR = 0.0; + alpC = 1; delayC = 7177; avgCL = 0.0; avgCR = 0.0; + alpD = 1; delayD = 6907; avgDL = 0.0; avgDR = 0.0; + alpE = 1; delayE = 6779; avgEL = 0.0; avgER = 0.0; + alpF = 1; delayF = 6521; avgFL = 0.0; avgFR = 0.0; + alpG = 1; delayG = 5981; avgGL = 0.0; avgGR = 0.0; + alpH = 1; delayH = 5563; avgHL = 0.0; avgHR = 0.0; + alpI = 1; delayI = 5297; avgIL = 0.0; avgIR = 0.0; + alpJ = 1; delayJ = 4903; avgJL = 0.0; avgJR = 0.0; + alpK = 1; delayK = 4759; avgKL = 0.0; avgKR = 0.0; + alpL = 1; delayL = 4489; avgLL = 0.0; avgLR = 0.0; + alpM = 1; delayM = 4391; avgML = 0.0; avgMR = 0.0; + alpN = 1; delayN = 4229; avgNL = 0.0; avgNR = 0.0; + alpO = 1; delayO = 4153; avgOL = 0.0; avgOR = 0.0; + alpP = 1; delayP = 3989; avgPL = 0.0; avgPR = 0.0; + alpQ = 1; delayQ = 3659; avgQL = 0.0; avgQR = 0.0; + alpR = 1; delayR = 3407; avgRL = 0.0; avgRR = 0.0; + alpS = 1; delayS = 3251; avgSL = 0.0; avgSR = 0.0; + alpT = 1; delayT = 2999; avgTL = 0.0; avgTR = 0.0; + alpU = 1; delayU = 2917; avgUL = 0.0; avgUR = 0.0; + alpV = 1; delayV = 2749; avgVL = 0.0; avgVR = 0.0; + alpW = 1; delayW = 2503; avgWL = 0.0; avgWR = 0.0; + alpX = 1; delayX = 2423; avgXL = 0.0; avgXR = 0.0; + alpY = 1; delayY = 2146; avgYL = 0.0; avgYR = 0.0; + alpZ = 1; delayZ = 2088; avgZL = 0.0; avgZR = 0.0; + + feedbackL = 0.0; + feedbackR = 0.0; + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void MV::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/MV/MVProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<MV> plugin; diff --git a/plugins/LV2/src/MV/MV.h b/plugins/LV2/src/MV/MV.h new file mode 100644 index 0000000..e5214fb --- /dev/null +++ b/plugins/LV2/src/MV/MV.h @@ -0,0 +1,177 @@ +#ifndef __MV_H +#define __MV_H + +#include <lv2plugin.h> + +class MV : public LV2Plugin<5> { +public: + MV(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/mv"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; + float E; //parameters. Always 0-1, and we scale/alter them elsewhere. + + double aAL[15150]; + double aBL[14618]; + double aCL[14358]; + double aDL[13818]; + double aEL[13562]; + double aFL[13046]; + double aGL[11966]; + double aHL[11130]; + double aIL[10598]; + double aJL[9810]; + double aKL[9522]; + double aLL[8982]; + double aML[8786]; + double aNL[8462]; + double aOL[8310]; + double aPL[7982]; + double aQL[7322]; + double aRL[6818]; + double aSL[6506]; + double aTL[6002]; + double aUL[5838]; + double aVL[5502]; + double aWL[5010]; + double aXL[4850]; + double aYL[4296]; + double aZL[4180]; + + double avgAL; + double avgBL; + double avgCL; + double avgDL; + double avgEL; + double avgFL; + double avgGL; + double avgHL; + double avgIL; + double avgJL; + double avgKL; + double avgLL; + double avgML; + double avgNL; + double avgOL; + double avgPL; + double avgQL; + double avgRL; + double avgSL; + double avgTL; + double avgUL; + double avgVL; + double avgWL; + double avgXL; + double avgYL; + double avgZL; + + double feedbackL; + + double aAR[15150]; + double aBR[14618]; + double aCR[14358]; + double aDR[13818]; + double aER[13562]; + double aFR[13046]; + double aGR[11966]; + double aHR[11130]; + double aIR[10598]; + double aJR[9810]; + double aKR[9522]; + double aLR[8982]; + double aMR[8786]; + double aNR[8462]; + double aOR[8310]; + double aPR[7982]; + double aQR[7322]; + double aRR[6818]; + double aSR[6506]; + double aTR[6002]; + double aUR[5838]; + double aVR[5502]; + double aWR[5010]; + double aXR[4850]; + double aYR[4296]; + double aZR[4180]; + + double avgAR; + double avgBR; + double avgCR; + double avgDR; + double avgER; + double avgFR; + double avgGR; + double avgHR; + double avgIR; + double avgJR; + double avgKR; + double avgLR; + double avgMR; + double avgNR; + double avgOR; + double avgPR; + double avgQR; + double avgRR; + double avgSR; + double avgTR; + double avgUR; + double avgVR; + double avgWR; + double avgXR; + double avgYR; + double avgZR; + + double feedbackR; + + //these are delay lengths and same for both sides + int alpA, delayA; + int alpB, delayB; + int alpC, delayC; + int alpD, delayD; + int alpE, delayE; + int alpF, delayF; + int alpG, delayG; + int alpH, delayH; + int alpI, delayI; + int alpJ, delayJ; + int alpK, delayK; + int alpL, delayL; + int alpM, delayM; + int alpN, delayN; + int alpO, delayO; + int alpP, delayP; + int alpQ, delayQ; + int alpR, delayR; + int alpS, delayS; + int alpT, delayT; + int alpU, delayU; + int alpV, delayV; + int alpW, delayW; + int alpX, delayX; + int alpY, delayY; + int alpZ, delayZ; +}; + +#endif diff --git a/plugins/LV2/src/MV/MV.ttl b/plugins/LV2/src/MV/MV.ttl new file mode 100644 index 0000000..7ed93ca --- /dev/null +++ b/plugins/LV2/src/MV/MV.ttl @@ -0,0 +1,76 @@ +# Airwindows MV 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/mv> + 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 "Depth" ; + 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 "Bright" ; + 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 "Regen" ; + 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 "Output" ; + 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 "Dry/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/MV/manifest.ttl.in b/plugins/LV2/src/MV/manifest.ttl.in new file mode 100644 index 0000000..9cfa519 --- /dev/null +++ b/plugins/LV2/src/MV/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:mv + a lv2:Plugin ; + doap:name "Airwindows MV" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <MV@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <MV.ttl> . diff --git a/plugins/LV2/src/Melt/Melt.cpp b/plugins/LV2/src/Melt/Melt.cpp new file mode 100644 index 0000000..ab0a549 --- /dev/null +++ b/plugins/LV2/src/Melt/Melt.cpp @@ -0,0 +1,49 @@ +#include "Melt.h" +#include <iostream> +#include <lv2wrapper.h> + +Melt::Melt(double rate) + : LV2Plugin(rate) +{ +} + +void Melt::activate() +{ + A = 0.25; + B = 0.75; + C = 1.0; + D = 1.0; + + for(int count = 0; count < 32001; count++) {dL[count] = 0;dR[count] = 0;} + combineL = 0; combineR = 0; + scalefactorL = 0.999; scalefactorR = 0.999; + + for(int count = 0; count < 31; count++) {minTap[count] = 0; maxTap[count] = 0; position[count] = 1; stepTap[count] = 1;} + stepCount = 0; + slowCount = 0; + gcount = 0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Melt::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/Melt/MeltProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Melt> plugin; diff --git a/plugins/LV2/src/Melt/Melt.h b/plugins/LV2/src/Melt/Melt.h new file mode 100644 index 0000000..b122a01 --- /dev/null +++ b/plugins/LV2/src/Melt/Melt.h @@ -0,0 +1,53 @@ +#ifndef __Melt_H +#define __Melt_H + +#include <lv2plugin.h> + +class Melt : public LV2Plugin<4> { +public: + Melt(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/melt"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + float dL[32002]; + float dR[32002]; + float combineL; + float combineR; + float scalefactorL; + float scalefactorR; + + int minTap[32]; + int maxTap[32]; + int position[32]; + int stepTap[32]; + int stepCount; + int slowCount; + int gcount; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; //parameters. Always 0-1, and we scale/alter them elsewhere. + +}; + +#endif diff --git a/plugins/LV2/src/Melt/Melt.ttl b/plugins/LV2/src/Melt/Melt.ttl new file mode 100644 index 0000000..ef9f5d1 --- /dev/null +++ b/plugins/LV2/src/Melt/Melt.ttl @@ -0,0 +1,68 @@ +# Airwindows Melt 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/melt> + 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 "Depth" ; + 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 "Range" ; + 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/Melt/manifest.ttl.in b/plugins/LV2/src/Melt/manifest.ttl.in new file mode 100644 index 0000000..45602b0 --- /dev/null +++ b/plugins/LV2/src/Melt/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:melt + a lv2:Plugin ; + doap:name "Airwindows Melt" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Melt@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Melt.ttl> . diff --git a/plugins/LV2/src/MidSide/MidSide.cpp b/plugins/LV2/src/MidSide/MidSide.cpp new file mode 100644 index 0000000..b572dc7 --- /dev/null +++ b/plugins/LV2/src/MidSide/MidSide.cpp @@ -0,0 +1,33 @@ +#include "MidSide.h" +#include <iostream> +#include <lv2wrapper.h> + +MidSide::MidSide(double rate) + : LV2Plugin(rate) +{ +} + +void MidSide::activate() +{ + A = 0.5; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void MidSide::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/MidSide/MidSideProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<MidSide> plugin; diff --git a/plugins/LV2/src/MidSide/MidSide.h b/plugins/LV2/src/MidSide/MidSide.h new file mode 100644 index 0000000..e1dd0c0 --- /dev/null +++ b/plugins/LV2/src/MidSide/MidSide.h @@ -0,0 +1,35 @@ +#ifndef __MidSide_H +#define __MidSide_H + +#include <lv2plugin.h> + +class MidSide : public LV2Plugin<1> { +public: + MidSide(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/midside"; + +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; + +}; + +#endif diff --git a/plugins/LV2/src/MidSide/MidSide.ttl b/plugins/LV2/src/MidSide/MidSide.ttl new file mode 100644 index 0000000..e92f058 --- /dev/null +++ b/plugins/LV2/src/MidSide/MidSide.ttl @@ -0,0 +1,44 @@ +# Airwindows MidSide 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/midside> + 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 "Mid/Side" ; + 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/MidSide/manifest.ttl.in b/plugins/LV2/src/MidSide/manifest.ttl.in new file mode 100644 index 0000000..73b84a8 --- /dev/null +++ b/plugins/LV2/src/MidSide/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:midside + a lv2:Plugin ; + doap:name "Airwindows MidSide" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <MidSide@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <MidSide.ttl> . diff --git a/plugins/LV2/src/MoNoam/MoNoam.cpp b/plugins/LV2/src/MoNoam/MoNoam.cpp new file mode 100644 index 0000000..d724047 --- /dev/null +++ b/plugins/LV2/src/MoNoam/MoNoam.cpp @@ -0,0 +1,32 @@ +#include "MoNoam.h" +#include <iostream> +#include <lv2wrapper.h> + +MoNoam::MoNoam(double rate) + : LV2Plugin(rate) +{ +} + +void MoNoam::activate() +{ + A = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void MoNoam::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/MoNoam/MoNoamProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<MoNoam> plugin; diff --git a/plugins/LV2/src/MoNoam/MoNoam.h b/plugins/LV2/src/MoNoam/MoNoam.h new file mode 100644 index 0000000..6a874b0 --- /dev/null +++ b/plugins/LV2/src/MoNoam/MoNoam.h @@ -0,0 +1,42 @@ +#ifndef __MoNoam_H +#define __MoNoam_H + +#include <lv2plugin.h> + +class MoNoam : public LV2Plugin<1> { +public: + MoNoam(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/monoam"; + +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 + + static const int kBYPASS = 0; + static const int kMONO = 1; + static const int kMONOR = 2; + static const int kMONOL = 3; + static const int kSIDE = 4; + static const int kSIDEM = 5; + static const int kSIDER = 6; + static const int kSIDEL = 7; + + float A; +}; + +#endif diff --git a/plugins/LV2/src/MoNoam/MoNoam.ttl b/plugins/LV2/src/MoNoam/MoNoam.ttl new file mode 100644 index 0000000..f8fa5f6 --- /dev/null +++ b/plugins/LV2/src/MoNoam/MoNoam.ttl @@ -0,0 +1,44 @@ +# Airwindows MoNoam 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/monoam> + 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 "Monotor" ; + 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/MoNoam/manifest.ttl.in b/plugins/LV2/src/MoNoam/manifest.ttl.in new file mode 100644 index 0000000..2c6c226 --- /dev/null +++ b/plugins/LV2/src/MoNoam/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:monoam + a lv2:Plugin ; + doap:name "Airwindows MoNoam" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <MoNoam@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <MoNoam.ttl> . diff --git a/plugins/LV2/src/Mojo/Mojo.cpp b/plugins/LV2/src/Mojo/Mojo.cpp new file mode 100644 index 0000000..4262789 --- /dev/null +++ b/plugins/LV2/src/Mojo/Mojo.cpp @@ -0,0 +1,32 @@ +#include "Mojo.h" +#include <iostream> +#include <lv2wrapper.h> + +Mojo::Mojo(double rate) + : LV2Plugin(rate) +{ +} + +void Mojo::activate() +{ + A = 0.5; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Mojo::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/Mojo/MojoProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Mojo> plugin; diff --git a/plugins/LV2/src/Mojo/Mojo.h b/plugins/LV2/src/Mojo/Mojo.h new file mode 100644 index 0000000..da908ff --- /dev/null +++ b/plugins/LV2/src/Mojo/Mojo.h @@ -0,0 +1,33 @@ +#ifndef __Mojo_H +#define __Mojo_H + +#include <lv2plugin.h> + +class Mojo : public LV2Plugin<1> { +public: + Mojo(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/mojo"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + uint32_t fpd; + //default stuff + + float A; +}; + +#endif diff --git a/plugins/LV2/src/Mojo/Mojo.ttl b/plugins/LV2/src/Mojo/Mojo.ttl new file mode 100644 index 0000000..e06c1fc --- /dev/null +++ b/plugins/LV2/src/Mojo/Mojo.ttl @@ -0,0 +1,44 @@ +# Airwindows Mojo 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/mojo> + a lv2:Plugin , + lv2:DistortionPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Input" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 1 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 2 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 4 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Mojo/manifest.ttl.in b/plugins/LV2/src/Mojo/manifest.ttl.in new file mode 100644 index 0000000..dbb6dd2 --- /dev/null +++ b/plugins/LV2/src/Mojo/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:mojo + a lv2:Plugin ; + doap:name "Airwindows Mojo" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Mojo@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Mojo.ttl> . diff --git a/plugins/LV2/src/Monitoring/Monitoring.cpp b/plugins/LV2/src/Monitoring/Monitoring.cpp new file mode 100644 index 0000000..18b7533 --- /dev/null +++ b/plugins/LV2/src/Monitoring/Monitoring.cpp @@ -0,0 +1,79 @@ +#include "Monitoring.h" +#include <iostream> +#include <lv2wrapper.h> + +Monitoring::Monitoring(double rate) + : LV2Plugin(rate) +{ +} + +void Monitoring::activate() +{ + bynL[0] = 1000.0; + bynL[1] = 301.0; + bynL[2] = 176.0; + bynL[3] = 125.0; + bynL[4] = 97.0; + bynL[5] = 79.0; + bynL[6] = 67.0; + bynL[7] = 58.0; + bynL[8] = 51.0; + bynL[9] = 46.0; + bynL[10] = 1000.0; + noiseShapingL = 0.0; + bynR[0] = 1000.0; + bynR[1] = 301.0; + bynR[2] = 176.0; + bynR[3] = 125.0; + bynR[4] = 97.0; + bynR[5] = 79.0; + bynR[6] = 67.0; + bynR[7] = 58.0; + bynR[8] = 51.0; + bynR[9] = 46.0; + bynR[10] = 1000.0; + noiseShapingR = 0.0; + //end NJAD + for(int count = 0; count < 1502; count++) { + aL[count] = 0.0; bL[count] = 0.0; cL[count] = 0.0; dL[count] = 0.0; + aR[count] = 0.0; bR[count] = 0.0; cR[count] = 0.0; dR[count] = 0.0; + } + ax = 1; bx = 1; cx = 1; dx = 1; + //PeaksOnly + lastSampleL = 0.0; lastSampleR = 0.0; + //SlewOnly + 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; // o/` + //SubsOnly + for (int x = 0; x < 11; x++) {biquadL[x] = 0.0; biquadR[x] = 0.0;} + //Bandpasses + A = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Monitoring::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/Monitoring/MonitoringProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Monitoring> plugin; diff --git a/plugins/LV2/src/Monitoring/Monitoring.h b/plugins/LV2/src/Monitoring/Monitoring.h new file mode 100644 index 0000000..4b13576 --- /dev/null +++ b/plugins/LV2/src/Monitoring/Monitoring.h @@ -0,0 +1,58 @@ +#ifndef __Monitoring_H +#define __Monitoring_H + +#include <lv2plugin.h> + +class Monitoring : public LV2Plugin<1> { +public: + Monitoring(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/monitoring"; + +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 bynL[13], bynR[13]; + long double noiseShapingL, noiseShapingR; + //NJAD + double aL[1503], bL[1503], cL[1503], dL[1503]; + double aR[1503], bR[1503], cR[1503], dR[1503]; + int ax, bx, cx, dx; + //PeaksOnly + double lastSampleL, lastSampleR; + //SlewOnly + double iirSampleAL, iirSampleBL, iirSampleCL, iirSampleDL, iirSampleEL, iirSampleFL, iirSampleGL; + double iirSampleHL, iirSampleIL, iirSampleJL, iirSampleKL, iirSampleLL, iirSampleML, iirSampleNL, iirSampleOL, iirSamplePL; + double iirSampleQL, iirSampleRL, iirSampleSL; + double iirSampleTL, iirSampleUL, iirSampleVL; + double iirSampleWL, iirSampleXL, iirSampleYL, iirSampleZL; + + double iirSampleAR, iirSampleBR, iirSampleCR, iirSampleDR, iirSampleER, iirSampleFR, iirSampleGR; + double iirSampleHR, iirSampleIR, iirSampleJR, iirSampleKR, iirSampleLR, iirSampleMR, iirSampleNR, iirSampleOR, iirSamplePR; + double iirSampleQR, iirSampleRR, iirSampleSR; + double iirSampleTR, iirSampleUR, iirSampleVR; + double iirSampleWR, iirSampleXR, iirSampleYR, iirSampleZR; // o/` + //SubsOnly + long double biquadL[11]; + long double biquadR[11]; + //Bandpasses + + uint32_t fpd; + //default stuff + + float A; +}; + +#endif diff --git a/plugins/LV2/src/Monitoring/Monitoring.ttl b/plugins/LV2/src/Monitoring/Monitoring.ttl new file mode 100644 index 0000000..094e72c --- /dev/null +++ b/plugins/LV2/src/Monitoring/Monitoring.ttl @@ -0,0 +1,44 @@ +# Airwindows Monitoring 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/monitoring> + 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 "Monitor" ; + 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/Monitoring/manifest.ttl.in b/plugins/LV2/src/Monitoring/manifest.ttl.in new file mode 100644 index 0000000..799f98f --- /dev/null +++ b/plugins/LV2/src/Monitoring/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:monitoring + a lv2:Plugin ; + doap:name "Airwindows Monitoring" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Monitoring@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Monitoring.ttl> . diff --git a/plugins/LV2/src/Neverland/Neverland.cpp b/plugins/LV2/src/Neverland/Neverland.cpp new file mode 100644 index 0000000..8d71e94 --- /dev/null +++ b/plugins/LV2/src/Neverland/Neverland.cpp @@ -0,0 +1,41 @@ +#include "Neverland.h" +#include <iostream> +#include <lv2wrapper.h> + +Neverland::Neverland(double rate) + : LV2Plugin(rate) +{ +} + +void Neverland::activate() +{ + A = 0.74; + B = 0.3333333; + C = 0.3333333; + D = 1.0; + for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;} + lastSampleR = 0.0;lastSampleL = 0.0; + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Neverland::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/Neverland/NeverlandProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Neverland> plugin; diff --git a/plugins/LV2/src/Neverland/Neverland.h b/plugins/LV2/src/Neverland/Neverland.h new file mode 100644 index 0000000..ecd9b8c --- /dev/null +++ b/plugins/LV2/src/Neverland/Neverland.h @@ -0,0 +1,41 @@ +#ifndef __Neverland_H +#define __Neverland_H + +#include <lv2plugin.h> + +class Neverland : public LV2Plugin<4> { +public: + Neverland(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/neverland"; + +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 bR[35]; + double lastSampleR; + double bL[35]; + double lastSampleL; + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; + +}; + +#endif diff --git a/plugins/LV2/src/Neverland/Neverland.ttl b/plugins/LV2/src/Neverland/Neverland.ttl new file mode 100644 index 0000000..fe81722 --- /dev/null +++ b/plugins/LV2/src/Neverland/Neverland.ttl @@ -0,0 +1,68 @@ +# Airwindows Neverland 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/neverland> + 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 "Hardns" ; + 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 "Persnlty" ; + 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 "Drive" ; + 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 "Output" ; + 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/Neverland/manifest.ttl.in b/plugins/LV2/src/Neverland/manifest.ttl.in new file mode 100644 index 0000000..dddfaa1 --- /dev/null +++ b/plugins/LV2/src/Neverland/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:neverland + a lv2:Plugin ; + doap:name "Airwindows Neverland" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Neverland@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Neverland.ttl> . diff --git a/plugins/LV2/src/NodeDither/NodeDither.cpp b/plugins/LV2/src/NodeDither/NodeDither.cpp new file mode 100644 index 0000000..cbf8bad --- /dev/null +++ b/plugins/LV2/src/NodeDither/NodeDither.cpp @@ -0,0 +1,35 @@ +#include "NodeDither.h" +#include <iostream> +#include <lv2wrapper.h> + +NodeDither::NodeDither(double rate) + : LV2Plugin(rate) +{ +} + +void NodeDither::activate() +{ + A = 0.04; + B = 0.0; + for(int count = 0; count < 4999; count++) {dL[count] = 0; dR[count] = 0;} + gcount = 0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void NodeDither::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/NodeDither/NodeDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<NodeDither> plugin; diff --git a/plugins/LV2/src/NodeDither/NodeDither.h b/plugins/LV2/src/NodeDither/NodeDither.h new file mode 100644 index 0000000..ee9f9e3 --- /dev/null +++ b/plugins/LV2/src/NodeDither/NodeDither.h @@ -0,0 +1,36 @@ +#ifndef __NodeDither_H +#define __NodeDither_H + +#include <lv2plugin.h> + +class NodeDither : public LV2Plugin<2> { +public: + NodeDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/nodedither"; + +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[5000]; + double dR[5000]; + int gcount; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/NodeDither/NodeDither.ttl b/plugins/LV2/src/NodeDither/NodeDither.ttl new file mode 100644 index 0000000..b086415 --- /dev/null +++ b/plugins/LV2/src/NodeDither/NodeDither.ttl @@ -0,0 +1,52 @@ +# Airwindows NodeDither 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/nodedither> + 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 "Node" ; + 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 "Phase" ; + 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/NodeDither/manifest.ttl.in b/plugins/LV2/src/NodeDither/manifest.ttl.in new file mode 100644 index 0000000..8ff8187 --- /dev/null +++ b/plugins/LV2/src/NodeDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:nodedither + a lv2:Plugin ; + doap:name "Airwindows NodeDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <NodeDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <NodeDither.ttl> . diff --git a/plugins/LV2/src/Noise/Noise.cpp b/plugins/LV2/src/Noise/Noise.cpp new file mode 100644 index 0000000..5d77d63 --- /dev/null +++ b/plugins/LV2/src/Noise/Noise.cpp @@ -0,0 +1,61 @@ +#include "Noise.h" +#include <iostream> +#include <lv2wrapper.h> + +Noise::Noise(double rate) + : LV2Plugin(rate) +{ +} + +void Noise::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 1.0; + E = 0.0; + F = 1.0; + position = 99999999; + quadratic = 0; + noiseAL = 0.0; + noiseBL = 0.0; + noiseCL = 0.0; + rumbleAL = 0.0; + rumbleBL = 0.0; + surgeL = 0.0; + noiseAR = 0.0; + noiseBR = 0.0; + noiseCR = 0.0; + rumbleAR = 0.0; + rumbleBR = 0.0; + surgeR = 0.0; + flipL = false; + flipR = false; + filterflip = false; + for(int count = 0; count < 11; 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 Noise::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/Noise/NoiseProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Noise> plugin; diff --git a/plugins/LV2/src/Noise/Noise.h b/plugins/LV2/src/Noise/Noise.h new file mode 100644 index 0000000..7da15ab --- /dev/null +++ b/plugins/LV2/src/Noise/Noise.h @@ -0,0 +1,64 @@ +#ifndef __Noise_H +#define __Noise_H + +#include <lv2plugin.h> + +class Noise : public LV2Plugin<6> { +public: + Noise(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/noise"; + +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 rumbleAL; + double rumbleBL; + double surgeL; + double noiseAR; + double noiseBR; + double noiseCR; + double rumbleAR; + double rumbleBR; + double surgeR; + + int position; + int quadratic; + bool flipL; + bool flipR; + bool filterflip; + + double bL[11]; + double bR[11]; + + double f[11]; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; + float E; + float F; //parameters. Always 0-1, and we scale/alter them elsewhere. + +}; + +#endif diff --git a/plugins/LV2/src/Noise/Noise.ttl b/plugins/LV2/src/Noise/Noise.ttl new file mode 100644 index 0000000..226303f --- /dev/null +++ b/plugins/LV2/src/Noise/Noise.ttl @@ -0,0 +1,84 @@ +# Airwindows Noise 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/noise> + 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 "HighCut" ; + 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 "LowCut" ; + 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 "LShape" ; + 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 "Decay" ; + 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 "Distnc" ; + 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/Noise/manifest.ttl.in b/plugins/LV2/src/Noise/manifest.ttl.in new file mode 100644 index 0000000..7863177 --- /dev/null +++ b/plugins/LV2/src/Noise/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:noise + a lv2:Plugin ; + doap:name "Airwindows Noise" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Noise@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Noise.ttl> . diff --git a/plugins/LV2/src/NonlinearSpace/NonlinearSpace.cpp b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.cpp new file mode 100644 index 0000000..4c4bb1b --- /dev/null +++ b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.cpp @@ -0,0 +1,220 @@ +#include "NonlinearSpace.h" +#include <iostream> +#include <lv2wrapper.h> + +NonlinearSpace::NonlinearSpace(double rate) + : LV2Plugin(rate) +{ +} + +void NonlinearSpace::activate() +{ + A = 0.3; //this is the sample rate so it will become a 'popup' with fixed values + B = 0.5; + C = 0.5; + D = 0.5; + E = 0.5; //this is nonlin, so it produces -1 to 1: 0.5 will become 0 + F = 1.0; + + int count; + for(count = 0; count < 2347; count++) {dMid[count] = 0.0;} + for(count = 0; count < 1333; count++) {dSide[count] = 0.0;} + for(count = 0; count < 5923; count++) {dLeft[count] = 0.0;} + for(count = 0; count < 5925; count++) {dRight[count] = 0.0;} + + for(count = 0; count < 7574; count++) {dpreR[count] = 0.0;} + for(count = 0; count < 7574; count++) {dpreL[count] = 0.0;} + + for(count = 0; count < 7574; count++) {dA[count] = 0.0;} + for(count = 0; count < 7308; count++) {dB[count] = 0.0;} + for(count = 0; count < 7178; count++) {dC[count] = 0.0;} + for(count = 0; count < 6908; count++) {dD[count] = 0.0;} + for(count = 0; count < 6780; count++) {dE[count] = 0.0;} + for(count = 0; count < 6522; count++) {dF[count] = 0.0;} + for(count = 0; count < 5982; count++) {dG[count] = 0.0;} + for(count = 0; count < 5564; count++) {dH[count] = 0.0;} + for(count = 0; count < 5298; count++) {dI[count] = 0.0;} + for(count = 0; count < 4904; count++) {dJ[count] = 0.0;} + for(count = 0; count < 4760; count++) {dK[count] = 0.0;} + for(count = 0; count < 4490; count++) {dL[count] = 0.0;} + for(count = 0; count < 4392; count++) {dM[count] = 0.0;} + for(count = 0; count < 4230; count++) {dN[count] = 0.0;} + for(count = 0; count < 4154; count++) {dO[count] = 0.0;} + for(count = 0; count < 3990; count++) {dP[count] = 0.0;} + for(count = 0; count < 3660; count++) {dQ[count] = 0.0;} + for(count = 0; count < 3408; count++) {dR[count] = 0.0;} + for(count = 0; count < 3252; count++) {dS[count] = 0.0;} + for(count = 0; count < 3000; count++) {dT[count] = 0.0;} + for(count = 0; count < 2918; count++) {dU[count] = 0.0;} + for(count = 0; count < 2750; count++) {dV[count] = 0.0;} + for(count = 0; count < 2504; count++) {dW[count] = 0.0;} + for(count = 0; count < 2424; count++) {dX[count] = 0.0;} + for(count = 0; count < 2147; count++) {dY[count] = 0.0;} + for(count = 0; count < 2089; count++) {dZ[count] = 0.0;} + + oneMid = 1; delayMid = 2346; maxdelayMid = 2346; + oneSide = 1; delaySide = 1332; maxdelaySide = 1332; + oneLeft = 1; delayLeft = 5922; maxdelayLeft = 5922; + oneRight = 1; delayRight = 5924; maxdelayRight = 5924; + onepre = 1; delaypre = 7573; maxdelaypre = 7573; + + oneA = 1; twoA = 2; treA = 3; delayA = 7573; maxdelayA = 7573; + oneB = 1; twoB = 2; treB = 3; delayB = 7307; maxdelayB = 7307; + oneC = 1; twoC = 2; treC = 3; delayC = 7177; maxdelayC = 7177; + oneD = 1; twoD = 2; treD = 3; delayD = 6907; maxdelayD = 6907; + oneE = 1; twoE = 2; treE = 3; delayE = 6779; maxdelayE = 6779; + oneF = 1; twoF = 2; treF = 3; delayF = 6521; maxdelayF = 6521; + oneG = 1; twoG = 2; treG = 3; delayG = 5981; maxdelayG = 5981; + oneH = 1; twoH = 2; treH = 3; delayH = 5563; maxdelayH = 5563; + oneI = 1; twoI = 2; treI = 3; delayI = 5297; maxdelayI = 5297; + oneJ = 1; twoJ = 2; treJ = 3; delayJ = 4903; maxdelayJ = 4903; + oneK = 1; twoK = 2; treK = 3; delayK = 4759; maxdelayK = 4759; + oneL = 1; twoL = 2; treL = 3; delayL = 4489; maxdelayL = 4489; + oneM = 1; twoM = 2; treM = 3; delayM = 4391; maxdelayM = 4391; + oneN = 1; twoN = 2; treN = 3; delayN = 4229; maxdelayN = 4229; + oneO = 1; twoO = 2; treO = 3; delayO = 4153; maxdelayO = 4153; + oneP = 1; twoP = 2; treP = 3; delayP = 3989; maxdelayP = 3989; + oneQ = 1; twoQ = 2; treQ = 3; delayQ = 3659; maxdelayQ = 3659; + oneR = 1; twoR = 2; treR = 3; delayR = 3407; maxdelayR = 3407; + oneS = 1; twoS = 2; treS = 3; delayS = 3251; maxdelayS = 3251; + oneT = 1; twoT = 2; treT = 3; delayT = 2999; maxdelayT = 2999; + oneU = 1; twoU = 2; treU = 3; delayU = 2917; maxdelayU = 2917; + oneV = 1; twoV = 2; treV = 3; delayV = 2749; maxdelayV = 2749; + oneW = 1; twoW = 2; treW = 3; delayW = 2503; maxdelayW = 2503; + oneX = 1; twoX = 2; treX = 3; delayX = 2423; maxdelayX = 2423; + oneY = 1; twoY = 2; treY = 3; delayY = 2146; maxdelayY = 2146; + oneZ = 1; twoZ = 2; treZ = 3; delayZ = 2088; maxdelayZ = 2088; + + avgInputL = 0.0; + avgInputR = 0.0; + avgOutputL = 0.0; + avgOutputR = 0.0; + avg2InputL = 0.0; + avg2InputR = 0.0; + avg2OutputL = 0.0; + avg2OutputR = 0.0; + a2vgInputL = 0.0; + a2vgInputR = 0.0; + a2vgOutputL = 0.0; + a2vgOutputR = 0.0; + a2vg2InputL = 0.0; + a2vg2InputR = 0.0; + a2vg2OutputL = 0.0; + a2vg2OutputR = 0.0; + + lowpassSampleAA = 0.0; + lowpassSampleAB = 0.0; + lowpassSampleBA = 0.0; + lowpassSampleBB = 0.0; + lowpassSampleCA = 0.0; + lowpassSampleCB = 0.0; + lowpassSampleDA = 0.0; + lowpassSampleDB = 0.0; + lowpassSampleE = 0.0; + lowpassSampleF = 0.0; + lowpassSampleG = 0.0; + + rowpassSampleAA = 0.0; + rowpassSampleAB = 0.0; + rowpassSampleBA = 0.0; + rowpassSampleBB = 0.0; + rowpassSampleCA = 0.0; + rowpassSampleCB = 0.0; + rowpassSampleDA = 0.0; + rowpassSampleDB = 0.0; + rowpassSampleE = 0.0; + rowpassSampleF = 0.0; + rowpassSampleG = 0.0; + + interpolA = 0.0; + interpolB = 0.0; + interpolC = 0.0; + interpolD = 0.0; + interpolE = 0.0; + interpolF = 0.0; + interpolG = 0.0; + interpolH = 0.0; + interpolI = 0.0; + interpolJ = 0.0; + interpolK = 0.0; + interpolL = 0.0; + interpolM = 0.0; + interpolN = 0.0; + interpolO = 0.0; + interpolP = 0.0; + interpolQ = 0.0; + interpolR = 0.0; + interpolS = 0.0; + interpolT = 0.0; + interpolU = 0.0; + interpolV = 0.0; + interpolW = 0.0; + interpolX = 0.0; + interpolY = 0.0; + interpolZ = 0.0; + + pitchshiftA = 1.0 / maxdelayA; + pitchshiftB = 1.0 / maxdelayB; + pitchshiftC = 1.0 / maxdelayC; + pitchshiftD = 1.0 / maxdelayD; + pitchshiftE = 1.0 / maxdelayE; + pitchshiftF = 1.0 / maxdelayF; + pitchshiftG = 1.0 / maxdelayG; + pitchshiftH = 1.0 / maxdelayH; + pitchshiftI = 1.0 / maxdelayI; + pitchshiftJ = 1.0 / maxdelayJ; + pitchshiftK = 1.0 / maxdelayK; + pitchshiftL = 1.0 / maxdelayL; + pitchshiftM = 1.0 / maxdelayM; + pitchshiftN = 1.0 / maxdelayN; + pitchshiftO = 1.0 / maxdelayO; + pitchshiftP = 1.0 / maxdelayP; + pitchshiftQ = 1.0 / maxdelayQ; + pitchshiftR = 1.0 / maxdelayR; + pitchshiftS = 1.0 / maxdelayS; + pitchshiftT = 1.0 / maxdelayT; + pitchshiftU = 1.0 / maxdelayU; + pitchshiftV = 1.0 / maxdelayV; + pitchshiftW = 1.0 / maxdelayW; + pitchshiftX = 1.0 / maxdelayX; + pitchshiftY = 1.0 / maxdelayY; + pitchshiftZ = 1.0 / maxdelayZ; + + nonlin = 0.0; + + verboutL = 0.0; + verboutR = 0.0; + iirCCSampleL = 0.0; + iirCCSampleR = 0.0; + iirSampleL = 0.0; + iirSampleR = 0.0; + savedRoomsize = -1.0; //force update to begin + countdown = -1; + flip = true; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void NonlinearSpace::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/NonlinearSpace/NonlinearSpaceProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<NonlinearSpace> plugin; diff --git a/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h new file mode 100644 index 0000000..eeda537 --- /dev/null +++ b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h @@ -0,0 +1,190 @@ +#ifndef __NonlinearSpace_H +#define __NonlinearSpace_H + +#include <lv2plugin.h> + +class NonlinearSpace : public LV2Plugin<6> { +public: + NonlinearSpace(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/nonlinearspace"; + +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 avgInputL; + double avgOutputL; + double avg2InputL; + double avg2OutputL; + double avgInputR; + double avgOutputR; + double avg2InputR; + double avg2OutputR; + double a2vgInputL; + double a2vgOutputL; + double a2vg2InputL; + double a2vg2OutputL; + double a2vgInputR; + double a2vgOutputR; + double a2vg2InputR; + double a2vg2OutputR; + + double verboutL; + double verboutR; + double iirCCSampleL; + double iirCCSampleR; + double iirSampleL; + double iirSampleR; + + double dMid[2348]; + double dSide[1334]; + double dLeft[5924]; + double dRight[5926]; + + double dpreR[7575]; + double dpreL[7575]; + + double dA[7575]; + double dB[7309]; + double dC[7179]; + double dD[6909]; + double dE[6781]; + double dF[6523]; + double dG[5983]; + double dH[5565]; + double dI[5299]; + double dJ[4905]; + double dK[4761]; + double dL[4491]; + double dM[4393]; + double dN[4231]; + double dO[4155]; + double dP[3991]; + double dQ[3661]; + double dR[3409]; + double dS[3253]; + double dT[3001]; + double dU[2919]; + double dV[2751]; + double dW[2505]; + double dX[2425]; + double dY[2148]; + double dZ[2090]; + + double interpolA, pitchshiftA; //7575 + double interpolB, pitchshiftB; //7309 + double interpolC, pitchshiftC; //7179 + double interpolD, pitchshiftD; //6909 + double interpolE, pitchshiftE; //6781 + double interpolF, pitchshiftF; //6523 + double interpolG, pitchshiftG; //5983 + double interpolH, pitchshiftH; //5565 + double interpolI, pitchshiftI; //5299 + double interpolJ, pitchshiftJ; //4905 + double interpolK, pitchshiftK; //4761 + double interpolL, pitchshiftL; //4491 + double interpolM, pitchshiftM; //4393 + double interpolN, pitchshiftN; //4231 + double interpolO, pitchshiftO; //4155 + double interpolP, pitchshiftP; //3991 + double interpolQ, pitchshiftQ; //3661 + double interpolR, pitchshiftR; //3409 + double interpolS, pitchshiftS; //3253 + double interpolT, pitchshiftT; //3001 + double interpolU, pitchshiftU; //2919 + double interpolV, pitchshiftV; //2751 + double interpolW, pitchshiftW; //2505 + double interpolX, pitchshiftX; //2425 + double interpolY, pitchshiftY; //2148 + double interpolZ, pitchshiftZ; //2090 + + int oneMid, delayMid, maxdelayMid; + int oneSide, delaySide, maxdelaySide; + int oneLeft, delayLeft, maxdelayLeft; + int oneRight, delayRight, maxdelayRight; + + int onepre, delaypre, maxdelaypre; + + int oneA, twoA, treA, delayA, maxdelayA; + int oneB, twoB, treB, delayB, maxdelayB; + int oneC, twoC, treC, delayC, maxdelayC; + int oneD, twoD, treD, delayD, maxdelayD; + int oneE, twoE, treE, delayE, maxdelayE; + int oneF, twoF, treF, delayF, maxdelayF; + int oneG, twoG, treG, delayG, maxdelayG; + int oneH, twoH, treH, delayH, maxdelayH; + int oneI, twoI, treI, delayI, maxdelayI; + int oneJ, twoJ, treJ, delayJ, maxdelayJ; + int oneK, twoK, treK, delayK, maxdelayK; + int oneL, twoL, treL, delayL, maxdelayL; + int oneM, twoM, treM, delayM, maxdelayM; + int oneN, twoN, treN, delayN, maxdelayN; + int oneO, twoO, treO, delayO, maxdelayO; + int oneP, twoP, treP, delayP, maxdelayP; + int oneQ, twoQ, treQ, delayQ, maxdelayQ; + int oneR, twoR, treR, delayR, maxdelayR; + int oneS, twoS, treS, delayS, maxdelayS; + int oneT, twoT, treT, delayT, maxdelayT; + int oneU, twoU, treU, delayU, maxdelayU; + int oneV, twoV, treV, delayV, maxdelayV; + int oneW, twoW, treW, delayW, maxdelayW; + int oneX, twoX, treX, delayX, maxdelayX; + int oneY, twoY, treY, delayY, maxdelayY; + int oneZ, twoZ, treZ, delayZ, maxdelayZ; + double savedPredelay; + double savedRoomsize; + int countdown; + + double lowpassSampleAA; + double lowpassSampleAB; + double lowpassSampleBA; + double lowpassSampleBB; + double lowpassSampleCA; + double lowpassSampleCB; + double lowpassSampleDA; + double lowpassSampleDB; + double lowpassSampleE; + double lowpassSampleF; + double lowpassSampleG; + + double rowpassSampleAA; + double rowpassSampleAB; + double rowpassSampleBA; + double rowpassSampleBB; + double rowpassSampleCA; + double rowpassSampleCB; + double rowpassSampleDA; + double rowpassSampleDB; + double rowpassSampleE; + double rowpassSampleF; + double rowpassSampleG; + + bool flip; + + double nonlin; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; + float E; + float F; //parameters. Always 0-1, and we scale/alter them elsewhere. +}; + +#endif diff --git a/plugins/LV2/src/NonlinearSpace/NonlinearSpace.ttl b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.ttl new file mode 100644 index 0000000..5a5d78c --- /dev/null +++ b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.ttl @@ -0,0 +1,84 @@ +# Airwindows NonlinearSpace 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/nonlinearspace> + 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 "SmpRate" ; + 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 "Livenes" ; + 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 "Treble" ; + 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 "Bass" ; + 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 "Nonlin" ; + 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/NonlinearSpace/manifest.ttl.in b/plugins/LV2/src/NonlinearSpace/manifest.ttl.in new file mode 100644 index 0000000..9d7e1f9 --- /dev/null +++ b/plugins/LV2/src/NonlinearSpace/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:nonlinearspace + a lv2:Plugin ; + doap:name "Airwindows NonlinearSpace" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <NonlinearSpace@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <NonlinearSpace.ttl> . diff --git a/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.cpp b/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.cpp new file mode 100644 index 0000000..b0c9224 --- /dev/null +++ b/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.cpp @@ -0,0 +1,59 @@ +#include "NotJustAnotherDither.h" +#include <iostream> +#include <lv2wrapper.h> + +NotJustAnotherDither::NotJustAnotherDither(double rate) + : LV2Plugin(rate) +{ +} + +void NotJustAnotherDither::activate() +{ + A = 1.0; + B = 0.0; + fpd = 17; + bynL[0] = 1000; + bynL[1] = 301; + bynL[2] = 176; + bynL[3] = 125; + bynL[4] = 97; + bynL[5] = 79; + bynL[6] = 67; + bynL[7] = 58; + bynL[8] = 51; + bynL[9] = 46; + bynL[10] = 1000; + noiseShapingL = 0.0; + + bynR[0] = 1000; + bynR[1] = 301; + bynR[2] = 176; + bynR[3] = 125; + bynR[4] = 97; + bynR[5] = 79; + bynR[6] = 67; + bynR[7] = 58; + bynR[8] = 51; + bynR[9] = 46; + bynR[10] = 1000; + noiseShapingR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void NotJustAnotherDither::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/NotJustAnotherDither/NotJustAnotherDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<NotJustAnotherDither> plugin; diff --git a/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.h b/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.h new file mode 100644 index 0000000..816d4a0 --- /dev/null +++ b/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.h @@ -0,0 +1,38 @@ +#ifndef __NotJustAnotherDither_H +#define __NotJustAnotherDither_H + +#include <lv2plugin.h> + +class NotJustAnotherDither : public LV2Plugin<2> { +public: + NotJustAnotherDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/notjustanotherdither"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + double bynL[13]; + double bynR[13]; + long double noiseShapingL; + long double noiseShapingR; + uint32_t fpd; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.ttl b/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.ttl new file mode 100644 index 0000000..9a1c123 --- /dev/null +++ b/plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.ttl @@ -0,0 +1,52 @@ +# Airwindows NotJustAnotherDither 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/notjustanotherdither> + a lv2:Plugin , + lv2:EffectsPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Quant" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "DeRez" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 2 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 4 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 5 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/NotJustAnotherDither/manifest.ttl.in b/plugins/LV2/src/NotJustAnotherDither/manifest.ttl.in new file mode 100644 index 0000000..8ee8642 --- /dev/null +++ b/plugins/LV2/src/NotJustAnotherDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:notjustanotherdither + a lv2:Plugin ; + doap:name "Airwindows NotJustAnotherDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <NotJustAnotherDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <NotJustAnotherDither.ttl> . diff --git a/plugins/LV2/src/OneCornerClip/OneCornerClip.cpp b/plugins/LV2/src/OneCornerClip/OneCornerClip.cpp new file mode 100644 index 0000000..c2dae02 --- /dev/null +++ b/plugins/LV2/src/OneCornerClip/OneCornerClip.cpp @@ -0,0 +1,49 @@ +#include "OneCornerClip.h" +#include <iostream> +#include <lv2wrapper.h> + +OneCornerClip::OneCornerClip(double rate) + : LV2Plugin(rate) +{ +} + +void OneCornerClip::activate() +{ + A = 0.33333333333333333; + B = 0.966; + C = 0.966; + D = 0.618; + E = 1.0; + + lastSampleL = 0.0; + limitPosL = 0.0; + limitNegL = 0.0; + lastSampleR = 0.0; + limitPosR = 0.0; + limitNegR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void OneCornerClip::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/OneCornerClip/OneCornerClipProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<OneCornerClip> plugin; diff --git a/plugins/LV2/src/OneCornerClip/OneCornerClip.h b/plugins/LV2/src/OneCornerClip/OneCornerClip.h new file mode 100644 index 0000000..c77f876 --- /dev/null +++ b/plugins/LV2/src/OneCornerClip/OneCornerClip.h @@ -0,0 +1,47 @@ +#ifndef __OneCornerClip_H +#define __OneCornerClip_H + +#include <lv2plugin.h> + +class OneCornerClip : public LV2Plugin<5> { +public: + OneCornerClip(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/onecornerclip"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + double lastSampleL; + double limitPosL; + double limitNegL; + + double lastSampleR; + double limitPosR; + double limitNegR; + + 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/OneCornerClip/OneCornerClip.ttl b/plugins/LV2/src/OneCornerClip/OneCornerClip.ttl new file mode 100644 index 0000000..c383694 --- /dev/null +++ b/plugins/LV2/src/OneCornerClip/OneCornerClip.ttl @@ -0,0 +1,76 @@ +# Airwindows OneCornerClip 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/onecornerclip> + a lv2:Plugin , + lv2:LimiterPlugin ; + 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 "Pos Thr" ; + 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 "Neg Thr" ; + 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 "Voicing" ; + 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 "Dry/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/OneCornerClip/manifest.ttl.in b/plugins/LV2/src/OneCornerClip/manifest.ttl.in new file mode 100644 index 0000000..962e098 --- /dev/null +++ b/plugins/LV2/src/OneCornerClip/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:onecornerclip + a lv2:Plugin ; + doap:name "Airwindows OneCornerClip" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <OneCornerClip@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <OneCornerClip.ttl> . diff --git a/plugins/LV2/src/PDBuss/PDBuss.cpp b/plugins/LV2/src/PDBuss/PDBuss.cpp new file mode 100644 index 0000000..81e5b30 --- /dev/null +++ b/plugins/LV2/src/PDBuss/PDBuss.cpp @@ -0,0 +1,42 @@ +#include "PDBuss.h" +#include <iostream> +#include <lv2wrapper.h> + +PDBuss::PDBuss(double rate) + : LV2Plugin(rate) +{ +} + +void PDBuss::activate() +{ + A = 1.0; + B = 1.0; + + gainchase = -90.0; + settingchase = -90.0; + chasespeed = 350.0; + previousSampleL = 0.0; + previousSampleR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PDBuss::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/PDBuss/PDBussProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PDBuss> plugin; diff --git a/plugins/LV2/src/PDBuss/PDBuss.h b/plugins/LV2/src/PDBuss/PDBuss.h new file mode 100644 index 0000000..8f3580c --- /dev/null +++ b/plugins/LV2/src/PDBuss/PDBuss.h @@ -0,0 +1,41 @@ +#ifndef __PDBuss_H +#define __PDBuss_H + +#include <lv2plugin.h> + +class PDBuss : public LV2Plugin<2> { +public: + PDBuss(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pdbuss"; + +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 gainchase; + double settingchase; + double chasespeed; + double previousSampleL; + double previousSampleR; + + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/PDBuss/PDBuss.ttl b/plugins/LV2/src/PDBuss/PDBuss.ttl new file mode 100644 index 0000000..d3cfa64 --- /dev/null +++ b/plugins/LV2/src/PDBuss/PDBuss.ttl @@ -0,0 +1,52 @@ +# Airwindows PDBuss 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/pdbuss> + 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 "Drive" ; + 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/PDBuss/manifest.ttl.in b/plugins/LV2/src/PDBuss/manifest.ttl.in new file mode 100644 index 0000000..a6b7da7 --- /dev/null +++ b/plugins/LV2/src/PDBuss/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pdbuss + a lv2:Plugin ; + doap:name "Airwindows PDBuss" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PDBuss@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PDBuss.ttl> . diff --git a/plugins/LV2/src/PDChannel/PDChannel.cpp b/plugins/LV2/src/PDChannel/PDChannel.cpp new file mode 100644 index 0000000..6ccd672 --- /dev/null +++ b/plugins/LV2/src/PDChannel/PDChannel.cpp @@ -0,0 +1,42 @@ +#include "PDChannel.h" +#include <iostream> +#include <lv2wrapper.h> + +PDChannel::PDChannel(double rate) + : LV2Plugin(rate) +{ +} + +void PDChannel::activate() +{ + A = 1.0; + B = 1.0; + + gainchase = -90.0; + settingchase = -90.0; + chasespeed = 350.0; + previousSampleL = 0.0; + previousSampleR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PDChannel::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/PDChannel/PDChannelProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PDChannel> plugin; diff --git a/plugins/LV2/src/PDChannel/PDChannel.h b/plugins/LV2/src/PDChannel/PDChannel.h new file mode 100644 index 0000000..228baf6 --- /dev/null +++ b/plugins/LV2/src/PDChannel/PDChannel.h @@ -0,0 +1,41 @@ +#ifndef __PDChannel_H +#define __PDChannel_H + +#include <lv2plugin.h> + +class PDChannel : public LV2Plugin<2> { +public: + PDChannel(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pdchannel"; + +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 gainchase; + double settingchase; + double chasespeed; + double previousSampleL; + double previousSampleR; + + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/PDChannel/PDChannel.ttl b/plugins/LV2/src/PDChannel/PDChannel.ttl new file mode 100644 index 0000000..5369e18 --- /dev/null +++ b/plugins/LV2/src/PDChannel/PDChannel.ttl @@ -0,0 +1,52 @@ +# Airwindows PDChannel 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/pdchannel> + 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 "Drive" ; + 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/PDChannel/manifest.ttl.in b/plugins/LV2/src/PDChannel/manifest.ttl.in new file mode 100644 index 0000000..81329c6 --- /dev/null +++ b/plugins/LV2/src/PDChannel/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pdchannel + a lv2:Plugin ; + doap:name "Airwindows PDChannel" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PDChannel@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PDChannel.ttl> . diff --git a/plugins/LV2/src/Pafnuty/Pafnuty.cpp b/plugins/LV2/src/Pafnuty/Pafnuty.cpp new file mode 100644 index 0000000..49ab14c --- /dev/null +++ b/plugins/LV2/src/Pafnuty/Pafnuty.cpp @@ -0,0 +1,57 @@ +#include "Pafnuty.h" +#include <iostream> +#include <lv2wrapper.h> + +Pafnuty::Pafnuty(double rate) + : LV2Plugin(rate) +{ +} + +void Pafnuty::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.5; + E = 0.5; + F = 0.5; + G = 0.5; + H = 0.5; + I = 0.5; + J = 0.5; + K = 0.5; + L = 0.5; + M = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Pafnuty::run(uint32_t num_samples) +{ + A = *params[0]; + B = *params[1]; + C = *params[2]; + D = *params[3]; + E = *params[4]; + F = *params[5]; + G = *params[6]; + H = *params[7]; + I = *params[8]; + J = *params[9]; + K = *params[10]; + L = *params[11]; + M = *params[12]; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/Pafnuty/PafnutyProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Pafnuty> plugin; diff --git a/plugins/LV2/src/Pafnuty/Pafnuty.h b/plugins/LV2/src/Pafnuty/Pafnuty.h new file mode 100644 index 0000000..6117cea --- /dev/null +++ b/plugins/LV2/src/Pafnuty/Pafnuty.h @@ -0,0 +1,47 @@ +#ifndef __Pafnuty_H +#define __Pafnuty_H + +#include <lv2plugin.h> + +class Pafnuty : public LV2Plugin<13> { +public: + Pafnuty(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pafnuty"; + +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; + float C; + float D; + float E; + float F; + float G; + float H; + float I; + float J; + float K; + float L; + float M; + +}; + +#endif diff --git a/plugins/LV2/src/Pafnuty/Pafnuty.ttl b/plugins/LV2/src/Pafnuty/Pafnuty.ttl new file mode 100644 index 0000000..46cfa31 --- /dev/null +++ b/plugins/LV2/src/Pafnuty/Pafnuty.ttl @@ -0,0 +1,140 @@ +# Airwindows Pafnuty 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/pafnuty> + 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 "Second" ; + 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 "Third" ; + 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 "Fourth" ; + 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 "Fifth" ; + 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 "Sixth" ; + 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 "Seventh" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 6 ; + lv2:symbol "G" ; + lv2:name "Eighth" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 7 ; + lv2:symbol "H" ; + lv2:name "Ninth" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 8 ; + lv2:symbol "I" ; + lv2:name "Tenth" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 9 ; + lv2:symbol "J" ; + lv2:name "Elevnth" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 10 ; + lv2:symbol "K" ; + lv2:name "Twelvth" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 11 ; + lv2:symbol "L" ; + lv2:name "Thirtnh" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 12 ; + lv2:symbol "M" ; + lv2:name "Inv/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 13 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 14 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 15 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 16 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Pafnuty/manifest.ttl.in b/plugins/LV2/src/Pafnuty/manifest.ttl.in new file mode 100644 index 0000000..6bfe267 --- /dev/null +++ b/plugins/LV2/src/Pafnuty/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pafnuty + a lv2:Plugin ; + doap:name "Airwindows Pafnuty" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pafnuty@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pafnuty.ttl> . diff --git a/plugins/LV2/src/PaulDither/PaulDither.cpp b/plugins/LV2/src/PaulDither/PaulDither.cpp new file mode 100644 index 0000000..9dbede1 --- /dev/null +++ b/plugins/LV2/src/PaulDither/PaulDither.cpp @@ -0,0 +1,32 @@ +#include "PaulDither.h" +#include <iostream> +#include <lv2wrapper.h> + +PaulDither::PaulDither(double rate) + : LV2Plugin(rate) +{ +} + +void PaulDither::activate() +{ + previousDitherL = 0.0; + previousDitherR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PaulDither::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/PaulDither/PaulDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PaulDither> plugin; diff --git a/plugins/LV2/src/PaulDither/PaulDither.h b/plugins/LV2/src/PaulDither/PaulDither.h new file mode 100644 index 0000000..f539b72 --- /dev/null +++ b/plugins/LV2/src/PaulDither/PaulDither.h @@ -0,0 +1,32 @@ +#ifndef __PaulDither_H +#define __PaulDither_H + +#include <lv2plugin.h> + +class PaulDither : public LV2Plugin<0> { +public: + PaulDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pauldither"; + +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 previousDitherL; + double previousDitherR; + +}; + +#endif diff --git a/plugins/LV2/src/PaulDither/PaulDither.ttl b/plugins/LV2/src/PaulDither/PaulDither.ttl new file mode 100644 index 0000000..bec8886 --- /dev/null +++ b/plugins/LV2/src/PaulDither/PaulDither.ttl @@ -0,0 +1,38 @@ +# Airwindows PaulDither 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/pauldither> + 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/PaulDither/manifest.ttl.in b/plugins/LV2/src/PaulDither/manifest.ttl.in new file mode 100644 index 0000000..044aa02 --- /dev/null +++ b/plugins/LV2/src/PaulDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pauldither + a lv2:Plugin ; + doap:name "Airwindows PaulDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PaulDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PaulDither.ttl> . diff --git a/plugins/LV2/src/PeaksOnly/PeaksOnly.cpp b/plugins/LV2/src/PeaksOnly/PeaksOnly.cpp new file mode 100644 index 0000000..8a48cf6 --- /dev/null +++ b/plugins/LV2/src/PeaksOnly/PeaksOnly.cpp @@ -0,0 +1,33 @@ +#include "PeaksOnly.h" +#include <iostream> +#include <lv2wrapper.h> + +PeaksOnly::PeaksOnly(double rate) + : LV2Plugin(rate) +{ +} + +void PeaksOnly::activate() +{ + for(int count = 0; count < 1502; count++) {aL[count] = 0.0; bL[count] = 0.0; cL[count] = 0.0; dL[count] = 0.0;aR[count] = 0.0; bR[count] = 0.0; cR[count] = 0.0; dR[count] = 0.0;} + ax = 1; bx = 1; cx = 1; dx = 1; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PeaksOnly::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/PeaksOnly/PeaksOnlyProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PeaksOnly> plugin; diff --git a/plugins/LV2/src/PeaksOnly/PeaksOnly.h b/plugins/LV2/src/PeaksOnly/PeaksOnly.h new file mode 100644 index 0000000..0fef542 --- /dev/null +++ b/plugins/LV2/src/PeaksOnly/PeaksOnly.h @@ -0,0 +1,44 @@ +#ifndef __PeaksOnly_H +#define __PeaksOnly_H + +#include <lv2plugin.h> + +class PeaksOnly : public LV2Plugin<0> { +public: + PeaksOnly(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/peaksonly"; + +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 aL[1503]; + double bL[1503]; + double cL[1503]; + double dL[1503]; + + double aR[1503]; + double bR[1503]; + double cR[1503]; + double dR[1503]; + + int ax, bx, cx, dx; + +}; + +#endif diff --git a/plugins/LV2/src/PeaksOnly/PeaksOnly.ttl b/plugins/LV2/src/PeaksOnly/PeaksOnly.ttl new file mode 100644 index 0000000..91b1d2e --- /dev/null +++ b/plugins/LV2/src/PeaksOnly/PeaksOnly.ttl @@ -0,0 +1,38 @@ +# Airwindows PeaksOnly 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/peaksonly> + 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: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/PeaksOnly/manifest.ttl.in b/plugins/LV2/src/PeaksOnly/manifest.ttl.in new file mode 100644 index 0000000..663710d --- /dev/null +++ b/plugins/LV2/src/PeaksOnly/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:peaksonly + a lv2:Plugin ; + doap:name "Airwindows PeaksOnly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PeaksOnly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PeaksOnly.ttl> . diff --git a/plugins/LV2/src/PhaseNudge/PhaseNudge.cpp b/plugins/LV2/src/PhaseNudge/PhaseNudge.cpp new file mode 100644 index 0000000..633afe0 --- /dev/null +++ b/plugins/LV2/src/PhaseNudge/PhaseNudge.cpp @@ -0,0 +1,37 @@ +#include "PhaseNudge.h" +#include <iostream> +#include <lv2wrapper.h> + +PhaseNudge::PhaseNudge(double rate) + : LV2Plugin(rate) +{ +} + +void PhaseNudge::activate() +{ + A = 0.0; + B = 1.0; + for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;} + one = 1; maxdelay = 9001; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PhaseNudge::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/PhaseNudge/PhaseNudgeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PhaseNudge> plugin; diff --git a/plugins/LV2/src/PhaseNudge/PhaseNudge.h b/plugins/LV2/src/PhaseNudge/PhaseNudge.h new file mode 100644 index 0000000..e6f92e3 --- /dev/null +++ b/plugins/LV2/src/PhaseNudge/PhaseNudge.h @@ -0,0 +1,40 @@ +#ifndef __PhaseNudge_H +#define __PhaseNudge_H + +#include <lv2plugin.h> + +class PhaseNudge : public LV2Plugin<2> { +public: + PhaseNudge(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/phasenudge"; + +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[1503]; + double dR[1503]; + int one, maxdelay; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + +}; + +#endif diff --git a/plugins/LV2/src/PhaseNudge/PhaseNudge.ttl b/plugins/LV2/src/PhaseNudge/PhaseNudge.ttl new file mode 100644 index 0000000..0aab4ad --- /dev/null +++ b/plugins/LV2/src/PhaseNudge/PhaseNudge.ttl @@ -0,0 +1,52 @@ +# Airwindows PhaseNudge 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/phasenudge> + 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 "Phase Nudge" ; + 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/PhaseNudge/manifest.ttl.in b/plugins/LV2/src/PhaseNudge/manifest.ttl.in new file mode 100644 index 0000000..682bc81 --- /dev/null +++ b/plugins/LV2/src/PhaseNudge/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:phasenudge + a lv2:Plugin ; + doap:name "Airwindows PhaseNudge" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PhaseNudge@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PhaseNudge.ttl> . diff --git a/plugins/LV2/src/PocketVerbs/PocketVerbs.cpp b/plugins/LV2/src/PocketVerbs/PocketVerbs.cpp new file mode 100644 index 0000000..f850482 --- /dev/null +++ b/plugins/LV2/src/PocketVerbs/PocketVerbs.cpp @@ -0,0 +1,213 @@ +#include "PocketVerbs.h" +#include <iostream> +#include <lv2wrapper.h> + +PocketVerbs::PocketVerbs(double rate) + : LV2Plugin(rate) +{ +} + +void PocketVerbs::activate() +{ + A = 0.0; + B = 0.5; + C = 0.0; + D = 0.5; + + for(count = 0; count < 6; count++) {dAL[count] = 0.0; dBL[count] = 0.0; dCL[count] = 0.0; dDL[count] = 0.0; dEL[count] = 0.0; + dFL[count] = 0.0; dGL[count] = 0.0; dHL[count] = 0.0; dIL[count] = 0.0; dJL[count] = 0.0; dKL[count] = 0.0; dLL[count] = 0.0; + dML[count] = 0.0; dNL[count] = 0.0; dOL[count] = 0.0; dPL[count] = 0.0; dQL[count] = 0.0; dRL[count] = 0.0; dSL[count] = 0.0; + dTL[count] = 0.0; dUL[count] = 0.0; dVL[count] = 0.0; dWL[count] = 0.0; dXL[count] = 0.0; dYL[count] = 0.0; dZL[count] = 0.0;} + + for(count = 0; count < 15149; count++) {aAL[count] = 0.0;} + for(count = 0; count < 15149; count++) {oAL[count] = 0.0;} + for(count = 0; count < 14617; count++) {aBL[count] = 0.0;} + for(count = 0; count < 14617; count++) {oBL[count] = 0.0;} + for(count = 0; count < 14357; count++) {aCL[count] = 0.0;} + for(count = 0; count < 14357; count++) {oCL[count] = 0.0;} + for(count = 0; count < 13817; count++) {aDL[count] = 0.0;} + for(count = 0; count < 13817; count++) {oDL[count] = 0.0;} + for(count = 0; count < 13561; count++) {aEL[count] = 0.0;} + for(count = 0; count < 13561; count++) {oEL[count] = 0.0;} + for(count = 0; count < 13045; count++) {aFL[count] = 0.0;} + for(count = 0; count < 13045; count++) {oFL[count] = 0.0;} + for(count = 0; count < 11965; count++) {aGL[count] = 0.0;} + for(count = 0; count < 11965; count++) {oGL[count] = 0.0;} + for(count = 0; count < 11129; count++) {aHL[count] = 0.0;} + for(count = 0; count < 11129; count++) {oHL[count] = 0.0;} + for(count = 0; count < 10597; count++) {aIL[count] = 0.0;} + for(count = 0; count < 10597; count++) {oIL[count] = 0.0;} + for(count = 0; count < 9809; count++) {aJL[count] = 0.0;} + for(count = 0; count < 9809; count++) {oJL[count] = 0.0;} + for(count = 0; count < 9521; count++) {aKL[count] = 0.0;} + for(count = 0; count < 9521; count++) {oKL[count] = 0.0;} + for(count = 0; count < 8981; count++) {aLL[count] = 0.0;} + for(count = 0; count < 8981; count++) {oLL[count] = 0.0;} + for(count = 0; count < 8785; count++) {aML[count] = 0.0;} + for(count = 0; count < 8785; count++) {oML[count] = 0.0;} + for(count = 0; count < 8461; count++) {aNL[count] = 0.0;} + for(count = 0; count < 8461; count++) {oNL[count] = 0.0;} + for(count = 0; count < 8309; count++) {aOL[count] = 0.0;} + for(count = 0; count < 8309; count++) {oOL[count] = 0.0;} + for(count = 0; count < 7981; count++) {aPL[count] = 0.0;} + for(count = 0; count < 7981; count++) {oPL[count] = 0.0;} + for(count = 0; count < 7321; count++) {aQL[count] = 0.0;} + for(count = 0; count < 7321; count++) {oQL[count] = 0.0;} + for(count = 0; count < 6817; count++) {aRL[count] = 0.0;} + for(count = 0; count < 6817; count++) {oRL[count] = 0.0;} + for(count = 0; count < 6505; count++) {aSL[count] = 0.0;} + for(count = 0; count < 6505; count++) {oSL[count] = 0.0;} + for(count = 0; count < 6001; count++) {aTL[count] = 0.0;} + for(count = 0; count < 6001; count++) {oTL[count] = 0.0;} + for(count = 0; count < 5837; count++) {aUL[count] = 0.0;} + for(count = 0; count < 5837; count++) {oUL[count] = 0.0;} + for(count = 0; count < 5501; count++) {aVL[count] = 0.0;} + for(count = 0; count < 5501; count++) {oVL[count] = 0.0;} + for(count = 0; count < 5009; count++) {aWL[count] = 0.0;} + for(count = 0; count < 5009; count++) {oWL[count] = 0.0;} + for(count = 0; count < 4849; count++) {aXL[count] = 0.0;} + for(count = 0; count < 4849; count++) {oXL[count] = 0.0;} + for(count = 0; count < 4295; count++) {aYL[count] = 0.0;} + for(count = 0; count < 4295; count++) {oYL[count] = 0.0;} + for(count = 0; count < 4179; count++) {aZL[count] = 0.0;} + for(count = 0; count < 4179; count++) {oZL[count] = 0.0;} + + for(count = 0; count < 6; count++) {dAR[count] = 0.0; dBR[count] = 0.0; dCR[count] = 0.0; dDR[count] = 0.0; dER[count] = 0.0; + dFR[count] = 0.0; dGR[count] = 0.0; dHR[count] = 0.0; dIR[count] = 0.0; dJR[count] = 0.0; dKR[count] = 0.0; dLR[count] = 0.0; + dMR[count] = 0.0; dNR[count] = 0.0; dOR[count] = 0.0; dPR[count] = 0.0; dQR[count] = 0.0; dRR[count] = 0.0; dSR[count] = 0.0; + dTR[count] = 0.0; dUR[count] = 0.0; dVR[count] = 0.0; dWR[count] = 0.0; dXR[count] = 0.0; dYR[count] = 0.0; dZR[count] = 0.0;} + + for(count = 0; count < 15149; count++) {aAR[count] = 0.0;} + for(count = 0; count < 15149; count++) {oAR[count] = 0.0;} + for(count = 0; count < 14617; count++) {aBR[count] = 0.0;} + for(count = 0; count < 14617; count++) {oBR[count] = 0.0;} + for(count = 0; count < 14357; count++) {aCR[count] = 0.0;} + for(count = 0; count < 14357; count++) {oCR[count] = 0.0;} + for(count = 0; count < 13817; count++) {aDR[count] = 0.0;} + for(count = 0; count < 13817; count++) {oDR[count] = 0.0;} + for(count = 0; count < 13561; count++) {aER[count] = 0.0;} + for(count = 0; count < 13561; count++) {oER[count] = 0.0;} + for(count = 0; count < 13045; count++) {aFR[count] = 0.0;} + for(count = 0; count < 13045; count++) {oFR[count] = 0.0;} + for(count = 0; count < 11965; count++) {aGR[count] = 0.0;} + for(count = 0; count < 11965; count++) {oGR[count] = 0.0;} + for(count = 0; count < 11129; count++) {aHR[count] = 0.0;} + for(count = 0; count < 11129; count++) {oHR[count] = 0.0;} + for(count = 0; count < 10597; count++) {aIR[count] = 0.0;} + for(count = 0; count < 10597; count++) {oIR[count] = 0.0;} + for(count = 0; count < 9809; count++) {aJR[count] = 0.0;} + for(count = 0; count < 9809; count++) {oJR[count] = 0.0;} + for(count = 0; count < 9521; count++) {aKR[count] = 0.0;} + for(count = 0; count < 9521; count++) {oKR[count] = 0.0;} + for(count = 0; count < 8981; count++) {aLR[count] = 0.0;} + for(count = 0; count < 8981; count++) {oLR[count] = 0.0;} + for(count = 0; count < 8785; count++) {aMR[count] = 0.0;} + for(count = 0; count < 8785; count++) {oMR[count] = 0.0;} + for(count = 0; count < 8461; count++) {aNR[count] = 0.0;} + for(count = 0; count < 8461; count++) {oNR[count] = 0.0;} + for(count = 0; count < 8309; count++) {aOR[count] = 0.0;} + for(count = 0; count < 8309; count++) {oOR[count] = 0.0;} + for(count = 0; count < 7981; count++) {aPR[count] = 0.0;} + for(count = 0; count < 7981; count++) {oPR[count] = 0.0;} + for(count = 0; count < 7321; count++) {aQR[count] = 0.0;} + for(count = 0; count < 7321; count++) {oQR[count] = 0.0;} + for(count = 0; count < 6817; count++) {aRR[count] = 0.0;} + for(count = 0; count < 6817; count++) {oRR[count] = 0.0;} + for(count = 0; count < 6505; count++) {aSR[count] = 0.0;} + for(count = 0; count < 6505; count++) {oSR[count] = 0.0;} + for(count = 0; count < 6001; count++) {aTR[count] = 0.0;} + for(count = 0; count < 6001; count++) {oTR[count] = 0.0;} + for(count = 0; count < 5837; count++) {aUR[count] = 0.0;} + for(count = 0; count < 5837; count++) {oUR[count] = 0.0;} + for(count = 0; count < 5501; count++) {aVR[count] = 0.0;} + for(count = 0; count < 5501; count++) {oVR[count] = 0.0;} + for(count = 0; count < 5009; count++) {aWR[count] = 0.0;} + for(count = 0; count < 5009; count++) {oWR[count] = 0.0;} + for(count = 0; count < 4849; count++) {aXR[count] = 0.0;} + for(count = 0; count < 4849; count++) {oXR[count] = 0.0;} + for(count = 0; count < 4295; count++) {aYR[count] = 0.0;} + for(count = 0; count < 4295; count++) {oYR[count] = 0.0;} + for(count = 0; count < 4179; count++) {aZR[count] = 0.0;} + for(count = 0; count < 4179; count++) {oZR[count] = 0.0;} + + outAL = 1; alpAL = 1; + outBL = 1; alpBL = 1; + outCL = 1; alpCL = 1; + outDL = 1; alpDL = 1; + outEL = 1; alpEL = 1; + outFL = 1; alpFL = 1; + outGL = 1; alpGL = 1; + outHL = 1; alpHL = 1; + outIL = 1; alpIL = 1; + outJL = 1; alpJL = 1; + outKL = 1; alpKL = 1; + outLL = 1; alpLL = 1; + outML = 1; alpML = 1; + outNL = 1; alpNL = 1; + outOL = 1; alpOL = 1; + outPL = 1; alpPL = 1; + outQL = 1; alpQL = 1; + outRL = 1; alpRL = 1; + outSL = 1; alpSL = 1; + outTL = 1; alpTL = 1; + outUL = 1; alpUL = 1; + outVL = 1; alpVL = 1; + outWL = 1; alpWL = 1; + outXL = 1; alpXL = 1; + outYL = 1; alpYL = 1; + outZL = 1; alpZL = 1; + + outAR = 1; alpAR = 1; delayA = 4; maxdelayA = 7573; + outBR = 1; alpBR = 1; delayB = 4; maxdelayB = 7307; + outCR = 1; alpCR = 1; delayC = 4; maxdelayC = 7177; + outDR = 1; alpDR = 1; delayD = 4; maxdelayD = 6907; + outER = 1; alpER = 1; delayE = 4; maxdelayE = 6779; + outFR = 1; alpFR = 1; delayF = 4; maxdelayF = 6521; + outGR = 1; alpGR = 1; delayG = 4; maxdelayG = 5981; + outHR = 1; alpHR = 1; delayH = 4; maxdelayH = 5563; + outIR = 1; alpIR = 1; delayI = 4; maxdelayI = 5297; + outJR = 1; alpJR = 1; delayJ = 4; maxdelayJ = 4903; + outKR = 1; alpKR = 1; delayK = 4; maxdelayK = 4759; + outLR = 1; alpLR = 1; delayL = 4; maxdelayL = 4489; + outMR = 1; alpMR = 1; delayM = 4; maxdelayM = 4391; + outNR = 1; alpNR = 1; delayN = 4; maxdelayN = 4229; + outOR = 1; alpOR = 1; delayO = 4; maxdelayO = 4153; + outPR = 1; alpPR = 1; delayP = 4; maxdelayP = 3989; + outQR = 1; alpQR = 1; delayQ = 4; maxdelayQ = 3659; + outRR = 1; alpRR = 1; delayR = 4; maxdelayR = 3407; + outSR = 1; alpSR = 1; delayS = 4; maxdelayS = 3251; + outTR = 1; alpTR = 1; delayT = 4; maxdelayT = 2999; + outUR = 1; alpUR = 1; delayU = 4; maxdelayU = 2917; + outVR = 1; alpVR = 1; delayV = 4; maxdelayV = 2749; + outWR = 1; alpWR = 1; delayW = 4; maxdelayW = 2503; + outXR = 1; alpXR = 1; delayX = 4; maxdelayX = 2423; + outYR = 1; alpYR = 1; delayY = 4; maxdelayY = 2146; + outZR = 1; alpZR = 1; delayZ = 4; maxdelayZ = 2088; + + savedRoomsize = -1.0; //force update to begin + countdown = -1; + peakL = 1.0; + peakR = 1.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PocketVerbs::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/PocketVerbs/PocketVerbsProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PocketVerbs> plugin; diff --git a/plugins/LV2/src/PocketVerbs/PocketVerbs.h b/plugins/LV2/src/PocketVerbs/PocketVerbs.h new file mode 100644 index 0000000..d0682fe --- /dev/null +++ b/plugins/LV2/src/PocketVerbs/PocketVerbs.h @@ -0,0 +1,264 @@ +#ifndef __PocketVerbs_H +#define __PocketVerbs_H + +#include <lv2plugin.h> + +class PocketVerbs : public LV2Plugin<4> { +public: + PocketVerbs(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pocketverbs"; + +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 count; + + + + double dAR[7]; + double dBR[7]; + double dCR[7]; + double dDR[7]; + double dER[7]; + double dFR[7]; + double dGR[7]; + double dHR[7]; + double dIR[7]; + double dJR[7]; + double dKR[7]; + double dLR[7]; + double dMR[7]; + double dNR[7]; + double dOR[7]; + double dPR[7]; + double dQR[7]; + double dRR[7]; + double dSR[7]; + double dTR[7]; + double dUR[7]; + double dVR[7]; + double dWR[7]; + double dXR[7]; + double dYR[7]; + double dZR[7]; + + double aAR[15150]; + double aBR[14618]; + double aCR[14358]; + double aDR[13818]; + double aER[13562]; + double aFR[13046]; + double aGR[11966]; + double aHR[11130]; + double aIR[10598]; + double aJR[9810]; + double aKR[9522]; + double aLR[8982]; + double aMR[8786]; + double aNR[8462]; + double aOR[8310]; + double aPR[7982]; + double aQR[7322]; + double aRR[6818]; + double aSR[6506]; + double aTR[6002]; + double aUR[5838]; + double aVR[5502]; + double aWR[5010]; + double aXR[4850]; + double aYR[4296]; + double aZR[4180]; + + double oAR[15150]; + double oBR[14618]; + double oCR[14358]; + double oDR[13818]; + double oER[13562]; + double oFR[13046]; + double oGR[11966]; + double oHR[11130]; + double oIR[10598]; + double oJR[9810]; + double oKR[9522]; + double oLR[8982]; + double oMR[8786]; + double oNR[8462]; + double oOR[8310]; + double oPR[7982]; + double oQR[7322]; + double oRR[6818]; + double oSR[6506]; + double oTR[6002]; + double oUR[5838]; + double oVR[5502]; + double oWR[5010]; + double oXR[4850]; + double oYR[4296]; + double oZR[4180]; + + double dAL[7]; + double dBL[7]; + double dCL[7]; + double dDL[7]; + double dEL[7]; + double dFL[7]; + double dGL[7]; + double dHL[7]; + double dIL[7]; + double dJL[7]; + double dKL[7]; + double dLL[7]; + double dML[7]; + double dNL[7]; + double dOL[7]; + double dPL[7]; + double dQL[7]; + double dRL[7]; + double dSL[7]; + double dTL[7]; + double dUL[7]; + double dVL[7]; + double dWL[7]; + double dXL[7]; + double dYL[7]; + double dZL[7]; + + double aAL[15150]; + double aBL[14618]; + double aCL[14358]; + double aDL[13818]; + double aEL[13562]; + double aFL[13046]; + double aGL[11966]; + double aHL[11130]; + double aIL[10598]; + double aJL[9810]; + double aKL[9522]; + double aLL[8982]; + double aML[8786]; + double aNL[8462]; + double aOL[8310]; + double aPL[7982]; + double aQL[7322]; + double aRL[6818]; + double aSL[6506]; + double aTL[6002]; + double aUL[5838]; + double aVL[5502]; + double aWL[5010]; + double aXL[4850]; + double aYL[4296]; + double aZL[4180]; + + double oAL[15150]; + double oBL[14618]; + double oCL[14358]; + double oDL[13818]; + double oEL[13562]; + double oFL[13046]; + double oGL[11966]; + double oHL[11130]; + double oIL[10598]; + double oJL[9810]; + double oKL[9522]; + double oLL[8982]; + double oML[8786]; + double oNL[8462]; + double oOL[8310]; + double oPL[7982]; + double oQL[7322]; + double oRL[6818]; + double oSL[6506]; + double oTL[6002]; + double oUL[5838]; + double oVL[5502]; + double oWL[5010]; + double oXL[4850]; + double oYL[4296]; + double oZL[4180]; + + + + int outAL, alpAL; + int outBL, alpBL; + int outCL, alpCL; + int outDL, alpDL; + int outEL, alpEL; + int outFL, alpFL; + int outGL, alpGL; + int outHL, alpHL; + int outIL, alpIL; + int outJL, alpJL; + int outKL, alpKL; + int outLL, alpLL; + int outML, alpML; + int outNL, alpNL; + int outOL, alpOL; + int outPL, alpPL; + int outQL, alpQL; + int outRL, alpRL; + int outSL, alpSL; + int outTL, alpTL; + int outUL, alpUL; + int outVL, alpVL; + int outWL, alpWL; + int outXL, alpXL; + int outYL, alpYL; + int outZL, alpZL; + + int outAR, alpAR, maxdelayA, delayA; + int outBR, alpBR, maxdelayB, delayB; + int outCR, alpCR, maxdelayC, delayC; + int outDR, alpDR, maxdelayD, delayD; + int outER, alpER, maxdelayE, delayE; + int outFR, alpFR, maxdelayF, delayF; + int outGR, alpGR, maxdelayG, delayG; + int outHR, alpHR, maxdelayH, delayH; + int outIR, alpIR, maxdelayI, delayI; + int outJR, alpJR, maxdelayJ, delayJ; + int outKR, alpKR, maxdelayK, delayK; + int outLR, alpLR, maxdelayL, delayL; + int outMR, alpMR, maxdelayM, delayM; + int outNR, alpNR, maxdelayN, delayN; + int outOR, alpOR, maxdelayO, delayO; + int outPR, alpPR, maxdelayP, delayP; + int outQR, alpQR, maxdelayQ, delayQ; + int outRR, alpRR, maxdelayR, delayR; + int outSR, alpSR, maxdelayS, delayS; + int outTR, alpTR, maxdelayT, delayT; + int outUR, alpUR, maxdelayU, delayU; + int outVR, alpVR, maxdelayV, delayV; + int outWR, alpWR, maxdelayW, delayW; + int outXR, alpXR, maxdelayX, delayX; + int outYR, alpYR, maxdelayY, delayY; + int outZR, alpZR, maxdelayZ, delayZ; + + double savedRoomsize; + int countdown; + double peakL; + double peakR; + + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; + +}; + +#endif diff --git a/plugins/LV2/src/PocketVerbs/PocketVerbs.ttl b/plugins/LV2/src/PocketVerbs/PocketVerbs.ttl new file mode 100644 index 0000000..9e118a7 --- /dev/null +++ b/plugins/LV2/src/PocketVerbs/PocketVerbs.ttl @@ -0,0 +1,68 @@ +# Airwindows PocketVerbs 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/pocketverbs> + a lv2:Plugin , + lv2:EffectsPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Type" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Size" ; + 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 "Gating" ; + 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/PocketVerbs/manifest.ttl.in b/plugins/LV2/src/PocketVerbs/manifest.ttl.in new file mode 100644 index 0000000..5a5303f --- /dev/null +++ b/plugins/LV2/src/PocketVerbs/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pocketverbs + a lv2:Plugin ; + doap:name "Airwindows PocketVerbs" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PocketVerbs@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PocketVerbs.ttl> . diff --git a/plugins/LV2/src/Podcast/Podcast.cpp b/plugins/LV2/src/Podcast/Podcast.cpp new file mode 100644 index 0000000..862eae7 --- /dev/null +++ b/plugins/LV2/src/Podcast/Podcast.cpp @@ -0,0 +1,38 @@ +#include "Podcast.h" +#include <iostream> +#include <lv2wrapper.h> + +Podcast::Podcast(double rate) + : LV2Plugin(rate) +{ +} + +void Podcast::activate() +{ + A = 0.5; + B = 1.0; + + c1L = 2.0; c2L = 2.0; c3L = 2.0; c4L = 2.0; c5L = 2.0; //startup comp gains + c1R = 2.0; c2R = 2.0; c3R = 2.0; c4R = 2.0; c5R = 2.0; //startup comp gains + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Podcast::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/Podcast/PodcastProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Podcast> plugin; diff --git a/plugins/LV2/src/Podcast/Podcast.h b/plugins/LV2/src/Podcast/Podcast.h new file mode 100644 index 0000000..6e9da18 --- /dev/null +++ b/plugins/LV2/src/Podcast/Podcast.h @@ -0,0 +1,47 @@ +#ifndef __Podcast_H +#define __Podcast_H + +#include <lv2plugin.h> + +class Podcast : public LV2Plugin<2> { +public: + Podcast(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/podcast"; + +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 c1L; + double c2L; + double c3L; + double c4L; + double c5L; + //the compressor + + double c1R; + double c2R; + double c3R; + double c4R; + double c5R; + //the compressor + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/Podcast/Podcast.ttl b/plugins/LV2/src/Podcast/Podcast.ttl new file mode 100644 index 0000000..c37705a --- /dev/null +++ b/plugins/LV2/src/Podcast/Podcast.ttl @@ -0,0 +1,52 @@ +# Airwindows Podcast 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/podcast> + 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 "Boost" ; + 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/Podcast/manifest.ttl.in b/plugins/LV2/src/Podcast/manifest.ttl.in new file mode 100644 index 0000000..f102f78 --- /dev/null +++ b/plugins/LV2/src/Podcast/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:podcast + a lv2:Plugin ; + doap:name "Airwindows Podcast" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Podcast@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Podcast.ttl> . diff --git a/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.cpp b/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.cpp new file mode 100644 index 0000000..607b4e2 --- /dev/null +++ b/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.cpp @@ -0,0 +1,51 @@ +#include "PodcastDeluxe.h" +#include <iostream> +#include <lv2wrapper.h> + +PodcastDeluxe::PodcastDeluxe(double rate) + : LV2Plugin(rate) +{ +} + +void PodcastDeluxe::activate() +{ + A = 0.5; + + for(int count = 0; count < 502; count++) { + d1L[count] = 0.0; + d2L[count] = 0.0; + d3L[count] = 0.0; + d4L[count] = 0.0; + d5L[count] = 0.0; + d1R[count] = 0.0; + d2R[count] = 0.0; + d3R[count] = 0.0; + d4R[count] = 0.0; + d5R[count] = 0.0; + } + c1L = 2.0; c2L = 2.0; c3L = 2.0; c4L = 2.0; c5L = 2.0; //startup comp gains + + tap1 = 1; tap2 = 1; tap3 = 1; tap4 = 1; tap5 = 1; + maxdelay1 = 9001; maxdelay2 = 9001; maxdelay3 = 9001; maxdelay4 = 9001; maxdelay5 = 9001; + c1R = 2.0; c2R = 2.0; c3R = 2.0; c4R = 2.0; c5R = 2.0; //startup comp gains + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PodcastDeluxe::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/PodcastDeluxe/PodcastDeluxeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PodcastDeluxe> plugin; diff --git a/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.h b/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.h new file mode 100644 index 0000000..6aea9ef --- /dev/null +++ b/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.h @@ -0,0 +1,69 @@ +#ifndef __PodcastDeluxe_H +#define __PodcastDeluxe_H + +#include <lv2plugin.h> + +class PodcastDeluxe : public LV2Plugin<1> { +public: + PodcastDeluxe(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/podcastdeluxe"; + +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 d1L[503]; + double d2L[503]; + double d3L[503]; + double d4L[503]; + double d5L[503]; + //the phase rotator + + double c1L; + double c2L; + double c3L; + double c4L; + double c5L; + //the compressor + + double lastSampleL; + double lastOutSampleL; + + double d1R[503]; + double d2R[503]; + double d3R[503]; + double d4R[503]; + double d5R[503]; + + int tap1, tap2, tap3, tap4, tap5, maxdelay1, maxdelay2, maxdelay3, maxdelay4, maxdelay5; + //the phase rotator + + double c1R; + double c2R; + double c3R; + double c4R; + double c5R; + //the compressor + + double lastSampleR; + double lastOutSampleR; + + float A; +}; + +#endif diff --git a/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.ttl b/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.ttl new file mode 100644 index 0000000..0d6b843 --- /dev/null +++ b/plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.ttl @@ -0,0 +1,44 @@ +# Airwindows PodcastDeluxe 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/podcastdeluxe> + 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 "Boost" ; + 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/PodcastDeluxe/manifest.ttl.in b/plugins/LV2/src/PodcastDeluxe/manifest.ttl.in new file mode 100644 index 0000000..aa4ca74 --- /dev/null +++ b/plugins/LV2/src/PodcastDeluxe/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:podcastdeluxe + a lv2:Plugin ; + doap:name "Airwindows PodcastDeluxe" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PodcastDeluxe@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PodcastDeluxe.ttl> . diff --git a/plugins/LV2/src/Point/Point.cpp b/plugins/LV2/src/Point/Point.cpp new file mode 100644 index 0000000..dc86d3c --- /dev/null +++ b/plugins/LV2/src/Point/Point.cpp @@ -0,0 +1,47 @@ +#include "Point.h" +#include <iostream> +#include <lv2wrapper.h> + +Point::Point(double rate) + : LV2Plugin(rate) +{ +} + +void Point::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + nibAL = 0.0; + nobAL = 0.0; + nibBL = 0.0; + nobBL = 0.0; + nibAR = 0.0; + nobAR = 0.0; + nibBR = 0.0; + nobBR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + fpFlip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Point::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/Point/PointProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Point> plugin; diff --git a/plugins/LV2/src/Point/Point.h b/plugins/LV2/src/Point/Point.h new file mode 100644 index 0000000..628e281 --- /dev/null +++ b/plugins/LV2/src/Point/Point.h @@ -0,0 +1,45 @@ +#ifndef __Point_H +#define __Point_H + +#include <lv2plugin.h> + +class Point : public LV2Plugin<3> { +public: + Point(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/point"; + +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 nibAL; + double nobAL; + double nibBL; + double nobBL; + double nibAR; + double nobAR; + double nibBR; + double nobBR; + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Point/Point.ttl b/plugins/LV2/src/Point/Point.ttl new file mode 100644 index 0000000..423f289 --- /dev/null +++ b/plugins/LV2/src/Point/Point.ttl @@ -0,0 +1,60 @@ +# Airwindows Point 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/point> + 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 "Input Trim" ; + 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 "Point" ; + 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 "Reaction Speed" ; + 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/Point/manifest.ttl.in b/plugins/LV2/src/Point/manifest.ttl.in new file mode 100644 index 0000000..bc21f41 --- /dev/null +++ b/plugins/LV2/src/Point/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:point + a lv2:Plugin ; + doap:name "Airwindows Point" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Point@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Point.ttl> . diff --git a/plugins/LV2/src/Pop/Pop.cpp b/plugins/LV2/src/Pop/Pop.cpp new file mode 100644 index 0000000..19a2938 --- /dev/null +++ b/plugins/LV2/src/Pop/Pop.cpp @@ -0,0 +1,65 @@ +#include "Pop.h" +#include <iostream> +#include <lv2wrapper.h> + +Pop::Pop(double rate) + : LV2Plugin(rate) +{ +} + +void Pop::activate() +{ + A = 0.3; + B = 1.0; + C = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + + for(int count = 0; count < 10000; count++) {dL[count] = 0; dR[count] = 0;} + delay = 0; + flip = false; + + muSpeedAL = 10000; + muSpeedBL = 10000; + muCoefficientAL = 1; + muCoefficientBL = 1; + thickenL = 1; + muVaryL = 1; + previousL = 0.0; + previous2L = 0.0; + previous3L = 0.0; + previous4L = 0.0; + previous5L = 0.0; + + muSpeedAR = 10000; + muSpeedBR = 10000; + muCoefficientAR = 1; + muCoefficientBR = 1; + thickenR = 1; + muVaryR = 1; + previousR = 0.0; + previous2R = 0.0; + previous3R = 0.0; + previous4R = 0.0; + previous5R = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Pop::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/Pop/PopProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Pop> plugin; diff --git a/plugins/LV2/src/Pop/Pop.h b/plugins/LV2/src/Pop/Pop.h new file mode 100644 index 0000000..e118637 --- /dev/null +++ b/plugins/LV2/src/Pop/Pop.h @@ -0,0 +1,69 @@ +#ifndef __Pop_H +#define __Pop_H + +#include <lv2plugin.h> + +class Pop : public LV2Plugin<3> { +public: + Pop(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pop"; + +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 muVaryL; + double muAttackL; + double muNewSpeedL; + double muSpeedAL; + double muSpeedBL; + double muCoefficientAL; + double muCoefficientBL; + long double thickenL; + long double previousL; + long double previous2L; + long double previous3L; + long double previous4L; + long double previous5L; + double dL[10001]; + + double muVaryR; + double muAttackR; + double muNewSpeedR; + double muSpeedAR; + double muSpeedBR; + double muCoefficientAR; + double muCoefficientBR; + long double thickenR; + long double previousR; + long double previous2R; + long double previous3R; + long double previous4R; + long double previous5R; + double dR[10001]; + + int delay; + bool flip; + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Pop/Pop.ttl b/plugins/LV2/src/Pop/Pop.ttl new file mode 100644 index 0000000..756ae96 --- /dev/null +++ b/plugins/LV2/src/Pop/Pop.ttl @@ -0,0 +1,60 @@ +# Airwindows Pop 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/pop> + 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 "Intenst" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Output" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Dry/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 4 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 5 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 6 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Pop/manifest.ttl.in b/plugins/LV2/src/Pop/manifest.ttl.in new file mode 100644 index 0000000..6ddaf7d --- /dev/null +++ b/plugins/LV2/src/Pop/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pop + a lv2:Plugin ; + doap:name "Airwindows Pop" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pop@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pop.ttl> . diff --git a/plugins/LV2/src/PowerSag/PowerSag.cpp b/plugins/LV2/src/PowerSag/PowerSag.cpp new file mode 100644 index 0000000..e7fd577 --- /dev/null +++ b/plugins/LV2/src/PowerSag/PowerSag.cpp @@ -0,0 +1,39 @@ +#include "PowerSag.h" +#include <iostream> +#include <lv2wrapper.h> + +PowerSag::PowerSag(double rate) + : LV2Plugin(rate) +{ +} + +void PowerSag::activate() +{ + for(int count = 0; count < 8999; count++) {dL[count] = 0; dR[count] = 0;} + controlL = 0; + controlR = 0; + gcount = 0; + A = 0.0; + B = 0.3; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PowerSag::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/PowerSag/PowerSagProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PowerSag> plugin; diff --git a/plugins/LV2/src/PowerSag/PowerSag.h b/plugins/LV2/src/PowerSag/PowerSag.h new file mode 100644 index 0000000..0cb34f9 --- /dev/null +++ b/plugins/LV2/src/PowerSag/PowerSag.h @@ -0,0 +1,41 @@ +#ifndef __PowerSag_H +#define __PowerSag_H + +#include <lv2plugin.h> + +class PowerSag : public LV2Plugin<2> { +public: + PowerSag(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/powersag"; + +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 dL[9000]; + double dR[9000]; + double controlL; + double controlR; + int gcount; + + float A; + float B; + +}; + +#endif diff --git a/plugins/LV2/src/PowerSag/PowerSag.ttl b/plugins/LV2/src/PowerSag/PowerSag.ttl new file mode 100644 index 0000000..0010712 --- /dev/null +++ b/plugins/LV2/src/PowerSag/PowerSag.ttl @@ -0,0 +1,52 @@ +# Airwindows PowerSag 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/powersag> + 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 "Depth" ; + 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: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/PowerSag/manifest.ttl.in b/plugins/LV2/src/PowerSag/manifest.ttl.in new file mode 100644 index 0000000..e728143 --- /dev/null +++ b/plugins/LV2/src/PowerSag/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:powersag + a lv2:Plugin ; + doap:name "Airwindows PowerSag" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PowerSag@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PowerSag.ttl> . diff --git a/plugins/LV2/src/PowerSag2/PowerSag2.cpp b/plugins/LV2/src/PowerSag2/PowerSag2.cpp new file mode 100644 index 0000000..836eef2 --- /dev/null +++ b/plugins/LV2/src/PowerSag2/PowerSag2.cpp @@ -0,0 +1,40 @@ +#include "PowerSag2.h" +#include <iostream> +#include <lv2wrapper.h> + +PowerSag2::PowerSag2(double rate) + : LV2Plugin(rate) +{ +} + +void PowerSag2::activate() +{ + + for(int count = 0; count < 16385; count++) {dL[count] = 0; dR[count] = 0;} + controlL = 0; + controlR = 0; + gcount = 0; + + A = 0.3; + B = 0.5; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PowerSag2::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/PowerSag2/PowerSag2Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PowerSag2> plugin; diff --git a/plugins/LV2/src/PowerSag2/PowerSag2.h b/plugins/LV2/src/PowerSag2/PowerSag2.h new file mode 100644 index 0000000..f67cc8e --- /dev/null +++ b/plugins/LV2/src/PowerSag2/PowerSag2.h @@ -0,0 +1,40 @@ +#ifndef __PowerSag2_H +#define __PowerSag2_H + +#include <lv2plugin.h> + +class PowerSag2 : public LV2Plugin<2> { +public: + PowerSag2(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/powersag2"; + +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[16386]; + double dR[16386]; + double controlL; + double controlR; + int gcount; + + uint32_t fpd; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/PowerSag2/PowerSag2.ttl b/plugins/LV2/src/PowerSag2/PowerSag2.ttl new file mode 100644 index 0000000..35fdb12 --- /dev/null +++ b/plugins/LV2/src/PowerSag2/PowerSag2.ttl @@ -0,0 +1,52 @@ +# Airwindows PowerSag2 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/powersag2> + 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 "Range" ; + 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 "Inv/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/PowerSag2/manifest.ttl.in b/plugins/LV2/src/PowerSag2/manifest.ttl.in new file mode 100644 index 0000000..088ea52 --- /dev/null +++ b/plugins/LV2/src/PowerSag2/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:powersag2 + a lv2:Plugin ; + doap:name "Airwindows PowerSag2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PowerSag2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PowerSag2.ttl> . diff --git a/plugins/LV2/src/Precious/Precious.cpp b/plugins/LV2/src/Precious/Precious.cpp new file mode 100644 index 0000000..f89c39e --- /dev/null +++ b/plugins/LV2/src/Precious/Precious.cpp @@ -0,0 +1,40 @@ +#include "Precious.h" +#include <iostream> +#include <lv2wrapper.h> + +Precious::Precious(double rate) + : LV2Plugin(rate) +{ +} + +void Precious::activate() +{ + A = 0.70; + B = 0.3333333; + C = 0.3333333; + D = 1.0; + for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;} + lastSampleR = 0.0;lastSampleL = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Precious::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/Precious/PreciousProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Precious> plugin; diff --git a/plugins/LV2/src/Precious/Precious.h b/plugins/LV2/src/Precious/Precious.h new file mode 100644 index 0000000..3843835 --- /dev/null +++ b/plugins/LV2/src/Precious/Precious.h @@ -0,0 +1,40 @@ +#ifndef __Precious_H +#define __Precious_H + +#include <lv2plugin.h> + +class Precious : public LV2Plugin<4> { +public: + Precious(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/precious"; + +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 bR[35]; + double lastSampleR; + double bL[35]; + double lastSampleL; + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/Precious/Precious.ttl b/plugins/LV2/src/Precious/Precious.ttl new file mode 100644 index 0000000..9811857 --- /dev/null +++ b/plugins/LV2/src/Precious/Precious.ttl @@ -0,0 +1,68 @@ +# Airwindows Precious 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/precious> + 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 "Hardns" ; + 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 "Persnlty" ; + 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 "Drive" ; + 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 "Output" ; + 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/Precious/manifest.ttl.in b/plugins/LV2/src/Precious/manifest.ttl.in new file mode 100644 index 0000000..959fb84 --- /dev/null +++ b/plugins/LV2/src/Precious/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:precious + a lv2:Plugin ; + doap:name "Airwindows Precious" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Precious@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Precious.ttl> . diff --git a/plugins/LV2/src/Pressure4/Pressure4.cpp b/plugins/LV2/src/Pressure4/Pressure4.cpp new file mode 100644 index 0000000..0ebeb03 --- /dev/null +++ b/plugins/LV2/src/Pressure4/Pressure4.cpp @@ -0,0 +1,45 @@ +#include "Pressure4.h" +#include <iostream> +#include <lv2wrapper.h> + +Pressure4::Pressure4(double rate) + : LV2Plugin(rate) +{ +} + +void Pressure4::activate() +{ + A = 0.0; + B = 0.2; + C = 1.0; + D = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + muSpeedA = 10000; + muSpeedB = 10000; + muCoefficientA = 1; + muCoefficientB = 1; + muVary = 1; + flip = false; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Pressure4::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/Pressure4/Pressure4Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Pressure4> plugin; diff --git a/plugins/LV2/src/Pressure4/Pressure4.h b/plugins/LV2/src/Pressure4/Pressure4.h new file mode 100644 index 0000000..d8f98bc --- /dev/null +++ b/plugins/LV2/src/Pressure4/Pressure4.h @@ -0,0 +1,45 @@ +#ifndef __Pressure4_H +#define __Pressure4_H + +#include <lv2plugin.h> + +class Pressure4 : public LV2Plugin<4> { +public: + Pressure4(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pressure4"; + +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; + long double fpNShapeL; + long double fpNShapeR; + bool flip; + + float A; + float B; + float C; //parameters. Always 0-1, and we scale/alter them elsewhere. + float D; + +}; + +#endif diff --git a/plugins/LV2/src/Pressure4/Pressure4.ttl b/plugins/LV2/src/Pressure4/Pressure4.ttl new file mode 100644 index 0000000..9ee25be --- /dev/null +++ b/plugins/LV2/src/Pressure4/Pressure4.ttl @@ -0,0 +1,68 @@ +# Airwindows Pressure4 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/pressure4> + 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 "Pressure" ; + 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 "Mewiness" ; + 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 "Output Gain" ; + 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/Pressure4/manifest.ttl.in b/plugins/LV2/src/Pressure4/manifest.ttl.in new file mode 100644 index 0000000..b184589 --- /dev/null +++ b/plugins/LV2/src/Pressure4/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pressure4 + a lv2:Plugin ; + doap:name "Airwindows Pressure4" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pressure4@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pressure4.ttl> . diff --git a/plugins/LV2/src/PurestAir/PurestAir.cpp b/plugins/LV2/src/PurestAir/PurestAir.cpp new file mode 100644 index 0000000..84e287b --- /dev/null +++ b/plugins/LV2/src/PurestAir/PurestAir.cpp @@ -0,0 +1,46 @@ +#include "PurestAir.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestAir::PurestAir(double rate) + : LV2Plugin(rate) +{ +} + +void PurestAir::activate() +{ + A = 0.5; + B = 0.0; + C = 1.0; + last1SampleL = 0.0; + halfwaySampleL = halfDrySampleL = halfDiffSampleL = diffSampleL = 0.0; + lastSampleL = 0.0; + s1L = s2L = s3L = 0.0; + applyL = 0.0; + last1SampleR = 0.0; + halfwaySampleR = halfDrySampleR = halfDiffSampleR = diffSampleR = 0.0; + lastSampleR = 0.0; + s1R = s2R = s3R = 0.0; + applyR = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestAir::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/PurestAir/PurestAirProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestAir> plugin; diff --git a/plugins/LV2/src/PurestAir/PurestAir.h b/plugins/LV2/src/PurestAir/PurestAir.h new file mode 100644 index 0000000..5d2e171 --- /dev/null +++ b/plugins/LV2/src/PurestAir/PurestAir.h @@ -0,0 +1,56 @@ +#ifndef __PurestAir_H +#define __PurestAir_H + +#include <lv2plugin.h> + +class PurestAir : public LV2Plugin<3> { +public: + PurestAir(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestair"; + +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 + long double last1SampleL; + long double halfwaySampleL; + long double halfDrySampleL; + long double halfDiffSampleL; + long double diffSampleL; + long double lastSampleL; + double s1L; + double s2L; + double s3L; + double applyL; + + long double last1SampleR; + long double halfwaySampleR; + long double halfDrySampleR; + long double halfDiffSampleR; + long double diffSampleR; + long double lastSampleR; + double s1R; + double s2R; + double s3R; + double applyR; + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/PurestAir/PurestAir.ttl b/plugins/LV2/src/PurestAir/PurestAir.ttl new file mode 100644 index 0000000..75b5113 --- /dev/null +++ b/plugins/LV2/src/PurestAir/PurestAir.ttl @@ -0,0 +1,60 @@ +# Airwindows PurestAir 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/purestair> + 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 "Boost" ; + 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 "Limit" ; + 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/PurestAir/manifest.ttl.in b/plugins/LV2/src/PurestAir/manifest.ttl.in new file mode 100644 index 0000000..6cd0726 --- /dev/null +++ b/plugins/LV2/src/PurestAir/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestair + a lv2:Plugin ; + doap:name "Airwindows PurestAir" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestAir@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestAir.ttl> . diff --git a/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.cpp new file mode 100644 index 0000000..4943a31 --- /dev/null +++ b/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.cpp @@ -0,0 +1,32 @@ +#include "PurestConsoleBuss.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestConsoleBuss::PurestConsoleBuss(double rate) + : LV2Plugin(rate) +{ +} + +void PurestConsoleBuss::activate() +{ + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestConsoleBuss::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/PurestConsoleBuss/PurestConsoleBussProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestConsoleBuss> plugin; diff --git a/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.h new file mode 100644 index 0000000..0a1b83b --- /dev/null +++ b/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.h @@ -0,0 +1,32 @@ +#ifndef __PurestConsoleBuss_H +#define __PurestConsoleBuss_H + +#include <lv2plugin.h> + +class PurestConsoleBuss : public LV2Plugin<0> { +public: + PurestConsoleBuss(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestconsolebuss"; + +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 +}; + +#endif diff --git a/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.ttl b/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.ttl new file mode 100644 index 0000000..8a87518 --- /dev/null +++ b/plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.ttl @@ -0,0 +1,38 @@ +# Airwindows PurestConsoleBuss 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/purestconsolebuss> + 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/PurestConsoleBuss/manifest.ttl.in b/plugins/LV2/src/PurestConsoleBuss/manifest.ttl.in new file mode 100644 index 0000000..15f3ea2 --- /dev/null +++ b/plugins/LV2/src/PurestConsoleBuss/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestconsolebuss + a lv2:Plugin ; + doap:name "Airwindows PurestConsoleBuss" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestConsoleBuss@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestConsoleBuss.ttl> . diff --git a/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.cpp new file mode 100644 index 0000000..2cd0596 --- /dev/null +++ b/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.cpp @@ -0,0 +1,32 @@ +#include "PurestConsoleChannel.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestConsoleChannel::PurestConsoleChannel(double rate) + : LV2Plugin(rate) +{ +} + +void PurestConsoleChannel::activate() +{ + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestConsoleChannel::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/PurestConsoleChannel/PurestConsoleChannelProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestConsoleChannel> plugin; diff --git a/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.h new file mode 100644 index 0000000..c6c8835 --- /dev/null +++ b/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.h @@ -0,0 +1,33 @@ +#ifndef __PurestConsoleChannel_H +#define __PurestConsoleChannel_H + +#include <lv2plugin.h> + +class PurestConsoleChannel : public LV2Plugin<0> { +public: + PurestConsoleChannel(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestconsolechannel"; + +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 + +}; + +#endif diff --git a/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.ttl b/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.ttl new file mode 100644 index 0000000..e672c3c --- /dev/null +++ b/plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.ttl @@ -0,0 +1,38 @@ +# Airwindows PurestConsoleChannel 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/purestconsolechannel> + 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/PurestConsoleChannel/manifest.ttl.in b/plugins/LV2/src/PurestConsoleChannel/manifest.ttl.in new file mode 100644 index 0000000..689e728 --- /dev/null +++ b/plugins/LV2/src/PurestConsoleChannel/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestconsolechannel + a lv2:Plugin ; + doap:name "Airwindows PurestConsoleChannel" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestConsoleChannel@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestConsoleChannel.ttl> . diff --git a/plugins/LV2/src/PurestDrive/PurestDrive.cpp b/plugins/LV2/src/PurestDrive/PurestDrive.cpp new file mode 100644 index 0000000..24ce68e --- /dev/null +++ b/plugins/LV2/src/PurestDrive/PurestDrive.cpp @@ -0,0 +1,37 @@ +#include "PurestDrive.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestDrive::PurestDrive(double rate) + : LV2Plugin(rate) +{ +} + +void PurestDrive::activate() +{ + A = 0.0; + + previousSampleL = 0.0; + previousSampleR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestDrive::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/PurestDrive/PurestDriveProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestDrive> plugin; diff --git a/plugins/LV2/src/PurestDrive/PurestDrive.h b/plugins/LV2/src/PurestDrive/PurestDrive.h new file mode 100644 index 0000000..27c85fc --- /dev/null +++ b/plugins/LV2/src/PurestDrive/PurestDrive.h @@ -0,0 +1,42 @@ +#ifndef __PurestDrive_H +#define __PurestDrive_H + +#include <lv2plugin.h> + +class PurestDrive : public LV2Plugin<1> { +public: + PurestDrive(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestdrive"; + +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 previousSampleL; + double previousSampleR; + + 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/PurestDrive/PurestDrive.ttl b/plugins/LV2/src/PurestDrive/PurestDrive.ttl new file mode 100644 index 0000000..de9dce7 --- /dev/null +++ b/plugins/LV2/src/PurestDrive/PurestDrive.ttl @@ -0,0 +1,44 @@ +# Airwindows PurestDrive 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/purestdrive> + a lv2:Plugin , + lv2:DistortionPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Drive" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2: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/PurestDrive/manifest.ttl.in b/plugins/LV2/src/PurestDrive/manifest.ttl.in new file mode 100644 index 0000000..947ab58 --- /dev/null +++ b/plugins/LV2/src/PurestDrive/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestdrive + a lv2:Plugin ; + doap:name "Airwindows PurestDrive" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestDrive@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestDrive.ttl> . diff --git a/plugins/LV2/src/PurestEcho/PurestEcho.cpp b/plugins/LV2/src/PurestEcho/PurestEcho.cpp new file mode 100644 index 0000000..30e0c4e --- /dev/null +++ b/plugins/LV2/src/PurestEcho/PurestEcho.cpp @@ -0,0 +1,43 @@ +#include "PurestEcho.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestEcho::PurestEcho(double rate) + : LV2Plugin(rate) +{ +} + +void PurestEcho::activate() +{ + A = 1.0; + B = 1.0; + C = 0.0; + D = 0.0; + E = 0.0; + for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;} + gcount = 0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestEcho::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/PurestEcho/PurestEchoProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestEcho> plugin; diff --git a/plugins/LV2/src/PurestEcho/PurestEcho.h b/plugins/LV2/src/PurestEcho/PurestEcho.h new file mode 100644 index 0000000..ee344a7 --- /dev/null +++ b/plugins/LV2/src/PurestEcho/PurestEcho.h @@ -0,0 +1,45 @@ +#ifndef __PurestEcho_H +#define __PurestEcho_H + +#include <lv2plugin.h> + +class PurestEcho : public LV2Plugin<5> { +public: + PurestEcho(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestecho"; + +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. + */ + + const static int totalsamples = 65535; + double dL[totalsamples]; + double dR[totalsamples]; + int gcount; + + + long double fpNShapeL; + long double fpNShapeR; + //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/PurestEcho/PurestEcho.ttl b/plugins/LV2/src/PurestEcho/PurestEcho.ttl new file mode 100644 index 0000000..3f5f8b2 --- /dev/null +++ b/plugins/LV2/src/PurestEcho/PurestEcho.ttl @@ -0,0 +1,76 @@ +# Airwindows PurestEcho 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/purestecho> + 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 "Time" ; + 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 "Tap 1" ; + 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 "Tap 2" ; + 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 "Tap 3" ; + 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 "Tap 4" ; + 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/PurestEcho/manifest.ttl.in b/plugins/LV2/src/PurestEcho/manifest.ttl.in new file mode 100644 index 0000000..f877c14 --- /dev/null +++ b/plugins/LV2/src/PurestEcho/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestecho + a lv2:Plugin ; + doap:name "Airwindows PurestEcho" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestEcho@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestEcho.ttl> . diff --git a/plugins/LV2/src/PurestFade/PurestFade.cpp b/plugins/LV2/src/PurestFade/PurestFade.cpp new file mode 100644 index 0000000..f591118 --- /dev/null +++ b/plugins/LV2/src/PurestFade/PurestFade.cpp @@ -0,0 +1,38 @@ +#include "PurestFade.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestFade::PurestFade(double rate) + : LV2Plugin(rate) +{ +} + +void PurestFade::activate() +{ + A = 0.5; + B = 1.0; + gainchase = -90.0; + settingchase = -90.0; + gainBchase = -90.0; + chasespeed = 350.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestFade::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/PurestFade/PurestFadeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestFade> plugin; diff --git a/plugins/LV2/src/PurestFade/PurestFade.h b/plugins/LV2/src/PurestFade/PurestFade.h new file mode 100644 index 0000000..d9be7d1 --- /dev/null +++ b/plugins/LV2/src/PurestFade/PurestFade.h @@ -0,0 +1,39 @@ +#ifndef __PurestFade_H +#define __PurestFade_H + +#include <lv2plugin.h> + +class PurestFade : public LV2Plugin<2> { +public: + PurestFade(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestfade"; + +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 gainchase; + double settingchase; + double gainBchase; + double chasespeed; + + float A; + float B; + +}; + +#endif diff --git a/plugins/LV2/src/PurestFade/PurestFade.ttl b/plugins/LV2/src/PurestFade/PurestFade.ttl new file mode 100644 index 0000000..ee9afff --- /dev/null +++ b/plugins/LV2/src/PurestFade/PurestFade.ttl @@ -0,0 +1,52 @@ +# Airwindows PurestFade 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/purestfade> + 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 "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 "Fade" ; + 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/PurestFade/manifest.ttl.in b/plugins/LV2/src/PurestFade/manifest.ttl.in new file mode 100644 index 0000000..9ff0693 --- /dev/null +++ b/plugins/LV2/src/PurestFade/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestfade + a lv2:Plugin ; + doap:name "Airwindows PurestFade" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestFade@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestFade.ttl> . diff --git a/plugins/LV2/src/PurestGain/PurestGain.cpp b/plugins/LV2/src/PurestGain/PurestGain.cpp new file mode 100644 index 0000000..db08ad9 --- /dev/null +++ b/plugins/LV2/src/PurestGain/PurestGain.cpp @@ -0,0 +1,39 @@ +#include "PurestGain.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestGain::PurestGain(double rate) + : LV2Plugin(rate) +{ +} + +void PurestGain::activate() +{ + A = 0.5; + B = 1.0; + gainchase = -90.0; + settingchase = -90.0; + gainBchase = -90.0; + chasespeed = 350.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestGain::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/PurestGain/PurestGainProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestGain> plugin; diff --git a/plugins/LV2/src/PurestGain/PurestGain.h b/plugins/LV2/src/PurestGain/PurestGain.h new file mode 100644 index 0000000..fa859ec --- /dev/null +++ b/plugins/LV2/src/PurestGain/PurestGain.h @@ -0,0 +1,40 @@ +#ifndef __PurestGain_H +#define __PurestGain_H + +#include <lv2plugin.h> + +class PurestGain : public LV2Plugin<2> { +public: + PurestGain(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestgain"; + +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 gainchase; + double settingchase; + double gainBchase; + double chasespeed; + + float A; + float B; + +}; + +#endif diff --git a/plugins/LV2/src/PurestGain/PurestGain.ttl b/plugins/LV2/src/PurestGain/PurestGain.ttl new file mode 100644 index 0000000..0d2c098 --- /dev/null +++ b/plugins/LV2/src/PurestGain/PurestGain.ttl @@ -0,0 +1,52 @@ +# Airwindows PurestGain 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/purestgain> + a lv2:Plugin , + lv2:AplifierPlugin ; + 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 "Slow Fade" ; + 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/PurestGain/manifest.ttl.in b/plugins/LV2/src/PurestGain/manifest.ttl.in new file mode 100644 index 0000000..21b2598 --- /dev/null +++ b/plugins/LV2/src/PurestGain/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestgain + a lv2:Plugin ; + doap:name "Airwindows PurestGain" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestGain@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestGain.ttl> . diff --git a/plugins/LV2/src/PurestSquish/PurestSquish.cpp b/plugins/LV2/src/PurestSquish/PurestSquish.cpp new file mode 100644 index 0000000..8bf5ccb --- /dev/null +++ b/plugins/LV2/src/PurestSquish/PurestSquish.cpp @@ -0,0 +1,86 @@ +#include "PurestSquish.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestSquish::PurestSquish(double rate) + : LV2Plugin(rate) +{ +} + +void PurestSquish::activate() +{ + A = 0.0; + B = 0.0; + C = 1.0; + D = 1.0; + + muSpeedAL = 10000; + muSpeedBL = 10000; + muSpeedCL = 10000; + muSpeedDL = 10000; + muSpeedEL = 10000; + muCoefficientAL = 1; + muCoefficientBL = 1; + muCoefficientCL = 1; + muCoefficientDL = 1; + muCoefficientEL = 1; + iirSampleAL = 0.0; + iirSampleBL = 0.0; + iirSampleCL = 0.0; + iirSampleDL = 0.0; + iirSampleEL = 0.0; + lastCoefficientAL = 1; + lastCoefficientBL = 1; + lastCoefficientCL = 1; + lastCoefficientDL = 1; + mergedCoefficientsL = 1; + muVaryL = 1; + + muSpeedAR = 10000; + muSpeedBR = 10000; + muSpeedCR = 10000; + muSpeedDR = 10000; + muSpeedER = 10000; + muCoefficientAR = 1; + muCoefficientBR = 1; + muCoefficientCR = 1; + muCoefficientDR = 1; + muCoefficientER = 1; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + iirSampleCR = 0.0; + iirSampleDR = 0.0; + iirSampleER = 0.0; + lastCoefficientAR = 1; + lastCoefficientBR = 1; + lastCoefficientCR = 1; + lastCoefficientDR = 1; + mergedCoefficientsR = 1; + muVaryR = 1; + + count = 1; + fpFlip = true; + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestSquish::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/PurestSquish/PurestSquishProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestSquish> plugin; diff --git a/plugins/LV2/src/PurestSquish/PurestSquish.h b/plugins/LV2/src/PurestSquish/PurestSquish.h new file mode 100644 index 0000000..b6a8892 --- /dev/null +++ b/plugins/LV2/src/PurestSquish/PurestSquish.h @@ -0,0 +1,87 @@ +#ifndef __PurestSquish_H +#define __PurestSquish_H + +#include <lv2plugin.h> + +class PurestSquish : public LV2Plugin<4> { +public: + PurestSquish(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestsquish"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; + + double muVaryL; + double muAttackL; + double muNewSpeedL; + double muSpeedAL; + double muSpeedBL; + double muSpeedCL; + double muSpeedDL; + double muSpeedEL; + double muCoefficientAL; + double muCoefficientBL; + double muCoefficientCL; + double muCoefficientDL; + double muCoefficientEL; + double iirSampleAL; + double iirSampleBL; + double iirSampleCL; + double iirSampleDL; + double iirSampleEL; + double lastCoefficientAL; + double lastCoefficientBL; + double lastCoefficientCL; + double lastCoefficientDL; + double mergedCoefficientsL; + + double muVaryR; + double muAttackR; + double muNewSpeedR; + double muSpeedAR; + double muSpeedBR; + double muSpeedCR; + double muSpeedDR; + double muSpeedER; + double muCoefficientAR; + double muCoefficientBR; + double muCoefficientCR; + double muCoefficientDR; + double muCoefficientER; + double iirSampleAR; + double iirSampleBR; + double iirSampleCR; + double iirSampleDR; + double iirSampleER; + double lastCoefficientAR; + double lastCoefficientBR; + double lastCoefficientCR; + double lastCoefficientDR; + double mergedCoefficientsR; + + int count; + bool fpFlip; +}; + +#endif diff --git a/plugins/LV2/src/PurestSquish/PurestSquish.ttl b/plugins/LV2/src/PurestSquish/PurestSquish.ttl new file mode 100644 index 0000000..9014c0b --- /dev/null +++ b/plugins/LV2/src/PurestSquish/PurestSquish.ttl @@ -0,0 +1,68 @@ +# Airwindows PurestSquish 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/purestsquish> + 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 "Squish" ; + 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 "BassBlm" ; + 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/PurestSquish/manifest.ttl.in b/plugins/LV2/src/PurestSquish/manifest.ttl.in new file mode 100644 index 0000000..dbf75a1 --- /dev/null +++ b/plugins/LV2/src/PurestSquish/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestsquish + a lv2:Plugin ; + doap:name "Airwindows PurestSquish" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestSquish@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestSquish.ttl> . diff --git a/plugins/LV2/src/PurestWarm/PurestWarm.cpp b/plugins/LV2/src/PurestWarm/PurestWarm.cpp new file mode 100644 index 0000000..a93a9fd --- /dev/null +++ b/plugins/LV2/src/PurestWarm/PurestWarm.cpp @@ -0,0 +1,33 @@ +#include "PurestWarm.h" +#include <iostream> +#include <lv2wrapper.h> + +PurestWarm::PurestWarm(double rate) + : LV2Plugin(rate) +{ +} + +void PurestWarm::activate() +{ + A = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void PurestWarm::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/PurestWarm/PurestWarmProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<PurestWarm> plugin; diff --git a/plugins/LV2/src/PurestWarm/PurestWarm.h b/plugins/LV2/src/PurestWarm/PurestWarm.h new file mode 100644 index 0000000..8be6f9a --- /dev/null +++ b/plugins/LV2/src/PurestWarm/PurestWarm.h @@ -0,0 +1,35 @@ +#ifndef __PurestWarm_H +#define __PurestWarm_H + +#include <lv2plugin.h> + +class PurestWarm : public LV2Plugin<1> { +public: + PurestWarm(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/purestwarm"; + +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; + +}; + +#endif diff --git a/plugins/LV2/src/PurestWarm/PurestWarm.ttl b/plugins/LV2/src/PurestWarm/PurestWarm.ttl new file mode 100644 index 0000000..284aea2 --- /dev/null +++ b/plugins/LV2/src/PurestWarm/PurestWarm.ttl @@ -0,0 +1,44 @@ +# Airwindows PurestWarm 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/purestwarm> + 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 "Polarity" ; + 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/PurestWarm/manifest.ttl.in b/plugins/LV2/src/PurestWarm/manifest.ttl.in new file mode 100644 index 0000000..bd7d89c --- /dev/null +++ b/plugins/LV2/src/PurestWarm/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:purestwarm + a lv2:Plugin ; + doap:name "Airwindows PurestWarm" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <PurestWarm@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <PurestWarm.ttl> . diff --git a/plugins/LV2/src/Pyewacket/Pyewacket.cpp b/plugins/LV2/src/Pyewacket/Pyewacket.cpp new file mode 100644 index 0000000..9252202 --- /dev/null +++ b/plugins/LV2/src/Pyewacket/Pyewacket.cpp @@ -0,0 +1,40 @@ +#include "Pyewacket.h" +#include <iostream> +#include <lv2wrapper.h> + +Pyewacket::Pyewacket(double rate) + : LV2Plugin(rate) +{ +} + +void Pyewacket::activate() +{ + A = 0.5; + B = 0.5; + C = 0.5; + chase = 1.0; + lastrectifierL = 0.0; + lastrectifierR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Pyewacket::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/Pyewacket/PyewacketProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Pyewacket> plugin; diff --git a/plugins/LV2/src/Pyewacket/Pyewacket.h b/plugins/LV2/src/Pyewacket/Pyewacket.h new file mode 100644 index 0000000..3252a4d --- /dev/null +++ b/plugins/LV2/src/Pyewacket/Pyewacket.h @@ -0,0 +1,40 @@ +#ifndef __Pyewacket_H +#define __Pyewacket_H + +#include <lv2plugin.h> + +class Pyewacket : public LV2Plugin<3> { +public: + Pyewacket(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/pyewacket"; + +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 chase; + double lastrectifierL; + double lastrectifierR; + + float A; + float B; + float C; + +}; + +#endif diff --git a/plugins/LV2/src/Pyewacket/Pyewacket.ttl b/plugins/LV2/src/Pyewacket/Pyewacket.ttl new file mode 100644 index 0000000..cfd0d89 --- /dev/null +++ b/plugins/LV2/src/Pyewacket/Pyewacket.ttl @@ -0,0 +1,60 @@ +# Airwindows Pyewacket 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/pyewacket> + 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 "Input 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 "Release" ; + 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 Gain" ; + 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/Pyewacket/manifest.ttl.in b/plugins/LV2/src/Pyewacket/manifest.ttl.in new file mode 100644 index 0000000..d9296a6 --- /dev/null +++ b/plugins/LV2/src/Pyewacket/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:pyewacket + a lv2:Plugin ; + doap:name "Airwindows Pyewacket" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Pyewacket@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Pyewacket.ttl> . diff --git a/plugins/LV2/src/RawGlitters/RawGlitters.cpp b/plugins/LV2/src/RawGlitters/RawGlitters.cpp new file mode 100644 index 0000000..0408a29 --- /dev/null +++ b/plugins/LV2/src/RawGlitters/RawGlitters.cpp @@ -0,0 +1,34 @@ +#include "RawGlitters.h" +#include <iostream> +#include <lv2wrapper.h> + +RawGlitters::RawGlitters(double rate) + : LV2Plugin(rate) +{ +} + +void RawGlitters::activate() +{ + lastSampleL = 0.0; + lastSample2L = 0.0; + lastSampleR = 0.0; + lastSample2R = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void RawGlitters::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/RawGlitters/RawGlittersProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<RawGlitters> plugin; diff --git a/plugins/LV2/src/RawGlitters/RawGlitters.h b/plugins/LV2/src/RawGlitters/RawGlitters.h new file mode 100644 index 0000000..7fd690c --- /dev/null +++ b/plugins/LV2/src/RawGlitters/RawGlitters.h @@ -0,0 +1,33 @@ +#ifndef __RawGlitters_H +#define __RawGlitters_H + +#include <lv2plugin.h> + +class RawGlitters : public LV2Plugin<0> { +public: + RawGlitters(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/rawglitters"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + double lastSampleL; + double lastSample2L; + double lastSampleR; + double lastSample2R; +}; + +#endif diff --git a/plugins/LV2/src/RawGlitters/RawGlitters.ttl b/plugins/LV2/src/RawGlitters/RawGlitters.ttl new file mode 100644 index 0000000..c6c956c --- /dev/null +++ b/plugins/LV2/src/RawGlitters/RawGlitters.ttl @@ -0,0 +1,38 @@ +# Airwindows RawGlitters 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/rawglitters> + 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/RawGlitters/manifest.ttl.in b/plugins/LV2/src/RawGlitters/manifest.ttl.in new file mode 100644 index 0000000..85026c2 --- /dev/null +++ b/plugins/LV2/src/RawGlitters/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:rawglitters + a lv2:Plugin ; + doap:name "Airwindows RawGlitters" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <RawGlitters@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <RawGlitters.ttl> . diff --git a/plugins/LV2/src/RawTimbers/RawTimbers.cpp b/plugins/LV2/src/RawTimbers/RawTimbers.cpp new file mode 100644 index 0000000..eb6f9f3 --- /dev/null +++ b/plugins/LV2/src/RawTimbers/RawTimbers.cpp @@ -0,0 +1,34 @@ +#include "RawTimbers.h" +#include <iostream> +#include <lv2wrapper.h> + +RawTimbers::RawTimbers(double rate) + : LV2Plugin(rate) +{ +} + +void RawTimbers::activate() +{ + lastSampleL = 0.0; + lastSample2L = 0.0; + lastSampleR = 0.0; + lastSample2R = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void RawTimbers::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/RawTimbers/RawTimbersProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<RawTimbers> plugin; diff --git a/plugins/LV2/src/RawTimbers/RawTimbers.h b/plugins/LV2/src/RawTimbers/RawTimbers.h new file mode 100644 index 0000000..6d3ad46 --- /dev/null +++ b/plugins/LV2/src/RawTimbers/RawTimbers.h @@ -0,0 +1,33 @@ +#ifndef __RawTimbers_H +#define __RawTimbers_H + +#include <lv2plugin.h> + +class RawTimbers : public LV2Plugin<0> { +public: + RawTimbers(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/rawtimbers"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + double lastSampleL; + double lastSample2L; + double lastSampleR; + double lastSample2R; +}; + +#endif diff --git a/plugins/LV2/src/RawTimbers/RawTimbers.ttl b/plugins/LV2/src/RawTimbers/RawTimbers.ttl new file mode 100644 index 0000000..422af0f --- /dev/null +++ b/plugins/LV2/src/RawTimbers/RawTimbers.ttl @@ -0,0 +1,38 @@ +# Airwindows RawTimbers 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/rawtimbers> + 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/RawTimbers/manifest.ttl.in b/plugins/LV2/src/RawTimbers/manifest.ttl.in new file mode 100644 index 0000000..f4d10cf --- /dev/null +++ b/plugins/LV2/src/RawTimbers/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:rawtimbers + a lv2:Plugin ; + doap:name "Airwindows RawTimbers" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <RawTimbers@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <RawTimbers.ttl> . diff --git a/plugins/LV2/src/Recurve/Recurve.cpp b/plugins/LV2/src/Recurve/Recurve.cpp new file mode 100644 index 0000000..0cef898 --- /dev/null +++ b/plugins/LV2/src/Recurve/Recurve.cpp @@ -0,0 +1,32 @@ +#include "Recurve.h" +#include <iostream> +#include <lv2wrapper.h> + +Recurve::Recurve(double rate) + : LV2Plugin(rate) +{ +} + +void Recurve::activate() +{ + gain = 2.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Recurve::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/Recurve/RecurveProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Recurve> plugin; diff --git a/plugins/LV2/src/Recurve/Recurve.h b/plugins/LV2/src/Recurve/Recurve.h new file mode 100644 index 0000000..9149f91 --- /dev/null +++ b/plugins/LV2/src/Recurve/Recurve.h @@ -0,0 +1,39 @@ +#ifndef __Recurve_H +#define __Recurve_H + +#include <lv2plugin.h> + +class Recurve : public LV2Plugin<0> { +public: + Recurve(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/recurve"; + +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 gain; + 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/Recurve/Recurve.ttl b/plugins/LV2/src/Recurve/Recurve.ttl new file mode 100644 index 0000000..39d693c --- /dev/null +++ b/plugins/LV2/src/Recurve/Recurve.ttl @@ -0,0 +1,38 @@ +# Airwindows Recurve 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/recurve> + 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: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/Recurve/manifest.ttl.in b/plugins/LV2/src/Recurve/manifest.ttl.in new file mode 100644 index 0000000..c4a563d --- /dev/null +++ b/plugins/LV2/src/Recurve/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:recurve + a lv2:Plugin ; + doap:name "Airwindows Recurve" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Recurve@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Recurve.ttl> . diff --git a/plugins/LV2/src/Remap/Remap.cpp b/plugins/LV2/src/Remap/Remap.cpp new file mode 100644 index 0000000..d4aa054 --- /dev/null +++ b/plugins/LV2/src/Remap/Remap.cpp @@ -0,0 +1,36 @@ +#include "Remap.h" +#include <iostream> +#include <lv2wrapper.h> + +Remap::Remap(double rate) + : LV2Plugin(rate) +{ +} + +void Remap::activate() +{ + A = 0.5; + B = 1.0; + C = 1.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Remap::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/Remap/RemapProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Remap> plugin; diff --git a/plugins/LV2/src/Remap/Remap.h b/plugins/LV2/src/Remap/Remap.h new file mode 100644 index 0000000..8aee143 --- /dev/null +++ b/plugins/LV2/src/Remap/Remap.h @@ -0,0 +1,35 @@ +#ifndef __Remap_H +#define __Remap_H + +#include <lv2plugin.h> + +class Remap : public LV2Plugin<3> { +public: + Remap(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/remap"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + uint32_t fpd; + //default stuff + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Remap/Remap.ttl b/plugins/LV2/src/Remap/Remap.ttl new file mode 100644 index 0000000..4eb9cec --- /dev/null +++ b/plugins/LV2/src/Remap/Remap.ttl @@ -0,0 +1,60 @@ +# Airwindows Remap 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/remap> + 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 "Remap" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Output" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Dry/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 4 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 5 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 6 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Remap/manifest.ttl.in b/plugins/LV2/src/Remap/manifest.ttl.in new file mode 100644 index 0000000..bafd736 --- /dev/null +++ b/plugins/LV2/src/Remap/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:remap + a lv2:Plugin ; + doap:name "Airwindows Remap" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Remap@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Remap.ttl> . diff --git a/plugins/LV2/src/ResEQ/ResEQ.cpp b/plugins/LV2/src/ResEQ/ResEQ.cpp new file mode 100644 index 0000000..6293d2e --- /dev/null +++ b/plugins/LV2/src/ResEQ/ResEQ.cpp @@ -0,0 +1,48 @@ +#include "ResEQ.h" +#include <iostream> +#include <lv2wrapper.h> + +ResEQ::ResEQ(double rate) + : LV2Plugin(rate) +{ +} + +void ResEQ::activate() +{ + A = 0.0; + B = 0.0; + C = 0.0; + D = 0.0; + E = 0.0; + F = 0.0; + G = 0.0; + H = 0.0; + I = 0.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void ResEQ::run(uint32_t num_samples) +{ + A = *params[0]; + B = *params[1]; + C = *params[2]; + D = *params[3]; + E = *params[4]; + F = *params[5]; + G = *params[6]; + H = *params[7]; + I = *params[8]; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/ResEQ/ResEQProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<ResEQ> plugin; diff --git a/plugins/LV2/src/ResEQ/ResEQ.h b/plugins/LV2/src/ResEQ/ResEQ.h new file mode 100644 index 0000000..3338252 --- /dev/null +++ b/plugins/LV2/src/ResEQ/ResEQ.h @@ -0,0 +1,49 @@ +#ifndef __ResEQ_H +#define __ResEQ_H + +#include <lv2plugin.h> + +class ResEQ : public LV2Plugin<9> { +public: + ResEQ(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/reseq"; + +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 bL[61]; + double fL[61]; + double bR[61]; + double fR[61]; + int framenumber; + + + float A; + float B; + float C; + float D; + float E; + float F; + float G; + float H; + float I; + +}; + +#endif diff --git a/plugins/LV2/src/ResEQ/ResEQ.ttl b/plugins/LV2/src/ResEQ/ResEQ.ttl new file mode 100644 index 0000000..afdc3e1 --- /dev/null +++ b/plugins/LV2/src/ResEQ/ResEQ.ttl @@ -0,0 +1,108 @@ +# Airwindows ResEQ 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/reseq> + 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 "Reso 1" ; + 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 "Reso 2" ; + 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 "Reso 3" ; + 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 "Reso 4" ; + 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 "Reso 5" ; + 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 "Reso 6" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 6 ; + lv2:symbol "G" ; + lv2:name "Reso 7" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 7 ; + lv2:symbol "H" ; + lv2:name "Reso 8" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 8 ; + lv2:symbol "I" ; + lv2:name "Dry/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 9 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 10 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 11 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 12 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/ResEQ/manifest.ttl.in b/plugins/LV2/src/ResEQ/manifest.ttl.in new file mode 100644 index 0000000..3e780c7 --- /dev/null +++ b/plugins/LV2/src/ResEQ/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:reseq + a lv2:Plugin ; + doap:name "Airwindows ResEQ" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <ResEQ@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <ResEQ.ttl> . diff --git a/plugins/LV2/src/RightoMono/RightoMono.cpp b/plugins/LV2/src/RightoMono/RightoMono.cpp new file mode 100644 index 0000000..4556480 --- /dev/null +++ b/plugins/LV2/src/RightoMono/RightoMono.cpp @@ -0,0 +1,29 @@ +#include "RightoMono.h" +#include <iostream> +#include <lv2wrapper.h> + +RightoMono::RightoMono(double rate) + : LV2Plugin(rate) +{ +} + +void RightoMono::activate() +{ + +} + +void RightoMono::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/RightoMono/RightoMonoProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<RightoMono> plugin; diff --git a/plugins/LV2/src/RightoMono/RightoMono.h b/plugins/LV2/src/RightoMono/RightoMono.h new file mode 100644 index 0000000..87ecdc4 --- /dev/null +++ b/plugins/LV2/src/RightoMono/RightoMono.h @@ -0,0 +1,29 @@ +#ifndef __RightoMono_H +#define __RightoMono_H + +#include <lv2plugin.h> + +class RightoMono : public LV2Plugin<0> { +public: + RightoMono(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/rightomono"; + +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/RightoMono/RightoMono.ttl b/plugins/LV2/src/RightoMono/RightoMono.ttl new file mode 100644 index 0000000..2395d98 --- /dev/null +++ b/plugins/LV2/src/RightoMono/RightoMono.ttl @@ -0,0 +1,38 @@ +# Airwindows RightoMono 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/rightomono> + 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/RightoMono/manifest.ttl.in b/plugins/LV2/src/RightoMono/manifest.ttl.in new file mode 100644 index 0000000..2bc75ac --- /dev/null +++ b/plugins/LV2/src/RightoMono/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:rightomono + a lv2:Plugin ; + doap:name "Airwindows RightoMono" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <RightoMono@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <RightoMono.ttl> . diff --git a/plugins/LV2/src/SideDull/SideDull.cpp b/plugins/LV2/src/SideDull/SideDull.cpp new file mode 100644 index 0000000..27d8f83 --- /dev/null +++ b/plugins/LV2/src/SideDull/SideDull.cpp @@ -0,0 +1,36 @@ +#include "SideDull.h" +#include <iostream> +#include <lv2wrapper.h> + +SideDull::SideDull(double rate) + : LV2Plugin(rate) +{ +} + +void SideDull::activate() +{ + A = 0.0; + iirSampleA = 0.0; + iirSampleB = 0.0; + flip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void SideDull::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/SideDull/SideDullProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SideDull> plugin; diff --git a/plugins/LV2/src/SideDull/SideDull.h b/plugins/LV2/src/SideDull/SideDull.h new file mode 100644 index 0000000..3a7640f --- /dev/null +++ b/plugins/LV2/src/SideDull/SideDull.h @@ -0,0 +1,36 @@ +#ifndef __SideDull_H +#define __SideDull_H + +#include <lv2plugin.h> + +class SideDull : public LV2Plugin<1> { +public: + SideDull(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/sidedull"; + +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 iirSampleA; + double iirSampleB; + bool flip; + long double fpNShapeL; + long double fpNShapeR; + + float A; +}; + +#endif diff --git a/plugins/LV2/src/SideDull/SideDull.ttl b/plugins/LV2/src/SideDull/SideDull.ttl new file mode 100644 index 0000000..8e9f885 --- /dev/null +++ b/plugins/LV2/src/SideDull/SideDull.ttl @@ -0,0 +1,44 @@ +# Airwindows SideDull 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/sidedull> + 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 "Cutoff" ; + 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/SideDull/manifest.ttl.in b/plugins/LV2/src/SideDull/manifest.ttl.in new file mode 100644 index 0000000..1d7cf26 --- /dev/null +++ b/plugins/LV2/src/SideDull/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:sidedull + a lv2:Plugin ; + doap:name "Airwindows SideDull" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SideDull@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SideDull.ttl> . diff --git a/plugins/LV2/src/Sidepass/Sidepass.cpp b/plugins/LV2/src/Sidepass/Sidepass.cpp new file mode 100644 index 0000000..832a3f2 --- /dev/null +++ b/plugins/LV2/src/Sidepass/Sidepass.cpp @@ -0,0 +1,36 @@ +#include "Sidepass.h" +#include <iostream> +#include <lv2wrapper.h> + +Sidepass::Sidepass(double rate) + : LV2Plugin(rate) +{ +} + +void Sidepass::activate() +{ + A = 0.0; + iirSampleA = 0.0; + iirSampleB = 0.0; + flip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Sidepass::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/Sidepass/SidepassProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Sidepass> plugin; diff --git a/plugins/LV2/src/Sidepass/Sidepass.h b/plugins/LV2/src/Sidepass/Sidepass.h new file mode 100644 index 0000000..a465fb3 --- /dev/null +++ b/plugins/LV2/src/Sidepass/Sidepass.h @@ -0,0 +1,38 @@ +#ifndef __Sidepass_H +#define __Sidepass_H + +#include <lv2plugin.h> + +class Sidepass : public LV2Plugin<1> { +public: + Sidepass(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/sidepass"; + +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 iirSampleA; + double iirSampleB; + bool flip; + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + +}; + +#endif diff --git a/plugins/LV2/src/Sidepass/Sidepass.ttl b/plugins/LV2/src/Sidepass/Sidepass.ttl new file mode 100644 index 0000000..88c355d --- /dev/null +++ b/plugins/LV2/src/Sidepass/Sidepass.ttl @@ -0,0 +1,44 @@ +# Airwindows Sidepass 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/sidepass> + 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 "Cutoff" ; + 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/Sidepass/manifest.ttl.in b/plugins/LV2/src/Sidepass/manifest.ttl.in new file mode 100644 index 0000000..54198d9 --- /dev/null +++ b/plugins/LV2/src/Sidepass/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:sidepass + a lv2:Plugin ; + doap:name "Airwindows Sidepass" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Sidepass@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Sidepass.ttl> . diff --git a/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.cpp b/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.cpp new file mode 100644 index 0000000..c000f91 --- /dev/null +++ b/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.cpp @@ -0,0 +1,42 @@ +#include "SingleEndedTriode.h" +#include <cmath> +#include <iostream> +#include <lv2wrapper.h> + +SingleEndedTriode::SingleEndedTriode(double rate) + : LV2Plugin(rate) +{ +} + +void SingleEndedTriode::activate() +{ + A = 0.0; + B = 0.0; + C = 0.0; + D = 0.0; + + postsine = sin(0.5); + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void SingleEndedTriode::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 "../../../LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SingleEndedTriode> plugin; diff --git a/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.h b/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.h new file mode 100644 index 0000000..1b12dd9 --- /dev/null +++ b/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.h @@ -0,0 +1,38 @@ +#ifndef __SingleEndedTriode_H +#define __SingleEndedTriode_H + +#include <lv2plugin.h> + +class SingleEndedTriode : public LV2Plugin<4> { +public: + SingleEndedTriode(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/singleendedtriode"; + +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 postsine; + + float A; + float B; + float C; + float D; +}; + +#endif diff --git a/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.ttl b/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.ttl new file mode 100644 index 0000000..b553ff6 --- /dev/null +++ b/plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.ttl @@ -0,0 +1,68 @@ +# Airwindows SingleEndedTriode 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/singleendedtriode> + 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 "Triode" ; + 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 "Clas AB" ; + 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 "Clas 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 "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/SingleEndedTriode/manifest.ttl.in b/plugins/LV2/src/SingleEndedTriode/manifest.ttl.in new file mode 100644 index 0000000..79dfda5 --- /dev/null +++ b/plugins/LV2/src/SingleEndedTriode/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:singleendedtriode + a lv2:Plugin ; + doap:name "Airwindows SingleEndedTriode" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SingleEndedTriode@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SingleEndedTriode.ttl> . diff --git a/plugins/LV2/src/Slew2/Slew2.cpp b/plugins/LV2/src/Slew2/Slew2.cpp new file mode 100644 index 0000000..ad79c99 --- /dev/null +++ b/plugins/LV2/src/Slew2/Slew2.cpp @@ -0,0 +1,47 @@ +#include "Slew2.h" +#include <iostream> +#include <lv2wrapper.h> + +Slew2::Slew2(double rate) + : LV2Plugin(rate) +{ +} + +void Slew2::activate() +{ + A = 0.0; + + LataLast3Sample = LataLast2Sample = LataLast1Sample = 0.0; + LataHalfwaySample = LataHalfDrySample = LataHalfDiffSample = 0.0; + LataA = LataB = LataC = LataDrySample = LataDiffSample = LataPrevDiffSample = 0.0; + LataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling + LataDecay = 0.915965594177219015; //Catalan's constant, more adds focus and clarity + lastSampleL = 0.0; + + RataLast3Sample = RataLast2Sample = RataLast1Sample = 0.0; + RataHalfwaySample = RataHalfDrySample = RataHalfDiffSample = 0.0; + RataA = RataB = RataC = RataDrySample = RataDiffSample = RataPrevDiffSample = 0.0; + RataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling + RataDecay = 0.915965594177219015; //CRatalan's constant, more adds focus and clarity + LataFlip = false; //end reset of antialias parameters + RataFlip = false; //end reset of antialias parameters + lastSampleR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Slew2::run(uint32_t num_samples) +{ + A = *params[0]; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Include the processing code from the VST version. +// +#include <cmath> +#include "../../../LinuxVST/src/Slew2/Slew2Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Slew2> plugin; diff --git a/plugins/LV2/src/Slew2/Slew2.h b/plugins/LV2/src/Slew2/Slew2.h new file mode 100644 index 0000000..ac6c0a4 --- /dev/null +++ b/plugins/LV2/src/Slew2/Slew2.h @@ -0,0 +1,67 @@ +#ifndef __Slew2_H +#define __Slew2_H + +#include <lv2plugin.h> + +class Slew2 : public LV2Plugin<1> { +public: + Slew2(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/slew2"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + double LataLast3Sample; + double LataLast2Sample; + double LataLast1Sample; + double LataHalfwaySample; + double LataHalfDrySample; + double LataHalfDiffSample; + double LataA; + double LataB; + double LataC; + double LataDecay; + double LataUpsampleHighTweak; + double LataDrySample; + double LataDiffSample; + double LataPrevDiffSample; + + double RataLast3Sample; + double RataLast2Sample; + double RataLast1Sample; + double RataHalfwaySample; + double RataHalfDrySample; + double RataHalfDiffSample; + double RataA; + double RataB; + double RataC; + double RataDecay; + double RataUpsampleHighTweak; + double RataDrySample; + double RataDiffSample; + double RataPrevDiffSample; + + bool LataFlip; //end defining of antialiasing variables + bool RataFlip; //end defining of antialiasing variables + + double lastSampleL; + double lastSampleR; + + float A; + +}; + +#endif diff --git a/plugins/LV2/src/Slew2/Slew2.ttl b/plugins/LV2/src/Slew2/Slew2.ttl new file mode 100644 index 0000000..5f3d56d --- /dev/null +++ b/plugins/LV2/src/Slew2/Slew2.ttl @@ -0,0 +1,44 @@ +# Airwindows Slew2 plugin description + +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<https://www.airwindows.com/slew2> + a lv2:Plugin , + lv2:EQPlugin ; + lv2:project <https://www.airwindows.com> ; + + lv2:optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Clamping" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 1 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 2 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 4 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Slew2/manifest.ttl.in b/plugins/LV2/src/Slew2/manifest.ttl.in new file mode 100644 index 0000000..28adb42 --- /dev/null +++ b/plugins/LV2/src/Slew2/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:slew2 + a lv2:Plugin ; + doap:name "Airwindows Slew2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Slew2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Slew2.ttl> . diff --git a/plugins/LV2/src/SlewOnly/SlewOnly.cpp b/plugins/LV2/src/SlewOnly/SlewOnly.cpp new file mode 100644 index 0000000..def3f52 --- /dev/null +++ b/plugins/LV2/src/SlewOnly/SlewOnly.cpp @@ -0,0 +1,31 @@ +#include "SlewOnly.h" +#include <iostream> +#include <lv2wrapper.h> + +SlewOnly::SlewOnly(double rate) + : LV2Plugin(rate) +{ +} + +void SlewOnly::activate() +{ + lastSampleL = 0.0; + lastSampleR = 0.0; + +} + +void SlewOnly::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/SlewOnly/SlewOnlyProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SlewOnly> plugin; diff --git a/plugins/LV2/src/SlewOnly/SlewOnly.h b/plugins/LV2/src/SlewOnly/SlewOnly.h new file mode 100644 index 0000000..57f73f3 --- /dev/null +++ b/plugins/LV2/src/SlewOnly/SlewOnly.h @@ -0,0 +1,31 @@ +#ifndef __SlewOnly_H +#define __SlewOnly_H + +#include <lv2plugin.h> + +class SlewOnly : public LV2Plugin<0> { +public: + SlewOnly(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/slewonly"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + double lastSampleL; + double lastSampleR; +}; + +#endif diff --git a/plugins/LV2/src/SlewOnly/SlewOnly.ttl b/plugins/LV2/src/SlewOnly/SlewOnly.ttl new file mode 100644 index 0000000..172b9c8 --- /dev/null +++ b/plugins/LV2/src/SlewOnly/SlewOnly.ttl @@ -0,0 +1,38 @@ +# Airwindows SlewOnly 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/slewonly> + 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/SlewOnly/manifest.ttl.in b/plugins/LV2/src/SlewOnly/manifest.ttl.in new file mode 100644 index 0000000..c2436fb --- /dev/null +++ b/plugins/LV2/src/SlewOnly/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:slewonly + a lv2:Plugin ; + doap:name "Airwindows SlewOnly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SlewOnly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SlewOnly.ttl> . diff --git a/plugins/LV2/src/Smooth/Smooth.cpp b/plugins/LV2/src/Smooth/Smooth.cpp new file mode 100644 index 0000000..9e796b4 --- /dev/null +++ b/plugins/LV2/src/Smooth/Smooth.cpp @@ -0,0 +1,59 @@ +#include "Smooth.h" +#include <iostream> +#include <lv2wrapper.h> + +Smooth::Smooth(double rate) + : LV2Plugin(rate) +{ +} + +void Smooth::activate() +{ + A = 0.0; + B = 1.0; + C = 1.0; + + lastSampleAL = 0.0; + gainAL = 1.0; + lastSampleBL = 0.0; + gainBL = 1.0; + lastSampleCL = 0.0; + gainCL = 1.0; + lastSampleDL = 0.0; + gainDL = 1.0; + lastSampleEL = 0.0; + gainEL = 1.0; + + lastSampleAR = 0.0; + gainAR = 1.0; + lastSampleBR = 0.0; + gainBR = 1.0; + lastSampleCR = 0.0; + gainCR = 1.0; + lastSampleDR = 0.0; + gainDR = 1.0; + lastSampleER = 0.0; + gainER = 1.0; + + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Smooth::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/Smooth/SmoothProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Smooth> plugin; diff --git a/plugins/LV2/src/Smooth/Smooth.h b/plugins/LV2/src/Smooth/Smooth.h new file mode 100644 index 0000000..55a6c9e --- /dev/null +++ b/plugins/LV2/src/Smooth/Smooth.h @@ -0,0 +1,56 @@ +#ifndef __Smooth_H +#define __Smooth_H + +#include <lv2plugin.h> + +class Smooth : public LV2Plugin<3> { +public: + Smooth(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/smooth"; + +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 lastSampleAL; + double gainAL; + double lastSampleBL; + double gainBL; + double lastSampleCL; + double gainCL; + double lastSampleDL; + double gainDL; + double lastSampleEL; + double gainEL; + + double lastSampleAR; + double gainAR; + double lastSampleBR; + double gainBR; + double lastSampleCR; + double gainCR; + double lastSampleDR; + double gainDR; + double lastSampleER; + double gainER; + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/Smooth/Smooth.ttl b/plugins/LV2/src/Smooth/Smooth.ttl new file mode 100644 index 0000000..706de11 --- /dev/null +++ b/plugins/LV2/src/Smooth/Smooth.ttl @@ -0,0 +1,60 @@ +# Airwindows Smooth 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/smooth> + 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 "Smooth" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 1 ; + lv2:symbol "B" ; + lv2:name "Output" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Dry/Wet" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "in_l" ; + lv2:name "In left" ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 4 ; + lv2:symbol "in_r" ; + lv2:name "In right" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 5 ; + lv2:symbol "out_l" ; + lv2:name "Out left" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 6 ; + lv2:symbol "out_r" ; + lv2:name "Out right" ; + ] . diff --git a/plugins/LV2/src/Smooth/manifest.ttl.in b/plugins/LV2/src/Smooth/manifest.ttl.in new file mode 100644 index 0000000..8581e3d --- /dev/null +++ b/plugins/LV2/src/Smooth/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:smooth + a lv2:Plugin ; + doap:name "Airwindows Smooth" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Smooth@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Smooth.ttl> . diff --git a/plugins/LV2/src/SoftGate/SoftGate.cpp b/plugins/LV2/src/SoftGate/SoftGate.cpp new file mode 100644 index 0000000..87dc46d --- /dev/null +++ b/plugins/LV2/src/SoftGate/SoftGate.cpp @@ -0,0 +1,41 @@ +#include "SoftGate.h" +#include <iostream> +#include <lv2wrapper.h> + +SoftGate::SoftGate(double rate) + : LV2Plugin(rate) +{ +} + +void SoftGate::activate() +{ + A = 0.5; + B = 0.5; + C = 0.0; + storedL[0] = storedL[1] = 0.0; + diffL = 0.0; + storedR[0] = storedR[1] = 0.0; + diffR = 0.0; + gate = 1.1; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void SoftGate::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/SoftGate/SoftGateProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SoftGate> plugin; diff --git a/plugins/LV2/src/SoftGate/SoftGate.h b/plugins/LV2/src/SoftGate/SoftGate.h new file mode 100644 index 0000000..7119a49 --- /dev/null +++ b/plugins/LV2/src/SoftGate/SoftGate.h @@ -0,0 +1,41 @@ +#ifndef __SoftGate_H +#define __SoftGate_H + +#include <lv2plugin.h> + +class SoftGate : public LV2Plugin<3> { +public: + SoftGate(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/softgate"; + +private: + /* + * These are the original DSP functions from the VST plugin. + * They need to be called from the LV2 plugins `run` function. + */ + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + /* + * Members needed by the processing functions. + */ + + uint32_t fpd; + //default stuff + double storedL[2]; + double diffL; + double storedR[2]; + double diffR; + double gate; + + float A; + float B; + float C; + +}; + +#endif diff --git a/plugins/LV2/src/SoftGate/SoftGate.ttl b/plugins/LV2/src/SoftGate/SoftGate.ttl new file mode 100644 index 0000000..25fd9dc --- /dev/null +++ b/plugins/LV2/src/SoftGate/SoftGate.ttl @@ -0,0 +1,60 @@ +# Airwindows SoftGate 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/softgate> + 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 "Darken" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Silence" ; + 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/SoftGate/manifest.ttl.in b/plugins/LV2/src/SoftGate/manifest.ttl.in new file mode 100644 index 0000000..4147cc9 --- /dev/null +++ b/plugins/LV2/src/SoftGate/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:softgate + a lv2:Plugin ; + doap:name "Airwindows SoftGate" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SoftGate@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SoftGate.ttl> . diff --git a/plugins/LV2/src/SpatializeDither/SpatializeDither.cpp b/plugins/LV2/src/SpatializeDither/SpatializeDither.cpp new file mode 100644 index 0000000..9614cc2 --- /dev/null +++ b/plugins/LV2/src/SpatializeDither/SpatializeDither.cpp @@ -0,0 +1,33 @@ +#include "SpatializeDither.h" +#include <iostream> +#include <lv2wrapper.h> + +SpatializeDither::SpatializeDither(double rate) + : LV2Plugin(rate) +{ +} + +void SpatializeDither::activate() +{ + contingentErrL = 0.0; + contingentErrR = 0.0; + flip = false; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void SpatializeDither::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/SpatializeDither/SpatializeDitherProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SpatializeDither> plugin; diff --git a/plugins/LV2/src/SpatializeDither/SpatializeDither.h b/plugins/LV2/src/SpatializeDither/SpatializeDither.h new file mode 100644 index 0000000..446712c --- /dev/null +++ b/plugins/LV2/src/SpatializeDither/SpatializeDither.h @@ -0,0 +1,32 @@ +#ifndef __SpatializeDither_H +#define __SpatializeDither_H + +#include <lv2plugin.h> + +class SpatializeDither : public LV2Plugin<0> { +public: + SpatializeDither(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/spatializedither"; + +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 contingentErrL; + double contingentErrR; + bool flip; +}; + +#endif diff --git a/plugins/LV2/src/SpatializeDither/SpatializeDither.ttl b/plugins/LV2/src/SpatializeDither/SpatializeDither.ttl new file mode 100644 index 0000000..e8c8021 --- /dev/null +++ b/plugins/LV2/src/SpatializeDither/SpatializeDither.ttl @@ -0,0 +1,38 @@ +# Airwindows SpatializeDither 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/spatializedither> + 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/SpatializeDither/manifest.ttl.in b/plugins/LV2/src/SpatializeDither/manifest.ttl.in new file mode 100644 index 0000000..cc119a8 --- /dev/null +++ b/plugins/LV2/src/SpatializeDither/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:spatializedither + a lv2:Plugin ; + doap:name "Airwindows SpatializeDither" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SpatializeDither@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SpatializeDither.ttl> . diff --git a/plugins/LV2/src/Spiral/Spiral.cpp b/plugins/LV2/src/Spiral/Spiral.cpp new file mode 100644 index 0000000..2c0a99f --- /dev/null +++ b/plugins/LV2/src/Spiral/Spiral.cpp @@ -0,0 +1,32 @@ +#include "Spiral.h" +#include <iostream> +#include <lv2wrapper.h> + +Spiral::Spiral(double rate) + : LV2Plugin(rate) +{ +} + +void Spiral::activate() +{ + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Spiral::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/Spiral/SpiralProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Spiral> plugin; diff --git a/plugins/LV2/src/Spiral/Spiral.h b/plugins/LV2/src/Spiral/Spiral.h new file mode 100644 index 0000000..a7a16bb --- /dev/null +++ b/plugins/LV2/src/Spiral/Spiral.h @@ -0,0 +1,32 @@ +#ifndef __Spiral_H +#define __Spiral_H + +#include <lv2plugin.h> + +class Spiral : public LV2Plugin<0> { +public: + Spiral(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/spiral"; + +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 +}; + +#endif diff --git a/plugins/LV2/src/Spiral/Spiral.ttl b/plugins/LV2/src/Spiral/Spiral.ttl new file mode 100644 index 0000000..e2c2935 --- /dev/null +++ b/plugins/LV2/src/Spiral/Spiral.ttl @@ -0,0 +1,38 @@ +# Airwindows Spiral 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/spiral> + 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/Spiral/manifest.ttl.in b/plugins/LV2/src/Spiral/manifest.ttl.in new file mode 100644 index 0000000..0c6bb67 --- /dev/null +++ b/plugins/LV2/src/Spiral/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:spiral + a lv2:Plugin ; + doap:name "Airwindows Spiral" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Spiral@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Spiral.ttl> . diff --git a/plugins/LV2/src/Spiral2/Spiral2.cpp b/plugins/LV2/src/Spiral2/Spiral2.cpp new file mode 100644 index 0000000..7d6ff22 --- /dev/null +++ b/plugins/LV2/src/Spiral2/Spiral2.cpp @@ -0,0 +1,49 @@ +#include "Spiral2.h" +#include <iostream> +#include <lv2wrapper.h> + +Spiral2::Spiral2(double rate) + : LV2Plugin(rate) +{ +} + +void Spiral2::activate() +{ + A = 0.5; + B = 0.0; + C = 0.5; + D = 1.0; + E = 1.0; + iirSampleAL = 0.0; + iirSampleBL = 0.0; + prevSampleL = 0.0; + fpNShapeL = 0.0; + + iirSampleAR = 0.0; + iirSampleBR = 0.0; + prevSampleR = 0.0; + fpNShapeR = 0.0; + flip = true; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Spiral2::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/Spiral2/Spiral2Proc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Spiral2> plugin; diff --git a/plugins/LV2/src/Spiral2/Spiral2.h b/plugins/LV2/src/Spiral2/Spiral2.h new file mode 100644 index 0000000..f9e7e8b --- /dev/null +++ b/plugins/LV2/src/Spiral2/Spiral2.h @@ -0,0 +1,47 @@ +#ifndef __Spiral2_H +#define __Spiral2_H + +#include <lv2plugin.h> + +class Spiral2 : public LV2Plugin<5> { +public: + Spiral2(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/spiral2"; + +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 iirSampleAL; + long double iirSampleBL; + long double prevSampleL; + long double fpNShapeL; + + long double iirSampleAR; + long double iirSampleBR; + long double prevSampleR; + long double fpNShapeR; + bool flip; + //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/Spiral2/Spiral2.ttl b/plugins/LV2/src/Spiral2/Spiral2.ttl new file mode 100644 index 0000000..fb9bb36 --- /dev/null +++ b/plugins/LV2/src/Spiral2/Spiral2.ttl @@ -0,0 +1,76 @@ +# Airwindows Spiral2 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/spiral2> + 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 "Highpass" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 2 ; + lv2:symbol "C" ; + lv2:name "Presence" ; + 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 "Output" ; + 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 "Dry/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/Spiral2/manifest.ttl.in b/plugins/LV2/src/Spiral2/manifest.ttl.in new file mode 100644 index 0000000..585f2d3 --- /dev/null +++ b/plugins/LV2/src/Spiral2/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:spiral2 + a lv2:Plugin ; + doap:name "Airwindows Spiral2" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Spiral2@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Spiral2.ttl> . diff --git a/plugins/LV2/src/Srsly/Srsly.cpp b/plugins/LV2/src/Srsly/Srsly.cpp new file mode 100644 index 0000000..ca20182 --- /dev/null +++ b/plugins/LV2/src/Srsly/Srsly.cpp @@ -0,0 +1,51 @@ +#include "Srsly.h" +#include <iostream> +#include <lv2wrapper.h> + +Srsly::Srsly(double rate) + : LV2Plugin(rate) +{ +} + +void Srsly::activate() +{ + for (int x = 0; x < 11; x++) { + biquadM2[x] = 0.0; + biquadM7[x] = 0.0; + biquadM10[x] = 0.0; + biquadL3[x] = 0.0; + biquadL7[x] = 0.0; + biquadR3[x] = 0.0; + biquadR7[x] = 0.0; + biquadS3[x] = 0.0; + biquadS5[x] = 0.0; + } + A = 0.0; + B = 0.0; + C = 1.0; + D = 0.5; + E = 1.0; + fpd = 17; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Srsly::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/Srsly/SrslyProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Srsly> plugin; diff --git a/plugins/LV2/src/Srsly/Srsly.h b/plugins/LV2/src/Srsly/Srsly.h new file mode 100644 index 0000000..246f262 --- /dev/null +++ b/plugins/LV2/src/Srsly/Srsly.h @@ -0,0 +1,49 @@ +#ifndef __Srsly_H +#define __Srsly_H + +#include <lv2plugin.h> + +class Srsly : public LV2Plugin<5> { +public: + Srsly(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/srsly"; + +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 biquadM2[11]; + long double biquadM7[11]; + long double biquadM10[11]; + + long double biquadL3[11]; + long double biquadL7[11]; + long double biquadR3[11]; + long double biquadR7[11]; + + long double biquadS3[11]; + long double biquadS5[11]; + + uint32_t fpd; + //default stuff + + float A; + float B; + float C; + float D; + float E; +}; + +#endif diff --git a/plugins/LV2/src/Srsly/Srsly.ttl b/plugins/LV2/src/Srsly/Srsly.ttl new file mode 100644 index 0000000..02b7474 --- /dev/null +++ b/plugins/LV2/src/Srsly/Srsly.ttl @@ -0,0 +1,76 @@ +# Airwindows Srsly 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/srsly> + 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 "Center" ; + 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 "Space" ; + 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 "Level" ; + lv2:default 0.5 ; + lv2:minimum 0.0 ; + lv2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 3 ; + lv2:symbol "D" ; + lv2:name "Q" ; + 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 "Dry/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/Srsly/manifest.ttl.in b/plugins/LV2/src/Srsly/manifest.ttl.in new file mode 100644 index 0000000..450a562 --- /dev/null +++ b/plugins/LV2/src/Srsly/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:srsly + a lv2:Plugin ; + doap:name "Airwindows Srsly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Srsly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Srsly.ttl> . diff --git a/plugins/LV2/src/StarChild/StarChild.cpp b/plugins/LV2/src/StarChild/StarChild.cpp new file mode 100644 index 0000000..11b0bf7 --- /dev/null +++ b/plugins/LV2/src/StarChild/StarChild.cpp @@ -0,0 +1,87 @@ +#include "StarChild.h" +#include <iostream> +#include <lv2wrapper.h> + +StarChild::StarChild(double rate) + : LV2Plugin(rate) +{ +} + +void StarChild::activate() +{ + A = 1.0; + B = 0.7; + C = 0.2; + + int count; + + for(count = 0; count < 44101; count++) {d[count] = 0.0;} + + for(count = 0; count < 11; count++) {wearL[count] = 0.0; wearR[count] = 0.0; factor[count] = 0.0;} + + wearLPrev = 0.0; wearRPrev = 0.0; + + p[1] = 11; p[2] = 13; p[3] = 17; p[4] = 19; p[5] = 23; p[6] = 29; p[7] = 31; p[8] = 37; p[9] = 41; + p[10] = 43; p[11] = 47; p[12] = 53; p[13] = 59; p[14] = 61; p[15] = 67; p[16] = 71; p[17] = 73; p[18] = 79; p[19] = 83; p[20] = 89; + p[21] = 97; p[22] = 101; p[23] = 103; p[24] = 107; p[25] = 109; p[26] = 113; p[27] = 127; p[28] = 131; p[29] = 137; p[30] = 139; + p[31] = 149; p[32] = 151; p[33] = 157; p[34] = 163; p[35] = 167; p[36] = 173; p[37] = 179; p[38] = 181; p[39] = 191; p[40] = 193; + p[41] = 197; p[42] = 199; p[43] = 211; p[44] = 223; p[45] = 227; p[46] = 229; p[47] = 233; p[48] = 239; p[49] = 241; p[50] = 251; + p[51] = 257; p[52] = 263; p[53] = 269; p[54] = 271; p[55] = 277; p[56] = 281; p[57] = 283; p[58] = 293; p[59] = 307; p[60] = 311; + p[61] = 313; p[62] = 317; p[63] = 331; p[64] = 337; p[65] = 347; p[66] = 349; p[67] = 353; p[68] = 359; p[69] = 367; p[70] = 373; + p[71] = 379; p[72] = 383; p[73] = 389; p[74] = 397; p[75] = 401; p[76] = 409; p[77] = 419; p[78] = 421; p[79] = 431; p[80] = 433; + p[81] = 439; p[82] = 443; p[83] = 449; p[84] = 457; p[85] = 461; p[86] = 463; p[87] = 467; p[88] = 479; p[89] = 487; p[90] = 491; + p[91] = 499; p[92] = 503; p[93] = 509; p[94] = 521; p[95] = 523; p[96] = 541; p[97] = 547; p[98] = 557; p[99] = 563; p[100] = 569; + p[101] = 571; p[102] = 577; p[103] = 587; p[104] = 593; p[105] = 599; p[106] = 601; p[107] = 607; p[108] = 613; p[109] = 617; p[110] = 619; + p[111] = 631; p[112] = 641; p[113] = 643; p[114] = 647; p[115] = 653; p[116] = 659; p[117] = 661; p[118] = 673; p[119] = 677; p[120] = 683; + p[121] = 691; p[122] = 701; p[123] = 709; p[124] = 719; p[125] = 727; p[126] = 733; p[127] = 739; p[128] = 743; p[129] = 751; p[130] = 757; + p[131] = 761; p[132] = 769; p[133] = 773; p[134] = 787; p[135] = 797; p[136] = 809; p[137] = 811; p[138] = 821; p[139] = 823; p[140] = 827; + p[141] = 829; p[142] = 839; p[143] = 853; p[144] = 857; p[145] = 859; p[146] = 863; p[147] = 877; p[148] = 881; p[149] = 883; p[150] = 887; + p[151] = 907; p[152] = 911; p[153] = 919; p[154] = 929; p[155] = 937; p[156] = 941; p[157] = 947; p[158] = 953; p[159] = 967; p[160] = 971; + p[161] = 977; p[162] = 983; p[163] = 991; p[164] = 997; p[165] = 998; p[166] = 999; + + int assign; + for(count = 0; count < 165; count++) + { + t[count] = p[count]; + //these get assigned again but we'll give them real values in case of trouble. They are 32 bit unsigned ints + assign = p[count] % 10; + //give us the 1, 3, 7 or 9 on the end + + switch (assign){ + case 1: outL[count] = 0.0; outR[count] = p[count]; break; + case 3: outL[count] = p[count] * 0.25; outR[count] = p[count] * 0.75; break; + case 7: outL[count] = p[count] * 0.75; outR[count] = p[count] * 0.25; break; + case 9: outL[count] = p[count]; outR[count] = 0.0; break; + } + //this gives us a set of stereo offsets that are always the same. When building our delay outputs, + //we multiply our -1 to 1 float values by this and add the result to a simple signed int. + //The result gives us a coarser and coarser output the fewer taps we have, + //and we divide the result by count*count to drop the volume down again. + } + pitchCounter = 2; + increment = 1; + dutyCycle = 1; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void StarChild::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/StarChild/StarChildProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<StarChild> plugin; diff --git a/plugins/LV2/src/StarChild/StarChild.h b/plugins/LV2/src/StarChild/StarChild.h new file mode 100644 index 0000000..ee4d949 --- /dev/null +++ b/plugins/LV2/src/StarChild/StarChild.h @@ -0,0 +1,54 @@ +#ifndef __StarChild_H +#define __StarChild_H + +#include <lv2plugin.h> + +class StarChild : public LV2Plugin<3> { +public: + StarChild(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/starchild"; + +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 d[45102]; + int dCount; + + int p[171]; + int t[171]; + double outL[171]; + double outR[171]; + int pitchCounter; + int increment; + int dutyCycle; + + double wearL[11]; + double wearR[11]; + double factor[11]; + double wearLPrev; + double wearRPrev; + + float A; + float B; + float C; + +}; + +#endif diff --git a/plugins/LV2/src/StarChild/StarChild.ttl b/plugins/LV2/src/StarChild/StarChild.ttl new file mode 100644 index 0000000..cd1d082 --- /dev/null +++ b/plugins/LV2/src/StarChild/StarChild.ttl @@ -0,0 +1,60 @@ +# Airwindows StarChild 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/starchild> + 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 "Sustain" ; + 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 "Grain" ; + 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/StarChild/manifest.ttl.in b/plugins/LV2/src/StarChild/manifest.ttl.in new file mode 100644 index 0000000..4cd0a97 --- /dev/null +++ b/plugins/LV2/src/StarChild/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:starchild + a lv2:Plugin ; + doap:name "Airwindows StarChild" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <StarChild@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <StarChild.ttl> . diff --git a/plugins/LV2/src/StereoFX/StereoFX.cpp b/plugins/LV2/src/StereoFX/StereoFX.cpp new file mode 100644 index 0000000..cb99922 --- /dev/null +++ b/plugins/LV2/src/StereoFX/StereoFX.cpp @@ -0,0 +1,40 @@ +#include "StereoFX.h" +#include <iostream> +#include <lv2wrapper.h> + +StereoFX::StereoFX(double rate) + : LV2Plugin(rate) +{ +} + +void StereoFX::activate() +{ + A = 0.0; + B = 0.0; + C = 0.0; + iirSampleA = 0.0; + iirSampleB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + flip = false; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void StereoFX::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/StereoFX/StereoFXProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<StereoFX> plugin; diff --git a/plugins/LV2/src/StereoFX/StereoFX.h b/plugins/LV2/src/StereoFX/StereoFX.h new file mode 100644 index 0000000..4752afc --- /dev/null +++ b/plugins/LV2/src/StereoFX/StereoFX.h @@ -0,0 +1,39 @@ +#ifndef __StereoFX_H +#define __StereoFX_H + +#include <lv2plugin.h> + +class StereoFX : public LV2Plugin<3> { +public: + StereoFX(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/stereofx"; + +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 iirSampleA; + double iirSampleB; + long double fpNShapeL; + long double fpNShapeR; + bool flip; + //default stuff + + float A; + float B; + float C; +}; + +#endif diff --git a/plugins/LV2/src/StereoFX/StereoFX.ttl b/plugins/LV2/src/StereoFX/StereoFX.ttl new file mode 100644 index 0000000..d6bbba9 --- /dev/null +++ b/plugins/LV2/src/StereoFX/StereoFX.ttl @@ -0,0 +1,60 @@ +# Airwindows StereoFX 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/stereofx> + 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 "Wide" ; + 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 "MonoBs" ; + 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 "CSquish" ; + 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/StereoFX/manifest.ttl.in b/plugins/LV2/src/StereoFX/manifest.ttl.in new file mode 100644 index 0000000..22100bb --- /dev/null +++ b/plugins/LV2/src/StereoFX/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:stereofx + a lv2:Plugin ; + doap:name "Airwindows StereoFX" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <StereoFX@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <StereoFX.ttl> . diff --git a/plugins/LV2/src/StudioTan/StudioTan.cpp b/plugins/LV2/src/StudioTan/StudioTan.cpp new file mode 100644 index 0000000..a04e750 --- /dev/null +++ b/plugins/LV2/src/StudioTan/StudioTan.cpp @@ -0,0 +1,61 @@ +#include "StudioTan.h" +#include <iostream> +#include <lv2wrapper.h> + +StudioTan::StudioTan(double rate) + : LV2Plugin(rate) +{ +} + +void StudioTan::activate() +{ + A = 0.0; + + bynL[0] = 1000.0; + bynL[1] = 301.0; + bynL[2] = 176.0; + bynL[3] = 125.0; + bynL[4] = 97.0; + bynL[5] = 79.0; + bynL[6] = 67.0; + bynL[7] = 58.0; + bynL[8] = 51.0; + bynL[9] = 46.0; + bynL[10] = 1000.0; + noiseShapingL = 0.0; + lastSampleL = 0.0; + lastSample2L = 0.0; + + bynR[0] = 1000.0; + bynR[1] = 301.0; + bynR[2] = 176.0; + bynR[3] = 125.0; + bynR[4] = 97.0; + bynR[5] = 79.0; + bynR[6] = 67.0; + bynR[7] = 58.0; + bynR[8] = 51.0; + bynR[9] = 46.0; + bynR[10] = 1000.0; + noiseShapingR = 0.0; + lastSampleR = 0.0; + lastSample2R = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void StudioTan::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/StudioTan/StudioTanProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<StudioTan> plugin; diff --git a/plugins/LV2/src/StudioTan/StudioTan.h b/plugins/LV2/src/StudioTan/StudioTan.h new file mode 100644 index 0000000..84218f8 --- /dev/null +++ b/plugins/LV2/src/StudioTan/StudioTan.h @@ -0,0 +1,41 @@ +#ifndef __StudioTan_H +#define __StudioTan_H + +#include <lv2plugin.h> + +class StudioTan : public LV2Plugin<1> { +public: + StudioTan(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/studiotan"; + +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 bynL[13]; + long double noiseShapingL; + long double lastSampleL; + long double lastSample2L; + + long double bynR[13]; + long double noiseShapingR; + long double lastSampleR; + long double lastSample2R; + + float A; + +}; + +#endif diff --git a/plugins/LV2/src/StudioTan/StudioTan.ttl b/plugins/LV2/src/StudioTan/StudioTan.ttl new file mode 100644 index 0000000..b123c10 --- /dev/null +++ b/plugins/LV2/src/StudioTan/StudioTan.ttl @@ -0,0 +1,44 @@ +# Airwindows StudioTan 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/studiotan> + 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 "Quantzr" ; + 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/StudioTan/manifest.ttl.in b/plugins/LV2/src/StudioTan/manifest.ttl.in new file mode 100644 index 0000000..8e6c3ab --- /dev/null +++ b/plugins/LV2/src/StudioTan/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:studiotan + a lv2:Plugin ; + doap:name "Airwindows StudioTan" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <StudioTan@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <StudioTan.ttl> . diff --git a/plugins/LV2/src/SubsOnly/SubsOnly.cpp b/plugins/LV2/src/SubsOnly/SubsOnly.cpp new file mode 100644 index 0000000..943708c --- /dev/null +++ b/plugins/LV2/src/SubsOnly/SubsOnly.cpp @@ -0,0 +1,82 @@ +#include "SubsOnly.h" +#include <iostream> +#include <lv2wrapper.h> + +SubsOnly::SubsOnly(double rate) + : LV2Plugin(rate) +{ +} + +void SubsOnly::activate() +{ + 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; + +} + +void SubsOnly::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/SubsOnly/SubsOnlyProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SubsOnly> plugin; diff --git a/plugins/LV2/src/SubsOnly/SubsOnly.h b/plugins/LV2/src/SubsOnly/SubsOnly.h new file mode 100644 index 0000000..ec1588f --- /dev/null +++ b/plugins/LV2/src/SubsOnly/SubsOnly.h @@ -0,0 +1,83 @@ +#ifndef __SubsOnly_H +#define __SubsOnly_H + +#include <lv2plugin.h> + +class SubsOnly : public LV2Plugin<0> { +public: + SubsOnly(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/subsonly"; + +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 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; + +}; + +#endif diff --git a/plugins/LV2/src/SubsOnly/SubsOnly.ttl b/plugins/LV2/src/SubsOnly/SubsOnly.ttl new file mode 100644 index 0000000..2e92619 --- /dev/null +++ b/plugins/LV2/src/SubsOnly/SubsOnly.ttl @@ -0,0 +1,38 @@ +# Airwindows SubsOnly 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/subsonly> + 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/SubsOnly/manifest.ttl.in b/plugins/LV2/src/SubsOnly/manifest.ttl.in new file mode 100644 index 0000000..8e7192e --- /dev/null +++ b/plugins/LV2/src/SubsOnly/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:subsonly + a lv2:Plugin ; + doap:name "Airwindows SubsOnly" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SubsOnly@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SubsOnly.ttl> . diff --git a/plugins/LV2/src/Surge/Surge.cpp b/plugins/LV2/src/Surge/Surge.cpp new file mode 100644 index 0000000..8f190b7 --- /dev/null +++ b/plugins/LV2/src/Surge/Surge.cpp @@ -0,0 +1,41 @@ +#include "Surge.h" +#include <iostream> +#include <lv2wrapper.h> + +Surge::Surge(double rate) + : LV2Plugin(rate) +{ +} + +void Surge::activate() +{ + fpNShapeL = 0.0; + fpNShapeR = 0.0; + flip = true; + chaseA = 0.0; + chaseB = 0.0; + chaseC = 0.0; + chaseD = 0.0; + chaseMax = 0.0; + A = 0.0; + B = 1.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void Surge::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/Surge/SurgeProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<Surge> plugin; diff --git a/plugins/LV2/src/Surge/Surge.h b/plugins/LV2/src/Surge/Surge.h new file mode 100644 index 0000000..8bbef5d --- /dev/null +++ b/plugins/LV2/src/Surge/Surge.h @@ -0,0 +1,40 @@ +#ifndef __Surge_H +#define __Surge_H + +#include <lv2plugin.h> + +class Surge : public LV2Plugin<2> { +public: + Surge(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/surge"; + +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 flip; + long double chaseA; + long double chaseB; + long double chaseC; + long double chaseD; + long double chaseMax; + + float A; + float B; +}; + +#endif diff --git a/plugins/LV2/src/Surge/Surge.ttl b/plugins/LV2/src/Surge/Surge.ttl new file mode 100644 index 0000000..524b58c --- /dev/null +++ b/plugins/LV2/src/Surge/Surge.ttl @@ -0,0 +1,52 @@ +# Airwindows Surge 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/surge> + 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 "Surge" ; + 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/Surge/manifest.ttl.in b/plugins/LV2/src/Surge/manifest.ttl.in new file mode 100644 index 0000000..14a8133 --- /dev/null +++ b/plugins/LV2/src/Surge/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:surge + a lv2:Plugin ; + doap:name "Airwindows Surge" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <Surge@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <Surge.ttl> . diff --git a/plugins/LV2/src/SurgeTide/SurgeTide.cpp b/plugins/LV2/src/SurgeTide/SurgeTide.cpp new file mode 100644 index 0000000..ba440e5 --- /dev/null +++ b/plugins/LV2/src/SurgeTide/SurgeTide.cpp @@ -0,0 +1,41 @@ +#include "SurgeTide.h" +#include <iostream> +#include <lv2wrapper.h> + +SurgeTide::SurgeTide(double rate) + : LV2Plugin(rate) +{ +} + +void SurgeTide::activate() +{ + A = 0.5; + B = 0.3; + C = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + flip = true; + chaseA = 0.0; + chaseB = 0.0; + chaseC = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + +} + +void SurgeTide::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/SurgeTide/SurgeTideProc.cpp" + +// Create the LV2Wrapper and register the plugin +LV2Wrapper<SurgeTide> plugin; diff --git a/plugins/LV2/src/SurgeTide/SurgeTide.h b/plugins/LV2/src/SurgeTide/SurgeTide.h new file mode 100644 index 0000000..95ce200 --- /dev/null +++ b/plugins/LV2/src/SurgeTide/SurgeTide.h @@ -0,0 +1,40 @@ +#ifndef __SurgeTide_H +#define __SurgeTide_H + +#include <lv2plugin.h> + +class SurgeTide : public LV2Plugin<3> { +public: + SurgeTide(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/surgetide"; + +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 flip; + long double chaseA; + long double chaseB; + long double chaseC; + + float A; + float B; + float C; + +}; + +#endif diff --git a/plugins/LV2/src/SurgeTide/SurgeTide.ttl b/plugins/LV2/src/SurgeTide/SurgeTide.ttl new file mode 100644 index 0000000..2328345 --- /dev/null +++ b/plugins/LV2/src/SurgeTide/SurgeTide.ttl @@ -0,0 +1,60 @@ +# Airwindows SurgeTide 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/surgetide> + 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 "SurgeNode" ; + 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 "SurgeRate" ; + 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/SurgeTide/manifest.ttl.in b/plugins/LV2/src/SurgeTide/manifest.ttl.in new file mode 100644 index 0000000..c4dc3d9 --- /dev/null +++ b/plugins/LV2/src/SurgeTide/manifest.ttl.in @@ -0,0 +1,6 @@ +airwindows:surgetide + a lv2:Plugin ; + doap:name "Airwindows SurgeTide" ; + doap:license <http://opensource.org/licenses/mit> ; + lv2:binary <SurgeTide@CMAKE_SHARED_LIBRARY_SUFFIX@> ; + rdfs:seeAlso <SurgeTide.ttl> . |