aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/src/NonlinearSpace/NonlinearSpace.h
blob: eeda537d973104a485f1b2a3d67a0dce81862a58 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
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