From 2a9ee4aef026ce2ca7286943d3cae7d5af22a80f Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sun, 12 Jul 2020 16:17:39 +0200 Subject: Start off on LV2 support. --- plugins/LV2/.gitignore | 1 + plugins/LV2/CMakeLists.txt | 215 ++++++++++++++++++++++++++ plugins/LV2/Helpers.cmake | 15 ++ plugins/LV2/src/Acceleration/Acceleration.cpp | 65 ++++++++ plugins/LV2/src/Acceleration/Acceleration.ttl | 49 ++++++ plugins/LV2/src/Acceleration/manifest.ttl.in | 9 ++ 6 files changed, 354 insertions(+) create mode 100644 plugins/LV2/.gitignore create mode 100755 plugins/LV2/CMakeLists.txt create mode 100755 plugins/LV2/Helpers.cmake create mode 100644 plugins/LV2/src/Acceleration/Acceleration.cpp create mode 100644 plugins/LV2/src/Acceleration/Acceleration.ttl create mode 100644 plugins/LV2/src/Acceleration/manifest.ttl.in diff --git a/plugins/LV2/.gitignore b/plugins/LV2/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/plugins/LV2/.gitignore @@ -0,0 +1 @@ +build diff --git a/plugins/LV2/CMakeLists.txt b/plugins/LV2/CMakeLists.txt new file mode 100755 index 0000000..c76a3d9 --- /dev/null +++ b/plugins/LV2/CMakeLists.txt @@ -0,0 +1,215 @@ +cmake_minimum_required(VERSION 3.9) +project(airwindows_ports) + +set(CMAKE_CXX_STANDARD 14) +add_compile_options(-O2 -D__cdecl=) + +include(Helpers.cmake) + +# add_subdirectory(include/vstsdk) +add_airwindows_plugin(Acceleration) +# add_airwindows_plugin(ADClip7) +# add_airwindows_plugin(ADT) +# add_airwindows_plugin(Air) +# add_airwindows_plugin(Apicolypse) +# add_airwindows_plugin(AQuickVoiceClip) +# add_airwindows_plugin(AtmosphereBuss) +# add_airwindows_plugin(AtmosphereChannel) +# add_airwindows_plugin(Aura) +# add_airwindows_plugin(Average) +# add_airwindows_plugin(AverMatrix) +# add_airwindows_plugin(BassDrive) +# add_airwindows_plugin(BassKit) +# add_airwindows_plugin(Baxandall) +# add_airwindows_plugin(Beam) +# add_airwindows_plugin(Biquad) +# add_airwindows_plugin(Biquad2) +# add_airwindows_plugin(BiquadOneHalf) +# add_airwindows_plugin(Bite) +# add_airwindows_plugin(BitGlitter) +# add_airwindows_plugin(BitShiftGain) +# add_airwindows_plugin(BlockParty) +# add_airwindows_plugin(BrassRider) +# add_airwindows_plugin(BrightAmbience) +# add_airwindows_plugin(BuildATPDF) +# add_airwindows_plugin(BussColors4) +# add_airwindows_plugin(ButterComp) +# add_airwindows_plugin(ButterComp2) +# add_airwindows_plugin(C5RawBuss) +# add_airwindows_plugin(C5RawChannel) +# add_airwindows_plugin(Calibre) +# add_airwindows_plugin(Capacitor) +# add_airwindows_plugin(Channel4) +# add_airwindows_plugin(Channel5) +# add_airwindows_plugin(Channel6) +# add_airwindows_plugin(Channel7) +# add_airwindows_plugin(Chorus) +# add_airwindows_plugin(ChorusEnsemble) +# add_airwindows_plugin(ChromeOxide) +# add_airwindows_plugin(Cider) +# add_airwindows_plugin(ClipOnly) +# add_airwindows_plugin(Coils) +# add_airwindows_plugin(Cojones) +# add_airwindows_plugin(Compresaturator) +# add_airwindows_plugin(Console4Buss) +# add_airwindows_plugin(Console4Channel) +# add_airwindows_plugin(Console5Buss) +# add_airwindows_plugin(Console5Channel) +# add_airwindows_plugin(Console5DarkCh) +# add_airwindows_plugin(Console6Buss) +# add_airwindows_plugin(Console6Channel) +# add_airwindows_plugin(CrunchyGrooveWear) +# add_airwindows_plugin(Crystal) +# add_airwindows_plugin(CStrip) +# add_airwindows_plugin(curve) +# add_airwindows_plugin(Dark) +# add_airwindows_plugin(DCVoltage) +# add_airwindows_plugin(Deckwrecka) +# add_airwindows_plugin(DeBess) +# add_airwindows_plugin(DeEss) +# add_airwindows_plugin(DeHiss) +# add_airwindows_plugin(Density) +# add_airwindows_plugin(DeRez) +# add_airwindows_plugin(DeRez2) +# add_airwindows_plugin(Desk) +# add_airwindows_plugin(Desk4) +# add_airwindows_plugin(DigitalBlack) +# add_airwindows_plugin(Distance) +# add_airwindows_plugin(Distance2) +# add_airwindows_plugin(Distortion) +# add_airwindows_plugin(DoublePaul) +# add_airwindows_plugin(Ditherbox) +# add_airwindows_plugin(DitherFloat) +# add_airwindows_plugin(DitherMeDiskers) +# add_airwindows_plugin(DitherMeTimbers) +# add_airwindows_plugin(Drive) +# add_airwindows_plugin(DrumSlam) +# add_airwindows_plugin(DubCenter) +# add_airwindows_plugin(DubSub) +# add_airwindows_plugin(DustBunny) +# add_airwindows_plugin(Dyno) +# add_airwindows_plugin(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(Swell) +# add_airwindows_plugin(Tape) +# add_airwindows_plugin(TapeDelay) +# add_airwindows_plugin(TapeDither) +# add_airwindows_plugin(TapeDust) +# add_airwindows_plugin(TapeFat) +# add_airwindows_plugin(Thunder) +# add_airwindows_plugin(ToneSlant) +# add_airwindows_plugin(ToTape5) +# add_airwindows_plugin(ToTape6) +# add_airwindows_plugin(ToVinyl4) +# add_airwindows_plugin(TPDFDither) +# add_airwindows_plugin(TransDesk) +# add_airwindows_plugin(Tremolo) +# add_airwindows_plugin(TubeDesk) +# add_airwindows_plugin(uLawDecode) +# add_airwindows_plugin(uLawEncode) +# add_airwindows_plugin(UnBox) +# add_airwindows_plugin(VariMu) +# add_airwindows_plugin(Vibrato) +# add_airwindows_plugin(VinylDither) +# add_airwindows_plugin(VoiceOfTheStarship) +# add_airwindows_plugin(VoiceTrick) +# add_airwindows_plugin(Wider) diff --git a/plugins/LV2/Helpers.cmake b/plugins/LV2/Helpers.cmake new file mode 100755 index 0000000..83c3d95 --- /dev/null +++ b/plugins/LV2/Helpers.cmake @@ -0,0 +1,15 @@ +function(add_airwindows_plugin name) + file(GLOB plug_src + ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/*.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/*.cpp) + + add_library(${name} MODULE ${plug_src}) + + set_target_properties(${name} PROPERTIES + PREFIX "" + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${name}) + + # target_include_directories(${name} PRIVATE ${VSTSDK_ROOT}) + configure_file(src/${name}/manifest.ttl.in ${name}/manifest.ttl @ONLY) + configure_file(src/${name}/${name}.ttl ${name}/${name}.ttl COPYONLY) +endfunction(add_airwindows_plugin) diff --git a/plugins/LV2/src/Acceleration/Acceleration.cpp b/plugins/LV2/src/Acceleration/Acceleration.cpp new file mode 100644 index 0000000..cc0a6cd --- /dev/null +++ b/plugins/LV2/src/Acceleration/Acceleration.cpp @@ -0,0 +1,65 @@ +#include "lv2/core/lv2.h" + +#include + +const char * ACCELERATION_URI = "https://www.airwindows.com/acceleration"; + +enum PortIndex { + ACCELERATION_LIMIT = 0, + ACCELERATION_DRYWET = 1, + ACCELERATION_IN = 2, + ACCELERATION_OUT = 3 +}; + +struct acceleration { + const float * limit; + const float * drywet; + const float * in; + float * out; +}; + +static LV2_Handle instantiate( + const LV2_Descriptor * d, + double rate, + const char * path, + const LV2_Feature * const * features) +{ + return calloc(1, sizeof(acceleration)); +} + +static void connect_port( + LV2_Handle instance, + uint32_t port, + void * data) +{ + struct acceleration * accel = (struct acceleration *) instance; + switch (port) { + case ACCELERATION_LIMIT: + accel->limit = (const float *) data; + break; + + case ACCELERATION_DRYWET: + accel->limit = (const float *) data; + break; + + case ACCELERATION_IN: + accel->in = (const float *) data; + break; + + case ACCELERATION_OUT: + accel->out = (float *) data; + break; + + default: + std::cerr << "Invalid port " << port << ": ignoring." << std::endl; + } +} + +static void activate(LV2_Handle instance) +{ +} + +static void run(LV2_Handle instance, uint32_t num_samples) +{ + auto accel = (acceleration *) instance; +} diff --git a/plugins/LV2/src/Acceleration/Acceleration.ttl b/plugins/LV2/src/Acceleration/Acceleration.ttl new file mode 100644 index 0000000..fec2952 --- /dev/null +++ b/plugins/LV2/src/Acceleration/Acceleration.ttl @@ -0,0 +1,49 @@ +# Airwindows Acceleration Limiter plugin description + +@prefix doap: . +@prefix lv2: . +@prefix rdf: . +@prefix rdfs: . +@prefix units: . + + + a lv2:Plugin , + lv2:LimiterPlugin ; + lv2:project ; + doap:name "Airwindows Acceleration Limiter" ; + doap:license ; + + # Unsure what this does, and if the plugin conforms to it. + # Taken from the LV2 sample amp plugin, figure out later. + lv2optionalFeature lv2:hardRTCapable ; + + # Define the ports for this plugin. + # Two control ports - limit and dry/wet + # One audio in and one audio out + lv2:port [ + a lv2:InputPort , lv2:ControlPort ; + lv2:index 0 ; + lv2:symbol "A" ; + lv2:name "Limit" ; + lv2:default 0.32 ; + 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 1.0 ; + lv2:minimum 0.0 ; + lc2:maximum 1.0 ; + ] , [ + a lv2:InputPort , lv2:AudioPort ; + lv2:index 2 ; + lv2:symbol "in" ; + lv2:name "In" ; + ] , [ + a lv2:OutputPort , lv2:AudioPort ; + lv2:index 3 ; + lv2:symbol "out" ; + lv2:name "Out" ; + ] . diff --git a/plugins/LV2/src/Acceleration/manifest.ttl.in b/plugins/LV2/src/Acceleration/manifest.ttl.in new file mode 100644 index 0000000..f4fcbc7 --- /dev/null +++ b/plugins/LV2/src/Acceleration/manifest.ttl.in @@ -0,0 +1,9 @@ +# LV2 Plugin manifest for airwindows Acceleration limiter plugin + +@prefix lv2: . +@prefix rdfs: . + + + a lv2:Plugin ; + lv2:binary ; + rdfs:seeAlso . -- cgit v1.2.3