#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