From bd7f895d3c459a6ff1d14a6adbbb79c07133947c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 Jul 2020 13:23:55 +0200 Subject: LV2/Acceleration: Use the LinuxVST processing code --- plugins/LV2/src/Acceleration/Acceleration.cpp | 23 ++++++++++++--- plugins/LV2/src/Acceleration/Acceleration.h | 42 +++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/plugins/LV2/src/Acceleration/Acceleration.cpp b/plugins/LV2/src/Acceleration/Acceleration.cpp index dcc8734..824f4b3 100644 --- a/plugins/LV2/src/Acceleration/Acceleration.cpp +++ b/plugins/LV2/src/Acceleration/Acceleration.cpp @@ -53,8 +53,23 @@ void Acceleration::connect_port(uint32_t port, void * data) void Acceleration::run(uint32_t num_samples) { - for (auto i = 0u; i < num_samples; i++) { - *out[0]++ = *in[0]++ * *limit; - *out[1]++ = *in[1]++ * *limit; - } + A = *limit; + B = *drywet; + processReplacing(const_cast(in), out, num_samples); } + +// +// Helper functions to satisfy the processing code +// + +double Acceleration::getSampleRate() +{ + return rate; +} + + +// +// Include the processing code from the VST version. +// +#include +#include "../../../LinuxVST/src/Acceleration/AccelerationProc.cpp" diff --git a/plugins/LV2/src/Acceleration/Acceleration.h b/plugins/LV2/src/Acceleration/Acceleration.h index c277cb9..cfef367 100644 --- a/plugins/LV2/src/Acceleration/Acceleration.h +++ b/plugins/LV2/src/Acceleration/Acceleration.h @@ -1,8 +1,11 @@ -#ifndef __Acceleration_h -#define __Acceleration_h +#ifndef __Acceleration_H +#define __Acceleration_H #include +// Required typa alias for VTS processing funcs. +using VstInt32 = int32_t; + class Acceleration { public: Acceleration(double rate); @@ -11,11 +14,46 @@ public: void run(uint32_t num_samples); private: + void processReplacing(float **in, float **out, VstInt32 samples); + void processDoubleReplacing(double **in, double **out, VstInt32 samples); + + double getSampleRate(); + double rate; const float * limit; const float * drywet; const float * in[2]; float * out[2]; + + // Temp values used by the processing code + double A; // Value of limit when processing called + double B; // Value of dry/wet when processing called + + // To keep state between runs + double ataLastOutL; + double s1L; + double s2L; + double s3L; + double o1L; + double o2L; + double o3L; + double m1L; + double m2L; + double desL; + + double ataLastOutR; + double s1R; + double s2R; + double s3R; + double o1R; + double o2R; + double o3R; + double m1R; + double m2R; + double desR; + + long double fpNShapeL; + long double fpNShapeR; }; #endif -- cgit v1.2.3