aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2020-07-12 16:17:39 +0200
committerHarald Eilertsen <haraldei@anduin.net>2020-07-12 16:17:39 +0200
commit2a9ee4aef026ce2ca7286943d3cae7d5af22a80f (patch)
tree23f0002809e56f5c376bd5b816d1009e41f1fb37
parentc653c8b38fdc79f61ee191052901ac2012d476b4 (diff)
downloadairwindows-lv2-port-2a9ee4aef026ce2ca7286943d3cae7d5af22a80f.tar.gz
airwindows-lv2-port-2a9ee4aef026ce2ca7286943d3cae7d5af22a80f.tar.bz2
airwindows-lv2-port-2a9ee4aef026ce2ca7286943d3cae7d5af22a80f.zip
Start off on LV2 support.
-rw-r--r--plugins/LV2/.gitignore1
-rwxr-xr-xplugins/LV2/CMakeLists.txt215
-rwxr-xr-xplugins/LV2/Helpers.cmake15
-rw-r--r--plugins/LV2/src/Acceleration/Acceleration.cpp65
-rw-r--r--plugins/LV2/src/Acceleration/Acceleration.ttl49
-rw-r--r--plugins/LV2/src/Acceleration/manifest.ttl.in9
6 files changed, 354 insertions, 0 deletions
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 <iostream>
+
+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: <http://usefulinc.com/ns/doap#> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix units: <http://lv2plug.in/ns/extensions/units#> .
+
+<https://www.airwindows.com/acceleration>
+ a lv2:Plugin ,
+ lv2:LimiterPlugin ;
+ lv2:project <https://www.airwindows.com> ;
+ doap:name "Airwindows Acceleration Limiter" ;
+ doap:license <http://opensource.org/licenses/mit> ;
+
+ # 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: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<https://www.airwindows.com/acceleration>
+ a lv2:Plugin ;
+ lv2:binary <acceleration@LIB_EXT@> ;
+ rdfs:seeAlso <acceleration.ttl> .