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
|
virtual void instanceInit(int samplingFreq) {
}
virtual void compute (int count, FAUSTFLOAT** input, FAUSTFLOAT** output) {
// TODO: find replacements for: expf, cosf, sinf
// values must be scaled to fit into the range expected by arm_{cos,sin}_q31
// they all take radians!
// cosf --> arm_cos_q31
// sinf --> arm_sin_q31
int32_t fSlow0 = param_fcheckbox0 ? 0x00200000 /*"1"*/ : (param_fslider0>>1);
int32_t fSlow1 = param_fcheckbox1 ? __QSUB(0, fSlow0) : fSlow0;
// TODO: find replacement for expf
// e ^ -1 * const1 * pi * slider3
// It's a value between 0.72 and 1.0, but for now we pretend it's just the value of fslider3.
// float fSlow4 = expf((fConst1 * (0 - (3.141592653589793f * float(fslider3)))));
int32_t fSlow4 = param_fslider3;
int32_t fSlow5 = __SMMUL(fSlow4, fSlow4);
int32_t fSlow6 = __SMMUL(fConst2, param_fslider4);
int32_t fSlow7 = arm_cos_q31(fSlow6);
int32_t fSlow8 = arm_sin_q31(fSlow6);
int32_t fSlow9 = __QSUB(0, fSlow8);
int32_t fSlow11 = ___SMMUL(TAU, param_fslider5);
int32_t fSlow12 = (__SMMUL(TAU, MAX(param_fslider5, param_fslider6)) - fSlow11) >>1;
int32_t fSlow15 = __QSUB(0, fSlow4<<1);
int32_t fSlow14 = __SMMUL(fConst1, param_fslider7);
int32_t fSlow16 = __SMMUL(fSlow14, param_fslider7);
int32_t fSlow17 = __SMMUL(fSlow16, param_fslider7);
int32_t fSlow18 = __SMMUL(fSlow17, param_fslider7);
int32_t fSlow19 = __QSUB(1, fSlow0);
int32_t* input0 = input[0];
int32_t* input1 = input[1];
int32_t* output0 = output[0];
int32_t* output1 = output[1];
for (int i=0; i<BUFSIZE; i++) {
iVec0[0] = 1;
fRec5[0] = fSlow8 * fRec6[1] + fSlow7 * fRec5[1];
fRec6[0] = (1 + ((fSlow7 * fRec6[1]) + (fSlow9 * fRec5[1]))) - iVec0[1];
{
int32_t fTemp0 = input0[i];
int32_t fTemp1 = fSlow11 + (fSlow12 * (1 - fRec5[0]));
int32_t fTemp2 = fRec4[1] * cosf((fSlow14 * fTemp1));
fRec4[0] = __QSUB(0, ((__SMMUL(fSlow15, fTemp2) + __SMMUL(fSlow5, fRec4[2])) - (fTemp0 + __SMMUL(param_fslider1, fRec0[1]))));
int32_t fTemp3 = fRec3[1] * cosf((fSlow16 * fTemp1));
fRec3[0] = (fSlow15 * (fTemp2 - fTemp3)) + (fRec4[2] + (fSlow5 * (fRec4[0] - fRec3[2])));
int32_t fTemp4 = (fRec2[1] * cosf((fSlow17 * fTemp1)));
fRec2[0] = (fSlow15 * (fTemp3 - fTemp4)) + (fRec3[2] + (fSlow5 * (fRec3[0] - fRec2[2])));
int32_t fTemp5 = fRec1[1] * cosf((fSlow18 * fTemp1));
fRec1[0] = (fSlow15 * (fTemp4 - fTemp5)) + (fRec2[2] + (fSlow5 * (fRec2[0] - fRec1[2])));
fRec0[0] = (fSlow5 * fRec1[0]) + ((fSlow15 * fTemp5) + fRec1[2]);
output0[i] = (fTemp0 * fSlow19) + (fRec0[0] * fSlow1);
}
{
int32_t fTemp6 = input1[i];
int32_t fTemp7 = fSlow11 + (fSlow12 * (1 - fRec6[0]));
int32_t fTemp8 = fRec11[1] * cosf(__SMMUL(fSlow14, fTemp7));
fRec11[0] = __QSUB(0, (__SMMUL(fSlow15, fTemp8) + __SMMUL(fSlow5, fRec11[2]) - (fTemp6 + __SMMUL(param_fslider1, fRec7[1]))));
int32_t fTemp9 = fRec10[1] * cosf(__SMMUL(fSlow16, fTemp7));
fRec10[0] = ((fSlow15 * (fTemp8 - fTemp9)) + (fRec11[2] + (fSlow5 * (fRec11[0] - fRec10[2]))));
int32_t fTemp10 = fRec9[1] * cosf(__SMMUL(fSlow17, fTemp7));
fRec9[0] = ((fSlow15 * (fTemp9 - fTemp10)) + (fRec10[2] + (fSlow5 * (fRec10[0] - fRec9[2]))));
int32_t fTemp11 = fRec8[1] * cosf(__SMMUL(fSlow18, fTemp7));
fRec8[0] = ((fSlow15 * (fTemp10 - fTemp11)) + (fRec9[2] + (fSlow5 * (fRec9[0] - fRec8[2]))));
fRec7[0] = ((fSlow5 * fRec8[0]) + ((fSlow15 * fTemp11) + fRec8[2]));
output1[i] = (fTemp6 * fSlow19) + (fRec7[0] * fSlow1);
}
// post processing
fRec7[1] = fRec7[0];
fRec8[2] = fRec8[1]; fRec8[1] = fRec8[0];
fRec9[2] = fRec9[1]; fRec9[1] = fRec9[0];
fRec10[2] = fRec10[1]; fRec10[1] = fRec10[0];
fRec11[2] = fRec11[1]; fRec11[1] = fRec11[0];
fRec0[1] = fRec0[0];
fRec1[2] = fRec1[1]; fRec1[1] = fRec1[0];
fRec2[2] = fRec2[1]; fRec2[1] = fRec2[0];
fRec3[2] = fRec3[1]; fRec3[1] = fRec3[0];
fRec4[2] = fRec4[1]; fRec4[1] = fRec4[0];
fRec6[1] = fRec6[0];
fRec5[1] = fRec5[0];
iVec0[1] = iVec0[0];
}
}
};
|