615 lines
22 KiB
C++
615 lines
22 KiB
C++
/* ------------------------------------------------------------
|
|
copyright: "(c)Romain Michon, CCRMA (Stanford University), GRAME"
|
|
license: "MIT"
|
|
name: "FluteMIDI"
|
|
Code generated with Faust 2.40.0 (https://faust.grame.fr)
|
|
Compilation options: -lang cpp -mem -es 1 -mcd 16 -single -ftz 0
|
|
------------------------------------------------------------ */
|
|
|
|
#ifndef __mydsp_H__
|
|
#define __mydsp_H__
|
|
|
|
#ifndef FAUSTFLOAT
|
|
#define FAUSTFLOAT float
|
|
#endif
|
|
|
|
#include <algorithm>
|
|
#include <cmath>
|
|
#include <cstdint>
|
|
#include <math.h>
|
|
|
|
#ifndef FAUSTCLASS
|
|
#define FAUSTCLASS mydsp
|
|
#endif
|
|
|
|
#ifdef __APPLE__
|
|
#define exp10f __exp10f
|
|
#define exp10 __exp10
|
|
#endif
|
|
|
|
#if defined(_WIN32)
|
|
#define RESTRICT __restrict
|
|
#else
|
|
#define RESTRICT __restrict__
|
|
#endif
|
|
|
|
class mydspSIG0 {
|
|
|
|
private:
|
|
|
|
int iVec0[2];
|
|
int iRec22[2];
|
|
|
|
public:
|
|
|
|
int getNumInputsmydspSIG0() {
|
|
return 0;
|
|
}
|
|
int getNumOutputsmydspSIG0() {
|
|
return 1;
|
|
}
|
|
|
|
void instanceInitmydspSIG0(int sample_rate) {
|
|
for (int l2 = 0; l2 < 2; l2 = l2 + 1) {
|
|
iVec0[l2] = 0;
|
|
}
|
|
for (int l3 = 0; l3 < 2; l3 = l3 + 1) {
|
|
iRec22[l3] = 0;
|
|
}
|
|
}
|
|
|
|
void fillmydspSIG0(int count, float* table) {
|
|
for (int i1 = 0; i1 < count; i1 = i1 + 1) {
|
|
iVec0[0] = 1;
|
|
iRec22[0] = (iVec0[1] + iRec22[1]) % 65536;
|
|
table[i1] = std::sin(9.58738019e-05f * float(iRec22[0]));
|
|
iVec0[1] = iVec0[0];
|
|
iRec22[1] = iRec22[0];
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
static mydspSIG0* newmydspSIG0(dsp_memory_manager* manager) { return (mydspSIG0*)new(manager->allocate(sizeof(mydspSIG0))) mydspSIG0(); }
|
|
static void deletemydspSIG0(mydspSIG0* dsp, dsp_memory_manager* manager) { dsp->~mydspSIG0(); manager->destroy(dsp); }
|
|
|
|
static float* ftbl0mydspSIG0 = 0;
|
|
static float mydsp_faustpower2_f(float value) {
|
|
return value * value;
|
|
}
|
|
|
|
class mydsp : public dsp {
|
|
|
|
private:
|
|
|
|
FAUSTFLOAT fHslider0;
|
|
int* iRec15;
|
|
float* fRec21;
|
|
FAUSTFLOAT fHslider1;
|
|
int fSampleRate;
|
|
float fConst1;
|
|
FAUSTFLOAT fHslider2;
|
|
float* fRec23;
|
|
FAUSTFLOAT fButton0;
|
|
FAUSTFLOAT fHslider3;
|
|
float* fVec1;
|
|
FAUSTFLOAT fHslider4;
|
|
FAUSTFLOAT fHslider5;
|
|
float* fRec24;
|
|
float fConst5;
|
|
int* iRec26;
|
|
float fConst6;
|
|
float fConst7;
|
|
float fConst8;
|
|
float* fRec25;
|
|
float* fRec27;
|
|
int IOTA0;
|
|
float* fRec28;
|
|
float fConst9;
|
|
float fConst10;
|
|
FAUSTFLOAT fHslider6;
|
|
FAUSTFLOAT fHslider7;
|
|
float* fRec29;
|
|
float fConst11;
|
|
FAUSTFLOAT fHslider8;
|
|
float fConst12;
|
|
float* fRec30;
|
|
float* fVec2;
|
|
float* fVec3;
|
|
float* fVec4;
|
|
float* fRec20;
|
|
float* fRec11;
|
|
float* fRec7;
|
|
float* fRec3;
|
|
float* fRec1;
|
|
float* fRec2;
|
|
float* fRec0;
|
|
|
|
public:
|
|
static dsp_memory_manager* fManager;
|
|
|
|
void metadata(Meta* m) {
|
|
m->declare("basics.lib/name", "Faust Basic Element Library");
|
|
m->declare("basics.lib/version", "0.5");
|
|
m->declare("compile_options", "-lang cpp -mem -es 1 -mcd 16 -single -ftz 0");
|
|
m->declare("copyright", "(c)Romain Michon, CCRMA (Stanford University), GRAME");
|
|
m->declare("delays.lib/name", "Faust Delay Library");
|
|
m->declare("delays.lib/version", "0.1");
|
|
m->declare("description", "Simple MIDI-controllable flute physical model with physical parameters.");
|
|
m->declare("filename", "fluteMIDI.dsp");
|
|
m->declare("filters.lib/dcblocker:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/dcblocker:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/dcblocker:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/fir:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/fir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/fir:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/iir:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/iir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/iir:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/lowpass0_highpass1", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/lowpass0_highpass1:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/lowpass:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/lowpass:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/lowpass:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/name", "Faust Filters Library");
|
|
m->declare("filters.lib/pole:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/pole:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/pole:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/tf2:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/tf2:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/tf2:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/tf2s:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/tf2s:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/tf2s:license", "MIT-style STK-4.3 license");
|
|
m->declare("filters.lib/version", "0.3");
|
|
m->declare("filters.lib/zero:author", "Julius O. Smith III");
|
|
m->declare("filters.lib/zero:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
|
|
m->declare("filters.lib/zero:license", "MIT-style STK-4.3 license");
|
|
m->declare("license", "MIT");
|
|
m->declare("maths.lib/author", "GRAME");
|
|
m->declare("maths.lib/copyright", "GRAME");
|
|
m->declare("maths.lib/license", "LGPL with exception");
|
|
m->declare("maths.lib/name", "Faust Math Library");
|
|
m->declare("maths.lib/version", "2.5");
|
|
m->declare("name", "FluteMIDI");
|
|
m->declare("noises.lib/name", "Faust Noise Generator Library");
|
|
m->declare("noises.lib/version", "0.3");
|
|
m->declare("oscillators.lib/name", "Faust Oscillator Library");
|
|
m->declare("oscillators.lib/version", "0.3");
|
|
m->declare("physmodels.lib/name", "Faust Physical Models Library");
|
|
m->declare("physmodels.lib/version", "0.1");
|
|
m->declare("platform.lib/name", "Generic Platform Library");
|
|
m->declare("platform.lib/version", "0.2");
|
|
m->declare("routes.lib/name", "Faust Signal Routing Library");
|
|
m->declare("routes.lib/version", "0.2");
|
|
m->declare("signals.lib/name", "Faust Signal Routing Library");
|
|
m->declare("signals.lib/version", "0.1");
|
|
}
|
|
|
|
virtual int getNumInputs() {
|
|
return 0;
|
|
}
|
|
virtual int getNumOutputs() {
|
|
return 2;
|
|
}
|
|
|
|
static void classInit(int sample_rate) {
|
|
mydspSIG0* sig0 = newmydspSIG0(fManager);
|
|
sig0->instanceInitmydspSIG0(sample_rate);
|
|
ftbl0mydspSIG0 = static_cast<float*>(fManager->allocate(262144));
|
|
sig0->fillmydspSIG0(65536, ftbl0mydspSIG0);
|
|
deletemydspSIG0(sig0, fManager);
|
|
}
|
|
|
|
static void classDestroy() {
|
|
fManager->destroy(ftbl0mydspSIG0);
|
|
}
|
|
|
|
virtual void instanceConstants(int sample_rate) {
|
|
fSampleRate = sample_rate;
|
|
float fConst0 = std::min<float>(192000.0f, std::max<float>(1.0f, float(fSampleRate)));
|
|
fConst1 = 1.0f / fConst0;
|
|
float fConst2 = std::tan(6283.18555f / fConst0);
|
|
float fConst3 = 1.0f / fConst2;
|
|
float fConst4 = (fConst3 + 1.41421354f) / fConst2 + 1.0f;
|
|
fConst5 = 0.0500000007f / fConst4;
|
|
fConst6 = 1.0f / fConst4;
|
|
fConst7 = (fConst3 + -1.41421354f) / fConst2 + 1.0f;
|
|
fConst8 = 2.0f * (1.0f - 1.0f / mydsp_faustpower2_f(fConst2));
|
|
fConst9 = 0.00882352982f * fConst0;
|
|
fConst10 = 0.00147058826f * fConst0;
|
|
fConst11 = 44.0999985f / fConst0;
|
|
fConst12 = 1.0f - fConst11;
|
|
}
|
|
|
|
virtual void instanceResetUserInterface() {
|
|
fHslider0 = FAUSTFLOAT(0.5f);
|
|
fHslider1 = FAUSTFLOAT(0.5f);
|
|
fHslider2 = FAUSTFLOAT(5.0f);
|
|
fButton0 = FAUSTFLOAT(0.0f);
|
|
fHslider3 = FAUSTFLOAT(0.0f);
|
|
fHslider4 = FAUSTFLOAT(0.90000000000000002f);
|
|
fHslider5 = FAUSTFLOAT(1.0f);
|
|
fHslider6 = FAUSTFLOAT(440.0f);
|
|
fHslider7 = FAUSTFLOAT(0.0f);
|
|
fHslider8 = FAUSTFLOAT(0.5f);
|
|
}
|
|
|
|
virtual void instanceClear() {
|
|
for (int l0 = 0; l0 < 2; l0 = l0 + 1) {
|
|
iRec15[l0] = 0;
|
|
}
|
|
for (int l1 = 0; l1 < 2; l1 = l1 + 1) {
|
|
fRec21[l1] = 0.0f;
|
|
}
|
|
for (int l4 = 0; l4 < 2; l4 = l4 + 1) {
|
|
fRec23[l4] = 0.0f;
|
|
}
|
|
for (int l5 = 0; l5 < 2; l5 = l5 + 1) {
|
|
fVec1[l5] = 0.0f;
|
|
}
|
|
for (int l6 = 0; l6 < 2; l6 = l6 + 1) {
|
|
fRec24[l6] = 0.0f;
|
|
}
|
|
for (int l7 = 0; l7 < 2; l7 = l7 + 1) {
|
|
iRec26[l7] = 0;
|
|
}
|
|
for (int l8 = 0; l8 < 3; l8 = l8 + 1) {
|
|
fRec25[l8] = 0.0f;
|
|
}
|
|
for (int l9 = 0; l9 < 2; l9 = l9 + 1) {
|
|
fRec27[l9] = 0.0f;
|
|
}
|
|
IOTA0 = 0;
|
|
for (int l10 = 0; l10 < 2048; l10 = l10 + 1) {
|
|
fRec28[l10] = 0.0f;
|
|
}
|
|
for (int l11 = 0; l11 < 2; l11 = l11 + 1) {
|
|
fRec29[l11] = 0.0f;
|
|
}
|
|
for (int l12 = 0; l12 < 2; l12 = l12 + 1) {
|
|
fRec30[l12] = 0.0f;
|
|
}
|
|
for (int l13 = 0; l13 < 2; l13 = l13 + 1) {
|
|
fVec2[l13] = 0.0f;
|
|
}
|
|
for (int l14 = 0; l14 < 2048; l14 = l14 + 1) {
|
|
fVec3[l14] = 0.0f;
|
|
}
|
|
for (int l15 = 0; l15 < 2; l15 = l15 + 1) {
|
|
fVec4[l15] = 0.0f;
|
|
}
|
|
for (int l16 = 0; l16 < 2; l16 = l16 + 1) {
|
|
fRec20[l16] = 0.0f;
|
|
}
|
|
for (int l17 = 0; l17 < 2048; l17 = l17 + 1) {
|
|
fRec11[l17] = 0.0f;
|
|
}
|
|
for (int l18 = 0; l18 < 2; l18 = l18 + 1) {
|
|
fRec7[l18] = 0.0f;
|
|
}
|
|
for (int l19 = 0; l19 < 2048; l19 = l19 + 1) {
|
|
fRec3[l19] = 0.0f;
|
|
}
|
|
for (int l20 = 0; l20 < 2; l20 = l20 + 1) {
|
|
fRec1[l20] = 0.0f;
|
|
}
|
|
for (int l21 = 0; l21 < 2; l21 = l21 + 1) {
|
|
fRec2[l21] = 0.0f;
|
|
}
|
|
for (int l22 = 0; l22 < 2; l22 = l22 + 1) {
|
|
fRec0[l22] = 0.0f;
|
|
}
|
|
}
|
|
|
|
virtual void init(int sample_rate) {}
|
|
virtual void instanceInit(int sample_rate) {
|
|
instanceConstants(sample_rate);
|
|
instanceResetUserInterface();
|
|
instanceClear();
|
|
}
|
|
|
|
virtual mydsp* clone() {
|
|
return create();
|
|
}
|
|
|
|
virtual int getSampleRate() {
|
|
return fSampleRate;
|
|
}
|
|
|
|
virtual void buildUserInterface(UI* ui_interface) {
|
|
ui_interface->openVerticalBox("flute");
|
|
ui_interface->declare(0, "0", "");
|
|
ui_interface->openHorizontalBox("midi");
|
|
ui_interface->declare(&fHslider6, "0", "");
|
|
ui_interface->declare(&fHslider6, "style", "knob");
|
|
ui_interface->addHorizontalSlider("freq", &fHslider6, FAUSTFLOAT(440.0f), FAUSTFLOAT(50.0f), FAUSTFLOAT(1000.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider7, "1", "");
|
|
ui_interface->declare(&fHslider7, "hidden", "1");
|
|
ui_interface->declare(&fHslider7, "midi", "pitchwheel");
|
|
ui_interface->declare(&fHslider7, "style", "knob");
|
|
ui_interface->addHorizontalSlider("bend", &fHslider7, FAUSTFLOAT(0.0f), FAUSTFLOAT(-2.0f), FAUSTFLOAT(2.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider4, "2", "");
|
|
ui_interface->declare(&fHslider4, "style", "knob");
|
|
ui_interface->addHorizontalSlider("gain", &fHslider4, FAUSTFLOAT(0.899999976f), FAUSTFLOAT(0.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider5, "3", "");
|
|
ui_interface->declare(&fHslider5, "style", "knob");
|
|
ui_interface->addHorizontalSlider("envAttack", &fHslider5, FAUSTFLOAT(1.0f), FAUSTFLOAT(0.0f), FAUSTFLOAT(30.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider3, "4", "");
|
|
ui_interface->declare(&fHslider3, "hidden", "1");
|
|
ui_interface->declare(&fHslider3, "midi", "ctrl 64");
|
|
ui_interface->declare(&fHslider3, "style", "knob");
|
|
ui_interface->addHorizontalSlider("sustain", &fHslider3, FAUSTFLOAT(0.0f), FAUSTFLOAT(0.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(1.0f));
|
|
ui_interface->closeBox();
|
|
ui_interface->declare(0, "1", "");
|
|
ui_interface->openHorizontalBox("otherParams");
|
|
ui_interface->declare(&fHslider8, "0", "");
|
|
ui_interface->declare(&fHslider8, "midi", "ctrl 1");
|
|
ui_interface->declare(&fHslider8, "style", "knob");
|
|
ui_interface->addHorizontalSlider("mouthPosition", &fHslider8, FAUSTFLOAT(0.5f), FAUSTFLOAT(0.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider2, "1", "");
|
|
ui_interface->declare(&fHslider2, "style", "knob");
|
|
ui_interface->addHorizontalSlider("vibratoFreq", &fHslider2, FAUSTFLOAT(5.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(10.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider1, "2", "");
|
|
ui_interface->declare(&fHslider1, "style", "knob");
|
|
ui_interface->addHorizontalSlider("vibratoGain", &fHslider1, FAUSTFLOAT(0.5f), FAUSTFLOAT(0.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->declare(&fHslider0, "3", "");
|
|
ui_interface->declare(&fHslider0, "style", "knob");
|
|
ui_interface->addHorizontalSlider("outGain", &fHslider0, FAUSTFLOAT(0.5f), FAUSTFLOAT(0.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(0.00999999978f));
|
|
ui_interface->closeBox();
|
|
ui_interface->declare(&fButton0, "2", "");
|
|
ui_interface->addButton("gate", &fButton0);
|
|
ui_interface->closeBox();
|
|
}
|
|
|
|
virtual void compute(int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs) {
|
|
FAUSTFLOAT* output0 = outputs[0];
|
|
FAUSTFLOAT* output1 = outputs[1];
|
|
float fSlow0 = float(fHslider0);
|
|
float fSlow1 = 0.0399999991f * float(fHslider1);
|
|
float fSlow2 = fConst1 * float(fHslider2);
|
|
float fSlow3 = std::min<float>(1.0f, float(fButton0) + float(fHslider3));
|
|
float fSlow4 = 0.00100000005f * float(fHslider5);
|
|
int iSlow5 = std::fabs(fSlow4) < 1.1920929e-07f;
|
|
float fThen1 = std::exp(0.0f - fConst1 / ((iSlow5) ? 1.0f : fSlow4));
|
|
float fSlow6 = ((iSlow5) ? 0.0f : fThen1);
|
|
float fSlow7 = fSlow3 * float(fHslider4) * (1.0f - fSlow6);
|
|
float fSlow8 = 340.0f / float(fHslider6);
|
|
float fSlow9 = std::pow(2.0f, 0.0833333358f * float(fHslider7));
|
|
int iSlow10 = fSlow3 == 0.0f;
|
|
float fSlow11 = fConst11 * float(fHslider8);
|
|
for (int i0 = 0; i0 < count; i0 = i0 + 1) {
|
|
iRec15[0] = 0;
|
|
fRec21[0] = 0.284999996f * fRec20[1] + 0.699999988f * fRec21[1];
|
|
float fRec19 = fRec21[0] + float(iRec15[1]);
|
|
fRec23[0] = fSlow2 + fRec23[1] - std::floor(fSlow2 + fRec23[1]);
|
|
fVec1[0] = fSlow3;
|
|
fRec24[0] = fSlow7 + fSlow6 * fRec24[1];
|
|
iRec26[0] = 1103515245 * iRec26[1] + 12345;
|
|
fRec25[0] = 4.65661287e-10f * float(iRec26[0]) - fConst6 * (fConst7 * fRec25[2] + fConst8 * fRec25[1]);
|
|
fRec27[0] = fRec1[1];
|
|
fRec28[IOTA0 & 2047] = 0.949999988f * fRec27[1];
|
|
float fTemp0 = float((fSlow3 == fVec1[1]) | iSlow10);
|
|
fRec29[0] = fSlow9 * (1.0f - 0.999000013f * fTemp0) + 0.999000013f * fTemp0 * fRec29[1];
|
|
float fTemp1 = fSlow8 / fRec29[0] + 0.270000011f;
|
|
fRec30[0] = fSlow11 + fConst12 * fRec30[1];
|
|
float fTemp2 = 0.400000006f * (fRec30[0] + -0.5f);
|
|
float fTemp3 = fConst10 * fTemp1 * (fTemp2 + 0.270000011f);
|
|
float fTemp4 = fTemp3 + -1.49999499f;
|
|
int iTemp5 = int(fTemp4);
|
|
int iTemp6 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp5))))) + 1;
|
|
float fTemp7 = std::floor(fTemp4);
|
|
float fTemp8 = fTemp3 + -1.0f - fTemp7;
|
|
float fTemp9 = 0.0f - fTemp8;
|
|
float fTemp10 = fTemp3 + -2.0f - fTemp7;
|
|
float fTemp11 = 0.0f - 0.5f * fTemp10;
|
|
float fTemp12 = fTemp3 + -3.0f - fTemp7;
|
|
float fTemp13 = 0.0f - 0.333333343f * fTemp12;
|
|
float fTemp14 = fTemp3 + -4.0f - fTemp7;
|
|
float fTemp15 = 0.0f - 0.25f * fTemp14;
|
|
float fTemp16 = fTemp3 - fTemp7;
|
|
int iTemp17 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp5 + 1))))) + 1;
|
|
float fTemp18 = 0.0f - fTemp10;
|
|
float fTemp19 = 0.0f - 0.5f * fTemp12;
|
|
float fTemp20 = 0.0f - 0.333333343f * fTemp14;
|
|
int iTemp21 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp5 + 2))))) + 1;
|
|
float fTemp22 = 0.0f - fTemp12;
|
|
float fTemp23 = 0.0f - 0.5f * fTemp14;
|
|
float fTemp24 = fTemp8 * fTemp10;
|
|
int iTemp25 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp5 + 3))))) + 1;
|
|
float fTemp26 = 0.0f - fTemp14;
|
|
float fTemp27 = fTemp24 * fTemp12;
|
|
int iTemp28 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp5 + 4))))) + 1;
|
|
fVec2[0] = fRec28[(IOTA0 - iTemp6) & 2047] * fTemp9 * fTemp11 * fTemp13 * fTemp15 + fTemp16 * (fRec28[(IOTA0 - iTemp17) & 2047] * fTemp18 * fTemp19 * fTemp20 + 0.5f * fTemp8 * fRec28[(IOTA0 - iTemp21) & 2047] * fTemp22 * fTemp23 + 0.166666672f * fTemp24 * fRec28[(IOTA0 - iTemp25) & 2047] * fTemp26 + 0.0416666679f * fTemp27 * fRec28[(IOTA0 - iTemp28) & 2047]);
|
|
float fTemp29 = (fSlow1 * ftbl0mydspSIG0[int(65536.0f * fRec23[0])] + fRec24[0] * (fConst5 * (fRec25[2] + fRec25[0] + 2.0f * fRec25[1]) + 1.0f)) - 0.5f * fVec2[1];
|
|
float fTemp30 = 0.5f * fRec7[1] + std::max<float>(-1.0f, std::min<float>(1.0f, fTemp29 * (mydsp_faustpower2_f(fTemp29) + -1.0f)));
|
|
fVec3[IOTA0 & 2047] = fTemp30;
|
|
float fTemp31 = fConst10 * fTemp1 * (0.730000019f - fTemp2);
|
|
float fTemp32 = fTemp31 + -1.49999499f;
|
|
int iTemp33 = int(fTemp32);
|
|
int iTemp34 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp33))))) + 1;
|
|
float fTemp35 = std::floor(fTemp32);
|
|
float fTemp36 = fTemp31 + -1.0f - fTemp35;
|
|
float fTemp37 = 0.0f - fTemp36;
|
|
float fTemp38 = fTemp31 + -2.0f - fTemp35;
|
|
float fTemp39 = 0.0f - 0.5f * fTemp38;
|
|
float fTemp40 = fTemp31 + -3.0f - fTemp35;
|
|
float fTemp41 = 0.0f - 0.333333343f * fTemp40;
|
|
float fTemp42 = fTemp31 + -4.0f - fTemp35;
|
|
float fTemp43 = 0.0f - 0.25f * fTemp42;
|
|
float fTemp44 = fTemp31 - fTemp35;
|
|
int iTemp45 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp33 + 1))))) + 1;
|
|
float fTemp46 = 0.0f - fTemp38;
|
|
float fTemp47 = 0.0f - 0.5f * fTemp40;
|
|
float fTemp48 = 0.0f - 0.333333343f * fTemp42;
|
|
int iTemp49 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp33 + 2))))) + 1;
|
|
float fTemp50 = 0.0f - fTemp40;
|
|
float fTemp51 = 0.0f - 0.5f * fTemp42;
|
|
float fTemp52 = fTemp36 * fTemp38;
|
|
int iTemp53 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp33 + 3))))) + 1;
|
|
float fTemp54 = 0.0f - fTemp42;
|
|
float fTemp55 = fTemp52 * fTemp40;
|
|
int iTemp56 = int(std::min<float>(fConst9, float(std::max<int>(0, int(iTemp33 + 4))))) + 1;
|
|
fVec4[0] = fVec3[(IOTA0 - iTemp34) & 2047] * fTemp37 * fTemp39 * fTemp41 * fTemp43 + fTemp44 * (fVec3[(IOTA0 - iTemp45) & 2047] * fTemp46 * fTemp47 * fTemp48 + 0.5f * fTemp36 * fVec3[(IOTA0 - iTemp49) & 2047] * fTemp50 * fTemp51 + 0.166666672f * fTemp52 * fVec3[(IOTA0 - iTemp53) & 2047] * fTemp54 + 0.0416666679f * fTemp55 * fVec3[(IOTA0 - iTemp56) & 2047]);
|
|
fRec20[0] = fVec4[1];
|
|
float fRec16 = fRec19;
|
|
float fRec17 = fRec20[0];
|
|
float fRec18 = fRec20[0];
|
|
fRec11[IOTA0 & 2047] = fRec16;
|
|
float fRec12 = fTemp37 * fTemp39 * fTemp41 * fTemp43 * fRec11[(IOTA0 - iTemp34) & 2047] + fTemp44 * (fTemp46 * fTemp47 * fTemp48 * fRec11[(IOTA0 - iTemp45) & 2047] + 0.5f * fTemp36 * fTemp50 * fTemp51 * fRec11[(IOTA0 - iTemp49) & 2047] + 0.166666672f * fTemp52 * fTemp54 * fRec11[(IOTA0 - iTemp53) & 2047] + 0.0416666679f * fTemp55 * fRec11[(IOTA0 - iTemp56) & 2047]);
|
|
float fRec13 = fRec17;
|
|
float fRec14 = fRec18;
|
|
fRec7[0] = fRec12;
|
|
float fRec8 = fRec7[1];
|
|
float fRec9 = fRec13;
|
|
float fRec10 = fRec14;
|
|
fRec3[IOTA0 & 2047] = fRec8;
|
|
float fRec4 = fTemp9 * fTemp11 * fTemp13 * fTemp15 * fRec3[(IOTA0 - iTemp6) & 2047] + fTemp16 * (fTemp18 * fTemp19 * fTemp20 * fRec3[(IOTA0 - iTemp17) & 2047] + 0.5f * fTemp8 * fTemp22 * fTemp23 * fRec3[(IOTA0 - iTemp21) & 2047] + 0.166666672f * fTemp24 * fTemp26 * fRec3[(IOTA0 - iTemp25) & 2047] + 0.0416666679f * fTemp27 * fRec3[(IOTA0 - iTemp28) & 2047]);
|
|
float fRec5 = fRec9;
|
|
float fRec6 = fRec10;
|
|
fRec1[0] = fRec4;
|
|
fRec2[0] = fRec6;
|
|
fRec0[0] = (fRec2[0] + 0.995000005f * fRec0[1]) - fRec2[1];
|
|
float fTemp57 = fSlow0 * fRec0[0];
|
|
output0[i0] = FAUSTFLOAT(fTemp57);
|
|
output1[i0] = FAUSTFLOAT(fTemp57);
|
|
iRec15[1] = iRec15[0];
|
|
fRec21[1] = fRec21[0];
|
|
fRec23[1] = fRec23[0];
|
|
fVec1[1] = fVec1[0];
|
|
fRec24[1] = fRec24[0];
|
|
iRec26[1] = iRec26[0];
|
|
fRec25[2] = fRec25[1];
|
|
fRec25[1] = fRec25[0];
|
|
fRec27[1] = fRec27[0];
|
|
IOTA0 = IOTA0 + 1;
|
|
fRec29[1] = fRec29[0];
|
|
fRec30[1] = fRec30[0];
|
|
fVec2[1] = fVec2[0];
|
|
fVec4[1] = fVec4[0];
|
|
fRec20[1] = fRec20[0];
|
|
fRec7[1] = fRec7[0];
|
|
fRec1[1] = fRec1[0];
|
|
fRec2[1] = fRec2[0];
|
|
fRec0[1] = fRec0[0];
|
|
}
|
|
}
|
|
|
|
static void memoryInfo() {
|
|
fManager->begin(24);
|
|
// mydspSIG0
|
|
fManager->info(16, 0, 0);
|
|
// ftbl0mydspSIG0
|
|
fManager->info(262144, 1, 0);
|
|
// mydsp
|
|
fManager->info(268, 42, 1);
|
|
// iRec15
|
|
fManager->info(8, 2, 2);
|
|
// fRec21
|
|
fManager->info(8, 3, 2);
|
|
// fRec23
|
|
fManager->info(8, 4, 2);
|
|
// fVec1
|
|
fManager->info(8, 2, 2);
|
|
// fRec24
|
|
fManager->info(8, 3, 2);
|
|
// iRec26
|
|
fManager->info(8, 3, 2);
|
|
// fRec25
|
|
fManager->info(12, 7, 3);
|
|
// fRec27
|
|
fManager->info(8, 2, 2);
|
|
// fRec28
|
|
fManager->info(8192, 5, 1);
|
|
// fRec29
|
|
fManager->info(8, 3, 2);
|
|
// fRec30
|
|
fManager->info(8, 3, 2);
|
|
// fVec2
|
|
fManager->info(8, 2, 2);
|
|
// fVec3
|
|
fManager->info(8192, 5, 1);
|
|
// fVec4
|
|
fManager->info(8, 2, 2);
|
|
// fRec20
|
|
fManager->info(8, 4, 2);
|
|
// fRec11
|
|
fManager->info(8192, 5, 1);
|
|
// fRec7
|
|
fManager->info(8, 3, 2);
|
|
// fRec3
|
|
fManager->info(8192, 5, 1);
|
|
// fRec1
|
|
fManager->info(8, 2, 2);
|
|
// fRec2
|
|
fManager->info(8, 3, 2);
|
|
// fRec0
|
|
fManager->info(8, 3, 2);
|
|
fManager->end();
|
|
}
|
|
|
|
void memoryCreate() {
|
|
iRec15 = static_cast<int*>(fManager->allocate(8));
|
|
fRec21 = static_cast<float*>(fManager->allocate(8));
|
|
fRec23 = static_cast<float*>(fManager->allocate(8));
|
|
fVec1 = static_cast<float*>(fManager->allocate(8));
|
|
fRec24 = static_cast<float*>(fManager->allocate(8));
|
|
iRec26 = static_cast<int*>(fManager->allocate(8));
|
|
fRec25 = static_cast<float*>(fManager->allocate(12));
|
|
fRec27 = static_cast<float*>(fManager->allocate(8));
|
|
fRec28 = static_cast<float*>(fManager->allocate(8192));
|
|
fRec29 = static_cast<float*>(fManager->allocate(8));
|
|
fRec30 = static_cast<float*>(fManager->allocate(8));
|
|
fVec2 = static_cast<float*>(fManager->allocate(8));
|
|
fVec3 = static_cast<float*>(fManager->allocate(8192));
|
|
fVec4 = static_cast<float*>(fManager->allocate(8));
|
|
fRec20 = static_cast<float*>(fManager->allocate(8));
|
|
fRec11 = static_cast<float*>(fManager->allocate(8192));
|
|
fRec7 = static_cast<float*>(fManager->allocate(8));
|
|
fRec3 = static_cast<float*>(fManager->allocate(8192));
|
|
fRec1 = static_cast<float*>(fManager->allocate(8));
|
|
fRec2 = static_cast<float*>(fManager->allocate(8));
|
|
fRec0 = static_cast<float*>(fManager->allocate(8));
|
|
}
|
|
|
|
void memoryDestroy() {
|
|
fManager->destroy(iRec15);
|
|
fManager->destroy(fRec21);
|
|
fManager->destroy(fRec23);
|
|
fManager->destroy(fVec1);
|
|
fManager->destroy(fRec24);
|
|
fManager->destroy(iRec26);
|
|
fManager->destroy(fRec25);
|
|
fManager->destroy(fRec27);
|
|
fManager->destroy(fRec28);
|
|
fManager->destroy(fRec29);
|
|
fManager->destroy(fRec30);
|
|
fManager->destroy(fVec2);
|
|
fManager->destroy(fVec3);
|
|
fManager->destroy(fVec4);
|
|
fManager->destroy(fRec20);
|
|
fManager->destroy(fRec11);
|
|
fManager->destroy(fRec7);
|
|
fManager->destroy(fRec3);
|
|
fManager->destroy(fRec1);
|
|
fManager->destroy(fRec2);
|
|
fManager->destroy(fRec0);
|
|
}
|
|
|
|
static mydsp* create() {
|
|
mydsp* dsp = new (fManager->allocate(sizeof(mydsp))) mydsp();
|
|
dsp->memoryCreate();
|
|
return dsp;
|
|
}
|
|
|
|
static void destroy(dsp* dsp) {
|
|
static_cast<mydsp*>(dsp)->memoryDestroy();
|
|
fManager->destroy(dsp);
|
|
}
|
|
|
|
};
|
|
|
|
dsp_memory_manager* mydsp::fManager = nullptr;
|
|
|
|
#endif
|