diff options
Diffstat (limited to 'plugins/LV2/src/Acceleration/Acceleration.cpp')
-rw-r--r-- | plugins/LV2/src/Acceleration/Acceleration.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
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; +} |