summaryrefslogtreecommitdiff
path: root/objects/faust/phaser_mono.wip
diff options
context:
space:
mode:
Diffstat (limited to 'objects/faust/phaser_mono.wip')
-rw-r--r--objects/faust/phaser_mono.wip90
1 files changed, 90 insertions, 0 deletions
diff --git a/objects/faust/phaser_mono.wip b/objects/faust/phaser_mono.wip
new file mode 100644
index 0000000..9966c00
--- /dev/null
+++ b/objects/faust/phaser_mono.wip
@@ -0,0 +1,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];
+ }
+ }
+};
+
+