aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xplugins/LV2/CMakeLists.txt202
-rw-r--r--plugins/LV2/manifest.ttl.in672
-rw-r--r--plugins/LV2/src/EQ/EQ.cpp138
-rw-r--r--plugins/LV2/src/EQ/EQ.h135
-rw-r--r--plugins/LV2/src/EQ/EQ.ttl100
-rw-r--r--plugins/LV2/src/EQ/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/EdIsDim/EdIsDim.cpp33
-rw-r--r--plugins/LV2/src/EdIsDim/EdIsDim.h34
-rw-r--r--plugins/LV2/src/EdIsDim/EdIsDim.ttl44
-rw-r--r--plugins/LV2/src/EdIsDim/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Elation/Elation.cpp45
-rw-r--r--plugins/LV2/src/Elation/Elation.h55
-rw-r--r--plugins/LV2/src/Elation/Elation.ttl68
-rw-r--r--plugins/LV2/src/Elation/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/ElectroHat/ElectroHat.cpp49
-rw-r--r--plugins/LV2/src/ElectroHat/ElectroHat.h47
-rw-r--r--plugins/LV2/src/ElectroHat/ElectroHat.ttl76
-rw-r--r--plugins/LV2/src/ElectroHat/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Energy/Energy.cpp188
-rw-r--r--plugins/LV2/src/Energy/Energy.h189
-rw-r--r--plugins/LV2/src/Energy/Energy.ttl108
-rw-r--r--plugins/LV2/src/Energy/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Ensemble/Ensemble.cpp52
-rw-r--r--plugins/LV2/src/Ensemble/Ensemble.h51
-rw-r--r--plugins/LV2/src/Ensemble/Ensemble.ttl68
-rw-r--r--plugins/LV2/src/Ensemble/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/EveryTrim/EveryTrim.cpp41
-rw-r--r--plugins/LV2/src/EveryTrim/EveryTrim.h39
-rw-r--r--plugins/LV2/src/EveryTrim/EveryTrim.ttl76
-rw-r--r--plugins/LV2/src/EveryTrim/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Facet/Facet.cpp32
-rw-r--r--plugins/LV2/src/Facet/Facet.h33
-rw-r--r--plugins/LV2/src/Facet/Facet.ttl44
-rw-r--r--plugins/LV2/src/Facet/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/FathomFive/FathomFive.cpp51
-rw-r--r--plugins/LV2/src/FathomFive/FathomFive.h48
-rw-r--r--plugins/LV2/src/FathomFive/FathomFive.ttl68
-rw-r--r--plugins/LV2/src/FathomFive/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Floor/Floor.cpp61
-rw-r--r--plugins/LV2/src/Floor/Floor.h60
-rw-r--r--plugins/LV2/src/Floor/Floor.ttl60
-rw-r--r--plugins/LV2/src/Floor/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Focus/Focus.cpp41
-rw-r--r--plugins/LV2/src/Focus/Focus.h40
-rw-r--r--plugins/LV2/src/Focus/Focus.ttl76
-rw-r--r--plugins/LV2/src/Focus/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Fracture/Fracture.cpp39
-rw-r--r--plugins/LV2/src/Fracture/Fracture.h38
-rw-r--r--plugins/LV2/src/Fracture/Fracture.ttl68
-rw-r--r--plugins/LV2/src/Fracture/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/FromTape/FromTape.cpp106
-rw-r--r--plugins/LV2/src/FromTape/FromTape.h103
-rw-r--r--plugins/LV2/src/FromTape/FromTape.ttl76
-rw-r--r--plugins/LV2/src/FromTape/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Gatelope/Gatelope.cpp52
-rw-r--r--plugins/LV2/src/Gatelope/Gatelope.h50
-rw-r--r--plugins/LV2/src/Gatelope/Gatelope.ttl76
-rw-r--r--plugins/LV2/src/Gatelope/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Golem/Golem.cpp40
-rw-r--r--plugins/LV2/src/Golem/Golem.h39
-rw-r--r--plugins/LV2/src/Golem/Golem.ttl60
-rw-r--r--plugins/LV2/src/Golem/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Gringer/Gringer.cpp32
-rw-r--r--plugins/LV2/src/Gringer/Gringer.h38
-rw-r--r--plugins/LV2/src/Gringer/Gringer.ttl38
-rw-r--r--plugins/LV2/src/Gringer/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/GrooveWear/GrooveWear.cpp57
-rw-r--r--plugins/LV2/src/GrooveWear/GrooveWear.h55
-rw-r--r--plugins/LV2/src/GrooveWear/GrooveWear.ttl52
-rw-r--r--plugins/LV2/src/GrooveWear/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/GuitarConditioner/GuitarConditioner.cpp46
-rw-r--r--plugins/LV2/src/GuitarConditioner/GuitarConditioner.h47
-rw-r--r--plugins/LV2/src/GuitarConditioner/GuitarConditioner.ttl38
-rw-r--r--plugins/LV2/src/GuitarConditioner/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/HardVacuum/HardVacuum.cpp43
-rw-r--r--plugins/LV2/src/HardVacuum/HardVacuum.h42
-rw-r--r--plugins/LV2/src/HardVacuum/HardVacuum.ttl76
-rw-r--r--plugins/LV2/src/HardVacuum/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/HermeTrim/HermeTrim.cpp41
-rw-r--r--plugins/LV2/src/HermeTrim/HermeTrim.h39
-rw-r--r--plugins/LV2/src/HermeTrim/HermeTrim.ttl76
-rw-r--r--plugins/LV2/src/HermeTrim/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Hermepass/Hermepass.cpp54
-rw-r--r--plugins/LV2/src/Hermepass/Hermepass.h54
-rw-r--r--plugins/LV2/src/Hermepass/Hermepass.ttl52
-rw-r--r--plugins/LV2/src/Hermepass/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/HighGlossDither/HighGlossDither.cpp32
-rw-r--r--plugins/LV2/src/HighGlossDither/HighGlossDither.h31
-rw-r--r--plugins/LV2/src/HighGlossDither/HighGlossDither.ttl38
-rw-r--r--plugins/LV2/src/HighGlossDither/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/HighImpact/HighImpact.cpp39
-rw-r--r--plugins/LV2/src/HighImpact/HighImpact.h40
-rw-r--r--plugins/LV2/src/HighImpact/HighImpact.ttl60
-rw-r--r--plugins/LV2/src/HighImpact/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Highpass/Highpass.cpp42
-rw-r--r--plugins/LV2/src/Highpass/Highpass.h41
-rw-r--r--plugins/LV2/src/Highpass/Highpass.ttl60
-rw-r--r--plugins/LV2/src/Highpass/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Highpass2/Highpass2.cpp58
-rw-r--r--plugins/LV2/src/Highpass2/Highpass2.h56
-rw-r--r--plugins/LV2/src/Highpass2/Highpass2.ttl68
-rw-r--r--plugins/LV2/src/Highpass2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Holt/Holt.cpp60
-rw-r--r--plugins/LV2/src/Holt/Holt.h58
-rw-r--r--plugins/LV2/src/Holt/Holt.ttl76
-rw-r--r--plugins/LV2/src/Holt/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Hombre/Hombre.cpp38
-rw-r--r--plugins/LV2/src/Hombre/Hombre.h40
-rw-r--r--plugins/LV2/src/Hombre/Hombre.ttl52
-rw-r--r--plugins/LV2/src/Hombre/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Interstage/Interstage.cpp46
-rw-r--r--plugins/LV2/src/Interstage/Interstage.h45
-rw-r--r--plugins/LV2/src/Interstage/Interstage.ttl38
-rw-r--r--plugins/LV2/src/Interstage/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/IronOxide5/IronOxide5.cpp71
-rw-r--r--plugins/LV2/src/IronOxide5/IronOxide5.h83
-rw-r--r--plugins/LV2/src/IronOxide5/IronOxide5.ttl92
-rw-r--r--plugins/LV2/src/IronOxide5/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/IronOxideClassic/IronOxideClassic.cpp45
-rw-r--r--plugins/LV2/src/IronOxideClassic/IronOxideClassic.h54
-rw-r--r--plugins/LV2/src/IronOxideClassic/IronOxideClassic.ttl60
-rw-r--r--plugins/LV2/src/IronOxideClassic/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/LeftoMono/LeftoMono.cpp29
-rw-r--r--plugins/LV2/src/LeftoMono/LeftoMono.h29
-rw-r--r--plugins/LV2/src/LeftoMono/LeftoMono.ttl38
-rw-r--r--plugins/LV2/src/LeftoMono/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Logical4/Logical4.cpp102
-rw-r--r--plugins/LV2/src/Logical4/Logical4.h126
-rw-r--r--plugins/LV2/src/Logical4/Logical4.ttl76
-rw-r--r--plugins/LV2/src/Logical4/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Loud/Loud.cpp37
-rw-r--r--plugins/LV2/src/Loud/Loud.h38
-rw-r--r--plugins/LV2/src/Loud/Loud.ttl60
-rw-r--r--plugins/LV2/src/Loud/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Lowpass/Lowpass.cpp42
-rw-r--r--plugins/LV2/src/Lowpass/Lowpass.h41
-rw-r--r--plugins/LV2/src/Lowpass/Lowpass.ttl60
-rw-r--r--plugins/LV2/src/Lowpass/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Lowpass2/Lowpass2.cpp59
-rw-r--r--plugins/LV2/src/Lowpass2/Lowpass2.h56
-rw-r--r--plugins/LV2/src/Lowpass2/Lowpass2.ttl68
-rw-r--r--plugins/LV2/src/Lowpass2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Luxor/Luxor.cpp40
-rw-r--r--plugins/LV2/src/Luxor/Luxor.h40
-rw-r--r--plugins/LV2/src/Luxor/Luxor.ttl68
-rw-r--r--plugins/LV2/src/Luxor/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/MV/MV.cpp99
-rw-r--r--plugins/LV2/src/MV/MV.h177
-rw-r--r--plugins/LV2/src/MV/MV.ttl76
-rw-r--r--plugins/LV2/src/MV/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Melt/Melt.cpp49
-rw-r--r--plugins/LV2/src/Melt/Melt.h53
-rw-r--r--plugins/LV2/src/Melt/Melt.ttl68
-rw-r--r--plugins/LV2/src/Melt/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/MidSide/MidSide.cpp33
-rw-r--r--plugins/LV2/src/MidSide/MidSide.h35
-rw-r--r--plugins/LV2/src/MidSide/MidSide.ttl44
-rw-r--r--plugins/LV2/src/MidSide/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/MoNoam/MoNoam.cpp32
-rw-r--r--plugins/LV2/src/MoNoam/MoNoam.h42
-rw-r--r--plugins/LV2/src/MoNoam/MoNoam.ttl44
-rw-r--r--plugins/LV2/src/MoNoam/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Mojo/Mojo.cpp32
-rw-r--r--plugins/LV2/src/Mojo/Mojo.h33
-rw-r--r--plugins/LV2/src/Mojo/Mojo.ttl44
-rw-r--r--plugins/LV2/src/Mojo/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Monitoring/Monitoring.cpp79
-rw-r--r--plugins/LV2/src/Monitoring/Monitoring.h58
-rw-r--r--plugins/LV2/src/Monitoring/Monitoring.ttl44
-rw-r--r--plugins/LV2/src/Monitoring/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Neverland/Neverland.cpp41
-rw-r--r--plugins/LV2/src/Neverland/Neverland.h41
-rw-r--r--plugins/LV2/src/Neverland/Neverland.ttl68
-rw-r--r--plugins/LV2/src/Neverland/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/NodeDither/NodeDither.cpp35
-rw-r--r--plugins/LV2/src/NodeDither/NodeDither.h36
-rw-r--r--plugins/LV2/src/NodeDither/NodeDither.ttl52
-rw-r--r--plugins/LV2/src/NodeDither/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Noise/Noise.cpp61
-rw-r--r--plugins/LV2/src/Noise/Noise.h64
-rw-r--r--plugins/LV2/src/Noise/Noise.ttl84
-rw-r--r--plugins/LV2/src/Noise/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/NonlinearSpace/NonlinearSpace.cpp220
-rw-r--r--plugins/LV2/src/NonlinearSpace/NonlinearSpace.h190
-rw-r--r--plugins/LV2/src/NonlinearSpace/NonlinearSpace.ttl84
-rw-r--r--plugins/LV2/src/NonlinearSpace/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.cpp59
-rw-r--r--plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.h38
-rw-r--r--plugins/LV2/src/NotJustAnotherDither/NotJustAnotherDither.ttl52
-rw-r--r--plugins/LV2/src/NotJustAnotherDither/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/OneCornerClip/OneCornerClip.cpp49
-rw-r--r--plugins/LV2/src/OneCornerClip/OneCornerClip.h47
-rw-r--r--plugins/LV2/src/OneCornerClip/OneCornerClip.ttl76
-rw-r--r--plugins/LV2/src/OneCornerClip/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PDBuss/PDBuss.cpp42
-rw-r--r--plugins/LV2/src/PDBuss/PDBuss.h41
-rw-r--r--plugins/LV2/src/PDBuss/PDBuss.ttl52
-rw-r--r--plugins/LV2/src/PDBuss/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PDChannel/PDChannel.cpp42
-rw-r--r--plugins/LV2/src/PDChannel/PDChannel.h41
-rw-r--r--plugins/LV2/src/PDChannel/PDChannel.ttl52
-rw-r--r--plugins/LV2/src/PDChannel/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Pafnuty/Pafnuty.cpp57
-rw-r--r--plugins/LV2/src/Pafnuty/Pafnuty.h47
-rw-r--r--plugins/LV2/src/Pafnuty/Pafnuty.ttl140
-rw-r--r--plugins/LV2/src/Pafnuty/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PaulDither/PaulDither.cpp32
-rw-r--r--plugins/LV2/src/PaulDither/PaulDither.h32
-rw-r--r--plugins/LV2/src/PaulDither/PaulDither.ttl38
-rw-r--r--plugins/LV2/src/PaulDither/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PeaksOnly/PeaksOnly.cpp33
-rw-r--r--plugins/LV2/src/PeaksOnly/PeaksOnly.h44
-rw-r--r--plugins/LV2/src/PeaksOnly/PeaksOnly.ttl38
-rw-r--r--plugins/LV2/src/PeaksOnly/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PhaseNudge/PhaseNudge.cpp37
-rw-r--r--plugins/LV2/src/PhaseNudge/PhaseNudge.h40
-rw-r--r--plugins/LV2/src/PhaseNudge/PhaseNudge.ttl52
-rw-r--r--plugins/LV2/src/PhaseNudge/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PocketVerbs/PocketVerbs.cpp213
-rw-r--r--plugins/LV2/src/PocketVerbs/PocketVerbs.h264
-rw-r--r--plugins/LV2/src/PocketVerbs/PocketVerbs.ttl68
-rw-r--r--plugins/LV2/src/PocketVerbs/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Podcast/Podcast.cpp38
-rw-r--r--plugins/LV2/src/Podcast/Podcast.h47
-rw-r--r--plugins/LV2/src/Podcast/Podcast.ttl52
-rw-r--r--plugins/LV2/src/Podcast/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.cpp51
-rw-r--r--plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.h69
-rw-r--r--plugins/LV2/src/PodcastDeluxe/PodcastDeluxe.ttl44
-rw-r--r--plugins/LV2/src/PodcastDeluxe/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Point/Point.cpp47
-rw-r--r--plugins/LV2/src/Point/Point.h45
-rw-r--r--plugins/LV2/src/Point/Point.ttl60
-rw-r--r--plugins/LV2/src/Point/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Pop/Pop.cpp65
-rw-r--r--plugins/LV2/src/Pop/Pop.h69
-rw-r--r--plugins/LV2/src/Pop/Pop.ttl60
-rw-r--r--plugins/LV2/src/Pop/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PowerSag/PowerSag.cpp39
-rw-r--r--plugins/LV2/src/PowerSag/PowerSag.h41
-rw-r--r--plugins/LV2/src/PowerSag/PowerSag.ttl52
-rw-r--r--plugins/LV2/src/PowerSag/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PowerSag2/PowerSag2.cpp40
-rw-r--r--plugins/LV2/src/PowerSag2/PowerSag2.h40
-rw-r--r--plugins/LV2/src/PowerSag2/PowerSag2.ttl52
-rw-r--r--plugins/LV2/src/PowerSag2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Precious/Precious.cpp40
-rw-r--r--plugins/LV2/src/Precious/Precious.h40
-rw-r--r--plugins/LV2/src/Precious/Precious.ttl68
-rw-r--r--plugins/LV2/src/Precious/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Pressure4/Pressure4.cpp45
-rw-r--r--plugins/LV2/src/Pressure4/Pressure4.h45
-rw-r--r--plugins/LV2/src/Pressure4/Pressure4.ttl68
-rw-r--r--plugins/LV2/src/Pressure4/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestAir/PurestAir.cpp46
-rw-r--r--plugins/LV2/src/PurestAir/PurestAir.h56
-rw-r--r--plugins/LV2/src/PurestAir/PurestAir.ttl60
-rw-r--r--plugins/LV2/src/PurestAir/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.cpp32
-rw-r--r--plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.h32
-rw-r--r--plugins/LV2/src/PurestConsoleBuss/PurestConsoleBuss.ttl38
-rw-r--r--plugins/LV2/src/PurestConsoleBuss/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.cpp32
-rw-r--r--plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.h33
-rw-r--r--plugins/LV2/src/PurestConsoleChannel/PurestConsoleChannel.ttl38
-rw-r--r--plugins/LV2/src/PurestConsoleChannel/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestDrive/PurestDrive.cpp37
-rw-r--r--plugins/LV2/src/PurestDrive/PurestDrive.h42
-rw-r--r--plugins/LV2/src/PurestDrive/PurestDrive.ttl44
-rw-r--r--plugins/LV2/src/PurestDrive/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestEcho/PurestEcho.cpp43
-rw-r--r--plugins/LV2/src/PurestEcho/PurestEcho.h45
-rw-r--r--plugins/LV2/src/PurestEcho/PurestEcho.ttl76
-rw-r--r--plugins/LV2/src/PurestEcho/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestFade/PurestFade.cpp38
-rw-r--r--plugins/LV2/src/PurestFade/PurestFade.h39
-rw-r--r--plugins/LV2/src/PurestFade/PurestFade.ttl52
-rw-r--r--plugins/LV2/src/PurestFade/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestGain/PurestGain.cpp39
-rw-r--r--plugins/LV2/src/PurestGain/PurestGain.h40
-rw-r--r--plugins/LV2/src/PurestGain/PurestGain.ttl52
-rw-r--r--plugins/LV2/src/PurestGain/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestSquish/PurestSquish.cpp86
-rw-r--r--plugins/LV2/src/PurestSquish/PurestSquish.h87
-rw-r--r--plugins/LV2/src/PurestSquish/PurestSquish.ttl68
-rw-r--r--plugins/LV2/src/PurestSquish/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/PurestWarm/PurestWarm.cpp33
-rw-r--r--plugins/LV2/src/PurestWarm/PurestWarm.h35
-rw-r--r--plugins/LV2/src/PurestWarm/PurestWarm.ttl44
-rw-r--r--plugins/LV2/src/PurestWarm/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Pyewacket/Pyewacket.cpp40
-rw-r--r--plugins/LV2/src/Pyewacket/Pyewacket.h40
-rw-r--r--plugins/LV2/src/Pyewacket/Pyewacket.ttl60
-rw-r--r--plugins/LV2/src/Pyewacket/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/RawGlitters/RawGlitters.cpp34
-rw-r--r--plugins/LV2/src/RawGlitters/RawGlitters.h33
-rw-r--r--plugins/LV2/src/RawGlitters/RawGlitters.ttl38
-rw-r--r--plugins/LV2/src/RawGlitters/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/RawTimbers/RawTimbers.cpp34
-rw-r--r--plugins/LV2/src/RawTimbers/RawTimbers.h33
-rw-r--r--plugins/LV2/src/RawTimbers/RawTimbers.ttl38
-rw-r--r--plugins/LV2/src/RawTimbers/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Recurve/Recurve.cpp32
-rw-r--r--plugins/LV2/src/Recurve/Recurve.h39
-rw-r--r--plugins/LV2/src/Recurve/Recurve.ttl38
-rw-r--r--plugins/LV2/src/Recurve/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Remap/Remap.cpp36
-rw-r--r--plugins/LV2/src/Remap/Remap.h35
-rw-r--r--plugins/LV2/src/Remap/Remap.ttl60
-rw-r--r--plugins/LV2/src/Remap/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/ResEQ/ResEQ.cpp48
-rw-r--r--plugins/LV2/src/ResEQ/ResEQ.h49
-rw-r--r--plugins/LV2/src/ResEQ/ResEQ.ttl108
-rw-r--r--plugins/LV2/src/ResEQ/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/RightoMono/RightoMono.cpp29
-rw-r--r--plugins/LV2/src/RightoMono/RightoMono.h29
-rw-r--r--plugins/LV2/src/RightoMono/RightoMono.ttl38
-rw-r--r--plugins/LV2/src/RightoMono/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SideDull/SideDull.cpp36
-rw-r--r--plugins/LV2/src/SideDull/SideDull.h36
-rw-r--r--plugins/LV2/src/SideDull/SideDull.ttl44
-rw-r--r--plugins/LV2/src/SideDull/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Sidepass/Sidepass.cpp36
-rw-r--r--plugins/LV2/src/Sidepass/Sidepass.h38
-rw-r--r--plugins/LV2/src/Sidepass/Sidepass.ttl44
-rw-r--r--plugins/LV2/src/Sidepass/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.cpp42
-rw-r--r--plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.h38
-rw-r--r--plugins/LV2/src/SingleEndedTriode/SingleEndedTriode.ttl68
-rw-r--r--plugins/LV2/src/SingleEndedTriode/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Slew2/Slew2.cpp47
-rw-r--r--plugins/LV2/src/Slew2/Slew2.h67
-rw-r--r--plugins/LV2/src/Slew2/Slew2.ttl44
-rw-r--r--plugins/LV2/src/Slew2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SlewOnly/SlewOnly.cpp31
-rw-r--r--plugins/LV2/src/SlewOnly/SlewOnly.h31
-rw-r--r--plugins/LV2/src/SlewOnly/SlewOnly.ttl38
-rw-r--r--plugins/LV2/src/SlewOnly/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Smooth/Smooth.cpp59
-rw-r--r--plugins/LV2/src/Smooth/Smooth.h56
-rw-r--r--plugins/LV2/src/Smooth/Smooth.ttl60
-rw-r--r--plugins/LV2/src/Smooth/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SoftGate/SoftGate.cpp41
-rw-r--r--plugins/LV2/src/SoftGate/SoftGate.h41
-rw-r--r--plugins/LV2/src/SoftGate/SoftGate.ttl60
-rw-r--r--plugins/LV2/src/SoftGate/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SpatializeDither/SpatializeDither.cpp33
-rw-r--r--plugins/LV2/src/SpatializeDither/SpatializeDither.h32
-rw-r--r--plugins/LV2/src/SpatializeDither/SpatializeDither.ttl38
-rw-r--r--plugins/LV2/src/SpatializeDither/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Spiral/Spiral.cpp32
-rw-r--r--plugins/LV2/src/Spiral/Spiral.h32
-rw-r--r--plugins/LV2/src/Spiral/Spiral.ttl38
-rw-r--r--plugins/LV2/src/Spiral/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Spiral2/Spiral2.cpp49
-rw-r--r--plugins/LV2/src/Spiral2/Spiral2.h47
-rw-r--r--plugins/LV2/src/Spiral2/Spiral2.ttl76
-rw-r--r--plugins/LV2/src/Spiral2/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Srsly/Srsly.cpp51
-rw-r--r--plugins/LV2/src/Srsly/Srsly.h49
-rw-r--r--plugins/LV2/src/Srsly/Srsly.ttl76
-rw-r--r--plugins/LV2/src/Srsly/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/StarChild/StarChild.cpp87
-rw-r--r--plugins/LV2/src/StarChild/StarChild.h54
-rw-r--r--plugins/LV2/src/StarChild/StarChild.ttl60
-rw-r--r--plugins/LV2/src/StarChild/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/StereoFX/StereoFX.cpp40
-rw-r--r--plugins/LV2/src/StereoFX/StereoFX.h39
-rw-r--r--plugins/LV2/src/StereoFX/StereoFX.ttl60
-rw-r--r--plugins/LV2/src/StereoFX/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/StudioTan/StudioTan.cpp61
-rw-r--r--plugins/LV2/src/StudioTan/StudioTan.h41
-rw-r--r--plugins/LV2/src/StudioTan/StudioTan.ttl44
-rw-r--r--plugins/LV2/src/StudioTan/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SubsOnly/SubsOnly.cpp82
-rw-r--r--plugins/LV2/src/SubsOnly/SubsOnly.h83
-rw-r--r--plugins/LV2/src/SubsOnly/SubsOnly.ttl38
-rw-r--r--plugins/LV2/src/SubsOnly/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/Surge/Surge.cpp41
-rw-r--r--plugins/LV2/src/Surge/Surge.h40
-rw-r--r--plugins/LV2/src/Surge/Surge.ttl52
-rw-r--r--plugins/LV2/src/Surge/manifest.ttl.in6
-rw-r--r--plugins/LV2/src/SurgeTide/SurgeTide.cpp41
-rw-r--r--plugins/LV2/src/SurgeTide/SurgeTide.h40
-rw-r--r--plugins/LV2/src/SurgeTide/SurgeTide.ttl60
-rw-r--r--plugins/LV2/src/SurgeTide/manifest.ttl.in6
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> .