aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2021-07-31 21:34:28 +0200
committerHarald Eilertsen <haraldei@anduin.net>2021-07-31 21:34:28 +0200
commit1bd34fa795d0eac15d0dc9d4c756f19fc6624872 (patch)
treefdb9bb2e5e20a0adb2953597beafd66aa7c924fc
parent94a6cc3d6c70883e08fd7be16e9405d44bfb94e5 (diff)
downloadairwindows-lv2-port-1bd34fa795d0eac15d0dc9d4c756f19fc6624872.tar.gz
airwindows-lv2-port-1bd34fa795d0eac15d0dc9d4c756f19fc6624872.tar.bz2
airwindows-lv2-port-1bd34fa795d0eac15d0dc9d4c756f19fc6624872.zip
LV2: Port another batch of plugins, EQ - SurgeTide
Some plugins won't compile for various reasons, these have been left out for now. One plugin failed autoporting, so that one's left out too. I have not tested these plugins yet, so no guarantees that they work, or that they work right. Please report any problems or if there's missing control info to the mailing list.
-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> .