summaryrefslogtreecommitdiff
path: root/objects/faust/phaser_mono.wip
blob: 9966c00747245935849a19c3cee3d73a293374ce (about) (plain)
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];
		}
	}
};