summaryrefslogtreecommitdiff
path: root/objects/faust/phaser_stereo_float.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'objects/faust/phaser_stereo_float.cpp')
-rw-r--r--objects/faust/phaser_stereo_float.cpp215
1 files changed, 215 insertions, 0 deletions
diff --git a/objects/faust/phaser_stereo_float.cpp b/objects/faust/phaser_stereo_float.cpp
new file mode 100644
index 0000000..9e3e587
--- /dev/null
+++ b/objects/faust/phaser_stereo_float.cpp
@@ -0,0 +1,215 @@
+//-----------------------------------------------------
+// name: "Phaser"
+//
+// Code generated with Faust 0.9.67 (http://faust.grame.fr)
+//-----------------------------------------------------
+/* link with */
+#ifndef FAUSTPOWER
+#define FAUSTPOWER
+#define faustpower4(x) ((x)*(x)*(x)*(x))
+#define faustpower3(x) ((x)*(x)*(x))
+#define faustpower2(x) ((x)*(x))
+#define max(a, b) ((a) > (b) ? (a) : (b))
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#endif
+/************************************************************************
+ ************************************************************************
+ FAUST Architecture File
+ Copyright (C) 2003-2011 GRAME, Centre National de Creation Musicale
+ ---------------------------------------------------------------------
+
+ This is sample code. This file is provided as an example of minimal
+ FAUST architecture file. Redistribution and use in source and binary
+ forms, with or without modification, in part or in full are permitted.
+ In particular you can create a derived work of this FAUST architecture
+ and distribute that work under terms of your choice.
+
+ This sample code is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ************************************************************************
+ ************************************************************************/
+
+
+/******************************************************************************
+*******************************************************************************
+
+ VECTOR INTRINSICS
+
+*******************************************************************************
+*******************************************************************************/
+
+
+/******************************************************************************
+*******************************************************************************
+
+ ABSTRACT USER INTERFACE
+
+*******************************************************************************
+*******************************************************************************/
+
+//----------------------------------------------------------------------------
+// FAUST generated signal processor
+//----------------------------------------------------------------------------
+
+#ifndef FAUSTFLOAT
+#define FAUSTFLOAT float
+#endif
+
+class Dsp {
+public:
+ int fSamplingFreq;
+ FAUSTFLOAT fslider0;
+ FAUSTFLOAT fcheckbox0;
+ FAUSTFLOAT fcheckbox1;
+ int iVec0[2];
+ FAUSTFLOAT fslider1;
+ FAUSTFLOAT fslider2;
+ FAUSTFLOAT fslider3;
+ int iConst0;
+ float fConst1;
+ FAUSTFLOAT fslider4;
+ float fConst2;
+ float fRec5[2];
+ float fRec6[2];
+ FAUSTFLOAT fslider5;
+ FAUSTFLOAT fslider6;
+ FAUSTFLOAT fslider7;
+ float fRec4[3];
+ float fRec3[3];
+ float fRec2[3];
+ float fRec1[3];
+ float fRec0[2];
+ float fRec11[3];
+ float fRec10[3];
+ float fRec9[3];
+ float fRec8[3];
+ float fRec7[2];
+
+ void instanceInit(int samplingFreq) {
+ fSamplingFreq = samplingFreq;
+ fslider0 = 1.0f;
+ fcheckbox0 = 0.0;
+ fcheckbox1 = 0.0;
+ for (int i=0; i<2; i++) iVec0[i] = 0;
+ fslider1 = 0.0f;
+ fslider2 = 0.0f;
+ fslider3 = 1e+03f;
+ iConst0 = min(192000, max(1, fSamplingFreq));
+ fConst1 = (1.0f / float(iConst0));
+ fslider4 = 0.5f;
+ fConst2 = (6.283185307179586f / float(iConst0));
+ for (int i=0; i<2; i++) fRec5[i] = 0;
+ for (int i=0; i<2; i++) fRec6[i] = 0;
+ fslider5 = 1e+02f;
+ fslider6 = 8e+02f;
+ fslider7 = 1.5f;
+ for (int i=0; i<3; i++) fRec4[i] = 0;
+ for (int i=0; i<3; i++) fRec3[i] = 0;
+ for (int i=0; i<3; i++) fRec2[i] = 0;
+ for (int i=0; i<3; i++) fRec1[i] = 0;
+ for (int i=0; i<2; i++) fRec0[i] = 0;
+ for (int i=0; i<3; i++) fRec11[i] = 0;
+ for (int i=0; i<3; i++) fRec10[i] = 0;
+ for (int i=0; i<3; i++) fRec9[i] = 0;
+ for (int i=0; i<3; i++) fRec8[i] = 0;
+ for (int i=0; i<2; i++) fRec7[i] = 0;
+ }
+ void init(int samplingFreq) {
+ instanceInit(samplingFreq);
+ }
+ // convert fixed point to float
+ // * invert bits if sign bit is set (0x08000000, or (1<<27))
+ // * cast int to float
+ // * divide by constant to shift decimal point
+ // * multiply by -1 if sign bit was set
+ float ConvertFracToFloat(int32_t frac) {
+ bool neg = (((1<<27) & frac) != 0);
+ float res = (float)(neg ? frac : ~frac);
+ res = res / (float(1<<29));
+ return (neg ? (-1 * res) : res);
+ }
+
+ void compute (int count,
+ const int32_t** input,
+ int32_t* left,
+ int32_t* right,
+ int param_fcheckbox0,
+ int param_fcheckbox1,
+ int param_fslider0,
+ int param_fslider1,
+ int param_fslider3,
+ int param_fslider4,
+ int param_fslider5,
+ int param_fslider6,
+ int param_fslider7) {
+ float fSlow0 = (0.5f * ((int(float(param_fcheckbox0)))?2:float(fslider0)));
+ float fSlow1 = ((int(float(param_fcheckbox1)))?(0 - fSlow0):fSlow0);
+ float fSlow2 = float(fslider1);
+ float fSlow3 = 10; //powf(10,(0.05f * float(fslider2)));
+ float fSlow4 = 0.8; //expf((fConst1 * (0 - (3.141592653589793f * float(fslider3)))));
+ float fSlow5 = faustpower2(fSlow4);
+ float fSlow6 = (fConst2 * 10*ConvertFracToFloat(param_fslider4));
+ float fSlow7 = cosf(fSlow6);
+ float fSlow8 = sinf(fSlow6);
+ float fSlow9 = (0 - fSlow8);
+ float fSlow10 = float(fslider5);
+ float fSlow11 = (6.283185307179586f * fSlow10);
+ float fSlow12 = (0.5f * ((6.283185307179586f * max(fSlow10, float(fslider6))) - fSlow11));
+ float fSlow13 = float(fslider7);
+ float fSlow14 = (fConst1 * fSlow13);
+ float fSlow15 = (0 - (2 * fSlow4));
+ float fSlow16 = (fConst1 * faustpower2(fSlow13));
+ float fSlow17 = (fConst1 * faustpower3(fSlow13));
+ float fSlow18 = (fConst1 * faustpower4(fSlow13));
+ float fSlow19 = (1 - fSlow0);
+ const int32_t* input0 = *input;
+ const int32_t* input1 = *input;
+ int32_t* output0 = left;
+ int32_t* output1 = right;
+ for (int i=0; i<count; i++) {
+ iVec0[0] = 1;
+ float fTemp0 = ConvertFracToFloat(input0[i]);
+ fRec5[0] = ((fSlow8 * fRec6[1]) + (fSlow7 * fRec5[1]));
+ fRec6[0] = ((1 + ((fSlow7 * fRec6[1]) + (fSlow9 * fRec5[1]))) - iVec0[1]);
+ float fTemp1 = (fSlow11 + (fSlow12 * (1 - fRec5[0])));
+ float fTemp2 = (fRec4[1] * cosf((fSlow14 * fTemp1)));
+ fRec4[0] = (0 - (((fSlow15 * fTemp2) + (fSlow5 * fRec4[2])) - ((fSlow3 * fTemp0) + (fSlow2 * fRec0[1]))));
+ float fTemp3 = (fRec3[1] * cosf((fSlow16 * fTemp1)));
+ fRec3[0] = ((fSlow15 * (fTemp2 - fTemp3)) + (fRec4[2] + (fSlow5 * (fRec4[0] - fRec3[2]))));
+ float fTemp4 = (fRec2[1] * cosf((fSlow17 * fTemp1)));
+ fRec2[0] = ((fSlow15 * (fTemp3 - fTemp4)) + (fRec3[2] + (fSlow5 * (fRec3[0] - fRec2[2]))));
+ float 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] = ConvertFloatToFrac((fSlow3 * (fTemp0 * fSlow19)) + (fRec0[0] * fSlow1));
+
+ float fTemp6 = ConvertFracToFloat(input1[i]);
+ float fTemp7 = (fSlow11 + (fSlow12 * (1 - fRec6[0])));
+ float fTemp8 = (fRec11[1] * cosf((fSlow14 * fTemp7)));
+ fRec11[0] = (0 - (((fSlow15 * fTemp8) + (fSlow5 * fRec11[2])) - ((fSlow3 * fTemp6) + (fSlow2 * fRec7[1]))));
+ float fTemp9 = (fRec10[1] * cosf((fSlow16 * fTemp7)));
+ fRec10[0] = ((fSlow15 * (fTemp8 - fTemp9)) + (fRec11[2] + (fSlow5 * (fRec11[0] - fRec10[2]))));
+ float fTemp10 = (fRec9[1] * cosf((fSlow17 * fTemp7)));
+ fRec9[0] = ((fSlow15 * (fTemp9 - fTemp10)) + (fRec10[2] + (fSlow5 * (fRec10[0] - fRec9[2]))));
+ float fTemp11 = (fRec8[1] * cosf((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] = ConvertFloatToFrac((fSlow3 * (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];
+ }
+ }
+};