diff --git a/examples/faustlpf.c b/examples/faustlpf.c index 893cd88..fac3663 100644 --- a/examples/faustlpf.c +++ b/examples/faustlpf.c @@ -1,7 +1,6 @@ - //------------------------------------------------------------------------------ // This file was generated using the Faust compiler (https://faust.grame.fr), -// and the Faust post-processor (https://github.com/SpotlightKid/faustpp). +// and the Faust post-processor (https://github.com/SpotlightKid/faustdoctor). // // Source: faustlpf.dsp // Name: FaustLPF @@ -9,22 +8,15 @@ // Copyright: Christopher Arndt, 2024 // License: MIT // Version: 0.1.0 -// FAUST version: 2.75.10 -// FAUST compilation options: -a /home/chris/tmp/tmpebxwoqng.c -lang c -rui -ct 1 -fm def -cn faustlpf -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0 -vec -lv 0 -vs 32 +// FAUST version: 2.76.0 +// FAUST compilation options: -a /home/chris/tmp/tmpnf8hapuk.c -lang c -rui -ct 1 -fm def -cn faustlpf -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0 -vec -lv 0 -vs 32 //------------------------------------------------------------------------------ - - - #include "faustlpf.h" - - - //------------------------------------------------------------------------------ // Begin the Faust code section - #if defined(__GNUC__) # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wunused-parameter" @@ -54,7 +46,7 @@ extern "C" { #include static float faustlpf_faustpower2_f(float value) { - return value * value; + return value * value; } #ifndef FAUSTCLASS @@ -69,314 +61,314 @@ static float faustlpf_faustpower2_f(float value) { faustlpf* newfaustlpf() { - faustlpf* dsp = (faustlpf*)calloc(1, sizeof(faustlpf)); - return dsp; + faustlpf* dsp = (faustlpf*)calloc(1, sizeof(faustlpf)); + return dsp; } void deletefaustlpf(faustlpf* dsp) { - free(dsp); + free(dsp); } void metadatafaustlpf(MetaGlue* m) { - m->declare(m->metaInterface, "author", "Christopher Arndt"); - m->declare(m->metaInterface, "compile_options", "-a /home/chris/tmp/tmpebxwoqng.c -lang c -rui -ct 1 -fm def -cn faustlpf -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0 -vec -lv 0 -vs 32"); - m->declare(m->metaInterface, "copyright", "Christopher Arndt, 2024"); - m->declare(m->metaInterface, "filename", "faustlpf.dsp"); - m->declare(m->metaInterface, "filters.lib/fir:author", "Julius O. Smith III"); - m->declare(m->metaInterface, "filters.lib/fir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); - m->declare(m->metaInterface, "filters.lib/fir:license", "MIT-style STK-4.3 license"); - m->declare(m->metaInterface, "filters.lib/iir:author", "Julius O. Smith III"); - m->declare(m->metaInterface, "filters.lib/iir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); - m->declare(m->metaInterface, "filters.lib/iir:license", "MIT-style STK-4.3 license"); - m->declare(m->metaInterface, "filters.lib/lowpass0_highpass1", "Copyright (C) 2003-2019 by Julius O. Smith III "); - m->declare(m->metaInterface, "filters.lib/lowpass0_highpass1:author", "Julius O. Smith III"); - m->declare(m->metaInterface, "filters.lib/lowpass:author", "Julius O. Smith III"); - m->declare(m->metaInterface, "filters.lib/lowpass:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); - m->declare(m->metaInterface, "filters.lib/lowpass:license", "MIT-style STK-4.3 license"); - m->declare(m->metaInterface, "filters.lib/name", "Faust Filters Library"); - m->declare(m->metaInterface, "filters.lib/tf2:author", "Julius O. Smith III"); - m->declare(m->metaInterface, "filters.lib/tf2:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); - m->declare(m->metaInterface, "filters.lib/tf2:license", "MIT-style STK-4.3 license"); - m->declare(m->metaInterface, "filters.lib/tf2s:author", "Julius O. Smith III"); - m->declare(m->metaInterface, "filters.lib/tf2s:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); - m->declare(m->metaInterface, "filters.lib/tf2s:license", "MIT-style STK-4.3 license"); - m->declare(m->metaInterface, "filters.lib/version", "1.3.0"); - m->declare(m->metaInterface, "license", "MIT"); - m->declare(m->metaInterface, "maths.lib/author", "GRAME"); - m->declare(m->metaInterface, "maths.lib/copyright", "GRAME"); - m->declare(m->metaInterface, "maths.lib/license", "LGPL with exception"); - m->declare(m->metaInterface, "maths.lib/name", "Faust Math Library"); - m->declare(m->metaInterface, "maths.lib/version", "2.8.0"); - m->declare(m->metaInterface, "name", "FaustLPF"); - m->declare(m->metaInterface, "platform.lib/name", "Generic Platform Library"); - m->declare(m->metaInterface, "platform.lib/version", "1.3.0"); - m->declare(m->metaInterface, "signals.lib/name", "Faust Signal Routing Library"); - m->declare(m->metaInterface, "signals.lib/version", "1.6.0"); - m->declare(m->metaInterface, "version", "0.1.0"); + m->declare(m->metaInterface, "author", "Christopher Arndt"); + m->declare(m->metaInterface, "compile_options", "-a /home/chris/tmp/tmpnf8hapuk.c -lang c -rui -ct 1 -fm def -cn faustlpf -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0 -vec -lv 0 -vs 32"); + m->declare(m->metaInterface, "copyright", "Christopher Arndt, 2024"); + m->declare(m->metaInterface, "filename", "faustlpf.dsp"); + m->declare(m->metaInterface, "filters.lib/fir:author", "Julius O. Smith III"); + m->declare(m->metaInterface, "filters.lib/fir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); + m->declare(m->metaInterface, "filters.lib/fir:license", "MIT-style STK-4.3 license"); + m->declare(m->metaInterface, "filters.lib/iir:author", "Julius O. Smith III"); + m->declare(m->metaInterface, "filters.lib/iir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); + m->declare(m->metaInterface, "filters.lib/iir:license", "MIT-style STK-4.3 license"); + m->declare(m->metaInterface, "filters.lib/lowpass0_highpass1", "Copyright (C) 2003-2019 by Julius O. Smith III "); + m->declare(m->metaInterface, "filters.lib/lowpass0_highpass1:author", "Julius O. Smith III"); + m->declare(m->metaInterface, "filters.lib/lowpass:author", "Julius O. Smith III"); + m->declare(m->metaInterface, "filters.lib/lowpass:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); + m->declare(m->metaInterface, "filters.lib/lowpass:license", "MIT-style STK-4.3 license"); + m->declare(m->metaInterface, "filters.lib/name", "Faust Filters Library"); + m->declare(m->metaInterface, "filters.lib/tf2:author", "Julius O. Smith III"); + m->declare(m->metaInterface, "filters.lib/tf2:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); + m->declare(m->metaInterface, "filters.lib/tf2:license", "MIT-style STK-4.3 license"); + m->declare(m->metaInterface, "filters.lib/tf2s:author", "Julius O. Smith III"); + m->declare(m->metaInterface, "filters.lib/tf2s:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III "); + m->declare(m->metaInterface, "filters.lib/tf2s:license", "MIT-style STK-4.3 license"); + m->declare(m->metaInterface, "filters.lib/version", "1.3.0"); + m->declare(m->metaInterface, "license", "MIT"); + m->declare(m->metaInterface, "maths.lib/author", "GRAME"); + m->declare(m->metaInterface, "maths.lib/copyright", "GRAME"); + m->declare(m->metaInterface, "maths.lib/license", "LGPL with exception"); + m->declare(m->metaInterface, "maths.lib/name", "Faust Math Library"); + m->declare(m->metaInterface, "maths.lib/version", "2.8.0"); + m->declare(m->metaInterface, "name", "FaustLPF"); + m->declare(m->metaInterface, "platform.lib/name", "Generic Platform Library"); + m->declare(m->metaInterface, "platform.lib/version", "1.3.0"); + m->declare(m->metaInterface, "signals.lib/name", "Faust Signal Routing Library"); + m->declare(m->metaInterface, "signals.lib/version", "1.6.0"); + m->declare(m->metaInterface, "version", "0.1.0"); } int getSampleRatefaustlpf(faustlpf* RESTRICT dsp) { - return dsp->fSampleRate; + return dsp->fSampleRate; } int getNumInputsfaustlpf(faustlpf* RESTRICT dsp) { - return 1; + return 1; } int getNumOutputsfaustlpf(faustlpf* RESTRICT dsp) { - return 1; + return 1; } void classInitfaustlpf(int sample_rate) { } void instanceResetUserInterfacefaustlpf(faustlpf* dsp) { - dsp->fHslider0 = (FAUSTFLOAT)(1.5e+04f); + dsp->fHslider0 = (FAUSTFLOAT)(1.5e+04f); } void instanceClearfaustlpf(faustlpf* dsp) { - /* C99 loop */ - { - int l0; - for (l0 = 0; l0 < 4; l0 = l0 + 1) { - dsp->fRec1_perm[l0] = 0.0f; - } - } - /* C99 loop */ - { - int l1; - for (l1 = 0; l1 < 4; l1 = l1 + 1) { - dsp->fRec0_perm[l1] = 0.0f; - } - } + /* C99 loop */ + { + int l0; + for (l0 = 0; l0 < 4; l0 = l0 + 1) { + dsp->fRec1_perm[l0] = 0.0f; + } + } + /* C99 loop */ + { + int l1; + for (l1 = 0; l1 < 4; l1 = l1 + 1) { + dsp->fRec0_perm[l1] = 0.0f; + } + } } void instanceConstantsfaustlpf(faustlpf* dsp, int sample_rate) { - dsp->fSampleRate = sample_rate; - dsp->fConst0 = fminf(1.92e+05f, fmaxf(1.0f, (float)(dsp->fSampleRate))); - dsp->fConst1 = 44.1f / dsp->fConst0; - dsp->fConst2 = 1.0f - dsp->fConst1; - dsp->fConst3 = 3.1415927f / dsp->fConst0; + dsp->fSampleRate = sample_rate; + dsp->fConst0 = fminf(1.92e+05f, fmaxf(1.0f, (float)(dsp->fSampleRate))); + dsp->fConst1 = 44.1f / dsp->fConst0; + dsp->fConst2 = 1.0f - dsp->fConst1; + dsp->fConst3 = 3.1415927f / dsp->fConst0; } - + void instanceInitfaustlpf(faustlpf* dsp, int sample_rate) { - instanceConstantsfaustlpf(dsp, sample_rate); - instanceResetUserInterfacefaustlpf(dsp); - instanceClearfaustlpf(dsp); + instanceConstantsfaustlpf(dsp, sample_rate); + instanceResetUserInterfacefaustlpf(dsp); + instanceClearfaustlpf(dsp); } void initfaustlpf(faustlpf* dsp, int sample_rate) { - classInitfaustlpf(sample_rate); - instanceInitfaustlpf(dsp, sample_rate); + classInitfaustlpf(sample_rate); + instanceInitfaustlpf(dsp, sample_rate); } void buildUserInterfacefaustlpf(faustlpf* dsp, UIGlue* ui_interface) { - ui_interface->openVerticalBox(ui_interface->uiInterface, "FaustLPF"); - ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "1", ""); - ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "scale", "log"); - ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "style", "knob"); - ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "symbol", "cutoff"); - ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "tooltip", "Low-pass filter cutoff frequency"); - ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "unit", "Hz"); - ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Cutoff", &dsp->fHslider0, (FAUSTFLOAT)1.5e+04f, (FAUSTFLOAT)16.0f, (FAUSTFLOAT)1.5e+04f, (FAUSTFLOAT)0.1f); - ui_interface->closeBox(ui_interface->uiInterface); + ui_interface->openVerticalBox(ui_interface->uiInterface, "FaustLPF"); + ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "1", ""); + ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "scale", "log"); + ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "style", "knob"); + ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "symbol", "cutoff"); + ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "tooltip", "Low-pass filter cutoff frequency"); + ui_interface->declare(ui_interface->uiInterface, &dsp->fHslider0, "unit", "Hz"); + ui_interface->addHorizontalSlider(ui_interface->uiInterface, "Cutoff", &dsp->fHslider0, (FAUSTFLOAT)1.5e+04f, (FAUSTFLOAT)16.0f, (FAUSTFLOAT)1.5e+04f, (FAUSTFLOAT)0.1f); + ui_interface->closeBox(ui_interface->uiInterface); } void computefaustlpf(faustlpf* dsp, int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs) { - FAUSTFLOAT* input0_ptr = inputs[0]; - FAUSTFLOAT* output0_ptr = outputs[0]; - float fSlow0 = dsp->fConst1 * fmaxf(16.0f, fminf(1.5e+04f, (float)(dsp->fHslider0))); - float fRec1_tmp[36]; - float* fRec1 = &fRec1_tmp[4]; - float fZec0[32]; - float fZec1[32]; - float fZec2[32]; - float fRec0_tmp[36]; - float* fRec0 = &fRec0_tmp[4]; - int vindex = 0; - /* Main loop */ - for (vindex = 0; vindex <= (count - 32); vindex = vindex + 32) { - FAUSTFLOAT* input0 = &input0_ptr[vindex]; - FAUSTFLOAT* output0 = &output0_ptr[vindex]; - int vsize = 32; - /* Recursive loop 0 */ - /* Pre code */ - /* C99 loop */ - { - int j0; - for (j0 = 0; j0 < 4; j0 = j0 + 1) { - fRec1_tmp[j0] = dsp->fRec1_perm[j0]; - } - } - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fRec1[i] = fSlow0 + dsp->fConst2 * fRec1[i - 1]; - } - } - /* Post code */ - /* C99 loop */ - { - int j1; - for (j1 = 0; j1 < 4; j1 = j1 + 1) { - dsp->fRec1_perm[j1] = fRec1_tmp[vsize + j1]; - } - } - /* Vectorizable loop 1 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fZec0[i] = fast_tanf(dsp->fConst3 * fRec1[i]); - } - } - /* Vectorizable loop 2 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fZec1[i] = 1.0f / fZec0[i]; - } - } - /* Vectorizable loop 3 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fZec2[i] = (fZec1[i] + 1.4142135f) / fZec0[i] + 1.0f; - } - } - /* Recursive loop 4 */ - /* Pre code */ - /* C99 loop */ - { - int j2; - for (j2 = 0; j2 < 4; j2 = j2 + 1) { - fRec0_tmp[j2] = dsp->fRec0_perm[j2]; - } - } - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fRec0[i] = (float)(input0[i]) - (fRec0[i - 2] * ((fZec1[i] + -1.4142135f) / fZec0[i] + 1.0f) + 2.0f * fRec0[i - 1] * (1.0f - 1.0f / faustlpf_faustpower2_f(fZec0[i]))) / fZec2[i]; - } - } - /* Post code */ - /* C99 loop */ - { - int j3; - for (j3 = 0; j3 < 4; j3 = j3 + 1) { - dsp->fRec0_perm[j3] = fRec0_tmp[vsize + j3]; - } - } - /* Vectorizable loop 5 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - output0[i] = (FAUSTFLOAT)((fRec0[i - 2] + fRec0[i] + 2.0f * fRec0[i - 1]) / fZec2[i]); - } - } - } - /* Remaining frames */ - if (vindex < count) { - FAUSTFLOAT* input0 = &input0_ptr[vindex]; - FAUSTFLOAT* output0 = &output0_ptr[vindex]; - int vsize = count - vindex; - /* Recursive loop 0 */ - /* Pre code */ - /* C99 loop */ - { - int j0; - for (j0 = 0; j0 < 4; j0 = j0 + 1) { - fRec1_tmp[j0] = dsp->fRec1_perm[j0]; - } - } - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fRec1[i] = fSlow0 + dsp->fConst2 * fRec1[i - 1]; - } - } - /* Post code */ - /* C99 loop */ - { - int j1; - for (j1 = 0; j1 < 4; j1 = j1 + 1) { - dsp->fRec1_perm[j1] = fRec1_tmp[vsize + j1]; - } - } - /* Vectorizable loop 1 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fZec0[i] = fast_tanf(dsp->fConst3 * fRec1[i]); - } - } - /* Vectorizable loop 2 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fZec1[i] = 1.0f / fZec0[i]; - } - } - /* Vectorizable loop 3 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fZec2[i] = (fZec1[i] + 1.4142135f) / fZec0[i] + 1.0f; - } - } - /* Recursive loop 4 */ - /* Pre code */ - /* C99 loop */ - { - int j2; - for (j2 = 0; j2 < 4; j2 = j2 + 1) { - fRec0_tmp[j2] = dsp->fRec0_perm[j2]; - } - } - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - fRec0[i] = (float)(input0[i]) - (fRec0[i - 2] * ((fZec1[i] + -1.4142135f) / fZec0[i] + 1.0f) + 2.0f * fRec0[i - 1] * (1.0f - 1.0f / faustlpf_faustpower2_f(fZec0[i]))) / fZec2[i]; - } - } - /* Post code */ - /* C99 loop */ - { - int j3; - for (j3 = 0; j3 < 4; j3 = j3 + 1) { - dsp->fRec0_perm[j3] = fRec0_tmp[vsize + j3]; - } - } - /* Vectorizable loop 5 */ - /* Compute code */ - /* C99 loop */ - { - int i; - for (i = 0; i < vsize; i = i + 1) { - output0[i] = (FAUSTFLOAT)((fRec0[i - 2] + fRec0[i] + 2.0f * fRec0[i - 1]) / fZec2[i]); - } - } - } + FAUSTFLOAT* input0_ptr = inputs[0]; + FAUSTFLOAT* output0_ptr = outputs[0]; + float fSlow0 = dsp->fConst1 * fmaxf(16.0f, fminf(1.5e+04f, (float)(dsp->fHslider0))); + float fRec1_tmp[36]; + float* fRec1 = &fRec1_tmp[4]; + float fZec0[32]; + float fZec1[32]; + float fZec2[32]; + float fRec0_tmp[36]; + float* fRec0 = &fRec0_tmp[4]; + int vindex = 0; + /* Main loop */ + for (vindex = 0; vindex <= (count - 32); vindex = vindex + 32) { + FAUSTFLOAT* input0 = &input0_ptr[vindex]; + FAUSTFLOAT* output0 = &output0_ptr[vindex]; + int vsize = 32; + /* Recursive loop 0 */ + /* Pre code */ + /* C99 loop */ + { + int j0; + for (j0 = 0; j0 < 4; j0 = j0 + 1) { + fRec1_tmp[j0] = dsp->fRec1_perm[j0]; + } + } + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fRec1[i] = fSlow0 + dsp->fConst2 * fRec1[i - 1]; + } + } + /* Post code */ + /* C99 loop */ + { + int j1; + for (j1 = 0; j1 < 4; j1 = j1 + 1) { + dsp->fRec1_perm[j1] = fRec1_tmp[vsize + j1]; + } + } + /* Vectorizable loop 1 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fZec0[i] = fast_tanf(dsp->fConst3 * fRec1[i]); + } + } + /* Vectorizable loop 2 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fZec1[i] = 1.0f / fZec0[i]; + } + } + /* Vectorizable loop 3 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fZec2[i] = (fZec1[i] + 1.4142135f) / fZec0[i] + 1.0f; + } + } + /* Recursive loop 4 */ + /* Pre code */ + /* C99 loop */ + { + int j2; + for (j2 = 0; j2 < 4; j2 = j2 + 1) { + fRec0_tmp[j2] = dsp->fRec0_perm[j2]; + } + } + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fRec0[i] = (float)(input0[i]) - (fRec0[i - 2] * ((fZec1[i] + -1.4142135f) / fZec0[i] + 1.0f) + 2.0f * fRec0[i - 1] * (1.0f - 1.0f / faustlpf_faustpower2_f(fZec0[i]))) / fZec2[i]; + } + } + /* Post code */ + /* C99 loop */ + { + int j3; + for (j3 = 0; j3 < 4; j3 = j3 + 1) { + dsp->fRec0_perm[j3] = fRec0_tmp[vsize + j3]; + } + } + /* Vectorizable loop 5 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + output0[i] = (FAUSTFLOAT)((fRec0[i - 2] + fRec0[i] + 2.0f * fRec0[i - 1]) / fZec2[i]); + } + } + } + /* Remaining frames */ + if (vindex < count) { + FAUSTFLOAT* input0 = &input0_ptr[vindex]; + FAUSTFLOAT* output0 = &output0_ptr[vindex]; + int vsize = count - vindex; + /* Recursive loop 0 */ + /* Pre code */ + /* C99 loop */ + { + int j0; + for (j0 = 0; j0 < 4; j0 = j0 + 1) { + fRec1_tmp[j0] = dsp->fRec1_perm[j0]; + } + } + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fRec1[i] = fSlow0 + dsp->fConst2 * fRec1[i - 1]; + } + } + /* Post code */ + /* C99 loop */ + { + int j1; + for (j1 = 0; j1 < 4; j1 = j1 + 1) { + dsp->fRec1_perm[j1] = fRec1_tmp[vsize + j1]; + } + } + /* Vectorizable loop 1 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fZec0[i] = fast_tanf(dsp->fConst3 * fRec1[i]); + } + } + /* Vectorizable loop 2 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fZec1[i] = 1.0f / fZec0[i]; + } + } + /* Vectorizable loop 3 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fZec2[i] = (fZec1[i] + 1.4142135f) / fZec0[i] + 1.0f; + } + } + /* Recursive loop 4 */ + /* Pre code */ + /* C99 loop */ + { + int j2; + for (j2 = 0; j2 < 4; j2 = j2 + 1) { + fRec0_tmp[j2] = dsp->fRec0_perm[j2]; + } + } + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + fRec0[i] = (float)(input0[i]) - (fRec0[i - 2] * ((fZec1[i] + -1.4142135f) / fZec0[i] + 1.0f) + 2.0f * fRec0[i - 1] * (1.0f - 1.0f / faustlpf_faustpower2_f(fZec0[i]))) / fZec2[i]; + } + } + /* Post code */ + /* C99 loop */ + { + int j3; + for (j3 = 0; j3 < 4; j3 = j3 + 1) { + dsp->fRec0_perm[j3] = fRec0_tmp[vsize + j3]; + } + } + /* Vectorizable loop 5 */ + /* Compute code */ + /* C99 loop */ + { + int i; + for (i = 0; i < vsize; i = i + 1) { + output0[i] = (FAUSTFLOAT)((fRec0[i - 2] + fRec0[i] + 2.0f * fRec0[i - 1]) / fZec2[i]); + } + } + } } #ifdef __cplusplus @@ -389,8 +381,6 @@ void computefaustlpf(faustlpf* dsp, int count, FAUSTFLOAT** RESTRICT inputs, FAU # pragma GCC diagnostic pop #endif - //------------------------------------------------------------------------------ // End the Faust code section - diff --git a/examples/faustlpf.h b/examples/faustlpf.h index 570c0ba..d327ef7 100644 --- a/examples/faustlpf.h +++ b/examples/faustlpf.h @@ -1,3 +1,17 @@ +//------------------------------------------------------------------------------ +// This file was generated using the Faust compiler (https://faust.grame.fr), +// and the Faust post-processor (https://github.com/SpotlightKid/faustdoctor). +// +// Source: faustlpf.dsp +// Name: FaustLPF +// Author: Christopher Arndt +// Copyright: Christopher Arndt, 2024 +// License: MIT +// Version: 0.1.0 +// FAUST version: 2.76.0 +// FAUST compilation options: -a /home/chris/tmp/tmpkjrmmie8.c -lang c -rui -ct 1 -fm def -cn faustlpf -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0 -vec -lv 0 -vs 32 +//------------------------------------------------------------------------------ + #ifndef __faustlpf_H__ #define __faustlpf_H__ @@ -19,19 +33,17 @@ #include #include "faust/gui/CInterface.h" - typedef struct { - int fSampleRate; - float fConst0; - float fConst1; - float fConst2; - FAUSTFLOAT fHslider0; - float fRec1_perm[4]; - float fConst3; - float fRec0_perm[4]; + int fSampleRate; + float fConst0; + float fConst1; + float fConst2; + FAUSTFLOAT fHslider0; + float fRec1_perm[4]; + float fConst3; + float fRec0_perm[4]; } faustlpf; - faustlpf* newfaustlpf(); void deletefaustlpf(faustlpf* dsp); void metadatafaustlpf(MetaGlue* m); @@ -55,10 +67,6 @@ typedef struct { int parameter_group(unsigned index) { switch (index) { - - case 0: - return 0; - default: return -1; } @@ -66,10 +74,8 @@ int parameter_group(unsigned index) { const char *parameter_label(unsigned index) { switch (index) { - case 0: return "Cutoff"; - default: return 0; } @@ -77,10 +83,8 @@ const char *parameter_label(unsigned index) { const char *parameter_short_label(unsigned index) { switch (index) { - case 0: return "Cutoff"; - default: return 0; } @@ -88,11 +92,9 @@ const char *parameter_short_label(unsigned index) { const char *parameter_style(unsigned index) { switch (index) { - case 0: { return "knob"; } - default: return ""; } @@ -100,10 +102,8 @@ const char *parameter_style(unsigned index) { const char *parameter_symbol(unsigned index) { switch (index) { - case 0: return "cutoff"; - default: return ""; } @@ -111,10 +111,8 @@ const char *parameter_symbol(unsigned index) { const char *parameter_unit(unsigned index) { switch (index) { - case 0: return "Hz"; - default: return 0; } @@ -122,12 +120,10 @@ const char *parameter_unit(unsigned index) { const ParameterRange *parameter_range(unsigned index) { switch (index) { - case 0: { static const ParameterRange range = { 15000.0, 16.0, 15000.0 }; return ⦥ } - default: return 0; } @@ -135,7 +131,6 @@ const ParameterRange *parameter_range(unsigned index) { bool parameter_is_trigger(unsigned index) { switch (index) { - default: return false; } @@ -143,7 +138,6 @@ bool parameter_is_trigger(unsigned index) { bool parameter_is_boolean(unsigned index) { switch (index) { - default: return false; } @@ -151,7 +145,6 @@ bool parameter_is_boolean(unsigned index) { bool parameter_is_enum(unsigned index) { switch (index) { - default: return false; } @@ -159,7 +152,6 @@ bool parameter_is_enum(unsigned index) { bool parameter_is_integer(unsigned index) { switch (index) { - default: return false; } @@ -167,10 +159,8 @@ bool parameter_is_integer(unsigned index) { bool parameter_is_logarithmic(unsigned index) { switch (index) { - case 0: return true; - default: return false; } @@ -178,10 +168,8 @@ bool parameter_is_logarithmic(unsigned index) { FAUSTFLOAT get_parameter(faustlpf* dsp, unsigned index) { switch (index) { - case 0: return dsp->fHslider0; - default: (void)dsp; return 0.0; @@ -190,11 +178,9 @@ FAUSTFLOAT get_parameter(faustlpf* dsp, unsigned index) { void set_parameter(faustlpf* dsp, unsigned index, FAUSTFLOAT value) { switch (index) { - case 0: dsp->fHslider0 = value; break; - default: (void)dsp; (void)value; @@ -202,12 +188,10 @@ void set_parameter(faustlpf* dsp, unsigned index, FAUSTFLOAT value) { } } - FAUSTFLOAT get_cutoff(faustlpf* dsp) { return dsp->fHslider0; } - void set_cutoff(faustlpf* dsp, FAUSTFLOAT value) { dsp->fHslider0 = value; } diff --git a/examples/faustlpf.nim b/examples/faustlpf.nim index 3c44f37..cb1abc9 100644 --- a/examples/faustlpf.nim +++ b/examples/faustlpf.nim @@ -2,8 +2,10 @@ type faustlpf* = object + ParameterRange* = object init*, min*, max*: cfloat + SampleBuffer* = UncheckedArray[cfloat] @@ -29,8 +31,5 @@ proc parameter_unit*(index: cuint): cstring {.importc} proc get_parameter*(dsp: ptr faustlpf, index: cuint): cfloat {.importc} proc set_parameter*(dsp: ptr faustlpf, index: cuint, value: cfloat) {.importc} - proc get_cutoff*(dsp: ptr faustlpf): cfloat {.importc} - - proc set_cutoff*(dsp: ptr faustlpf, value: cfloat) {.importc}