diff options
Diffstat (limited to 'plugins/LV2/src/NonlinearSpace/NonlinearSpace.h')
-rw-r--r-- | plugins/LV2/src/NonlinearSpace/NonlinearSpace.h | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h new file mode 100644 index 0000000..eeda537 --- /dev/null +++ b/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h @@ -0,0 +1,190 @@ +#ifndef __NonlinearSpace_H +#define __NonlinearSpace_H + +#include <lv2plugin.h> + +class NonlinearSpace : public LV2Plugin<6> { +public: + NonlinearSpace(double rate); + + void activate(); + void run(uint32_t num_samples); + + static constexpr const char * URI = "https://www.airwindows.com/nonlinearspace"; + +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. + */ + + double avgInputL; + double avgOutputL; + double avg2InputL; + double avg2OutputL; + double avgInputR; + double avgOutputR; + double avg2InputR; + double avg2OutputR; + double a2vgInputL; + double a2vgOutputL; + double a2vg2InputL; + double a2vg2OutputL; + double a2vgInputR; + double a2vgOutputR; + double a2vg2InputR; + double a2vg2OutputR; + + double verboutL; + double verboutR; + double iirCCSampleL; + double iirCCSampleR; + double iirSampleL; + double iirSampleR; + + double dMid[2348]; + double dSide[1334]; + double dLeft[5924]; + double dRight[5926]; + + double dpreR[7575]; + double dpreL[7575]; + + double dA[7575]; + double dB[7309]; + double dC[7179]; + double dD[6909]; + double dE[6781]; + double dF[6523]; + double dG[5983]; + double dH[5565]; + double dI[5299]; + double dJ[4905]; + double dK[4761]; + double dL[4491]; + double dM[4393]; + double dN[4231]; + double dO[4155]; + double dP[3991]; + double dQ[3661]; + double dR[3409]; + double dS[3253]; + double dT[3001]; + double dU[2919]; + double dV[2751]; + double dW[2505]; + double dX[2425]; + double dY[2148]; + double dZ[2090]; + + double interpolA, pitchshiftA; //7575 + double interpolB, pitchshiftB; //7309 + double interpolC, pitchshiftC; //7179 + double interpolD, pitchshiftD; //6909 + double interpolE, pitchshiftE; //6781 + double interpolF, pitchshiftF; //6523 + double interpolG, pitchshiftG; //5983 + double interpolH, pitchshiftH; //5565 + double interpolI, pitchshiftI; //5299 + double interpolJ, pitchshiftJ; //4905 + double interpolK, pitchshiftK; //4761 + double interpolL, pitchshiftL; //4491 + double interpolM, pitchshiftM; //4393 + double interpolN, pitchshiftN; //4231 + double interpolO, pitchshiftO; //4155 + double interpolP, pitchshiftP; //3991 + double interpolQ, pitchshiftQ; //3661 + double interpolR, pitchshiftR; //3409 + double interpolS, pitchshiftS; //3253 + double interpolT, pitchshiftT; //3001 + double interpolU, pitchshiftU; //2919 + double interpolV, pitchshiftV; //2751 + double interpolW, pitchshiftW; //2505 + double interpolX, pitchshiftX; //2425 + double interpolY, pitchshiftY; //2148 + double interpolZ, pitchshiftZ; //2090 + + int oneMid, delayMid, maxdelayMid; + int oneSide, delaySide, maxdelaySide; + int oneLeft, delayLeft, maxdelayLeft; + int oneRight, delayRight, maxdelayRight; + + int onepre, delaypre, maxdelaypre; + + int oneA, twoA, treA, delayA, maxdelayA; + int oneB, twoB, treB, delayB, maxdelayB; + int oneC, twoC, treC, delayC, maxdelayC; + int oneD, twoD, treD, delayD, maxdelayD; + int oneE, twoE, treE, delayE, maxdelayE; + int oneF, twoF, treF, delayF, maxdelayF; + int oneG, twoG, treG, delayG, maxdelayG; + int oneH, twoH, treH, delayH, maxdelayH; + int oneI, twoI, treI, delayI, maxdelayI; + int oneJ, twoJ, treJ, delayJ, maxdelayJ; + int oneK, twoK, treK, delayK, maxdelayK; + int oneL, twoL, treL, delayL, maxdelayL; + int oneM, twoM, treM, delayM, maxdelayM; + int oneN, twoN, treN, delayN, maxdelayN; + int oneO, twoO, treO, delayO, maxdelayO; + int oneP, twoP, treP, delayP, maxdelayP; + int oneQ, twoQ, treQ, delayQ, maxdelayQ; + int oneR, twoR, treR, delayR, maxdelayR; + int oneS, twoS, treS, delayS, maxdelayS; + int oneT, twoT, treT, delayT, maxdelayT; + int oneU, twoU, treU, delayU, maxdelayU; + int oneV, twoV, treV, delayV, maxdelayV; + int oneW, twoW, treW, delayW, maxdelayW; + int oneX, twoX, treX, delayX, maxdelayX; + int oneY, twoY, treY, delayY, maxdelayY; + int oneZ, twoZ, treZ, delayZ, maxdelayZ; + double savedPredelay; + double savedRoomsize; + int countdown; + + double lowpassSampleAA; + double lowpassSampleAB; + double lowpassSampleBA; + double lowpassSampleBB; + double lowpassSampleCA; + double lowpassSampleCB; + double lowpassSampleDA; + double lowpassSampleDB; + double lowpassSampleE; + double lowpassSampleF; + double lowpassSampleG; + + double rowpassSampleAA; + double rowpassSampleAB; + double rowpassSampleBA; + double rowpassSampleBB; + double rowpassSampleCA; + double rowpassSampleCB; + double rowpassSampleDA; + double rowpassSampleDB; + double rowpassSampleE; + double rowpassSampleF; + double rowpassSampleG; + + bool flip; + + double nonlin; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; + float C; + float D; + float E; + float F; //parameters. Always 0-1, and we scale/alter them elsewhere. +}; + +#endif |