snapshot
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# Faust Examples
|
||||
|
||||
For details consult the [Wiki](https://github.com/pschatzmann/arduino-audio-tools/wiki/Faust)
|
||||
|
||||
The examples are written for the AudioKit, but you can easily just replace the AudioKitStream with an I2SStream to use a regular ESP32 module.
|
||||
@@ -0,0 +1,8 @@
|
||||
declare name "FluteMIDI";
|
||||
declare description "Simple MIDI-controllable flute physical model with physical parameters.";
|
||||
declare license "MIT";
|
||||
declare copyright "(c)Romain Michon, CCRMA (Stanford University), GRAME";
|
||||
|
||||
import("stdfaust.lib");
|
||||
|
||||
process = pm.flute_ui_MIDI <: _,_;
|
||||
@@ -0,0 +1,614 @@
|
||||
/* ------------------------------------------------------------
|
||||
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
|
||||
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* @file streams-faust_noise-i2s.ino
|
||||
* @author Phil Schatzmann
|
||||
* @brief Example how to use Faust as Audio Source
|
||||
* dsp compiled with: faust -mem fluteMIDI.dsp -o fluteMIDI.h
|
||||
* @version 0.1
|
||||
* @date 2022-04-22
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#define USE_MEMORY_MANAGER
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/AudioLibs/AudioFaust.h"
|
||||
#include "fluteMIDI.h"
|
||||
|
||||
FaustStream<mydsp> faust;
|
||||
AudioBoardStream out(AudioKitEs8388V1);
|
||||
StreamCopy copier(out, faust); // copy mic to tfl
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
// Open Serial
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
// Setup Faust
|
||||
auto cfg = faust.defaultConfig();
|
||||
faust.begin(cfg);
|
||||
|
||||
// note->freq and gain
|
||||
faust.midiOn(78, 0.8);
|
||||
|
||||
// start I2S
|
||||
auto cfg_i2s = out.defaultConfig(TX_MODE);
|
||||
cfg_i2s.sample_rate = cfg.sample_rate;
|
||||
cfg_i2s.channels = cfg.channels;
|
||||
cfg_i2s.bits_per_sample = cfg.bits_per_sample;
|
||||
out.begin(cfg_i2s);
|
||||
|
||||
}
|
||||
|
||||
// Arduino loop - copy sound to out
|
||||
void loop() {
|
||||
copier.copy();
|
||||
}
|
||||
@@ -0,0 +1,344 @@
|
||||
declare compilation_options "-single -scal -I /Users/pschatzmann/.FaustLive-CurrentSession-2.2/Libs -I /Users/pschatzmann/.FaustLive-CurrentSession-2.2/Examples";
|
||||
declare author "Grame";
|
||||
declare copyright "(c)GRAME 2009";
|
||||
declare filename "Noise";
|
||||
declare license "BSD";
|
||||
declare name "Noise";
|
||||
declare version "1.1";
|
||||
ID_319 = (ID_318 : *);
|
||||
ID_321 = ID_320, 2147483647.0f;
|
||||
ID_322 = (ID_321 : /);
|
||||
ID_325 = ID_324 : *;
|
||||
ID_323 = vslider("Volume[style:knob][acc: 0 0 -10 0 10]", 0.5f, 0.0f, 1.0f, 0.10000000000000001f);
|
||||
ID_324 = ID_322, ID_323;
|
||||
ID_318 = _, 1103515245;
|
||||
ID_320 = ID_317 ~ ID_319;
|
||||
ID_197 = _, _;
|
||||
ID_313 = _, _;
|
||||
ID_45 = (1 : mem);
|
||||
ID_84 = hslider("hand[osc:/accxyz/1 0 20]", 0.0f, 0.0f, 1.0f, 0.01f);
|
||||
ID_85 = _, 0.099999999999999978f;
|
||||
ID_86 = ID_85 : *;
|
||||
ID_87 = _, 0.90000000000000002f;
|
||||
ID_88 = (ID_87 : *);
|
||||
ID_89 = + ~ ID_88;
|
||||
ID_90 = ID_86 : ID_89;
|
||||
ID_91 = ID_84 : ID_90;
|
||||
ID_200 = hslider("hand[osc:/accxyz/1 0 20]", 0.0f, 0.0f, 1.0f, 0.01f);
|
||||
ID_201 = _, 0.099999999999999978f;
|
||||
ID_202 = ID_201 : *;
|
||||
ID_203 = _, 0.90000000000000002f;
|
||||
ID_204 = (ID_203 : *);
|
||||
ID_205 = + ~ ID_204;
|
||||
ID_206 = ID_202 : ID_205;
|
||||
ID_207 = ID_200 : ID_206;
|
||||
ID_180 = (0.045454545454545414f : sqrt);
|
||||
ID_181 = _, ID_180;
|
||||
ID_182 = (ID_181 : *);
|
||||
ID_92 = (0.95454545454545459f : sqrt);
|
||||
ID_93 = _, ID_92;
|
||||
ID_94 = (ID_93 : *);
|
||||
ID_183 = ID_182, ID_94;
|
||||
ID_184 = _ <: ID_183;
|
||||
ID_296 = (0.045454545454545414f : sqrt);
|
||||
ID_297 = _, ID_296;
|
||||
ID_298 = (ID_297 : *);
|
||||
ID_208 = (0.95454545454545459f : sqrt);
|
||||
ID_209 = _, ID_208;
|
||||
ID_210 = (ID_209 : *);
|
||||
ID_299 = ID_298, ID_210;
|
||||
ID_300 = _ <: ID_299;
|
||||
ID_105 = (0.13636363636363635f : sqrt);
|
||||
ID_106 = _, ID_105;
|
||||
ID_107 = (ID_106 : *);
|
||||
ID_102 = (0.86363636363636365f : sqrt);
|
||||
ID_103 = _, ID_102;
|
||||
ID_104 = (ID_103 : *);
|
||||
ID_176 = ID_107, ID_104;
|
||||
ID_177 = _ <: ID_176;
|
||||
ID_221 = (0.13636363636363635f : sqrt);
|
||||
ID_222 = _, ID_221;
|
||||
ID_223 = (ID_222 : *);
|
||||
ID_218 = (0.86363636363636365f : sqrt);
|
||||
ID_219 = _, ID_218;
|
||||
ID_220 = (ID_219 : *);
|
||||
ID_292 = ID_223, ID_220;
|
||||
ID_293 = _ <: ID_292;
|
||||
ID_169 = (0.22727272727272729f : sqrt);
|
||||
ID_170 = _, ID_169;
|
||||
ID_171 = (ID_170 : *);
|
||||
ID_112 = (0.77272727272727271f : sqrt);
|
||||
ID_113 = _, ID_112;
|
||||
ID_114 = (ID_113 : *);
|
||||
ID_172 = ID_171, ID_114;
|
||||
ID_173 = _ <: ID_172;
|
||||
ID_285 = (0.22727272727272729f : sqrt);
|
||||
ID_286 = _, ID_285;
|
||||
ID_287 = (ID_286 : *);
|
||||
ID_228 = (0.77272727272727271f : sqrt);
|
||||
ID_229 = _, ID_228;
|
||||
ID_230 = (ID_229 : *);
|
||||
ID_288 = ID_287, ID_230;
|
||||
ID_289 = _ <: ID_288;
|
||||
ID_159 = (0.31818181818181823f : sqrt);
|
||||
ID_160 = _, ID_159;
|
||||
ID_161 = (ID_160 : *);
|
||||
ID_162 = (0.68181818181818177f : sqrt);
|
||||
ID_163 = _, ID_162;
|
||||
ID_164 = (ID_163 : *);
|
||||
ID_165 = ID_161, ID_164;
|
||||
ID_166 = _ <: ID_165;
|
||||
ID_275 = (0.31818181818181823f : sqrt);
|
||||
ID_276 = _, ID_275;
|
||||
ID_277 = (ID_276 : *);
|
||||
ID_278 = (0.68181818181818177f : sqrt);
|
||||
ID_279 = _, ID_278;
|
||||
ID_280 = (ID_279 : *);
|
||||
ID_281 = ID_277, ID_280;
|
||||
ID_282 = _ <: ID_281;
|
||||
ID_149 = (0.40909090909090906f : sqrt);
|
||||
ID_150 = _, ID_149;
|
||||
ID_151 = (ID_150 : *);
|
||||
ID_152 = (0.59090909090909094f : sqrt);
|
||||
ID_153 = _, ID_152;
|
||||
ID_154 = (ID_153 : *);
|
||||
ID_155 = ID_151, ID_154;
|
||||
ID_156 = _ <: ID_155;
|
||||
ID_265 = (0.40909090909090906f : sqrt);
|
||||
ID_266 = _, ID_265;
|
||||
ID_267 = (ID_266 : *);
|
||||
ID_268 = (0.59090909090909094f : sqrt);
|
||||
ID_269 = _, ID_268;
|
||||
ID_270 = (ID_269 : *);
|
||||
ID_271 = ID_267, ID_270;
|
||||
ID_272 = _ <: ID_271;
|
||||
ID_142 = (0.5f : sqrt);
|
||||
ID_143 = _, ID_142;
|
||||
ID_144 = (ID_143 : *);
|
||||
ID_145 = ID_144, ID_144;
|
||||
ID_146 = _ <: ID_145;
|
||||
ID_258 = (0.5f : sqrt);
|
||||
ID_259 = _, ID_258;
|
||||
ID_260 = (ID_259 : *);
|
||||
ID_261 = ID_260, ID_260;
|
||||
ID_262 = _ <: ID_261;
|
||||
ID_132 = (0.59090909090909083f : sqrt);
|
||||
ID_133 = _, ID_132;
|
||||
ID_134 = (ID_133 : *);
|
||||
ID_135 = (0.40909090909090912f : sqrt);
|
||||
ID_136 = _, ID_135;
|
||||
ID_137 = (ID_136 : *);
|
||||
ID_138 = ID_134, ID_137;
|
||||
ID_139 = _ <: ID_138;
|
||||
ID_248 = (0.59090909090909083f : sqrt);
|
||||
ID_249 = _, ID_248;
|
||||
ID_250 = (ID_249 : *);
|
||||
ID_251 = (0.40909090909090912f : sqrt);
|
||||
ID_252 = _, ID_251;
|
||||
ID_253 = (ID_252 : *);
|
||||
ID_254 = ID_250, ID_253;
|
||||
ID_255 = _ <: ID_254;
|
||||
ID_122 = (0.68181818181818188f : sqrt);
|
||||
ID_123 = _, ID_122;
|
||||
ID_124 = (ID_123 : *);
|
||||
ID_125 = (0.31818181818181818f : sqrt);
|
||||
ID_126 = _, ID_125;
|
||||
ID_127 = (ID_126 : *);
|
||||
ID_128 = ID_124, ID_127;
|
||||
ID_129 = _ <: ID_128;
|
||||
ID_238 = (0.68181818181818188f : sqrt);
|
||||
ID_239 = _, ID_238;
|
||||
ID_240 = (ID_239 : *);
|
||||
ID_241 = (0.31818181818181818f : sqrt);
|
||||
ID_242 = _, ID_241;
|
||||
ID_243 = (ID_242 : *);
|
||||
ID_244 = ID_240, ID_243;
|
||||
ID_245 = _ <: ID_244;
|
||||
ID_115 = (0.22727272727272727f : sqrt);
|
||||
ID_116 = _, ID_115;
|
||||
ID_117 = (ID_116 : *);
|
||||
ID_118 = ID_114, ID_117;
|
||||
ID_119 = _ <: ID_118;
|
||||
ID_231 = (0.22727272727272727f : sqrt);
|
||||
ID_232 = _, ID_231;
|
||||
ID_233 = (ID_232 : *);
|
||||
ID_234 = ID_230, ID_233;
|
||||
ID_235 = _ <: ID_234;
|
||||
ID_108 = ID_104, ID_107;
|
||||
ID_109 = _ <: ID_108;
|
||||
ID_224 = ID_220, ID_223;
|
||||
ID_225 = _ <: ID_224;
|
||||
ID_95 = (0.045454545454545456f : sqrt);
|
||||
ID_96 = _, ID_95;
|
||||
ID_97 = (ID_96 : *);
|
||||
ID_98 = ID_94, ID_97;
|
||||
ID_99 = _ <: ID_98;
|
||||
ID_211 = (0.045454545454545456f : sqrt);
|
||||
ID_212 = _, ID_211;
|
||||
ID_213 = (ID_212 : *);
|
||||
ID_214 = ID_210, ID_213;
|
||||
ID_215 = _ <: ID_214;
|
||||
ID_56 = hslider("freq [unit:Hz]", 1000.0f, 20.0f, 24000.0f, 1.0f);
|
||||
ID_57 = fconstant(int fSamplingFreq, <math.h>);
|
||||
ID_100 = \(x2).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x2 : \(x3).((x3,(x3 : mem) : -),0.0f : >) : +~\(x4).(x4,((x4,0.0f : >),100.22727272727273f : /) : -) : _,0.0f : >) : * : (+ : _,99.227272727272734f : @)~(\(x5).((x5,(x5 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_99;
|
||||
ID_101 = (\(x1).(((x1,(x1 : mem) : min),0.045454545454545456f : <),(0.045454545454545456f,(x1,(x1 : mem) : max) : <) : &) : ID_100);
|
||||
ID_216 = \(x2).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x2 : \(x3).((x3,(x3 : mem) : -),0.0f : >) : +~\(x4).(x4,((x4,0.0f : >),100.22727272727273f : /) : -) : _,0.0f : >) : * : (+ : _,99.227272727272734f : @)~(\(x5).((x5,(x5 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_215;
|
||||
ID_217 = (\(x1).(((x1,(x1 : mem) : min),0.045454545454545456f : <),(0.045454545454545456f,(x1,(x1 : mem) : max) : <) : &) : ID_216);
|
||||
ID_110 = \(x7).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x7 : \(x8).((x8,(x8 : mem) : -),0.0f : >) : +~\(x9).(x9,((x9,0.0f : >),87.252908730361526f : /) : -) : _,0.0f : >) : * : (+ : _,86.252908730361526f : @)~(\(x10).((x10,(x10 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_109;
|
||||
ID_111 = (\(x6).(((x6,(x6 : mem) : min),0.13636363636363635f : <),(0.13636363636363635f,(x6,(x6 : mem) : max) : <) : &) : ID_110);
|
||||
ID_226 = \(x7).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x7 : \(x8).((x8,(x8 : mem) : -),0.0f : >) : +~\(x9).(x9,((x9,0.0f : >),87.252908730361526f : /) : -) : _,0.0f : >) : * : (+ : _,86.252908730361526f : @)~(\(x10).((x10,(x10 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_225;
|
||||
ID_227 = (\(x6).(((x6,(x6 : mem) : min),0.13636363636363635f : <),(0.13636363636363635f,(x6,(x6 : mem) : max) : <) : &) : ID_226);
|
||||
ID_120 = \(x12).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x12 : \(x13).((x13,(x13 : mem) : -),0.0f : >) : +~\(x14).(x14,((x14,0.0f : >),75.958068844441542f : /) : -) : _,0.0f : >) : * : (+ : _,74.958068844441542f : @)~(\(x15).((x15,(x15 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_119;
|
||||
ID_121 = (\(x11).(((x11,(x11 : mem) : min),0.22727272727272727f : <),(0.22727272727272727f,(x11,(x11 : mem) : max) : <) : &) : ID_120);
|
||||
ID_236 = \(x12).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x12 : \(x13).((x13,(x13 : mem) : -),0.0f : >) : +~\(x14).(x14,((x14,0.0f : >),75.958068844441542f : /) : -) : _,0.0f : >) : * : (+ : _,74.958068844441542f : @)~(\(x15).((x15,(x15 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_235;
|
||||
ID_237 = (\(x11).(((x11,(x11 : mem) : min),0.22727272727272727f : <),(0.22727272727272727f,(x11,(x11 : mem) : max) : <) : &) : ID_236);
|
||||
ID_58 = 1.0f, ID_57;
|
||||
ID_59 = (ID_58 : max);
|
||||
ID_60 = 192000.0f, ID_59;
|
||||
ID_61 = (ID_60 : min);
|
||||
ID_62 = ID_56, ID_61;
|
||||
ID_63 = (ID_62 : /);
|
||||
ID_64 = _, ID_63;
|
||||
ID_65 = (ID_64 : +);
|
||||
ID_66 = ID_65, 0;
|
||||
ID_67 = 0, ID_66;
|
||||
ID_68 = ID_67 : select2;
|
||||
ID_52 = (65536 : float);
|
||||
ID_71 = _, ID_52;
|
||||
ID_72 = ID_71 : *;
|
||||
ID_69 = (ID_68 : \(x1).(x1,(x1 : floor) : -));
|
||||
ID_70 = ID_69 ~ _;
|
||||
ID_73 = ID_70 : ID_72;
|
||||
ID_130 = \(x17).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x17 : \(x18).((x18,(x18 : mem) : -),0.0f : >) : +~\(x19).(x19,((x19,0.0f : >),66.125339619414362f : /) : -) : _,0.0f : >) : * : (+ : _,65.125339619414362f : @)~(\(x20).((x20,(x20 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_129;
|
||||
ID_131 = (\(x16).(((x16,(x16 : mem) : min),0.31818181818181818f : <),(0.31818181818181818f,(x16,(x16 : mem) : max) : <) : &) : ID_130);
|
||||
ID_246 = \(x17).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x17 : \(x18).((x18,(x18 : mem) : -),0.0f : >) : +~\(x19).(x19,((x19,0.0f : >),66.125339619414362f : /) : -) : _,0.0f : >) : * : (+ : _,65.125339619414362f : @)~(\(x20).((x20,(x20 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_245;
|
||||
ID_247 = (\(x16).(((x16,(x16 : mem) : min),0.31818181818181818f : <),(0.31818181818181818f,(x16,(x16 : mem) : max) : <) : &) : ID_246);
|
||||
ID_140 = \(x22).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x22 : \(x23).((x23,(x23 : mem) : -),0.0f : >) : +~\(x24).(x24,((x24,0.0f : >),57.565451653828681f : /) : -) : _,0.0f : >) : * : (+ : _,56.565451653828681f : @)~(\(x25).((x25,(x25 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_139;
|
||||
ID_141 = (\(x21).(((x21,(x21 : mem) : min),0.40909090909090912f : <),(0.40909090909090912f,(x21,(x21 : mem) : max) : <) : &) : ID_140);
|
||||
ID_256 = \(x22).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x22 : \(x23).((x23,(x23 : mem) : -),0.0f : >) : +~\(x24).(x24,((x24,0.0f : >),57.565451653828681f : /) : -) : _,0.0f : >) : * : (+ : _,56.565451653828681f : @)~(\(x25).((x25,(x25 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_255;
|
||||
ID_257 = (\(x21).(((x21,(x21 : mem) : min),0.40909090909090912f : <),(0.40909090909090912f,(x21,(x21 : mem) : max) : <) : &) : ID_256);
|
||||
ID_147 = \(x27).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x27 : \(x28).((x28,(x28 : mem) : -),0.0f : >) : +~\(x29).(x29,((x29,0.0f : >),50.113636363636367f : /) : -) : _,0.0f : >) : * : (+ : _,49.113636363636367f : @)~(\(x30).((x30,(x30 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_146;
|
||||
ID_148 = (\(x26).(((x26,(x26 : mem) : min),0.5f : <),(0.5f,(x26,(x26 : mem) : max) : <) : &) : ID_147);
|
||||
ID_263 = \(x27).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x27 : \(x28).((x28,(x28 : mem) : -),0.0f : >) : +~\(x29).(x29,((x29,0.0f : >),50.113636363636367f : /) : -) : _,0.0f : >) : * : (+ : _,49.113636363636367f : @)~(\(x30).((x30,(x30 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_262;
|
||||
ID_264 = (\(x26).(((x26,(x26 : mem) : min),0.5f : <),(0.5f,(x26,(x26 : mem) : max) : <) : &) : ID_263);
|
||||
ID_157 = \(x32).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x32 : \(x33).((x33,(x33 : mem) : -),0.0f : >) : +~\(x34).(x34,((x34,0.0f : >),43.62645436518077f : /) : -) : _,0.0f : >) : * : (+ : _,42.62645436518077f : @)~(\(x35).((x35,(x35 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_156;
|
||||
ID_158 = (\(x31).(((x31,(x31 : mem) : min),0.59090909090909094f : <),(0.59090909090909094f,(x31,(x31 : mem) : max) : <) : &) : ID_157);
|
||||
ID_273 = \(x32).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x32 : \(x33).((x33,(x33 : mem) : -),0.0f : >) : +~\(x34).(x34,((x34,0.0f : >),43.62645436518077f : /) : -) : _,0.0f : >) : * : (+ : _,42.62645436518077f : @)~(\(x35).((x35,(x35 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_272;
|
||||
ID_274 = (\(x31).(((x31,(x31 : mem) : min),0.59090909090909094f : <),(0.59090909090909094f,(x31,(x31 : mem) : max) : <) : &) : ID_273);
|
||||
ID_167 = \(x37).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x37 : \(x38).((x38,(x38 : mem) : -),0.0f : >) : +~\(x39).(x39,((x39,0.0f : >),37.979034422220771f : /) : -) : _,0.0f : >) : * : (+ : _,36.979034422220771f : @)~(\(x40).((x40,(x40 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_166;
|
||||
ID_168 = (\(x36).(((x36,(x36 : mem) : min),0.68181818181818177f : <),(0.68181818181818177f,(x36,(x36 : mem) : max) : <) : &) : ID_167);
|
||||
ID_283 = \(x37).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x37 : \(x38).((x38,(x38 : mem) : -),0.0f : >) : +~\(x39).(x39,((x39,0.0f : >),37.979034422220771f : /) : -) : _,0.0f : >) : * : (+ : _,36.979034422220771f : @)~(\(x40).((x40,(x40 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_282;
|
||||
ID_284 = (\(x36).(((x36,(x36 : mem) : min),0.68181818181818177f : <),(0.68181818181818177f,(x36,(x36 : mem) : max) : <) : &) : ID_283);
|
||||
ID_174 = \(x42).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x42 : \(x43).((x43,(x43 : mem) : -),0.0f : >) : +~\(x44).(x44,((x44,0.0f : >),33.062669809707174f : /) : -) : _,0.0f : >) : * : (+ : _,32.062669809707174f : @)~(\(x45).((x45,(x45 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_173;
|
||||
ID_175 = (\(x41).(((x41,(x41 : mem) : min),0.77272727272727271f : <),(0.77272727272727271f,(x41,(x41 : mem) : max) : <) : &) : ID_174);
|
||||
ID_290 = \(x42).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x42 : \(x43).((x43,(x43 : mem) : -),0.0f : >) : +~\(x44).(x44,((x44,0.0f : >),33.062669809707174f : /) : -) : _,0.0f : >) : * : (+ : _,32.062669809707174f : @)~(\(x45).((x45,(x45 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_289;
|
||||
ID_291 = (\(x41).(((x41,(x41 : mem) : min),0.77272727272727271f : <),(0.77272727272727271f,(x41,(x41 : mem) : max) : <) : &) : ID_290);
|
||||
ID_178 = \(x47).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x47 : \(x48).((x48,(x48 : mem) : -),0.0f : >) : +~\(x49).(x49,((x49,0.0f : >),28.782725826914341f : /) : -) : _,0.0f : >) : * : (+ : _,27.782725826914341f : @)~(\(x50).((x50,(x50 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_177;
|
||||
ID_179 = (\(x46).(((x46,(x46 : mem) : min),0.86363636363636365f : <),(0.86363636363636365f,(x46,(x46 : mem) : max) : <) : &) : ID_178);
|
||||
ID_294 = \(x47).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x47 : \(x48).((x48,(x48 : mem) : -),0.0f : >) : +~\(x49).(x49,((x49,0.0f : >),28.782725826914341f : /) : -) : _,0.0f : >) : * : (+ : _,27.782725826914341f : @)~(\(x50).((x50,(x50 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_293;
|
||||
ID_295 = (\(x46).(((x46,(x46 : mem) : min),0.86363636363636365f : <),(0.86363636363636365f,(x46,(x46 : mem) : max) : <) : &) : ID_294);
|
||||
ID_185 = \(x52).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x52 : \(x53).((x53,(x53 : mem) : -),0.0f : >) : +~\(x54).(x54,((x54,0.0f : >),25.056818181818183f : /) : -) : _,0.0f : >) : * : (+ : _,24.056818181818183f : @)~(\(x55).((x55,(x55 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_184;
|
||||
ID_186 = (\(x51).(((x51,(x51 : mem) : min),0.95454545454545459f : <),(0.95454545454545459f,(x51,(x51 : mem) : max) : <) : &) : ID_185);
|
||||
ID_187 = ID_179, ID_186;
|
||||
ID_188 = ID_175, ID_187;
|
||||
ID_189 = ID_168, ID_188;
|
||||
ID_190 = ID_158, ID_189;
|
||||
ID_191 = ID_148, ID_190;
|
||||
ID_192 = ID_141, ID_191;
|
||||
ID_193 = ID_131, ID_192;
|
||||
ID_194 = ID_121, ID_193;
|
||||
ID_195 = ID_111, ID_194;
|
||||
ID_196 = ID_101, ID_195;
|
||||
ID_198 = ID_196 :> ID_197;
|
||||
ID_199 = ID_91 <: ID_198;
|
||||
ID_301 = \(x52).(((_,12345 : +)~(_,1103515245 : *),2147483647.0f : /),(hslider("level [unit:f][osc:/accxyz/0 -10 10]", 0.5f, 0.0f, 1.0f, 0.01f),2 : pow) : * : _,(x52 : \(x53).((x53,(x53 : mem) : -),0.0f : >) : +~\(x54).(x54,((x54,0.0f : >),25.056818181818183f : /) : -) : _,0.0f : >) : * : (+ : _,24.056818181818183f : @)~(\(x55).((x55,(x55 : mem) : +),2 : /) : _,(1.0f,hslider("attenuation [osc:/1/fader3]", 0.0050000000000000001f, 0.0f, 0.01f, 0.001f) : -) : *)) : ID_300;
|
||||
ID_302 = (\(x51).(((x51,(x51 : mem) : min),0.95454545454545459f : <),(0.95454545454545459f,(x51,(x51 : mem) : max) : <) : &) : ID_301);
|
||||
ID_303 = ID_295, ID_302;
|
||||
ID_304 = ID_291, ID_303;
|
||||
ID_305 = ID_284, ID_304;
|
||||
ID_306 = ID_274, ID_305;
|
||||
ID_307 = ID_264, ID_306;
|
||||
ID_308 = ID_257, ID_307;
|
||||
ID_309 = ID_247, ID_308;
|
||||
ID_310 = ID_237, ID_309;
|
||||
ID_311 = ID_227, ID_310;
|
||||
ID_312 = ID_217, ID_311;
|
||||
ID_314 = ID_312 :> ID_313;
|
||||
ID_315 = ID_207 <: ID_314;
|
||||
ID_42 = (65536 : int);
|
||||
ID_43 = _, ID_42;
|
||||
ID_44 = (ID_43 : %);
|
||||
ID_46 = _, ID_45;
|
||||
ID_47 = (ID_46 : +);
|
||||
ID_48 = ID_44 ~ ID_47;
|
||||
ID_49 = (ID_48 : float);
|
||||
ID_50 = ID_49, 6.2831853071795862f;
|
||||
ID_51 = (ID_50 : *);
|
||||
ID_53 = ID_51, ID_52;
|
||||
ID_54 = ID_53 : /;
|
||||
ID_55 = (ID_54 : sin);
|
||||
ID_74 = (ID_73 : int);
|
||||
ID_78 = hslider("volume [unit:dB]", 0.0f, -96.0f, 0.0f, 0.10000000000000001f);
|
||||
ID_75 = ID_55, ID_74;
|
||||
ID_76 = 65536, ID_75;
|
||||
ID_77 = (ID_76 : rdtable);
|
||||
ID_79 = \(x2).(10.0f,(x2,20.0f : /) : pow) : \(x3).(\(x4).(((1.0f,(1,(44.100000000000001f,(192000.0f,(1.0f,fconstant(int fSamplingFreq, <math.h>) : max) : min) : /) : -) : -),x3 : *),((1,(44.100000000000001f,(192000.0f,(1.0f,fconstant(int fSamplingFreq, <math.h>) : max) : min) : /) : -),x4 : *) : +)~_);
|
||||
ID_80 = (ID_78 : ID_79);
|
||||
ID_81 = ID_77, ID_80;
|
||||
ID_82 = ID_81 : *;
|
||||
ID_83 = vgroup("Oscillator", ID_82);
|
||||
ID_317 = (ID_316 : +);
|
||||
ID_316 = _, 12345;
|
||||
ID_3 = (1 : mem);
|
||||
ID_14 = hslider("freq [unit:Hz]", 1000.0f, 20.0f, 24000.0f, 1.0f);
|
||||
ID_15 = fconstant(int fSamplingFreq, <math.h>);
|
||||
ID_333 = vslider("Volume[style:knob][acc: 0 0 -10 0 10]", 0.5f, 0.0f, 1.0f, 0.10000000000000001f);
|
||||
ID_334 = ID_332, ID_333;
|
||||
ID_331 = ID_330, 2147483647.0f;
|
||||
ID_332 = (ID_331 : /);
|
||||
ID_330 = ID_327 ~ ID_329;
|
||||
ID_326 = _, 12345;
|
||||
ID_327 = (ID_326 : +);
|
||||
ID_328 = _, 1103515245;
|
||||
ID_329 = (ID_328 : *);
|
||||
ID_335 = ID_334 : *;
|
||||
ID_16 = 1.0f, ID_15;
|
||||
ID_17 = (ID_16 : max);
|
||||
ID_18 = 192000.0f, ID_17;
|
||||
ID_19 = (ID_18 : min);
|
||||
ID_20 = ID_14, ID_19;
|
||||
ID_21 = (ID_20 : /);
|
||||
ID_22 = _, ID_21;
|
||||
ID_23 = (ID_22 : +);
|
||||
ID_24 = ID_23, 0;
|
||||
ID_25 = 0, ID_24;
|
||||
ID_26 = ID_25 : select2;
|
||||
ID_10 = (65536 : float);
|
||||
ID_29 = _, ID_10;
|
||||
ID_30 = ID_29 : *;
|
||||
ID_27 = (ID_26 : \(x1).(x1,(x1 : floor) : -));
|
||||
ID_28 = ID_27 ~ _;
|
||||
ID_31 = ID_28 : ID_30;
|
||||
ID_0 = (65536 : int);
|
||||
ID_1 = _, ID_0;
|
||||
ID_2 = (ID_1 : %);
|
||||
ID_4 = _, ID_3;
|
||||
ID_5 = (ID_4 : +);
|
||||
ID_6 = ID_2 ~ ID_5;
|
||||
ID_7 = (ID_6 : float);
|
||||
ID_8 = ID_7, 6.2831853071795862f;
|
||||
ID_9 = (ID_8 : *);
|
||||
ID_11 = ID_9, ID_10;
|
||||
ID_12 = ID_11 : /;
|
||||
ID_13 = (ID_12 : sin);
|
||||
ID_32 = (ID_31 : int);
|
||||
ID_36 = hslider("volume [unit:dB]", 0.0f, -96.0f, 0.0f, 0.10000000000000001f);
|
||||
ID_33 = ID_13, ID_32;
|
||||
ID_34 = 65536, ID_33;
|
||||
ID_35 = (ID_34 : rdtable);
|
||||
ID_37 = \(x2).(10.0f,(x2,20.0f : /) : pow) : \(x3).(\(x4).(((1.0f,(1,(44.100000000000001f,(192000.0f,(1.0f,fconstant(int fSamplingFreq, <math.h>) : max) : min) : /) : -) : -),x3 : *),((1,(44.100000000000001f,(192000.0f,(1.0f,fconstant(int fSamplingFreq, <math.h>) : max) : min) : /) : -),x4 : *) : +)~_);
|
||||
ID_38 = (ID_36 : ID_37);
|
||||
ID_39 = ID_35, ID_38;
|
||||
ID_40 = ID_39 : *;
|
||||
ID_41 = vgroup("Oscillator", ID_40);
|
||||
process = ID_335;
|
||||
@@ -0,0 +1,122 @@
|
||||
/* ------------------------------------------------------------
|
||||
author: "Grame"
|
||||
copyright: "(c)GRAME 2009"
|
||||
license: "BSD"
|
||||
name: "Noise"
|
||||
version: "1.1"
|
||||
Code generated with Faust 2.38.16 (https://faust.grame.fr)
|
||||
Compilation options: -lang cpp -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 "AudioTools/AudioLibs/AudioFaustDSP.h" // used to define dsp class
|
||||
|
||||
#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 mydsp : public dsp {
|
||||
|
||||
private:
|
||||
|
||||
FAUSTFLOAT fVslider0;
|
||||
int iRec0[2];
|
||||
int fSampleRate;
|
||||
|
||||
public:
|
||||
|
||||
void metadata(Meta* m) {
|
||||
m->declare("author", "Grame");
|
||||
m->declare("compilation_options", "-single -scal -I /Users/pschatzmann/.FaustLive-CurrentSession-2.2/Libs -I /Users/pschatzmann/.FaustLive-CurrentSession-2.2/Examples");
|
||||
m->declare("compile_options", "-lang cpp -es 1 -mcd 16 -single -ftz 0 ");
|
||||
m->declare("copyright", "(c)GRAME 2009");
|
||||
m->declare("filename", "Noise.dsp");
|
||||
m->declare("license", "BSD");
|
||||
m->declare("name", "Noise");
|
||||
m->declare("version", "1.1");
|
||||
}
|
||||
|
||||
virtual int getNumInputs() {
|
||||
return 0;
|
||||
}
|
||||
virtual int getNumOutputs() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void classInit(int sample_rate) {
|
||||
}
|
||||
|
||||
virtual void instanceConstants(int sample_rate) {
|
||||
fSampleRate = sample_rate;
|
||||
}
|
||||
|
||||
virtual void instanceResetUserInterface() {
|
||||
fVslider0 = FAUSTFLOAT(0.5f);
|
||||
}
|
||||
|
||||
virtual void instanceClear() {
|
||||
for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) {
|
||||
iRec0[l0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
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("Noise");
|
||||
ui_interface->declare(&fVslider0, "acc", "0 0 -10 0 10");
|
||||
ui_interface->declare(&fVslider0, "style", "knob");
|
||||
ui_interface->addVerticalSlider("Volume", &fVslider0, FAUSTFLOAT(0.5f), FAUSTFLOAT(0.0f), FAUSTFLOAT(1.0f), FAUSTFLOAT(0.100000001f));
|
||||
ui_interface->closeBox();
|
||||
}
|
||||
|
||||
virtual void compute(int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs) {
|
||||
FAUSTFLOAT* output0 = outputs[0];
|
||||
float fSlow0 = (4.65661287e-10f * float(fVslider0));
|
||||
for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
|
||||
iRec0[0] = ((1103515245 * iRec0[1]) + 12345);
|
||||
output0[i0] = FAUSTFLOAT((fSlow0 * float(iRec0[0])));
|
||||
iRec0[1] = iRec0[0];
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* @file streams-faust_noise-i2s.ino
|
||||
* @author Phil Schatzmann
|
||||
* @brief Example how to use Faust as Audio Source
|
||||
* @version 0.1
|
||||
* @date 2022-04-22
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/AudioLibs/AudioFaust.h"
|
||||
#include "Noise.h"
|
||||
|
||||
FaustStream<mydsp> faust;
|
||||
AudioBoardStream out(AudioKitEs8388V1);
|
||||
StreamCopy copier(out, faust); // copy mic to tfl
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
// Open Serial
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
// Setup Faust
|
||||
auto cfg = faust.defaultConfig();
|
||||
faust.begin(cfg);
|
||||
|
||||
faust.setLabelValue("Volume", 0.1);
|
||||
|
||||
|
||||
// start I2S
|
||||
auto cfg_i2s = out.defaultConfig(TX_MODE);
|
||||
cfg_i2s.sample_rate = cfg.sample_rate;
|
||||
cfg_i2s.channels = cfg.channels;
|
||||
cfg_i2s.bits_per_sample = cfg.bits_per_sample;
|
||||
out.begin(cfg_i2s);
|
||||
|
||||
}
|
||||
|
||||
// Arduino loop - copy sound to out
|
||||
void loop() {
|
||||
copier.copy();
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @file streams-faust-i2s.ino
|
||||
* @author Phil Schatzmann
|
||||
* @brief Example how to use Faust as "Singal Processor"
|
||||
* @version 0.1
|
||||
* @date 2022-04-22
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/AudioLibs/AudioFaust.h"
|
||||
#include "volume.h"
|
||||
|
||||
SineWaveGenerator<int16_t> sineWave(32000); // subclass of SoundGenerator with max amplitude of 32000
|
||||
GeneratedSoundStream<int16_t> sound(sineWave); // Stream generated from sine wave
|
||||
mydsp dsp;
|
||||
AudioBoardStream out(AudioKitEs8388V1);
|
||||
FaustStream<mydsp> faust(out);
|
||||
StreamCopy copier(faust, sound); // copy mic to tfl
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
// Open Serial
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
// Setup Faust volume control
|
||||
auto cfg = faust.defaultConfig();
|
||||
faust.begin(cfg);
|
||||
faust.setLabelValue("0x00", 0.5);
|
||||
|
||||
// Setup sine wave generator
|
||||
sineWave.begin(cfg.channels, cfg.sample_rate, N_B4);
|
||||
|
||||
// start I2S
|
||||
auto cfg_i2s = out.defaultConfig(TX_MODE);
|
||||
cfg_i2s.sample_rate = cfg.sample_rate;
|
||||
cfg_i2s.channels = cfg.channels;
|
||||
cfg_i2s.bits_per_sample = cfg.bits_per_sample;
|
||||
out.begin(cfg_i2s);
|
||||
|
||||
}
|
||||
|
||||
// Arduino loop - copy sound to out
|
||||
void loop() {
|
||||
copier.copy();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
declare compilation_options "-single -scal -inpl -fx -I /Users/pschatzmann/.FaustLive-CurrentSession-2.0/Libs -I /Users/pschatzmann/.FaustLive-CurrentSession-2.0/Examples";
|
||||
declare library_path "volume";
|
||||
declare library_path "/Users/pschatzmann/.FaustLive-CurrentSession-2.0/Libs/stdfaust.lib";
|
||||
declare library_path "/Users/pschatzmann/.FaustLive-CurrentSession-2.0/Libs/basics.lib";
|
||||
declare library_path "/Users/pschatzmann/.FaustLive-CurrentSession-2.0/Libs/signals.lib";
|
||||
declare author "Grame";
|
||||
declare basics_lib_name "Faust Basic Element Library";
|
||||
declare basics_lib_version "0.1";
|
||||
declare copyright "(c)GRAME 2006";
|
||||
declare filename "volume";
|
||||
declare license "BSD";
|
||||
declare name "volume";
|
||||
declare signals_lib_name "Faust Signal Routing Library";
|
||||
declare signals_lib_version "0.0";
|
||||
declare version "1.0";
|
||||
process = _,(vslider("[1]", 0.0f, -70.0f, 4.0f, 0.10000000000000001f) : \(x1).(10.0f,(x1,20.0f : /) : pow) : _,0.0010000000000000009f : * : +~(_,0.999f : *)) : *;
|
||||
@@ -0,0 +1,126 @@
|
||||
/* ------------------------------------------------------------
|
||||
author: "Grame"
|
||||
copyright: "(c)GRAME 2006"
|
||||
license: "BSD"
|
||||
name: "volume"
|
||||
version: "1.0"
|
||||
Code generated with Faust 2.38.16 (https://faust.grame.fr)
|
||||
Compilation options: -lang cpp -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>
|
||||
|
||||
#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 mydsp : public dsp {
|
||||
|
||||
private:
|
||||
|
||||
FAUSTFLOAT fVslider0;
|
||||
float fRec0[2];
|
||||
int fSampleRate;
|
||||
|
||||
public:
|
||||
|
||||
void metadata(Meta* m) {
|
||||
m->declare("author", "Grame");
|
||||
m->declare("basics_lib_name", "Faust Basic Element Library");
|
||||
m->declare("basics_lib_version", "0.1");
|
||||
m->declare("compilation_options", "-single -scal -inpl -fx -I /Users/pschatzmann/.FaustLive-CurrentSession-2.0/Libs -I /Users/pschatzmann/.FaustLive-CurrentSession-2.0/Examples");
|
||||
m->declare("compile_options", "-lang cpp -es 1 -mcd 16 -single -ftz 0 ");
|
||||
m->declare("copyright", "(c)GRAME 2006");
|
||||
m->declare("filename", "volume.dsp");
|
||||
m->declare("library_path", "volume");
|
||||
m->declare("license", "BSD");
|
||||
m->declare("name", "volume");
|
||||
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 1;
|
||||
}
|
||||
virtual int getNumOutputs() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void classInit(int sample_rate) {
|
||||
}
|
||||
|
||||
virtual void instanceConstants(int sample_rate) {
|
||||
fSampleRate = sample_rate;
|
||||
}
|
||||
|
||||
virtual void instanceResetUserInterface() {
|
||||
fVslider0 = FAUSTFLOAT(0.0f);
|
||||
}
|
||||
|
||||
virtual void instanceClear() {
|
||||
for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) {
|
||||
fRec0[l0] = 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("volume");
|
||||
ui_interface->declare(&fVslider0, "1", "");
|
||||
ui_interface->addVerticalSlider("0x00", &fVslider0, FAUSTFLOAT(0.0f), FAUSTFLOAT(-70.0f), FAUSTFLOAT(4.0f), FAUSTFLOAT(0.100000001f));
|
||||
ui_interface->closeBox();
|
||||
}
|
||||
|
||||
virtual void compute(int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs) {
|
||||
FAUSTFLOAT* input0 = inputs[0];
|
||||
FAUSTFLOAT* output0 = outputs[0];
|
||||
float fSlow0 = (0.00100000005f * std::pow(10.0f, (0.0500000007f * float(fVslider0))));
|
||||
for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
|
||||
fRec0[0] = (fSlow0 + (0.999000013f * fRec0[1]));
|
||||
output0[i0] = FAUSTFLOAT((float(input0[i0]) * fRec0[0]));
|
||||
fRec0[1] = fRec0[0];
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,3 @@
|
||||
declare filename "copy.dsp";
|
||||
declare name "copy";
|
||||
process = _,_;
|
||||
@@ -0,0 +1,106 @@
|
||||
/* ------------------------------------------------------------
|
||||
name: "Copy"
|
||||
Code generated with Faust 2.68.1 (https://faust.grame.fr)
|
||||
Compilation options: -lang cpp -ct 1 -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>
|
||||
|
||||
#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 mydsp : public dsp {
|
||||
|
||||
private:
|
||||
|
||||
int fSampleRate;
|
||||
|
||||
public:
|
||||
mydsp() {}
|
||||
|
||||
void metadata(Meta* m) {
|
||||
m->declare("compile_options", "-lang cpp -ct 1 -es 1 -mcd 16 -single -ftz 0");
|
||||
m->declare("filename", "Copy.dsp");
|
||||
m->declare("name", "Copy");
|
||||
}
|
||||
|
||||
virtual int getNumInputs() {
|
||||
return 2;
|
||||
}
|
||||
virtual int getNumOutputs() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
static void classInit(int sample_rate) {
|
||||
}
|
||||
|
||||
virtual void instanceConstants(int sample_rate) {
|
||||
fSampleRate = sample_rate;
|
||||
}
|
||||
|
||||
virtual void instanceResetUserInterface() {
|
||||
}
|
||||
|
||||
virtual void instanceClear() {
|
||||
}
|
||||
|
||||
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("Copy");
|
||||
ui_interface->closeBox();
|
||||
}
|
||||
|
||||
virtual void compute(int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs) {
|
||||
FAUSTFLOAT* input0 = inputs[0];
|
||||
FAUSTFLOAT* input1 = inputs[1];
|
||||
FAUSTFLOAT* output0 = outputs[0];
|
||||
FAUSTFLOAT* output1 = outputs[1];
|
||||
for (int i0 = 0; i0 < count; i0 = i0 + 1) {
|
||||
output0[i0] = FAUSTFLOAT(float(input0[i0]));
|
||||
output1[i0] = FAUSTFLOAT(float(input1[i0]));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* @file streams-i2s-faust_copy-i2s.ino
|
||||
* @author Phil Schatzmann
|
||||
* @brief Example how to use Faust to write and process a stereo signal. The data
|
||||
* is just copied, keeping the left and right signal separate.
|
||||
* @version 0.1
|
||||
* @date 2022-04-22
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/AudioLibs/AudioFaust.h"
|
||||
#include "Copy.h"
|
||||
|
||||
AudioBoardStream io(AudioKitEs8388V1);
|
||||
FaustStream<mydsp> faust(io); // final output to io
|
||||
StreamCopy copier(faust, io); // copy mic to faust
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
// Open Serial
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
// Setup Faust
|
||||
auto cfg = faust.defaultConfig();
|
||||
faust.begin(cfg);
|
||||
|
||||
|
||||
// start I2S
|
||||
auto cfg_i2s = io.defaultConfig(RXTX_MODE);
|
||||
cfg_i2s.copyFrom(cfg);
|
||||
io.begin(cfg_i2s);
|
||||
|
||||
}
|
||||
|
||||
// Arduino loop - copy sound to out
|
||||
void loop() {
|
||||
copier.copy();
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* @file streams-i2s-faust_guitarix-i2s.ino
|
||||
* @author Phil Schatzmann
|
||||
* @brief Example how to use Faust when Faust expects input and provides kitput
|
||||
* @version 0.1
|
||||
* @date 2022-04-22
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/AudioLibs/AudioFaust.h"
|
||||
#include "guitarix.h"
|
||||
|
||||
AudioBoardStream kit(AudioKitEs8388V1);
|
||||
FaustStream<mydsp> faust(kit); // final output of Faust is kit
|
||||
StreamCopy copier(faust, kit); // copy data from kit to faust
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
// Open Serial
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
// Setup Faust
|
||||
auto cfg = faust.defaultConfig();
|
||||
faust.begin(cfg);
|
||||
|
||||
// Tube Screemer
|
||||
faust.setLabelValue("drive", 0.23);
|
||||
faust.setLabelValue("level", -12.6);
|
||||
faust.setLabelValue("tone", 489);
|
||||
// preamp
|
||||
faust.setLabelValue("Pregain", 0.4);
|
||||
faust.setLabelValue("Gain", 0.4);
|
||||
//jcm 2000
|
||||
faust.setLabelValue("Treble", 0.9);
|
||||
faust.setLabelValue("Middle", 0.76);
|
||||
faust.setLabelValue("Bass", 0.62);
|
||||
//Cabinet
|
||||
faust.setLabelValue("amount", 100);
|
||||
|
||||
|
||||
// start I2S
|
||||
auto cfg_i2s = kit.defaultConfig(RXTX_MODE);
|
||||
cfg_i2s.sample_rate = cfg.sample_rate;
|
||||
cfg_i2s.channels = cfg.channels;
|
||||
cfg_i2s.bits_per_sample = cfg.bits_per_sample;
|
||||
cfg_i2s.input_device = ADC_INPUT_LINE1;
|
||||
kit.begin(cfg_i2s);
|
||||
|
||||
}
|
||||
|
||||
// Arduino loop - copy sound to kit
|
||||
void loop() {
|
||||
copier.copy();
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
declare filename "pitchShifter.dsp";
|
||||
declare name "pitchShifter";
|
||||
declare name "pitchShifter";
|
||||
declare version "1.0";
|
||||
declare author "Grame";
|
||||
declare license "BSD";
|
||||
declare copyright "(c)GRAME 2006";
|
||||
|
||||
//--------------------------------------
|
||||
// very simple real time pitch shifter
|
||||
//--------------------------------------
|
||||
|
||||
import("stdfaust.lib");
|
||||
|
||||
pitchshifter = vgroup("Pitch Shifter", ef.transpose(
|
||||
hslider("window (samples)", 1000, 50, 10000, 1),
|
||||
hslider("xfade (samples)", 10, 1, 10000, 1),
|
||||
hslider("shift (semitones) ", 0, -12, +12, 0.1)
|
||||
)
|
||||
);
|
||||
|
||||
process = (pitchshifter, pitchshifter);
|
||||
@@ -0,0 +1,172 @@
|
||||
/* ------------------------------------------------------------
|
||||
author: "Grame"
|
||||
copyright: "(c)GRAME 2006"
|
||||
license: "BSD"
|
||||
name: "pitchShifter"
|
||||
version: "1.0"
|
||||
Code generated with Faust 2.68.1 (https://faust.grame.fr)
|
||||
Compilation options: -lang cpp -ct 1 -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>
|
||||
|
||||
#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 mydsp : public dsp {
|
||||
|
||||
private:
|
||||
|
||||
FAUSTFLOAT fHslider0;
|
||||
FAUSTFLOAT fHslider1;
|
||||
float fRec0[2];
|
||||
FAUSTFLOAT fHslider2;
|
||||
int IOTA0;
|
||||
float fVec0[131072];
|
||||
float fVec1[131072];
|
||||
int fSampleRate;
|
||||
|
||||
public:
|
||||
mydsp() {}
|
||||
|
||||
void metadata(Meta* m) {
|
||||
m->declare("author", "Grame");
|
||||
m->declare("compile_options", "-lang cpp -ct 1 -es 1 -mcd 16 -single -ftz 0");
|
||||
m->declare("copyright", "(c)GRAME 2006");
|
||||
m->declare("delays.lib/name", "Faust Delay Library");
|
||||
m->declare("delays.lib/version", "1.1.0");
|
||||
m->declare("filename", "pitchShifter.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.6.0");
|
||||
m->declare("misceffects.lib/name", "Misc Effects Library");
|
||||
m->declare("misceffects.lib/version", "2.1.0");
|
||||
m->declare("name", "pitchShifter");
|
||||
m->declare("version", "1.0");
|
||||
}
|
||||
|
||||
virtual int getNumInputs() {
|
||||
return 2;
|
||||
}
|
||||
virtual int getNumOutputs() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
static void classInit(int sample_rate) {
|
||||
}
|
||||
|
||||
virtual void instanceConstants(int sample_rate) {
|
||||
fSampleRate = sample_rate;
|
||||
}
|
||||
|
||||
virtual void instanceResetUserInterface() {
|
||||
fHslider0 = FAUSTFLOAT(0.0f);
|
||||
fHslider1 = FAUSTFLOAT(1e+03f);
|
||||
fHslider2 = FAUSTFLOAT(1e+01f);
|
||||
}
|
||||
|
||||
virtual void instanceClear() {
|
||||
for (int l0 = 0; l0 < 2; l0 = l0 + 1) {
|
||||
fRec0[l0] = 0.0f;
|
||||
}
|
||||
IOTA0 = 0;
|
||||
for (int l1 = 0; l1 < 131072; l1 = l1 + 1) {
|
||||
fVec0[l1] = 0.0f;
|
||||
}
|
||||
for (int l2 = 0; l2 < 131072; l2 = l2 + 1) {
|
||||
fVec1[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("Pitch Shifter");
|
||||
ui_interface->addHorizontalSlider("shift (semitones)", &fHslider0, FAUSTFLOAT(0.0f), FAUSTFLOAT(-12.0f), FAUSTFLOAT(12.0f), FAUSTFLOAT(0.1f));
|
||||
ui_interface->addHorizontalSlider("window (samples)", &fHslider1, FAUSTFLOAT(1e+03f), FAUSTFLOAT(5e+01f), FAUSTFLOAT(1e+04f), FAUSTFLOAT(1.0f));
|
||||
ui_interface->addHorizontalSlider("xfade (samples)", &fHslider2, FAUSTFLOAT(1e+01f), FAUSTFLOAT(1.0f), FAUSTFLOAT(1e+04f), FAUSTFLOAT(1.0f));
|
||||
ui_interface->closeBox();
|
||||
}
|
||||
|
||||
virtual void compute(int count, FAUSTFLOAT** RESTRICT inputs, FAUSTFLOAT** RESTRICT outputs) {
|
||||
FAUSTFLOAT* input0 = inputs[0];
|
||||
FAUSTFLOAT* input1 = inputs[1];
|
||||
FAUSTFLOAT* output0 = outputs[0];
|
||||
FAUSTFLOAT* output1 = outputs[1];
|
||||
float fSlow0 = std::pow(2.0f, 0.083333336f * float(fHslider0));
|
||||
float fSlow1 = float(fHslider1);
|
||||
float fSlow2 = 1.0f / float(fHslider2);
|
||||
for (int i0 = 0; i0 < count; i0 = i0 + 1) {
|
||||
fRec0[0] = std::fmod(fSlow1 + (fRec0[1] + 1.0f - fSlow0), fSlow1);
|
||||
float fTemp0 = std::min<float>(fSlow2 * fRec0[0], 1.0f);
|
||||
float fTemp1 = 1.0f - fTemp0;
|
||||
float fTemp2 = float(input0[i0]);
|
||||
fVec0[IOTA0 & 131071] = fTemp2;
|
||||
float fTemp3 = fSlow1 + fRec0[0];
|
||||
int iTemp4 = int(fTemp3);
|
||||
int iTemp5 = std::min<int>(65537, std::max<int>(0, iTemp4 + 1));
|
||||
float fTemp6 = std::floor(fTemp3);
|
||||
float fTemp7 = fSlow1 + (fRec0[0] - fTemp6);
|
||||
float fTemp8 = 1.0f - fRec0[0];
|
||||
float fTemp9 = fTemp6 + fTemp8 - fSlow1;
|
||||
int iTemp10 = std::min<int>(65537, std::max<int>(0, iTemp4));
|
||||
int iTemp11 = int(fRec0[0]);
|
||||
int iTemp12 = std::min<int>(65537, std::max<int>(0, iTemp11 + 1));
|
||||
float fTemp13 = std::floor(fRec0[0]);
|
||||
float fTemp14 = fRec0[0] - fTemp13;
|
||||
float fTemp15 = fTemp13 + fTemp8;
|
||||
int iTemp16 = std::min<int>(65537, std::max<int>(0, iTemp11));
|
||||
output0[i0] = FAUSTFLOAT((fVec0[(IOTA0 - iTemp16) & 131071] * fTemp15 + fTemp14 * fVec0[(IOTA0 - iTemp12) & 131071]) * fTemp0 + (fVec0[(IOTA0 - iTemp10) & 131071] * fTemp9 + fTemp7 * fVec0[(IOTA0 - iTemp5) & 131071]) * fTemp1);
|
||||
float fTemp17 = float(input1[i0]);
|
||||
fVec1[IOTA0 & 131071] = fTemp17;
|
||||
output1[i0] = FAUSTFLOAT(fTemp0 * (fVec1[(IOTA0 - iTemp16) & 131071] * fTemp15 + fTemp14 * fVec1[(IOTA0 - iTemp12) & 131071]) + fTemp1 * (fTemp9 * fVec1[(IOTA0 - iTemp10) & 131071] + fTemp7 * fVec1[(IOTA0 - iTemp5) & 131071]));
|
||||
fRec0[1] = fRec0[0];
|
||||
IOTA0 = IOTA0 + 1;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* @file streams-i2s-faust_pitchshift-i2s.ino
|
||||
* @author Phil Schatzmann
|
||||
* @brief Example how to use Faust for pitch shifting in stereo
|
||||
* @version 0.1
|
||||
* @date 2022-04-22
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/AudioLibs/AudioFaust.h"
|
||||
#include "pitchShifter.h"
|
||||
|
||||
AudioBoardStream io(AudioKitEs8388V1);
|
||||
FaustStream<mydsp> faust(io); // final output to io
|
||||
StreamCopy copier(faust, io); // copy mic to faust
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
// Open Serial
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
// Setup Faust
|
||||
auto cfg = faust.defaultConfig();
|
||||
faust.begin(cfg);
|
||||
|
||||
|
||||
// start I2S
|
||||
auto cfg_i2s = io.defaultConfig(RXTX_MODE);
|
||||
cfg_i2s.copyFrom(cfg);
|
||||
io.begin(cfg_i2s);
|
||||
|
||||
}
|
||||
|
||||
// Arduino loop - copy sound to out
|
||||
void loop() {
|
||||
copier.copy();
|
||||
}
|
||||
Reference in New Issue
Block a user