/* ------------------------------------------------------------ author: "Grame" copyright: "(c)GRAME 2009" license: "BSD" name: "osc" version: "1.0" Code generated with Faust 2.18.0 (https://faust.grame.fr) Compilation options: -lang cpp -scal -ftz 0 ------------------------------------------------------------ */ #ifndef __mydsp_H__ #define __mydsp_H__ #ifndef FAUSTFLOAT #define FAUSTFLOAT float #endif #include #include #include class mydspSIG0 { private: int iRec1[2]; public: int getNumInputsmydspSIG0() { return 0; } int getNumOutputsmydspSIG0() { return 1; } int getInputRatemydspSIG0(int channel) { int rate; switch (channel) { default: { rate = -1; break; } } return rate; } int getOutputRatemydspSIG0(int channel) { int rate; switch (channel) { case 0: { rate = 0; break; } default: { rate = -1; break; } } return rate; } void instanceInitmydspSIG0(int sample_rate) { for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) { iRec1[l1] = 0; } } void fillmydspSIG0(int count, float* table) { for (int i = 0; (i < count); i = (i + 1)) { iRec1[0] = (iRec1[1] + 1); table[i] = std::sin((9.58738019e-05f * float((iRec1[0] + -1)))); iRec1[1] = iRec1[0]; } } }; mydspSIG0* newmydspSIG0() { return (mydspSIG0*)new mydspSIG0(); } void deletemydspSIG0(mydspSIG0* dsp) { delete dsp; } static float ftbl0mydspSIG0[65536]; #ifndef FAUSTCLASS #define FAUSTCLASS mydsp #endif #ifdef __APPLE__ #define exp10f __exp10f #define exp10 __exp10 #endif class mydsp : public dsp { private: FAUSTFLOAT fHslider0; float fRec0[2]; int fSampleRate; float fConst0; FAUSTFLOAT fHslider1; float fRec2[2]; public: void metadata(Meta* m) { m->declare("author", "Grame"); m->declare("basics.lib/name", "Faust Basic Element Library"); m->declare("basics.lib/version", "0.0"); m->declare("copyright", "(c)GRAME 2009"); m->declare("filename", "osc.dsp"); m->declare("license", "BSD"); 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.1"); m->declare("name", "osc"); m->declare("oscillators.lib/name", "Faust Oscillator Library"); m->declare("oscillators.lib/version", "0.0"); m->declare("signals.lib/name", "Faust Signal Routing Library"); m->declare("signals.lib/version", "0.0"); m->declare("version", "1.0"); } virtual int getNumInputs() { return 0; } virtual int getNumOutputs() { return 1; } virtual int getInputRate(int channel) { int rate; switch (channel) { default: { rate = -1; break; } } return rate; } virtual int getOutputRate(int channel) { int rate; switch (channel) { case 0: { rate = 1; break; } default: { rate = -1; break; } } return rate; } static void classInit(int sample_rate) { mydspSIG0* sig0 = newmydspSIG0(); sig0->instanceInitmydspSIG0(sample_rate); sig0->fillmydspSIG0(65536, ftbl0mydspSIG0); deletemydspSIG0(sig0); } virtual void instanceConstants(int sample_rate) { fSampleRate = sample_rate; fConst0 = (1.0f / std::min(192000.0f, std::max(1.0f, float(fSampleRate)))); } virtual void instanceResetUserInterface() { fHslider0 = FAUSTFLOAT(0.0f); fHslider1 = FAUSTFLOAT(1000.0f); } virtual void instanceClear() { for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) { fRec0[l0] = 0.0f; } for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) { fRec2[l2] = 0.0f; } } virtual void init(int sample_rate) { classInit(sample_rate); instanceInit(sample_rate); } virtual void instanceInit(int sample_rate) { instanceConstants(sample_rate); instanceResetUserInterface(); instanceClear(); } virtual mydsp* clone() { return new mydsp(); } virtual int getSampleRate() { return fSampleRate; } virtual void buildUserInterface(UI* ui_interface) { ui_interface->openVerticalBox("Oscillator"); ui_interface->declare(&fHslider1, "unit", "Hz"); ui_interface->addHorizontalSlider("freq", &fHslider1, 1000.0f, 20.0f, 24000.0f, 1.0f); ui_interface->declare(&fHslider0, "unit", "dB"); ui_interface->addHorizontalSlider("volume", &fHslider0, 0.0f, -96.0f, 0.0f, 0.100000001f); ui_interface->closeBox(); } virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { FAUSTFLOAT* output0 = outputs[0]; float fSlow0 = (0.00100000005f * std::pow(10.0f, (0.0500000007f * float(fHslider0)))); float fSlow1 = (fConst0 * float(fHslider1)); for (int i = 0; (i < count); i = (i + 1)) { fRec0[0] = (fSlow0 + (0.999000013f * fRec0[1])); fRec2[0] = (fSlow1 + (fRec2[1] - std::floor((fSlow1 + fRec2[1])))); output0[i] = FAUSTFLOAT((fRec0[0] * ftbl0mydspSIG0[int((65536.0f * fRec2[0]))])); fRec0[1] = fRec0[0]; fRec2[1] = fRec2[0]; } } }; #endif