From e39613ab3448e37c09027b250dcc7addcfeebec1 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Mon, 4 May 2020 04:24:33 +0200 Subject: [PATCH 1/2] filters: forgot changing one case of smoothBiquad --- src/sfizz/dsp/filters/filters_modulable.dsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sfizz/dsp/filters/filters_modulable.dsp b/src/sfizz/dsp/filters/filters_modulable.dsp index 2d4b9907..e57d94c3 100644 --- a/src/sfizz/dsp/filters/filters_modulable.dsp +++ b/src/sfizz/dsp/filters/filters_modulable.dsp @@ -28,7 +28,7 @@ smoothBiquadTf2(s,b0,b1,b2,a1,a2) = biquadTf2(b0:s,b1:s,b2:s,a1:s,a2:s); // g : gain in decibel, for peaking and shelving types only // q : height of the resonant peak in linear units //------------------------------------------------------------------------- -rbjLpfSmooth(s,f,g,q,x) = (rbj.filtercoeff(f,g,q).LPF,x) : smoothBiquad(s); +rbjLpfSmooth(s,f,g,q,x) = (rbj.filtercoeff(f,g,q).LPF,x) : smoothBiquadTf2(s); rbjHpfSmooth(s,f,g,q,x) = (rbj.filtercoeff(f,g,q).HPF,x) : smoothBiquadTf2(s); rbjBpfSmooth(s,f,g,q,x) = (rbj.filtercoeff(f,g,q).BPF,x) : smoothBiquadTf2(s); rbjNotchSmooth(s,f,g,q,x) = (rbj.filtercoeff(f,g,q).notch,x) : smoothBiquadTf2(s); From e81a7e8a1d85e27bf764651f33c6b6ac342d9e75 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Mon, 4 May 2020 04:24:42 +0200 Subject: [PATCH 2/2] Regenerate filters --- src/sfizz/gen/filters/sfz2chLpf2p.cxx | 94 +++++++--- src/sfizz/gen/filters/sfz2chLpf4p.cxx | 174 ++++++++++++++---- src/sfizz/gen/filters/sfz2chLpf6p.cxx | 250 ++++++++++++++++++++------ src/sfizz/gen/filters/sfzLpf2p.cxx | 58 ++++-- src/sfizz/gen/filters/sfzLpf4p.cxx | 102 ++++++++--- src/sfizz/gen/filters/sfzLpf6p.cxx | 140 +++++++++++---- 6 files changed, 625 insertions(+), 193 deletions(-) diff --git a/src/sfizz/gen/filters/sfz2chLpf2p.cxx b/src/sfizz/gen/filters/sfz2chLpf2p.cxx index 15b7418d..9b6d4dc1 100644 --- a/src/sfizz/gen/filters/sfz2chLpf2p.cxx +++ b/src/sfizz/gen/filters/sfz2chLpf2p.cxx @@ -37,12 +37,20 @@ class faust2chLpf2p : public sfzFilterDsp { FAUSTFLOAT fCutoff; FAUSTFLOAT fQ; double fConst2; - double fRec0[2]; double fRec2[2]; + double fVec0[2]; double fRec3[2]; - double fRec1[3]; + double fVec1[2]; double fRec4[2]; - double fRec5[3]; + double fVec2[2]; + double fRec5[2]; + double fRec1[2]; + double fRec0[2]; + double fVec3[2]; + double fVec4[2]; + double fVec5[2]; + double fRec7[2]; + double fRec6[2]; public: @@ -109,22 +117,46 @@ class faust2chLpf2p : public sfzFilterDsp { virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { - fRec0[l0] = 0.0; + fRec2[l0] = 0.0; } for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { - fRec2[l1] = 0.0; + fVec0[l1] = 0.0; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { fRec3[l2] = 0.0; } - for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) { - fRec1[l3] = 0.0; + for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) { + fVec1[l3] = 0.0; } for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) { fRec4[l4] = 0.0; } - for (int l5 = 0; (l5 < 3); l5 = (l5 + 1)) { - fRec5[l5] = 0.0; + for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) { + fVec2[l5] = 0.0; + } + for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) { + fRec5[l6] = 0.0; + } + for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) { + fRec1[l7] = 0.0; + } + for (int l8 = 0; (l8 < 2); l8 = (l8 + 1)) { + fRec0[l8] = 0.0; + } + for (int l9 = 0; (l9 < 2); l9 = (l9 + 1)) { + fVec3[l9] = 0.0; + } + for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) { + fVec4[l10] = 0.0; + } + for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) { + fVec5[l11] = 0.0; + } + for (int l12 = 0; (l12 < 2); l12 = (l12 + 1)) { + fRec7[l12] = 0.0; + } + for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) { + fRec6[l13] = 0.0; } } @@ -162,28 +194,44 @@ class faust2chLpf2p : public sfzFilterDsp { double fSlow5 = (fSmoothEnable ? fConst2 : 0.0); double fSlow6 = (1.0 - fSlow5); double fSlow7 = (fSlow4 * fSlow6); - double fSlow8 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); + double fSlow8 = ((0.5 * fSlow4) * fSlow6); double fSlow9 = (((1.0 - fSlow2) / fSlow3) * fSlow6); - double fSlow10 = ((0.5 * fSlow4) * fSlow6); + double fSlow10 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); for (int i = 0; (i < count); i = (i + 1)) { double fTemp0 = double(input0[i]); double fTemp1 = double(input1[i]); - fRec0[0] = (fSlow7 + (fSlow5 * fRec0[1])); - fRec2[0] = ((fSlow5 * fRec2[1]) + fSlow8); - fRec3[0] = ((fSlow5 * fRec3[1]) + fSlow9); - fRec1[0] = (fTemp0 - ((fRec2[0] * fRec1[1]) + (fRec3[0] * fRec1[2]))); - fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow10); - output0[i] = FAUSTFLOAT(((fRec0[0] * fRec1[1]) + (fRec4[0] * (fRec1[0] + fRec1[2])))); - fRec5[0] = (fTemp1 - ((fRec2[0] * fRec5[1]) + (fRec3[0] * fRec5[2]))); - output1[i] = FAUSTFLOAT(((fRec0[0] * fRec5[1]) + (fRec4[0] * (fRec5[0] + fRec5[2])))); - fRec0[1] = fRec0[0]; + fRec2[0] = (fSlow7 + (fSlow5 * fRec2[1])); + fVec0[0] = (fTemp0 * fRec2[0]); + fRec3[0] = ((fSlow5 * fRec3[1]) + fSlow8); + double fTemp2 = (fTemp0 * fRec3[0]); + fVec1[0] = fTemp2; + fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow9); + fVec2[0] = (fVec1[1] - (fRec4[0] * fRec0[1])); + fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow10); + fRec1[0] = ((fVec0[1] + (fTemp2 + fVec2[1])) - (fRec5[0] * fRec1[1])); + fRec0[0] = fRec1[0]; + output0[i] = FAUSTFLOAT(fRec0[0]); + fVec3[0] = (fTemp1 * fRec2[0]); + double fTemp3 = (fTemp1 * fRec3[0]); + fVec4[0] = fTemp3; + fVec5[0] = (fVec4[1] - (fRec4[0] * fRec6[1])); + fRec7[0] = ((fVec3[1] + (fTemp3 + fVec5[1])) - (fRec5[0] * fRec7[1])); + fRec6[0] = fRec7[0]; + output1[i] = FAUSTFLOAT(fRec6[0]); fRec2[1] = fRec2[0]; + fVec0[1] = fVec0[0]; fRec3[1] = fRec3[0]; - fRec1[2] = fRec1[1]; - fRec1[1] = fRec1[0]; + fVec1[1] = fVec1[0]; fRec4[1] = fRec4[0]; - fRec5[2] = fRec5[1]; + fVec2[1] = fVec2[0]; fRec5[1] = fRec5[0]; + fRec1[1] = fRec1[0]; + fRec0[1] = fRec0[0]; + fVec3[1] = fVec3[0]; + fVec4[1] = fVec4[0]; + fVec5[1] = fVec5[0]; + fRec7[1] = fRec7[0]; + fRec6[1] = fRec6[0]; } } diff --git a/src/sfizz/gen/filters/sfz2chLpf4p.cxx b/src/sfizz/gen/filters/sfz2chLpf4p.cxx index 78eee570..f0a22427 100644 --- a/src/sfizz/gen/filters/sfz2chLpf4p.cxx +++ b/src/sfizz/gen/filters/sfz2chLpf4p.cxx @@ -37,14 +37,30 @@ class faust2chLpf4p : public sfzFilterDsp { FAUSTFLOAT fCutoff; FAUSTFLOAT fQ; double fConst2; - double fRec0[2]; - double fRec3[2]; - double fRec4[2]; - double fRec2[3]; + double fRec2[2]; + double fVec0[2]; double fRec5[2]; - double fRec1[3]; - double fRec7[3]; - double fRec6[3]; + double fVec1[2]; + double fRec6[2]; + double fVec2[2]; + double fRec7[2]; + double fRec4[2]; + double fRec3[2]; + double fVec3[2]; + double fVec4[2]; + double fVec5[2]; + double fRec1[2]; + double fRec0[2]; + double fVec6[2]; + double fVec7[2]; + double fVec8[2]; + double fRec11[2]; + double fRec10[2]; + double fVec9[2]; + double fVec10[2]; + double fVec11[2]; + double fRec9[2]; + double fRec8[2]; public: @@ -111,28 +127,76 @@ class faust2chLpf4p : public sfzFilterDsp { virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { - fRec0[l0] = 0.0; + fRec2[l0] = 0.0; } for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { - fRec3[l1] = 0.0; + fVec0[l1] = 0.0; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { - fRec4[l2] = 0.0; + fRec5[l2] = 0.0; } - for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) { - fRec2[l3] = 0.0; + for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) { + fVec1[l3] = 0.0; } for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) { - fRec5[l4] = 0.0; + fRec6[l4] = 0.0; } - for (int l5 = 0; (l5 < 3); l5 = (l5 + 1)) { - fRec1[l5] = 0.0; + for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) { + fVec2[l5] = 0.0; } - for (int l6 = 0; (l6 < 3); l6 = (l6 + 1)) { + for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) { fRec7[l6] = 0.0; } - for (int l7 = 0; (l7 < 3); l7 = (l7 + 1)) { - fRec6[l7] = 0.0; + for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) { + fRec4[l7] = 0.0; + } + for (int l8 = 0; (l8 < 2); l8 = (l8 + 1)) { + fRec3[l8] = 0.0; + } + for (int l9 = 0; (l9 < 2); l9 = (l9 + 1)) { + fVec3[l9] = 0.0; + } + for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) { + fVec4[l10] = 0.0; + } + for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) { + fVec5[l11] = 0.0; + } + for (int l12 = 0; (l12 < 2); l12 = (l12 + 1)) { + fRec1[l12] = 0.0; + } + for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) { + fRec0[l13] = 0.0; + } + for (int l14 = 0; (l14 < 2); l14 = (l14 + 1)) { + fVec6[l14] = 0.0; + } + for (int l15 = 0; (l15 < 2); l15 = (l15 + 1)) { + fVec7[l15] = 0.0; + } + for (int l16 = 0; (l16 < 2); l16 = (l16 + 1)) { + fVec8[l16] = 0.0; + } + for (int l17 = 0; (l17 < 2); l17 = (l17 + 1)) { + fRec11[l17] = 0.0; + } + for (int l18 = 0; (l18 < 2); l18 = (l18 + 1)) { + fRec10[l18] = 0.0; + } + for (int l19 = 0; (l19 < 2); l19 = (l19 + 1)) { + fVec9[l19] = 0.0; + } + for (int l20 = 0; (l20 < 2); l20 = (l20 + 1)) { + fVec10[l20] = 0.0; + } + for (int l21 = 0; (l21 < 2); l21 = (l21 + 1)) { + fVec11[l21] = 0.0; + } + for (int l22 = 0; (l22 < 2); l22 = (l22 + 1)) { + fRec9[l22] = 0.0; + } + for (int l23 = 0; (l23 < 2); l23 = (l23 + 1)) { + fRec8[l23] = 0.0; } } @@ -170,34 +234,66 @@ class faust2chLpf4p : public sfzFilterDsp { double fSlow5 = (fSmoothEnable ? fConst2 : 0.0); double fSlow6 = (1.0 - fSlow5); double fSlow7 = (fSlow4 * fSlow6); - double fSlow8 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); + double fSlow8 = ((0.5 * fSlow4) * fSlow6); double fSlow9 = (((1.0 - fSlow2) / fSlow3) * fSlow6); - double fSlow10 = ((0.5 * fSlow4) * fSlow6); + double fSlow10 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); for (int i = 0; (i < count); i = (i + 1)) { double fTemp0 = double(input0[i]); double fTemp1 = double(input1[i]); - fRec0[0] = (fSlow7 + (fSlow5 * fRec0[1])); - fRec3[0] = ((fSlow5 * fRec3[1]) + fSlow8); - fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow9); - fRec2[0] = (fTemp0 - ((fRec3[0] * fRec2[1]) + (fRec4[0] * fRec2[2]))); - fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow10); - fRec1[0] = (((fRec0[0] * fRec2[1]) + (fRec5[0] * (fRec2[0] + fRec2[2]))) - ((fRec3[0] * fRec1[1]) + (fRec4[0] * fRec1[2]))); - output0[i] = FAUSTFLOAT(((fRec0[0] * fRec1[1]) + (fRec5[0] * (fRec1[0] + fRec1[2])))); - fRec7[0] = (fTemp1 - ((fRec3[0] * fRec7[1]) + (fRec4[0] * fRec7[2]))); - fRec6[0] = (((fRec0[0] * fRec7[1]) + (fRec5[0] * (fRec7[0] + fRec7[2]))) - ((fRec3[0] * fRec6[1]) + (fRec4[0] * fRec6[2]))); - output1[i] = FAUSTFLOAT(((fRec0[0] * fRec6[1]) + (fRec5[0] * (fRec6[0] + fRec6[2])))); - fRec0[1] = fRec0[0]; - fRec3[1] = fRec3[0]; - fRec4[1] = fRec4[0]; - fRec2[2] = fRec2[1]; + fRec2[0] = (fSlow7 + (fSlow5 * fRec2[1])); + fVec0[0] = (fTemp0 * fRec2[0]); + fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow8); + double fTemp2 = (fTemp0 * fRec5[0]); + fVec1[0] = fTemp2; + fRec6[0] = ((fSlow5 * fRec6[1]) + fSlow9); + fVec2[0] = (fVec1[1] - (fRec6[0] * fRec3[1])); + fRec7[0] = ((fSlow5 * fRec7[1]) + fSlow10); + fRec4[0] = ((fVec0[1] + (fTemp2 + fVec2[1])) - (fRec7[0] * fRec4[1])); + fRec3[0] = fRec4[0]; + fVec3[0] = (fRec2[0] * fRec3[0]); + double fTemp3 = (fRec5[0] * fRec3[0]); + fVec4[0] = fTemp3; + fVec5[0] = (fVec4[1] - (fRec6[0] * fRec0[1])); + fRec1[0] = ((fVec3[1] + (fTemp3 + fVec5[1])) - (fRec7[0] * fRec1[1])); + fRec0[0] = fRec1[0]; + output0[i] = FAUSTFLOAT(fRec0[0]); + fVec6[0] = (fTemp1 * fRec2[0]); + double fTemp4 = (fTemp1 * fRec5[0]); + fVec7[0] = fTemp4; + fVec8[0] = (fVec7[1] - (fRec6[0] * fRec10[1])); + fRec11[0] = ((fVec6[1] + (fTemp4 + fVec8[1])) - (fRec7[0] * fRec11[1])); + fRec10[0] = fRec11[0]; + fVec9[0] = (fRec2[0] * fRec10[0]); + double fTemp5 = (fRec5[0] * fRec10[0]); + fVec10[0] = fTemp5; + fVec11[0] = (fVec10[1] - (fRec6[0] * fRec8[1])); + fRec9[0] = ((fVec9[1] + (fTemp5 + fVec11[1])) - (fRec7[0] * fRec9[1])); + fRec8[0] = fRec9[0]; + output1[i] = FAUSTFLOAT(fRec8[0]); fRec2[1] = fRec2[0]; + fVec0[1] = fVec0[0]; fRec5[1] = fRec5[0]; - fRec1[2] = fRec1[1]; - fRec1[1] = fRec1[0]; - fRec7[2] = fRec7[1]; - fRec7[1] = fRec7[0]; - fRec6[2] = fRec6[1]; + fVec1[1] = fVec1[0]; fRec6[1] = fRec6[0]; + fVec2[1] = fVec2[0]; + fRec7[1] = fRec7[0]; + fRec4[1] = fRec4[0]; + fRec3[1] = fRec3[0]; + fVec3[1] = fVec3[0]; + fVec4[1] = fVec4[0]; + fVec5[1] = fVec5[0]; + fRec1[1] = fRec1[0]; + fRec0[1] = fRec0[0]; + fVec6[1] = fVec6[0]; + fVec7[1] = fVec7[0]; + fVec8[1] = fVec8[0]; + fRec11[1] = fRec11[0]; + fRec10[1] = fRec10[0]; + fVec9[1] = fVec9[0]; + fVec10[1] = fVec10[0]; + fVec11[1] = fVec11[0]; + fRec9[1] = fRec9[0]; + fRec8[1] = fRec8[0]; } } diff --git a/src/sfizz/gen/filters/sfz2chLpf6p.cxx b/src/sfizz/gen/filters/sfz2chLpf6p.cxx index 9e493826..c09feb80 100644 --- a/src/sfizz/gen/filters/sfz2chLpf6p.cxx +++ b/src/sfizz/gen/filters/sfz2chLpf6p.cxx @@ -37,16 +37,40 @@ class faust2chLpf6p : public sfzFilterDsp { FAUSTFLOAT fCutoff; FAUSTFLOAT fQ; double fConst2; - double fRec0[2]; - double fRec4[2]; - double fRec5[2]; - double fRec3[3]; + double fRec2[2]; + double fVec0[2]; + double fRec7[2]; + double fVec1[2]; + double fRec8[2]; + double fVec2[2]; + double fRec9[2]; double fRec6[2]; - double fRec2[3]; - double fRec1[3]; - double fRec9[3]; - double fRec8[3]; - double fRec7[3]; + double fRec5[2]; + double fVec3[2]; + double fVec4[2]; + double fVec5[2]; + double fRec4[2]; + double fRec3[2]; + double fVec6[2]; + double fVec7[2]; + double fVec8[2]; + double fRec1[2]; + double fRec0[2]; + double fVec9[2]; + double fVec10[2]; + double fVec11[2]; + double fRec15[2]; + double fRec14[2]; + double fVec12[2]; + double fVec13[2]; + double fVec14[2]; + double fRec13[2]; + double fRec12[2]; + double fVec15[2]; + double fVec16[2]; + double fVec17[2]; + double fRec11[2]; + double fRec10[2]; public: @@ -113,34 +137,106 @@ class faust2chLpf6p : public sfzFilterDsp { virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { - fRec0[l0] = 0.0; + fRec2[l0] = 0.0; } for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { - fRec4[l1] = 0.0; + fVec0[l1] = 0.0; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { - fRec5[l2] = 0.0; + fRec7[l2] = 0.0; } - for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) { - fRec3[l3] = 0.0; + for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) { + fVec1[l3] = 0.0; } for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) { - fRec6[l4] = 0.0; + fRec8[l4] = 0.0; } - for (int l5 = 0; (l5 < 3); l5 = (l5 + 1)) { - fRec2[l5] = 0.0; + for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) { + fVec2[l5] = 0.0; } - for (int l6 = 0; (l6 < 3); l6 = (l6 + 1)) { - fRec1[l6] = 0.0; + for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) { + fRec9[l6] = 0.0; } - for (int l7 = 0; (l7 < 3); l7 = (l7 + 1)) { - fRec9[l7] = 0.0; + for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) { + fRec6[l7] = 0.0; } - for (int l8 = 0; (l8 < 3); l8 = (l8 + 1)) { - fRec8[l8] = 0.0; + for (int l8 = 0; (l8 < 2); l8 = (l8 + 1)) { + fRec5[l8] = 0.0; } - for (int l9 = 0; (l9 < 3); l9 = (l9 + 1)) { - fRec7[l9] = 0.0; + for (int l9 = 0; (l9 < 2); l9 = (l9 + 1)) { + fVec3[l9] = 0.0; + } + for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) { + fVec4[l10] = 0.0; + } + for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) { + fVec5[l11] = 0.0; + } + for (int l12 = 0; (l12 < 2); l12 = (l12 + 1)) { + fRec4[l12] = 0.0; + } + for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) { + fRec3[l13] = 0.0; + } + for (int l14 = 0; (l14 < 2); l14 = (l14 + 1)) { + fVec6[l14] = 0.0; + } + for (int l15 = 0; (l15 < 2); l15 = (l15 + 1)) { + fVec7[l15] = 0.0; + } + for (int l16 = 0; (l16 < 2); l16 = (l16 + 1)) { + fVec8[l16] = 0.0; + } + for (int l17 = 0; (l17 < 2); l17 = (l17 + 1)) { + fRec1[l17] = 0.0; + } + for (int l18 = 0; (l18 < 2); l18 = (l18 + 1)) { + fRec0[l18] = 0.0; + } + for (int l19 = 0; (l19 < 2); l19 = (l19 + 1)) { + fVec9[l19] = 0.0; + } + for (int l20 = 0; (l20 < 2); l20 = (l20 + 1)) { + fVec10[l20] = 0.0; + } + for (int l21 = 0; (l21 < 2); l21 = (l21 + 1)) { + fVec11[l21] = 0.0; + } + for (int l22 = 0; (l22 < 2); l22 = (l22 + 1)) { + fRec15[l22] = 0.0; + } + for (int l23 = 0; (l23 < 2); l23 = (l23 + 1)) { + fRec14[l23] = 0.0; + } + for (int l24 = 0; (l24 < 2); l24 = (l24 + 1)) { + fVec12[l24] = 0.0; + } + for (int l25 = 0; (l25 < 2); l25 = (l25 + 1)) { + fVec13[l25] = 0.0; + } + for (int l26 = 0; (l26 < 2); l26 = (l26 + 1)) { + fVec14[l26] = 0.0; + } + for (int l27 = 0; (l27 < 2); l27 = (l27 + 1)) { + fRec13[l27] = 0.0; + } + for (int l28 = 0; (l28 < 2); l28 = (l28 + 1)) { + fRec12[l28] = 0.0; + } + for (int l29 = 0; (l29 < 2); l29 = (l29 + 1)) { + fVec15[l29] = 0.0; + } + for (int l30 = 0; (l30 < 2); l30 = (l30 + 1)) { + fVec16[l30] = 0.0; + } + for (int l31 = 0; (l31 < 2); l31 = (l31 + 1)) { + fVec17[l31] = 0.0; + } + for (int l32 = 0; (l32 < 2); l32 = (l32 + 1)) { + fRec11[l32] = 0.0; + } + for (int l33 = 0; (l33 < 2); l33 = (l33 + 1)) { + fRec10[l33] = 0.0; } } @@ -178,40 +274,88 @@ class faust2chLpf6p : public sfzFilterDsp { double fSlow5 = (fSmoothEnable ? fConst2 : 0.0); double fSlow6 = (1.0 - fSlow5); double fSlow7 = (fSlow4 * fSlow6); - double fSlow8 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); + double fSlow8 = ((0.5 * fSlow4) * fSlow6); double fSlow9 = (((1.0 - fSlow2) / fSlow3) * fSlow6); - double fSlow10 = ((0.5 * fSlow4) * fSlow6); + double fSlow10 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); for (int i = 0; (i < count); i = (i + 1)) { double fTemp0 = double(input0[i]); double fTemp1 = double(input1[i]); - fRec0[0] = (fSlow7 + (fSlow5 * fRec0[1])); - fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow8); - fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow9); - fRec3[0] = (fTemp0 - ((fRec4[0] * fRec3[1]) + (fRec5[0] * fRec3[2]))); - fRec6[0] = ((fSlow5 * fRec6[1]) + fSlow10); - fRec2[0] = (((fRec0[0] * fRec3[1]) + (fRec6[0] * (fRec3[0] + fRec3[2]))) - ((fRec4[0] * fRec2[1]) + (fRec5[0] * fRec2[2]))); - fRec1[0] = (((fRec0[0] * fRec2[1]) + (fRec6[0] * (fRec2[0] + fRec2[2]))) - ((fRec4[0] * fRec1[1]) + (fRec5[0] * fRec1[2]))); - output0[i] = FAUSTFLOAT(((fRec0[0] * fRec1[1]) + (fRec6[0] * (fRec1[0] + fRec1[2])))); - fRec9[0] = (fTemp1 - ((fRec4[0] * fRec9[1]) + (fRec5[0] * fRec9[2]))); - fRec8[0] = (((fRec0[0] * fRec9[1]) + (fRec6[0] * (fRec9[0] + fRec9[2]))) - ((fRec4[0] * fRec8[1]) + (fRec5[0] * fRec8[2]))); - fRec7[0] = (((fRec0[0] * fRec8[1]) + (fRec6[0] * (fRec8[0] + fRec8[2]))) - ((fRec4[0] * fRec7[1]) + (fRec5[0] * fRec7[2]))); - output1[i] = FAUSTFLOAT(((fRec0[0] * fRec7[1]) + (fRec6[0] * (fRec7[0] + fRec7[2])))); - fRec0[1] = fRec0[0]; - fRec4[1] = fRec4[0]; - fRec5[1] = fRec5[0]; - fRec3[2] = fRec3[1]; - fRec3[1] = fRec3[0]; - fRec6[1] = fRec6[0]; - fRec2[2] = fRec2[1]; + fRec2[0] = (fSlow7 + (fSlow5 * fRec2[1])); + fVec0[0] = (fTemp0 * fRec2[0]); + fRec7[0] = ((fSlow5 * fRec7[1]) + fSlow8); + double fTemp2 = (fTemp0 * fRec7[0]); + fVec1[0] = fTemp2; + fRec8[0] = ((fSlow5 * fRec8[1]) + fSlow9); + fVec2[0] = (fVec1[1] - (fRec8[0] * fRec5[1])); + fRec9[0] = ((fSlow5 * fRec9[1]) + fSlow10); + fRec6[0] = ((fVec0[1] + (fTemp2 + fVec2[1])) - (fRec9[0] * fRec6[1])); + fRec5[0] = fRec6[0]; + fVec3[0] = (fRec2[0] * fRec5[0]); + double fTemp3 = (fRec7[0] * fRec5[0]); + fVec4[0] = fTemp3; + fVec5[0] = (fVec4[1] - (fRec8[0] * fRec3[1])); + fRec4[0] = ((fVec3[1] + (fTemp3 + fVec5[1])) - (fRec9[0] * fRec4[1])); + fRec3[0] = fRec4[0]; + fVec6[0] = (fRec2[0] * fRec3[0]); + double fTemp4 = (fRec7[0] * fRec3[0]); + fVec7[0] = fTemp4; + fVec8[0] = (fVec7[1] - (fRec8[0] * fRec0[1])); + fRec1[0] = ((fVec6[1] + (fTemp4 + fVec8[1])) - (fRec9[0] * fRec1[1])); + fRec0[0] = fRec1[0]; + output0[i] = FAUSTFLOAT(fRec0[0]); + fVec9[0] = (fTemp1 * fRec2[0]); + double fTemp5 = (fTemp1 * fRec7[0]); + fVec10[0] = fTemp5; + fVec11[0] = (fVec10[1] - (fRec8[0] * fRec14[1])); + fRec15[0] = ((fVec9[1] + (fTemp5 + fVec11[1])) - (fRec9[0] * fRec15[1])); + fRec14[0] = fRec15[0]; + fVec12[0] = (fRec2[0] * fRec14[0]); + double fTemp6 = (fRec7[0] * fRec14[0]); + fVec13[0] = fTemp6; + fVec14[0] = (fVec13[1] - (fRec8[0] * fRec12[1])); + fRec13[0] = ((fVec12[1] + (fTemp6 + fVec14[1])) - (fRec9[0] * fRec13[1])); + fRec12[0] = fRec13[0]; + fVec15[0] = (fRec2[0] * fRec12[0]); + double fTemp7 = (fRec7[0] * fRec12[0]); + fVec16[0] = fTemp7; + fVec17[0] = (fVec16[1] - (fRec8[0] * fRec10[1])); + fRec11[0] = ((fVec15[1] + (fTemp7 + fVec17[1])) - (fRec9[0] * fRec11[1])); + fRec10[0] = fRec11[0]; + output1[i] = FAUSTFLOAT(fRec10[0]); fRec2[1] = fRec2[0]; - fRec1[2] = fRec1[1]; - fRec1[1] = fRec1[0]; - fRec9[2] = fRec9[1]; - fRec9[1] = fRec9[0]; - fRec8[2] = fRec8[1]; - fRec8[1] = fRec8[0]; - fRec7[2] = fRec7[1]; + fVec0[1] = fVec0[0]; fRec7[1] = fRec7[0]; + fVec1[1] = fVec1[0]; + fRec8[1] = fRec8[0]; + fVec2[1] = fVec2[0]; + fRec9[1] = fRec9[0]; + fRec6[1] = fRec6[0]; + fRec5[1] = fRec5[0]; + fVec3[1] = fVec3[0]; + fVec4[1] = fVec4[0]; + fVec5[1] = fVec5[0]; + fRec4[1] = fRec4[0]; + fRec3[1] = fRec3[0]; + fVec6[1] = fVec6[0]; + fVec7[1] = fVec7[0]; + fVec8[1] = fVec8[0]; + fRec1[1] = fRec1[0]; + fRec0[1] = fRec0[0]; + fVec9[1] = fVec9[0]; + fVec10[1] = fVec10[0]; + fVec11[1] = fVec11[0]; + fRec15[1] = fRec15[0]; + fRec14[1] = fRec14[0]; + fVec12[1] = fVec12[0]; + fVec13[1] = fVec13[0]; + fVec14[1] = fVec14[0]; + fRec13[1] = fRec13[0]; + fRec12[1] = fRec12[0]; + fVec15[1] = fVec15[0]; + fVec16[1] = fVec16[0]; + fVec17[1] = fVec17[0]; + fRec11[1] = fRec11[0]; + fRec10[1] = fRec10[0]; } } diff --git a/src/sfizz/gen/filters/sfzLpf2p.cxx b/src/sfizz/gen/filters/sfzLpf2p.cxx index b168cd62..7f2044a2 100644 --- a/src/sfizz/gen/filters/sfzLpf2p.cxx +++ b/src/sfizz/gen/filters/sfzLpf2p.cxx @@ -37,11 +37,15 @@ class faustLpf2p : public sfzFilterDsp { FAUSTFLOAT fCutoff; FAUSTFLOAT fQ; double fConst2; - double fRec0[2]; double fRec2[2]; + double fVec0[2]; double fRec3[2]; - double fRec1[3]; + double fVec1[2]; double fRec4[2]; + double fVec2[2]; + double fRec5[2]; + double fRec1[2]; + double fRec0[2]; public: @@ -100,20 +104,32 @@ class faustLpf2p : public sfzFilterDsp { virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { - fRec0[l0] = 0.0; + fRec2[l0] = 0.0; } for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { - fRec2[l1] = 0.0; + fVec0[l1] = 0.0; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { fRec3[l2] = 0.0; } - for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) { - fRec1[l3] = 0.0; + for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) { + fVec1[l3] = 0.0; } for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) { fRec4[l4] = 0.0; } + for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) { + fVec2[l5] = 0.0; + } + for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) { + fRec5[l6] = 0.0; + } + for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) { + fRec1[l7] = 0.0; + } + for (int l8 = 0; (l8 < 2); l8 = (l8 + 1)) { + fRec0[l8] = 0.0; + } } virtual void init(int sample_rate) { @@ -148,23 +164,31 @@ class faustLpf2p : public sfzFilterDsp { double fSlow5 = (fSmoothEnable ? fConst2 : 0.0); double fSlow6 = (1.0 - fSlow5); double fSlow7 = (fSlow4 * fSlow6); - double fSlow8 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); + double fSlow8 = ((0.5 * fSlow4) * fSlow6); double fSlow9 = (((1.0 - fSlow2) / fSlow3) * fSlow6); - double fSlow10 = ((0.5 * fSlow4) * fSlow6); + double fSlow10 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); for (int i = 0; (i < count); i = (i + 1)) { double fTemp0 = double(input0[i]); - fRec0[0] = (fSlow7 + (fSlow5 * fRec0[1])); - fRec2[0] = ((fSlow5 * fRec2[1]) + fSlow8); - fRec3[0] = ((fSlow5 * fRec3[1]) + fSlow9); - fRec1[0] = (fTemp0 - ((fRec2[0] * fRec1[1]) + (fRec3[0] * fRec1[2]))); - fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow10); - output0[i] = FAUSTFLOAT(((fRec0[0] * fRec1[1]) + (fRec4[0] * (fRec1[0] + fRec1[2])))); - fRec0[1] = fRec0[0]; + fRec2[0] = (fSlow7 + (fSlow5 * fRec2[1])); + fVec0[0] = (fTemp0 * fRec2[0]); + fRec3[0] = ((fSlow5 * fRec3[1]) + fSlow8); + double fTemp1 = (fTemp0 * fRec3[0]); + fVec1[0] = fTemp1; + fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow9); + fVec2[0] = (fVec1[1] - (fRec4[0] * fRec0[1])); + fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow10); + fRec1[0] = ((fVec0[1] + (fTemp1 + fVec2[1])) - (fRec5[0] * fRec1[1])); + fRec0[0] = fRec1[0]; + output0[i] = FAUSTFLOAT(fRec0[0]); fRec2[1] = fRec2[0]; + fVec0[1] = fVec0[0]; fRec3[1] = fRec3[0]; - fRec1[2] = fRec1[1]; - fRec1[1] = fRec1[0]; + fVec1[1] = fVec1[0]; fRec4[1] = fRec4[0]; + fVec2[1] = fVec2[0]; + fRec5[1] = fRec5[0]; + fRec1[1] = fRec1[0]; + fRec0[1] = fRec0[0]; } } diff --git a/src/sfizz/gen/filters/sfzLpf4p.cxx b/src/sfizz/gen/filters/sfzLpf4p.cxx index 1ee1d952..087bac79 100644 --- a/src/sfizz/gen/filters/sfzLpf4p.cxx +++ b/src/sfizz/gen/filters/sfzLpf4p.cxx @@ -37,12 +37,20 @@ class faustLpf4p : public sfzFilterDsp { FAUSTFLOAT fCutoff; FAUSTFLOAT fQ; double fConst2; - double fRec0[2]; - double fRec3[2]; - double fRec4[2]; - double fRec2[3]; + double fRec2[2]; + double fVec0[2]; double fRec5[2]; - double fRec1[3]; + double fVec1[2]; + double fRec6[2]; + double fVec2[2]; + double fRec7[2]; + double fRec4[2]; + double fRec3[2]; + double fVec3[2]; + double fVec4[2]; + double fVec5[2]; + double fRec1[2]; + double fRec0[2]; public: @@ -101,22 +109,46 @@ class faustLpf4p : public sfzFilterDsp { virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { - fRec0[l0] = 0.0; + fRec2[l0] = 0.0; } for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { - fRec3[l1] = 0.0; + fVec0[l1] = 0.0; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { - fRec4[l2] = 0.0; + fRec5[l2] = 0.0; } - for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) { - fRec2[l3] = 0.0; + for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) { + fVec1[l3] = 0.0; } for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) { - fRec5[l4] = 0.0; + fRec6[l4] = 0.0; } - for (int l5 = 0; (l5 < 3); l5 = (l5 + 1)) { - fRec1[l5] = 0.0; + for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) { + fVec2[l5] = 0.0; + } + for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) { + fRec7[l6] = 0.0; + } + for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) { + fRec4[l7] = 0.0; + } + for (int l8 = 0; (l8 < 2); l8 = (l8 + 1)) { + fRec3[l8] = 0.0; + } + for (int l9 = 0; (l9 < 2); l9 = (l9 + 1)) { + fVec3[l9] = 0.0; + } + for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) { + fVec4[l10] = 0.0; + } + for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) { + fVec5[l11] = 0.0; + } + for (int l12 = 0; (l12 < 2); l12 = (l12 + 1)) { + fRec1[l12] = 0.0; + } + for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) { + fRec0[l13] = 0.0; } } @@ -152,26 +184,42 @@ class faustLpf4p : public sfzFilterDsp { double fSlow5 = (fSmoothEnable ? fConst2 : 0.0); double fSlow6 = (1.0 - fSlow5); double fSlow7 = (fSlow4 * fSlow6); - double fSlow8 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); + double fSlow8 = ((0.5 * fSlow4) * fSlow6); double fSlow9 = (((1.0 - fSlow2) / fSlow3) * fSlow6); - double fSlow10 = ((0.5 * fSlow4) * fSlow6); + double fSlow10 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); for (int i = 0; (i < count); i = (i + 1)) { double fTemp0 = double(input0[i]); - fRec0[0] = (fSlow7 + (fSlow5 * fRec0[1])); - fRec3[0] = ((fSlow5 * fRec3[1]) + fSlow8); - fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow9); - fRec2[0] = (fTemp0 - ((fRec3[0] * fRec2[1]) + (fRec4[0] * fRec2[2]))); - fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow10); - fRec1[0] = (((fRec0[0] * fRec2[1]) + (fRec5[0] * (fRec2[0] + fRec2[2]))) - ((fRec3[0] * fRec1[1]) + (fRec4[0] * fRec1[2]))); - output0[i] = FAUSTFLOAT(((fRec0[0] * fRec1[1]) + (fRec5[0] * (fRec1[0] + fRec1[2])))); - fRec0[1] = fRec0[0]; - fRec3[1] = fRec3[0]; - fRec4[1] = fRec4[0]; - fRec2[2] = fRec2[1]; + fRec2[0] = (fSlow7 + (fSlow5 * fRec2[1])); + fVec0[0] = (fTemp0 * fRec2[0]); + fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow8); + double fTemp1 = (fTemp0 * fRec5[0]); + fVec1[0] = fTemp1; + fRec6[0] = ((fSlow5 * fRec6[1]) + fSlow9); + fVec2[0] = (fVec1[1] - (fRec6[0] * fRec3[1])); + fRec7[0] = ((fSlow5 * fRec7[1]) + fSlow10); + fRec4[0] = ((fVec0[1] + (fTemp1 + fVec2[1])) - (fRec7[0] * fRec4[1])); + fRec3[0] = fRec4[0]; + fVec3[0] = (fRec2[0] * fRec3[0]); + double fTemp2 = (fRec5[0] * fRec3[0]); + fVec4[0] = fTemp2; + fVec5[0] = (fVec4[1] - (fRec6[0] * fRec0[1])); + fRec1[0] = ((fVec3[1] + (fTemp2 + fVec5[1])) - (fRec7[0] * fRec1[1])); + fRec0[0] = fRec1[0]; + output0[i] = FAUSTFLOAT(fRec0[0]); fRec2[1] = fRec2[0]; + fVec0[1] = fVec0[0]; fRec5[1] = fRec5[0]; - fRec1[2] = fRec1[1]; + fVec1[1] = fVec1[0]; + fRec6[1] = fRec6[0]; + fVec2[1] = fVec2[0]; + fRec7[1] = fRec7[0]; + fRec4[1] = fRec4[0]; + fRec3[1] = fRec3[0]; + fVec3[1] = fVec3[0]; + fVec4[1] = fVec4[0]; + fVec5[1] = fVec5[0]; fRec1[1] = fRec1[0]; + fRec0[1] = fRec0[0]; } } diff --git a/src/sfizz/gen/filters/sfzLpf6p.cxx b/src/sfizz/gen/filters/sfzLpf6p.cxx index 61a1a377..a0c1dd24 100644 --- a/src/sfizz/gen/filters/sfzLpf6p.cxx +++ b/src/sfizz/gen/filters/sfzLpf6p.cxx @@ -37,13 +37,25 @@ class faustLpf6p : public sfzFilterDsp { FAUSTFLOAT fCutoff; FAUSTFLOAT fQ; double fConst2; - double fRec0[2]; - double fRec4[2]; - double fRec5[2]; - double fRec3[3]; + double fRec2[2]; + double fVec0[2]; + double fRec7[2]; + double fVec1[2]; + double fRec8[2]; + double fVec2[2]; + double fRec9[2]; double fRec6[2]; - double fRec2[3]; - double fRec1[3]; + double fRec5[2]; + double fVec3[2]; + double fVec4[2]; + double fVec5[2]; + double fRec4[2]; + double fRec3[2]; + double fVec6[2]; + double fVec7[2]; + double fVec8[2]; + double fRec1[2]; + double fRec0[2]; public: @@ -102,25 +114,61 @@ class faustLpf6p : public sfzFilterDsp { virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { - fRec0[l0] = 0.0; + fRec2[l0] = 0.0; } for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { - fRec4[l1] = 0.0; + fVec0[l1] = 0.0; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { - fRec5[l2] = 0.0; + fRec7[l2] = 0.0; } - for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) { - fRec3[l3] = 0.0; + for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) { + fVec1[l3] = 0.0; } for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) { - fRec6[l4] = 0.0; + fRec8[l4] = 0.0; } - for (int l5 = 0; (l5 < 3); l5 = (l5 + 1)) { - fRec2[l5] = 0.0; + for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) { + fVec2[l5] = 0.0; } - for (int l6 = 0; (l6 < 3); l6 = (l6 + 1)) { - fRec1[l6] = 0.0; + for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) { + fRec9[l6] = 0.0; + } + for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) { + fRec6[l7] = 0.0; + } + for (int l8 = 0; (l8 < 2); l8 = (l8 + 1)) { + fRec5[l8] = 0.0; + } + for (int l9 = 0; (l9 < 2); l9 = (l9 + 1)) { + fVec3[l9] = 0.0; + } + for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) { + fVec4[l10] = 0.0; + } + for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) { + fVec5[l11] = 0.0; + } + for (int l12 = 0; (l12 < 2); l12 = (l12 + 1)) { + fRec4[l12] = 0.0; + } + for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) { + fRec3[l13] = 0.0; + } + for (int l14 = 0; (l14 < 2); l14 = (l14 + 1)) { + fVec6[l14] = 0.0; + } + for (int l15 = 0; (l15 < 2); l15 = (l15 + 1)) { + fVec7[l15] = 0.0; + } + for (int l16 = 0; (l16 < 2); l16 = (l16 + 1)) { + fVec8[l16] = 0.0; + } + for (int l17 = 0; (l17 < 2); l17 = (l17 + 1)) { + fRec1[l17] = 0.0; + } + for (int l18 = 0; (l18 < 2); l18 = (l18 + 1)) { + fRec0[l18] = 0.0; } } @@ -156,29 +204,53 @@ class faustLpf6p : public sfzFilterDsp { double fSlow5 = (fSmoothEnable ? fConst2 : 0.0); double fSlow6 = (1.0 - fSlow5); double fSlow7 = (fSlow4 * fSlow6); - double fSlow8 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); + double fSlow8 = ((0.5 * fSlow4) * fSlow6); double fSlow9 = (((1.0 - fSlow2) / fSlow3) * fSlow6); - double fSlow10 = ((0.5 * fSlow4) * fSlow6); + double fSlow10 = (((0.0 - (2.0 * fSlow1)) / fSlow3) * fSlow6); for (int i = 0; (i < count); i = (i + 1)) { double fTemp0 = double(input0[i]); - fRec0[0] = (fSlow7 + (fSlow5 * fRec0[1])); - fRec4[0] = ((fSlow5 * fRec4[1]) + fSlow8); - fRec5[0] = ((fSlow5 * fRec5[1]) + fSlow9); - fRec3[0] = (fTemp0 - ((fRec4[0] * fRec3[1]) + (fRec5[0] * fRec3[2]))); - fRec6[0] = ((fSlow5 * fRec6[1]) + fSlow10); - fRec2[0] = (((fRec0[0] * fRec3[1]) + (fRec6[0] * (fRec3[0] + fRec3[2]))) - ((fRec4[0] * fRec2[1]) + (fRec5[0] * fRec2[2]))); - fRec1[0] = (((fRec0[0] * fRec2[1]) + (fRec6[0] * (fRec2[0] + fRec2[2]))) - ((fRec4[0] * fRec1[1]) + (fRec5[0] * fRec1[2]))); - output0[i] = FAUSTFLOAT(((fRec0[0] * fRec1[1]) + (fRec6[0] * (fRec1[0] + fRec1[2])))); - fRec0[1] = fRec0[0]; - fRec4[1] = fRec4[0]; - fRec5[1] = fRec5[0]; - fRec3[2] = fRec3[1]; - fRec3[1] = fRec3[0]; - fRec6[1] = fRec6[0]; - fRec2[2] = fRec2[1]; + fRec2[0] = (fSlow7 + (fSlow5 * fRec2[1])); + fVec0[0] = (fTemp0 * fRec2[0]); + fRec7[0] = ((fSlow5 * fRec7[1]) + fSlow8); + double fTemp1 = (fTemp0 * fRec7[0]); + fVec1[0] = fTemp1; + fRec8[0] = ((fSlow5 * fRec8[1]) + fSlow9); + fVec2[0] = (fVec1[1] - (fRec8[0] * fRec5[1])); + fRec9[0] = ((fSlow5 * fRec9[1]) + fSlow10); + fRec6[0] = ((fVec0[1] + (fTemp1 + fVec2[1])) - (fRec9[0] * fRec6[1])); + fRec5[0] = fRec6[0]; + fVec3[0] = (fRec2[0] * fRec5[0]); + double fTemp2 = (fRec7[0] * fRec5[0]); + fVec4[0] = fTemp2; + fVec5[0] = (fVec4[1] - (fRec8[0] * fRec3[1])); + fRec4[0] = ((fVec3[1] + (fTemp2 + fVec5[1])) - (fRec9[0] * fRec4[1])); + fRec3[0] = fRec4[0]; + fVec6[0] = (fRec2[0] * fRec3[0]); + double fTemp3 = (fRec7[0] * fRec3[0]); + fVec7[0] = fTemp3; + fVec8[0] = (fVec7[1] - (fRec8[0] * fRec0[1])); + fRec1[0] = ((fVec6[1] + (fTemp3 + fVec8[1])) - (fRec9[0] * fRec1[1])); + fRec0[0] = fRec1[0]; + output0[i] = FAUSTFLOAT(fRec0[0]); fRec2[1] = fRec2[0]; - fRec1[2] = fRec1[1]; + fVec0[1] = fVec0[0]; + fRec7[1] = fRec7[0]; + fVec1[1] = fVec1[0]; + fRec8[1] = fRec8[0]; + fVec2[1] = fVec2[0]; + fRec9[1] = fRec9[0]; + fRec6[1] = fRec6[0]; + fRec5[1] = fRec5[0]; + fVec3[1] = fVec3[0]; + fVec4[1] = fVec4[0]; + fVec5[1] = fVec5[0]; + fRec4[1] = fRec4[0]; + fRec3[1] = fRec3[0]; + fVec6[1] = fVec6[0]; + fVec7[1] = fVec7[0]; + fVec8[1] = fVec8[0]; fRec1[1] = fRec1[0]; + fRec0[1] = fRec0[0]; } }