From fe6fb0a20d18f15ce2ff305b0bdca6822158ccc4 Mon Sep 17 00:00:00 2001 From: christopher Date: Wed, 24 Jun 2026 09:56:48 +0100 Subject: [PATCH 1/2] Correct label for offset, and block DC --- trunk/src/faust-generated/gx_distortion.cc | 370 ++++++++++++--------- trunk/src/faust/gx_distortion.dsp | 10 +- 2 files changed, 210 insertions(+), 170 deletions(-) diff --git a/trunk/src/faust-generated/gx_distortion.cc b/trunk/src/faust-generated/gx_distortion.cc index e975d900c..cabbf318d 100644 --- a/trunk/src/faust-generated/gx_distortion.cc +++ b/trunk/src/faust-generated/gx_distortion.cc @@ -11,6 +11,8 @@ class Dsp: public PluginDef { int iVec0[2]; FAUSTFLOAT fVslider1; double fRec0[2]; + FAUSTFLOAT fVslider2; + double fRec2[2]; FAUSTFLOAT fEntry0; double fConst0; double fConst1; @@ -23,51 +25,58 @@ class Dsp: public PluginDef { double fConst6; double fConst7; FAUSTFLOAT fCheckbox0; - FAUSTFLOAT fVslider2; - double fVec1[2]; FAUSTFLOAT fVslider3; - double fRec10[2]; - double fRec11[2]; - double fRec9[3]; + double fVec1[2]; + FAUSTFLOAT fVslider4; + double fRec12[2]; + double fRec13[2]; + double fRec11[3]; double fVec2[2]; double fConst8; double fConst9; double fConst10; double fConst11; double fConst12; - double fRec8[2]; + double fRec10[2]; + double fRec9[2]; + double fRec8[3]; + double fVec3[2]; double fRec7[2]; double fRec6[3]; - double fVec3[2]; + double fVec4[2]; double fRec5[2]; double fRec4[3]; - double fVec4[2]; - double fRec3[2]; - double fRec2[3]; - FAUSTFLOAT fVslider4; FAUSTFLOAT fVslider5; FAUSTFLOAT fVslider6; FAUSTFLOAT fVslider7; - double fRec12[2]; double fRec14[2]; - double fRec13[3]; + double fVec5[2]; + double fRec3[2]; FAUSTFLOAT fVslider8; - FAUSTFLOAT fVslider9; double fRec15[2]; double fRec18[2]; double fRec17[3]; - double fRec16[3]; + FAUSTFLOAT fVslider9; + double fVec6[2]; + double fRec16[2]; FAUSTFLOAT fVslider10; - FAUSTFLOAT fVslider11; double fRec19[2]; double fRec23[2]; double fRec22[3]; double fRec21[3]; - double fRec20[3]; + FAUSTFLOAT fVslider11; + double fVec7[2]; + double fRec20[2]; FAUSTFLOAT fVslider12; - FAUSTFLOAT fVslider13; double fRec24[2]; - double fVec5[2]; + double fRec29[2]; + double fRec28[3]; + double fRec27[3]; + double fRec26[3]; + FAUSTFLOAT fVslider13; + double fVec8[2]; + double fRec25[2]; + double fVec9[2]; double fConst13; double fConst14; double fConst15; @@ -124,35 +133,44 @@ inline void Dsp::clear_state_f() { for (int l0 = 0; l0 < 2; l0 = l0 + 1) iVec0[l0] = 0; for (int l1 = 0; l1 < 2; l1 = l1 + 1) fRec0[l1] = 0.0; - for (int l2 = 0; l2 < 2; l2 = l2 + 1) fVec1[l2] = 0.0; - for (int l3 = 0; l3 < 2; l3 = l3 + 1) fRec10[l3] = 0.0; - for (int l4 = 0; l4 < 2; l4 = l4 + 1) fRec11[l4] = 0.0; - for (int l5 = 0; l5 < 3; l5 = l5 + 1) fRec9[l5] = 0.0; - for (int l6 = 0; l6 < 2; l6 = l6 + 1) fVec2[l6] = 0.0; - for (int l7 = 0; l7 < 2; l7 = l7 + 1) fRec8[l7] = 0.0; - for (int l8 = 0; l8 < 2; l8 = l8 + 1) fRec7[l8] = 0.0; - for (int l9 = 0; l9 < 3; l9 = l9 + 1) fRec6[l9] = 0.0; - for (int l10 = 0; l10 < 2; l10 = l10 + 1) fVec3[l10] = 0.0; - for (int l11 = 0; l11 < 2; l11 = l11 + 1) fRec5[l11] = 0.0; - for (int l12 = 0; l12 < 3; l12 = l12 + 1) fRec4[l12] = 0.0; - for (int l13 = 0; l13 < 2; l13 = l13 + 1) fVec4[l13] = 0.0; - for (int l14 = 0; l14 < 2; l14 = l14 + 1) fRec3[l14] = 0.0; - for (int l15 = 0; l15 < 3; l15 = l15 + 1) fRec2[l15] = 0.0; - for (int l16 = 0; l16 < 2; l16 = l16 + 1) fRec12[l16] = 0.0; + for (int l2 = 0; l2 < 2; l2 = l2 + 1) fRec2[l2] = 0.0; + for (int l3 = 0; l3 < 2; l3 = l3 + 1) fVec1[l3] = 0.0; + for (int l4 = 0; l4 < 2; l4 = l4 + 1) fRec12[l4] = 0.0; + for (int l5 = 0; l5 < 2; l5 = l5 + 1) fRec13[l5] = 0.0; + for (int l6 = 0; l6 < 3; l6 = l6 + 1) fRec11[l6] = 0.0; + for (int l7 = 0; l7 < 2; l7 = l7 + 1) fVec2[l7] = 0.0; + for (int l8 = 0; l8 < 2; l8 = l8 + 1) fRec10[l8] = 0.0; + for (int l9 = 0; l9 < 2; l9 = l9 + 1) fRec9[l9] = 0.0; + for (int l10 = 0; l10 < 3; l10 = l10 + 1) fRec8[l10] = 0.0; + for (int l11 = 0; l11 < 2; l11 = l11 + 1) fVec3[l11] = 0.0; + for (int l12 = 0; l12 < 2; l12 = l12 + 1) fRec7[l12] = 0.0; + for (int l13 = 0; l13 < 3; l13 = l13 + 1) fRec6[l13] = 0.0; + for (int l14 = 0; l14 < 2; l14 = l14 + 1) fVec4[l14] = 0.0; + for (int l15 = 0; l15 < 2; l15 = l15 + 1) fRec5[l15] = 0.0; + for (int l16 = 0; l16 < 3; l16 = l16 + 1) fRec4[l16] = 0.0; for (int l17 = 0; l17 < 2; l17 = l17 + 1) fRec14[l17] = 0.0; - for (int l18 = 0; l18 < 3; l18 = l18 + 1) fRec13[l18] = 0.0; - for (int l19 = 0; l19 < 2; l19 = l19 + 1) fRec15[l19] = 0.0; - for (int l20 = 0; l20 < 2; l20 = l20 + 1) fRec18[l20] = 0.0; - for (int l21 = 0; l21 < 3; l21 = l21 + 1) fRec17[l21] = 0.0; - for (int l22 = 0; l22 < 3; l22 = l22 + 1) fRec16[l22] = 0.0; - for (int l23 = 0; l23 < 2; l23 = l23 + 1) fRec19[l23] = 0.0; - for (int l24 = 0; l24 < 2; l24 = l24 + 1) fRec23[l24] = 0.0; - for (int l25 = 0; l25 < 3; l25 = l25 + 1) fRec22[l25] = 0.0; - for (int l26 = 0; l26 < 3; l26 = l26 + 1) fRec21[l26] = 0.0; - for (int l27 = 0; l27 < 3; l27 = l27 + 1) fRec20[l27] = 0.0; - for (int l28 = 0; l28 < 2; l28 = l28 + 1) fRec24[l28] = 0.0; - for (int l29 = 0; l29 < 2; l29 = l29 + 1) fVec5[l29] = 0.0; - for (int l30 = 0; l30 < 2; l30 = l30 + 1) fRec1[l30] = 0.0; + for (int l18 = 0; l18 < 2; l18 = l18 + 1) fVec5[l18] = 0.0; + for (int l19 = 0; l19 < 2; l19 = l19 + 1) fRec3[l19] = 0.0; + for (int l20 = 0; l20 < 2; l20 = l20 + 1) fRec15[l20] = 0.0; + for (int l21 = 0; l21 < 2; l21 = l21 + 1) fRec18[l21] = 0.0; + for (int l22 = 0; l22 < 3; l22 = l22 + 1) fRec17[l22] = 0.0; + for (int l23 = 0; l23 < 2; l23 = l23 + 1) fVec6[l23] = 0.0; + for (int l24 = 0; l24 < 2; l24 = l24 + 1) fRec16[l24] = 0.0; + for (int l25 = 0; l25 < 2; l25 = l25 + 1) fRec19[l25] = 0.0; + for (int l26 = 0; l26 < 2; l26 = l26 + 1) fRec23[l26] = 0.0; + for (int l27 = 0; l27 < 3; l27 = l27 + 1) fRec22[l27] = 0.0; + for (int l28 = 0; l28 < 3; l28 = l28 + 1) fRec21[l28] = 0.0; + for (int l29 = 0; l29 < 2; l29 = l29 + 1) fVec7[l29] = 0.0; + for (int l30 = 0; l30 < 2; l30 = l30 + 1) fRec20[l30] = 0.0; + for (int l31 = 0; l31 < 2; l31 = l31 + 1) fRec24[l31] = 0.0; + for (int l32 = 0; l32 < 2; l32 = l32 + 1) fRec29[l32] = 0.0; + for (int l33 = 0; l33 < 3; l33 = l33 + 1) fRec28[l33] = 0.0; + for (int l34 = 0; l34 < 3; l34 = l34 + 1) fRec27[l34] = 0.0; + for (int l35 = 0; l35 < 3; l35 = l35 + 1) fRec26[l35] = 0.0; + for (int l36 = 0; l36 < 2; l36 = l36 + 1) fVec8[l36] = 0.0; + for (int l37 = 0; l37 < 2; l37 = l37 + 1) fRec25[l37] = 0.0; + for (int l38 = 0; l38 < 2; l38 = l38 + 1) fVec9[l38] = 0.0; + for (int l39 = 0; l39 < 2; l39 = l39 + 1) fRec1[l39] = 0.0; } void Dsp::clear_state_f_static(PluginDef *p) @@ -163,7 +181,7 @@ void Dsp::clear_state_f_static(PluginDef *p) inline void Dsp::init(unsigned int sample_rate) { fSampleRate = sample_rate; - fConst0 = std::min(1.92e+05, std::max(1.0, double(fSampleRate))); + fConst0 = std::min(1.92e+05, std::max(1.0, static_cast(fSampleRate))); fConst1 = 3.141592653589793 / fConst0; fConst2 = std::tan(47123.8898038469 / fConst0); fConst3 = 2.0 * (1.0 - 1.0 / mydsp_faustpower2_f(fConst2)); @@ -189,135 +207,148 @@ void Dsp::init_static(unsigned int sample_rate, PluginDef *p) void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0) { - double fSlow0 = 0.01 * double(fVslider0); + double fSlow0 = 0.01 * static_cast(fVslider0); double fSlow1 = 1.0 - fSlow0; - double fSlow2 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (double(fVslider1) + -1e+01)); - double fSlow3 = std::tan(fConst1 * double(fEntry0)); - double fSlow4 = mydsp_faustpower2_f(fSlow3); - double fSlow5 = 2.0 * (1.0 - 1.0 / fSlow4); - double fSlow6 = 1.0 / fSlow3; - double fSlow7 = (fSlow6 + -1.0000000000000004) / fSlow3 + 1.0; - double fSlow8 = (fSlow6 + 1.0000000000000004) / fSlow3 + 1.0; - double fSlow9 = 1.0 / fSlow8; - double fSlow10 = std::tan(fConst1 * double(fEntry1)); - double fSlow11 = mydsp_faustpower2_f(fSlow10); - double fSlow12 = 2.0 * (1.0 - 1.0 / fSlow11); - double fSlow13 = 1.0 / fSlow10; - double fSlow14 = (fSlow13 + -1.0000000000000004) / fSlow10 + 1.0; - double fSlow15 = (fSlow13 + 1.0000000000000004) / fSlow10 + 1.0; - double fSlow16 = 1.0 / fSlow15; - double fSlow17 = std::tan(fConst1 * double(fEntry2)); - double fSlow18 = mydsp_faustpower2_f(fSlow17); - double fSlow19 = 2.0 * (1.0 - 1.0 / fSlow18); - double fSlow20 = 1.0 / fSlow17; - double fSlow21 = (fSlow20 + -1.0000000000000004) / fSlow17 + 1.0; - double fSlow22 = (fSlow20 + 1.0000000000000004) / fSlow17 + 1.0; - double fSlow23 = 1.0 / fSlow22; - int iSlow24 = int(double(fCheckbox0)); - double fSlow25 = 1.0 - double(fVslider2); - double fSlow26 = double(fVslider3); - int iSlow27 = int(std::min(4096.0, std::max(0.0, fSlow26))); - int iSlow28 = int(std::min(4096.0, std::max(0.0, fSlow26 + -1.0))); - double fSlow29 = 1.0 - fSlow20; - double fSlow30 = 1.0 / (fSlow20 + 1.0); - double fSlow31 = 1.0 - fSlow13; - double fSlow32 = fSlow13 + 1.0; - double fSlow33 = 1.0 / fSlow32; - double fSlow34 = 1.0 - fSlow6; - double fSlow35 = fSlow6 + 1.0; - double fSlow36 = 1.0 / fSlow35; - double fSlow37 = double(fVslider5); - double fSlow38 = std::pow(1e+01, 2.0 * fSlow37 * double(fVslider4)) / fSlow8; - double fSlow39 = double(fVslider6); - double fSlow40 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (double(fVslider7) + -1e+01)); - double fSlow41 = std::pow(1e+01, 2.0 * fSlow37 * double(fVslider8)) / (fSlow4 * fSlow8); - double fSlow42 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (double(fVslider9) + -1e+01)); - double fSlow43 = 1.0 - fSlow34 / fSlow3; - double fSlow44 = 1.0 / (fSlow35 / fSlow3 + 1.0); - double fSlow45 = 1.0 / (fSlow11 * fSlow15); - double fSlow46 = std::pow(1e+01, 2.0 * fSlow37 * double(fVslider10)); - double fSlow47 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (double(fVslider11) + -1e+01)); - double fSlow48 = 1.0 - fSlow31 / fSlow10; - double fSlow49 = 1.0 / (fSlow32 / fSlow10 + 1.0); - double fSlow50 = 1.0 / (fSlow18 * fSlow22); - double fSlow51 = std::pow(1e+01, 2.0 * fSlow37 * double(fVslider12)); - double fSlow52 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (double(fVslider13) + -1e+01)); + double fSlow2 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (static_cast(fVslider1) + -1e+01)); + double fSlow3 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (static_cast(fVslider2) + -1e+01)); + double fSlow4 = std::tan(fConst1 * static_cast(fEntry0)); + double fSlow5 = mydsp_faustpower2_f(fSlow4); + double fSlow6 = 2.0 * (1.0 - 1.0 / fSlow5); + double fSlow7 = 1.0 / fSlow4; + double fSlow8 = (fSlow7 + -1.0000000000000004) / fSlow4 + 1.0; + double fSlow9 = (fSlow7 + 1.0000000000000004) / fSlow4 + 1.0; + double fSlow10 = 1.0 / fSlow9; + double fSlow11 = std::tan(fConst1 * static_cast(fEntry1)); + double fSlow12 = mydsp_faustpower2_f(fSlow11); + double fSlow13 = 2.0 * (1.0 - 1.0 / fSlow12); + double fSlow14 = 1.0 / fSlow11; + double fSlow15 = (fSlow14 + -1.0000000000000004) / fSlow11 + 1.0; + double fSlow16 = (fSlow14 + 1.0000000000000004) / fSlow11 + 1.0; + double fSlow17 = 1.0 / fSlow16; + double fSlow18 = std::tan(fConst1 * static_cast(fEntry2)); + double fSlow19 = mydsp_faustpower2_f(fSlow18); + double fSlow20 = 2.0 * (1.0 - 1.0 / fSlow19); + double fSlow21 = 1.0 / fSlow18; + double fSlow22 = (fSlow21 + -1.0000000000000004) / fSlow18 + 1.0; + double fSlow23 = (fSlow21 + 1.0000000000000004) / fSlow18 + 1.0; + double fSlow24 = 1.0 / fSlow23; + int iSlow25 = static_cast(static_cast(fCheckbox0)); + double fSlow26 = 1.0 - static_cast(fVslider3); + double fSlow27 = static_cast(fVslider4); + int iSlow28 = static_cast(std::min(4096.0, std::max(0.0, fSlow27))); + int iSlow29 = static_cast(std::min(4096.0, std::max(0.0, fSlow27 + -1.0))); + double fSlow30 = 1.0 - fSlow21; + double fSlow31 = 1.0 / (fSlow21 + 1.0); + double fSlow32 = 1.0 - fSlow14; + double fSlow33 = fSlow14 + 1.0; + double fSlow34 = 1.0 / fSlow33; + double fSlow35 = 1.0 - fSlow7; + double fSlow36 = fSlow7 + 1.0; + double fSlow37 = 1.0 / fSlow36; + double fSlow38 = static_cast(fVslider6); + double fSlow39 = std::pow(1e+01, 2.0 * fSlow38 * static_cast(fVslider5)) / fSlow9; + double fSlow40 = 0.0010000000000000009 * static_cast(fVslider7); + double fSlow41 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (static_cast(fVslider8) + -1e+01)); + double fSlow42 = std::pow(1e+01, 2.0 * fSlow38 * static_cast(fVslider9)) / (fSlow5 * fSlow9); + double fSlow43 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (static_cast(fVslider10) + -1e+01)); + double fSlow44 = 1.0 - fSlow35 / fSlow4; + double fSlow45 = 1.0 / (fSlow36 / fSlow4 + 1.0); + double fSlow46 = 1.0 / (fSlow12 * fSlow16); + double fSlow47 = std::pow(1e+01, 2.0 * fSlow38 * static_cast(fVslider11)); + double fSlow48 = 0.0010000000000000009 * std::pow(1e+01, 0.05 * (static_cast(fVslider12) + -1e+01)); + double fSlow49 = 1.0 - fSlow32 / fSlow11; + double fSlow50 = 1.0 / (fSlow33 / fSlow11 + 1.0); + double fSlow51 = 1.0 / (fSlow19 * fSlow23); + double fSlow52 = std::pow(1e+01, 2.0 * fSlow38 * static_cast(fVslider13)); for (int i0 = 0; i0 < count; i0 = i0 + 1) { - double fTemp0 = double(input0[i0]); + double fTemp0 = static_cast(input0[i0]); iVec0[0] = 1; fRec0[0] = fSlow2 + 0.999 * fRec0[1]; + fRec2[0] = fSlow3 + 0.999 * fRec2[1]; double fTemp1 = fSlow0 * fTemp0; - double fTemp2 = fTemp1 + fSlow25 * fRec10[1]; + double fTemp2 = fTemp1 + fSlow26 * fRec12[1]; fVec1[0] = fTemp2; - fRec10[0] = 0.5 * (fVec1[iSlow28] + fVec1[iSlow27]); - fRec11[0] = 1e-20 * double(1 - iVec0[1]) - fRec11[1]; - fRec9[0] = fRec11[0] + ((iSlow24) ? fRec10[0] : fTemp1) - fConst7 * (fConst5 * fRec9[2] + fConst3 * fRec9[1]); - double fTemp3 = fRec9[2] + fRec9[0] + 2.0 * fRec9[1]; + fRec12[0] = 0.5 * (fVec1[iSlow29] + fVec1[iSlow28]); + fRec13[0] = 1e-20 * static_cast(1 - iVec0[1]) - fRec13[1]; + fRec11[0] = fRec13[0] + ((iSlow25) ? fRec12[0] : fTemp1) - fConst7 * (fConst5 * fRec11[2] + fConst3 * fRec11[1]); + double fTemp3 = fRec11[2] + fRec11[0] + 2.0 * fRec11[1]; fVec2[0] = fTemp3; - fRec8[0] = -(fConst12 * (fConst11 * fRec8[1] - fConst9 * (fTemp3 - fVec2[1]))); - fRec7[0] = -(fSlow30 * (fSlow29 * fRec7[1] - (fRec8[0] + fRec8[1]))); - fRec6[0] = fRec7[0] - fSlow23 * (fSlow21 * fRec6[2] + fSlow19 * fRec6[1]); - double fTemp4 = fSlow23 * (fRec6[2] + fRec6[0] + 2.0 * fRec6[1]); + fRec10[0] = -(fConst12 * (fConst11 * fRec10[1] - fConst9 * (fTemp3 - fVec2[1]))); + fRec9[0] = -(fSlow31 * (fSlow30 * fRec9[1] - (fRec10[0] + fRec10[1]))); + fRec8[0] = fRec9[0] - fSlow24 * (fSlow22 * fRec8[2] + fSlow20 * fRec8[1]); + double fTemp4 = fSlow24 * (fRec8[2] + fRec8[0] + 2.0 * fRec8[1]); fVec3[0] = fTemp4; - fRec5[0] = -(fSlow33 * (fSlow31 * fRec5[1] - (fTemp4 + fVec3[1]))); - fRec4[0] = fRec5[0] - fSlow16 * (fSlow14 * fRec4[2] + fSlow12 * fRec4[1]); - double fTemp5 = fSlow16 * (fRec4[2] + fRec4[0] + 2.0 * fRec4[1]); + fRec7[0] = -(fSlow34 * (fSlow32 * fRec7[1] - (fTemp4 + fVec3[1]))); + fRec6[0] = fRec7[0] - fSlow17 * (fSlow15 * fRec6[2] + fSlow13 * fRec6[1]); + double fTemp5 = fSlow17 * (fRec6[2] + fRec6[0] + 2.0 * fRec6[1]); fVec4[0] = fTemp5; - fRec3[0] = -(fSlow36 * (fSlow34 * fRec3[1] - (fTemp5 + fVec4[1]))); - fRec2[0] = fRec3[0] - fSlow9 * (fSlow7 * fRec2[2] + fSlow5 * fRec2[1]); - double fTemp6 = std::max(-1.0, std::min(1.0, fSlow39 + fSlow38 * (fRec2[2] + fRec2[0] + 2.0 * fRec2[1]))); - fRec12[0] = fSlow40 + 0.999 * fRec12[1]; - fRec14[0] = -(fSlow36 * (fSlow34 * fRec14[1] - fSlow6 * (fTemp5 - fVec4[1]))); - fRec13[0] = fRec14[0] - fSlow9 * (fSlow7 * fRec13[2] + fSlow5 * fRec13[1]); - double fTemp7 = std::max(-1.0, std::min(1.0, fSlow39 + fSlow41 * (fRec13[2] + (fRec13[0] - 2.0 * fRec13[1])))); - fRec15[0] = fSlow42 + 0.999 * fRec15[1]; - double fTemp8 = fSlow5 * fRec16[1]; - fRec18[0] = -(fSlow33 * (fSlow31 * fRec18[1] - fSlow13 * (fTemp4 - fVec3[1]))); - fRec17[0] = fRec18[0] - fSlow16 * (fSlow14 * fRec17[2] + fSlow12 * fRec17[1]); - fRec16[0] = fSlow45 * (fRec17[2] + (fRec17[0] - 2.0 * fRec17[1])) - fSlow44 * (fSlow43 * fRec16[2] + fTemp8); - double fTemp9 = std::max(-1.0, std::min(1.0, fSlow39 + fSlow46 * (fRec16[2] + fSlow44 * (fTemp8 + fSlow43 * fRec16[0])))); - fRec19[0] = fSlow47 + 0.999 * fRec19[1]; - double fTemp10 = fSlow5 * fRec20[1]; - double fTemp11 = fSlow12 * fRec21[1]; - fRec23[0] = -(fSlow30 * (fSlow29 * fRec23[1] - fSlow20 * (fRec8[0] - fRec8[1]))); - fRec22[0] = fRec23[0] - fSlow23 * (fSlow21 * fRec22[2] + fSlow19 * fRec22[1]); - fRec21[0] = fSlow50 * (fRec22[2] + (fRec22[0] - 2.0 * fRec22[1])) - fSlow49 * (fSlow48 * fRec21[2] + fTemp11); - fRec20[0] = fRec21[2] + fSlow49 * (fTemp11 + fSlow48 * fRec21[0]) - fSlow44 * (fSlow43 * fRec20[2] + fTemp10); - double fTemp12 = std::max(-1.0, std::min(1.0, fSlow39 + fSlow51 * (fRec20[2] + fSlow44 * (fTemp10 + fSlow43 * fRec20[0])))); - fRec24[0] = fSlow52 + 0.999 * fRec24[1]; - double fTemp13 = fRec24[0] * fTemp12 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp12)) + fRec19[0] * fTemp9 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp9)) + fRec15[0] * fTemp7 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp7)) + fRec12[0] * fTemp6 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp6)); - fVec5[0] = fTemp13; - fRec1[0] = -(fConst15 * (fConst14 * fRec1[1] - (fTemp13 + fVec5[1]))); - output0[i0] = FAUSTFLOAT(fRec1[0] * fRec0[0] + fSlow1 * fTemp0); + fRec5[0] = -(fSlow37 * (fSlow35 * fRec5[1] - (fTemp5 + fVec4[1]))); + fRec4[0] = fRec5[0] - fSlow10 * (fSlow8 * fRec4[2] + fSlow6 * fRec4[1]); + fRec14[0] = fSlow40 + 0.999 * fRec14[1]; + double fTemp6 = std::max(-1.0, std::min(1.0, fRec14[0] + fSlow39 * (fRec4[2] + fRec4[0] + 2.0 * fRec4[1]))); + double fTemp7 = fTemp6 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp6)); + fVec5[0] = fTemp7; + fRec3[0] = 0.995 * fRec3[1] + fTemp7 - fVec5[1]; + fRec15[0] = fSlow41 + 0.999 * fRec15[1]; + fRec18[0] = -(fSlow37 * (fSlow35 * fRec18[1] - fSlow7 * (fTemp5 - fVec4[1]))); + fRec17[0] = fRec18[0] - fSlow10 * (fSlow8 * fRec17[2] + fSlow6 * fRec17[1]); + double fTemp8 = std::max(-1.0, std::min(1.0, fRec14[0] + fSlow42 * (fRec17[2] + (fRec17[0] - 2.0 * fRec17[1])))); + double fTemp9 = fTemp8 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp8)); + fVec6[0] = fTemp9; + fRec16[0] = 0.995 * fRec16[1] + fTemp9 - fVec6[1]; + fRec19[0] = fSlow43 + 0.999 * fRec19[1]; + double fTemp10 = fSlow6 * fRec21[1]; + fRec23[0] = -(fSlow34 * (fSlow32 * fRec23[1] - fSlow14 * (fTemp4 - fVec3[1]))); + fRec22[0] = fRec23[0] - fSlow17 * (fSlow15 * fRec22[2] + fSlow13 * fRec22[1]); + fRec21[0] = fSlow46 * (fRec22[2] + (fRec22[0] - 2.0 * fRec22[1])) - fSlow45 * (fSlow44 * fRec21[2] + fTemp10); + double fTemp11 = std::max(-1.0, std::min(1.0, fRec14[0] + fSlow47 * (fRec21[2] + fSlow45 * (fTemp10 + fSlow44 * fRec21[0])))); + double fTemp12 = fTemp11 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp11)); + fVec7[0] = fTemp12; + fRec20[0] = 0.995 * fRec20[1] + fTemp12 - fVec7[1]; + fRec24[0] = fSlow48 + 0.999 * fRec24[1]; + double fTemp13 = fSlow6 * fRec26[1]; + double fTemp14 = fSlow13 * fRec27[1]; + fRec29[0] = -(fSlow31 * (fSlow30 * fRec29[1] - fSlow21 * (fRec10[0] - fRec10[1]))); + fRec28[0] = fRec29[0] - fSlow24 * (fSlow22 * fRec28[2] + fSlow20 * fRec28[1]); + fRec27[0] = fSlow51 * (fRec28[2] + (fRec28[0] - 2.0 * fRec28[1])) - fSlow50 * (fSlow49 * fRec27[2] + fTemp14); + fRec26[0] = fRec27[2] + fSlow50 * (fTemp14 + fSlow49 * fRec27[0]) - fSlow45 * (fSlow44 * fRec26[2] + fTemp13); + double fTemp15 = std::max(-1.0, std::min(1.0, fRec14[0] + fSlow52 * (fRec26[2] + fSlow45 * (fTemp13 + fSlow44 * fRec26[0])))); + double fTemp16 = fTemp15 * (1.0 - 0.3333333333333333 * mydsp_faustpower2_f(fTemp15)); + fVec8[0] = fTemp16; + fRec25[0] = 0.995 * fRec25[1] + fTemp16 - fVec8[1]; + double fTemp17 = fRec25[0] * fRec24[0] + fRec20[0] * fRec19[0] + fRec16[0] * fRec15[0] + fRec3[0] * fRec2[0]; + fVec9[0] = fTemp17; + fRec1[0] = -(fConst15 * (fConst14 * fRec1[1] - (fTemp17 + fVec9[1]))); + output0[i0] = static_cast(fRec1[0] * fRec0[0] + fSlow1 * fTemp0); iVec0[1] = iVec0[0]; fRec0[1] = fRec0[0]; + fRec2[1] = fRec2[0]; fVec1[1] = fVec1[0]; - fRec10[1] = fRec10[0]; + fRec12[1] = fRec12[0]; + fRec13[1] = fRec13[0]; + fRec11[2] = fRec11[1]; fRec11[1] = fRec11[0]; - fRec9[2] = fRec9[1]; - fRec9[1] = fRec9[0]; fVec2[1] = fVec2[0]; + fRec10[1] = fRec10[0]; + fRec9[1] = fRec9[0]; + fRec8[2] = fRec8[1]; fRec8[1] = fRec8[0]; + fVec3[1] = fVec3[0]; fRec7[1] = fRec7[0]; fRec6[2] = fRec6[1]; fRec6[1] = fRec6[0]; - fVec3[1] = fVec3[0]; + fVec4[1] = fVec4[0]; fRec5[1] = fRec5[0]; fRec4[2] = fRec4[1]; fRec4[1] = fRec4[0]; - fVec4[1] = fVec4[0]; - fRec3[1] = fRec3[0]; - fRec2[2] = fRec2[1]; - fRec2[1] = fRec2[0]; - fRec12[1] = fRec12[0]; fRec14[1] = fRec14[0]; - fRec13[2] = fRec13[1]; - fRec13[1] = fRec13[0]; + fVec5[1] = fVec5[0]; + fRec3[1] = fRec3[0]; fRec15[1] = fRec15[0]; fRec18[1] = fRec18[0]; fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0]; - fRec16[2] = fRec16[1]; + fVec6[1] = fVec6[0]; fRec16[1] = fRec16[0]; fRec19[1] = fRec19[0]; fRec23[1] = fRec23[0]; @@ -325,10 +356,19 @@ void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *outpu fRec22[1] = fRec22[0]; fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0]; - fRec20[2] = fRec20[1]; + fVec7[1] = fVec7[0]; fRec20[1] = fRec20[0]; fRec24[1] = fRec24[0]; - fVec5[1] = fVec5[0]; + fRec29[1] = fRec29[0]; + fRec28[2] = fRec28[1]; + fRec28[1] = fRec28[0]; + fRec27[2] = fRec27[1]; + fRec27[1] = fRec27[0]; + fRec26[2] = fRec26[1]; + fRec26[1] = fRec26[0]; + fVec8[1] = fVec8[0]; + fRec25[1] = fRec25[0]; + fVec9[1] = fVec9[0]; fRec1[1] = fRec1[0]; } } @@ -340,23 +380,23 @@ void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *ou int Dsp::register_par(const ParamReg& reg) { - reg.registerFloatVar("gx_distortion.drive",N_("Drive"),"S","",&fVslider5, 0.64, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.drive",N_("Drive"),"S","",&fVslider6, 0.64, 0.0, 1.0, 0.01, 0); reg.registerFloatVar("gx_distortion.gain",N_("Gain"),"S","",&fVslider1, 2.0, -1e+01, 1e+01, 0.1, 0); - reg.registerFloatVar("gx_distortion.high_drive",N_("Hi"),"S","",&fVslider12, 1.0, 0.0, 1.0, 0.01, 0); - reg.registerFloatVar("gx_distortion.high_gain",N_("Hi"),"S","",&fVslider13, 1e+01, -1e+01, 2e+01, 0.1, 0); - reg.registerFloatVar("gx_distortion.level",N_("Level"),"S","",&fVslider6, 0.0, 0.0, 0.5, 0.01, 0); - reg.registerFloatVar("gx_distortion.low_drive",N_("Lo"),"S","",&fVslider4, 1.0, 0.0, 1.0, 0.01, 0); - reg.registerFloatVar("gx_distortion.low_gain",N_("Lo"),"S","",&fVslider7, 1e+01, -1e+01, 2e+01, 0.1, 0); - reg.registerFloatVar("gx_distortion.middle_h_drive",N_("HiMid"),"S","",&fVslider10, 1.0, 0.0, 1.0, 0.01, 0); - reg.registerFloatVar("gx_distortion.middle_h_gain",N_("HiMid"),"S","",&fVslider11, 1e+01, -1e+01, 2e+01, 0.1, 0); - reg.registerFloatVar("gx_distortion.middle_l_drive",N_("LoMid"),"S","",&fVslider8, 1.0, 0.0, 1.0, 0.01, 0); - reg.registerFloatVar("gx_distortion.middle_l_gain",N_("LoMid"),"S","",&fVslider9, 1e+01, -1e+01, 2e+01, 0.1, 0); + reg.registerFloatVar("gx_distortion.high_drive",N_("Hi"),"S","",&fVslider13, 1.0, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.high_gain",N_("Hi"),"S","",&fVslider12, 1e+01, -1e+01, 2e+01, 0.1, 0); + reg.registerFloatVar("gx_distortion.level",N_("Offset"),"S",N_("Brings in even harmonics"),&fVslider7, 0.0, 0.0, 0.5, 0.01, 0); + reg.registerFloatVar("gx_distortion.low_drive",N_("Lo"),"S","",&fVslider5, 1.0, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.low_gain",N_("Lo"),"S","",&fVslider2, 1e+01, -1e+01, 2e+01, 0.1, 0); + reg.registerFloatVar("gx_distortion.middle_h_drive",N_("HiMid"),"S","",&fVslider11, 1.0, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.middle_h_gain",N_("HiMid"),"S","",&fVslider10, 1e+01, -1e+01, 2e+01, 0.1, 0); + reg.registerFloatVar("gx_distortion.middle_l_drive",N_("LoMid"),"S","",&fVslider9, 1.0, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.middle_l_gain",N_("LoMid"),"S","",&fVslider8, 1e+01, -1e+01, 2e+01, 0.1, 0); reg.registerFloatVar("gx_distortion.resonator.on_off",N_("resonat"),"B","",&fCheckbox0, 0.0, 0.0, 1.0, 1.0, 0); reg.registerFloatVar("gx_distortion.split_high_freq",N_("Split Hi"),"S","",&fEntry2, 1.25e+03, 1.25e+03, 1.2e+04, 1e+01, 0); reg.registerFloatVar("gx_distortion.split_low_freq",N_("Split Lo"),"S","",&fEntry0, 2.5e+02, 2e+01, 6e+02, 1e+01, 0); reg.registerFloatVar("gx_distortion.split_middle_freq",N_("Split Mid"),"S","",&fEntry1, 6.5e+02, 6e+02, 1.25e+03, 1e+01, 0); - reg.registerFloatVar("gx_distortion.trigger",N_("Trigger"),"S","",&fVslider2, 0.12, 0.0, 1.0, 0.01, 0); - reg.registerFloatVar("gx_distortion.vibrato",N_("Vibrato"),"S","",&fVslider3, 1.0, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.trigger",N_("Trigger"),"S","",&fVslider3, 0.12, 0.0, 1.0, 0.01, 0); + reg.registerFloatVar("gx_distortion.vibrato",N_("Vibrato"),"S","",&fVslider4, 1.0, 0.0, 1.0, 0.01, 0); reg.registerFloatVar("gx_distortion.wet_dry",N_("Wet/Dry"),"S",N_("percentage of processed signal in output signal"),&fVslider0, 1e+02, 0.0, 1e+02, 1.0, 0); return 0; } diff --git a/trunk/src/faust/gx_distortion.dsp b/trunk/src/faust/gx_distortion.dsp index 8c0f8a457..8579d53cc 100644 --- a/trunk/src/faust/gx_distortion.dsp +++ b/trunk/src/faust/gx_distortion.dsp @@ -111,7 +111,7 @@ filterbankN(lfreqs) = fi.filterbank(3,lfreqs); //----------distortion--------- //-distortion -drivelevel = vslider("level[name:Level]", 0.0, 0, 0.5, 0.01); +offset = vslider("level[name:Offset][tooltip: Brings in even harmonics]", 0.0, 0, 0.5, 0.01) : smoothi(0.999); drivegain1 = vslider("gain[name:Gain]", 2, -10, 10, 0.1)-10 : ba.db2linear : smoothi(0.999); low_gain = vslider("low_gain[name:Lo]", 10, -10, 20, 0.1)-10 : ba.db2linear : smoothi(0.999); high_gain = vslider("high_gain[name:Hi]", 10, -10, 20, 0.1)-10 : ba.db2linear : smoothi(0.999); @@ -122,10 +122,10 @@ drive1 = vslider("low_drive[name:Lo]", 1, 0, 1, 0.01)*drive; drive2 = vslider("high_drive[name:Hi]", 1, 0, 1, 0.01)*drive; drive3 = vslider("middle_l_drive[name:LoMid]", 1, 0, 1, 0.01)*drive; drive4 = vslider("middle_h_drive[name:HiMid]", 1, 0, 1, 0.01)*drive; -distortion1 = _:ef.cubicnl(drive1,drivelevel): *(low_gain); -distortion2 = _:ef.cubicnl(drive2,drivelevel) : *(high_gain); -distortion3 = _:ef.cubicnl(drive3,drivelevel) : *(middle_gain_l); -distortion4 = _:ef.cubicnl(drive4,drivelevel) : *(middle_gain_h); +distortion1 = _:ef.cubicnl_nodc(drive1,offset): *(low_gain); +distortion2 = _:ef.cubicnl_nodc(drive2,offset) : *(high_gain); +distortion3 = _:ef.cubicnl_nodc(drive3,offset) : *(middle_gain_l); +distortion4 = _:ef.cubicnl_nodc(drive4,offset) : *(middle_gain_h); distortion = fi.lowpass(2,15000.0): fi.highpass(1,31.0) : filterbankN((F,(F1,F2))) : distortion2,distortion4 ,distortion3,distortion1 :>fi.lowpass(1,6531.0); //-resonator From 71c2f2220e4635d79e6bd7488d817d61d04d6707 Mon Sep 17 00:00:00 2001 From: christopher Date: Wed, 24 Jun 2026 09:58:28 +0100 Subject: [PATCH 2/2] Remove redundant code --- trunk/src/faust/gx_distortion.dsp | 94 +------------------------------ 1 file changed, 1 insertion(+), 93 deletions(-) diff --git a/trunk/src/faust/gx_distortion.dsp b/trunk/src/faust/gx_distortion.dsp index 8579d53cc..3b1c9fdb2 100644 --- a/trunk/src/faust/gx_distortion.dsp +++ b/trunk/src/faust/gx_distortion.dsp @@ -18,98 +18,6 @@ F = nentry("split_low_freq[name:Split Lo]", 250, 20, 600, 10); F1 = nentry("split_middle_freq[name:Split Mid]", 650, 600, 1250, 10); F2 = nentry("split_high_freq[name:Split Hi]", 1250, 1250, 12000, 10); -/********************************************************************** -*** this part is included here for backward compatibility from 0.9.27 to -*** 0.9.24 -***********************************************************************/ - -//------------------------------ ba.count and ba.take -------------------------------------- - -countN ((xs, xxs)) = 1 + countN(xxs); -countN (xx) = 1; - -takeN (1, (xs, xxs)) = xs; -takeN (1, xs) = xs; -takeN (nn, (xs, xxs)) = takeN (nn-1, xxs); - -//------------------------------ low/high-passfilters -------------------------------------- - -tf1N(b0,b1,a1) = _ <: *(b0), (mem : *(b1)) :> + ~ *(0-a1); - -tf2N(b0,b1,b2,a1,a2) = sub ~ conv2(a1,a2) : conv3(b0,b1,b2) -with { - conv3(k0,k1,k2,x) = k0*x + k1*x' + k2*x''; - conv2(k0,k1,x) = k0*x + k1*x'; - sub(x,y) = y-x; -}; - -tf1sN(b1,b0,a0,w1) = tf1N(b0d,b1d,a1d) -with { - c = 1/tan((w1)*0.5/ma.SR); // bilinear-transform scale-factor - d = a0 + c; - b1d = (b0 - b1*c) / d; - b0d = (b0 + b1*c) / d; - a1d = (a0 - c) / d; -}; - -tf2sN(b2,b1,b0,a1,a0,w1) = tf2N(b0d,b1d,b2d,a1d,a2d) -with { - c = 1/tan((w1)*0.5/ma.SR); // bilinear-transform scale-factor - csq = c*c; - d = a0 + a1 * c + csq; - b0d = (b0 + b1 * c + b2 * csq)/d; - b1d = 2 * (b0 - b2 * csq)/d; - b2d = (b0 - b1 * c + b2 * csq)/d; - a1d = 2 * (a0 - csq)/d; - a2d = (a0 - a1*c + csq)/d; -}; - -lowpassN(N,fc) = lowpass0_highpass1N(0,N,fc); -highpassN(N,fc) = lowpass0_highpass1N(1,N,fc); -lowpass0_highpass1N(s,N,fc) = lphpr(s,N,N,fc) -with { - lphpr(s,0,N,fc) = _; - lphpr(s,1,N,fc) = tf1sN(s,1-s,1,2*ma.PI*fc); - lphpr(s,O,N,fc) = lphpr(s,(O-2),N,fc) : tf2sN(s,0,1-s,a1s,1,w1) with { - parity = N % 2; - S = (O-parity)/2; // current section number - a1s = -2*cos(-ma.PI + (1-parity)*ma.PI/(2*N) + (S-1+parity)*ma.PI/N); - w1 = 2*ma.PI*fc; - }; -}; - -//------------------------------ an.analyzer -------------------------------------- -analyzern(O,lfreqs) = _ <: bsplit(nb) with -{ - nb = countN(lfreqs); - fc(n) = takeN(n, lfreqs); - lp(n) = lowpassN(O,fc(n)); - hp(n) = highpassN(O,fc(n)); - bsplit(0) = _; - bsplit(i) = hp(i), (lp(i) <: bsplit(i-1)); -}; - -analyzerN(lfreqs) = analyzern(3,lfreqs); - -filterbankn(O,lfreqs) = analyzern(O,lfreqs) : delayeq with -{ - nb = ba.count(lfreqs); - fc(n) = ba.take(n, lfreqs); - ap(n) = fi.highpass_plus_lowpass(O,fc(n)); - delayeq = par(i,nb-1,apchain(nb-1-i)),_,_; - apchain(0) = _; - apchain(i) = ap(i) : apchain(i-1); -}; - -filterbankN(lfreqs) = fi.filterbank(3,lfreqs); - -/********************************************************************** -*** end for backward compatibility from 0.9.27 to -*** 0.9.24 , it could removed when switch completely to > 0.9.27 -***********************************************************************/ - -//----------distortion--------- - //-distortion offset = vslider("level[name:Offset][tooltip: Brings in even harmonics]", 0.0, 0, 0.5, 0.01) : smoothi(0.999); drivegain1 = vslider("gain[name:Gain]", 2, -10, 10, 0.1)-10 : ba.db2linear : smoothi(0.999); @@ -126,7 +34,7 @@ distortion1 = _:ef.cubicnl_nodc(drive1,offset): *(low_gain); distortion2 = _:ef.cubicnl_nodc(drive2,offset) : *(high_gain); distortion3 = _:ef.cubicnl_nodc(drive3,offset) : *(middle_gain_l); distortion4 = _:ef.cubicnl_nodc(drive4,offset) : *(middle_gain_h); -distortion = fi.lowpass(2,15000.0): fi.highpass(1,31.0) : filterbankN((F,(F1,F2))) : distortion2,distortion4 ,distortion3,distortion1 :>fi.lowpass(1,6531.0); +distortion = fi.lowpass(2,15000.0): fi.highpass(1,31.0) : fi.filterbank(3, (F,(F1,F2))) : distortion2,distortion4 ,distortion3,distortion1 :>fi.lowpass(1,6531.0); //-resonator resonator = (+ <: (de.delay(4096, d-1) + de.delay(4096, d)) / 2) ~ *(1.0-a)