1 namespace tonestack_m2199 {
2
3 /* ------------------------------------------------------------
4 name: "M2199"
5 Code generated with Faust 2.15.11 (https://faust.grame.fr)
6 Compilation options: cpp, -double -ftz 0
7 ------------------------------------------------------------ */
8
9
10
11
module_faustpower2_f(double value)12 static double module_faustpower2_f(double value) {
13 return (value * value);
14
15 }
16
17
18 class module : public dsp {
19
20 private:
21
22 int fSamplingFreq;
23 double fConst0;
24 FAUSTFLOAT fVslider0;
25 FAUSTFLOAT fVslider1;
26 double fConst1;
27 FAUSTFLOAT fVslider2;
28 double fConst2;
29 double fRec0[4];
30
31 public:
32
metadata(Meta * m)33 void metadata(Meta* m) {
34 m->declare("filename", "m2199");
35 m->declare("filters.lib/fir:author", "Julius O. Smith III");
36 m->declare("filters.lib/fir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
37 m->declare("filters.lib/fir:license", "MIT-style STK-4.3 license");
38 m->declare("filters.lib/iir:author", "Julius O. Smith III");
39 m->declare("filters.lib/iir:copyright", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
40 m->declare("filters.lib/iir:license", "MIT-style STK-4.3 license");
41 m->declare("filters.lib/lowpass0_highpass1", "Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
42 m->declare("filters.lib/name", "Faust Filters Library");
43 m->declare("id", "M2199");
44 m->declare("maths.lib/author", "GRAME");
45 m->declare("maths.lib/copyright", "GRAME");
46 m->declare("maths.lib/license", "LGPL with exception");
47 m->declare("maths.lib/name", "Faust Math Library");
48 m->declare("maths.lib/version", "2.1");
49 m->declare("name", "M2199");
50 m->declare("tonestack.dsp/id", "tonestack");
51 }
52
getNumInputs()53 virtual int getNumInputs() {
54 return 1;
55
56 }
getNumOutputs()57 virtual int getNumOutputs() {
58 return 1;
59
60 }
getInputRate(int channel)61 virtual int getInputRate(int channel) {
62 int rate;
63 switch (channel) {
64 case 0: {
65 rate = 1;
66 break;
67 }
68 default: {
69 rate = -1;
70 break;
71 }
72
73 }
74 return rate;
75
76 }
getOutputRate(int channel)77 virtual int getOutputRate(int channel) {
78 int rate;
79 switch (channel) {
80 case 0: {
81 rate = 1;
82 break;
83 }
84 default: {
85 rate = -1;
86 break;
87 }
88
89 }
90 return rate;
91
92 }
93
classInit(int samplingFreq)94 static void classInit(int samplingFreq) {
95
96 }
97
instanceConstants(int samplingFreq)98 virtual void instanceConstants(int samplingFreq) {
99 fSamplingFreq = samplingFreq;
100 fConst0 = (2.0 * std::min<double>(192000.0, std::max<double>(1.0, double(fSamplingFreq))));
101 fConst1 = module_faustpower2_f(fConst0);
102 fConst2 = (3.0 * fConst0);
103
104 }
105
instanceResetUserInterface()106 virtual void instanceResetUserInterface() {
107 fVslider0 = FAUSTFLOAT(0.5);
108 fVslider1 = FAUSTFLOAT(0.5);
109 fVslider2 = FAUSTFLOAT(0.5);
110
111 }
112
instanceClear()113 virtual void instanceClear() {
114 for (int l0 = 0; (l0 < 4); l0 = (l0 + 1)) {
115 fRec0[l0] = 0.0;
116
117 }
118
119 }
120
init(int samplingFreq)121 virtual void init(int samplingFreq) {
122 classInit(samplingFreq);
123 instanceInit(samplingFreq);
124 }
125
instanceInit(int samplingFreq)126 virtual void instanceInit(int samplingFreq) {
127 instanceConstants(samplingFreq);
128 instanceResetUserInterface();
129 instanceClear();
130 }
131
clone()132 virtual module* clone() {
133 return new module();
134 }
135
getSampleRate()136 virtual int getSampleRate() {
137 return fSamplingFreq;
138
139 }
140
buildUserInterface(UI * ui_interface)141 virtual void buildUserInterface(UI* ui_interface) {
142 ui_interface->openVerticalBox("M2199");
143 ui_interface->addVerticalSlider(".ts.bass", &fVslider1, 0.5, 0.0, 1.0, 0.01);
144 ui_interface->addVerticalSlider(".ts.middle", &fVslider0, 0.5, 0.0, 1.0, 0.01);
145 ui_interface->addVerticalSlider(".ts.treble", &fVslider2, 0.5, 0.0, 1.0, 0.01);
146 ui_interface->closeBox();
147
148 }
149
compute(int count,FAUSTFLOAT ** inputs,FAUSTFLOAT ** outputs)150 virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) {
151 FAUSTFLOAT* input0 = inputs[0];
152 FAUSTFLOAT* output0 = outputs[0];
153 double fSlow0 = double(fVslider0);
154 double fSlow1 = std::exp((3.3999999999999999 * (double(fVslider1) + -1.0)));
155 double fSlow2 = ((0.001175 * fSlow0) + (0.011812500000000002 * fSlow1));
156 double fSlow3 = (fConst0 * (fSlow2 + 0.0065077500000000005));
157 double fSlow4 = (1.38796875e-06 * fSlow0);
158 double fSlow5 = ((((((1.3879687499999999e-05 * fSlow1) + -1.6311937500000001e-06) - fSlow4) * fSlow0) + (3.1989375000000001e-05 * fSlow1)) + 3.5279375000000002e-06);
159 double fSlow6 = ((1.0561781250000004e-09 * fSlow1) - (1.0561781250000003e-10 * fSlow0));
160 double fSlow7 = (1.9328750000000005e-09 * fSlow1);
161 double fSlow8 = ((((fSlow6 + -8.7669687500000036e-11) * fSlow0) + fSlow7) + 1.9328750000000007e-10);
162 double fSlow9 = (fConst0 * fSlow8);
163 double fSlow10 = (1.0 / (-1.0 - (fSlow3 + (fConst1 * (fSlow5 + fSlow9)))));
164 double fSlow11 = double(fVslider2);
165 double fSlow12 = (fConst0 * ((fSlow2 + (6.2500000000000001e-05 * fSlow11)) + 0.00118125));
166 double fSlow13 = (((3.2900000000000005e-07 * fSlow11) + (((1.4614062500000001e-06 - fSlow4) * fSlow0) + (fSlow1 * ((1.3879687499999999e-05 * fSlow0) + 1.0633750000000002e-06)))) + 1.0633750000000002e-07);
167 double fSlow14 = (((fSlow6 + 1.0561781250000003e-10) * fSlow0) + ((fSlow7 - (1.9328750000000007e-10 * (fSlow0 + -1.0))) * fSlow11));
168 double fSlow15 = (fConst0 * fSlow14);
169 double fSlow16 = (0.0 - (fSlow12 + (fConst1 * (fSlow13 + fSlow15))));
170 double fSlow17 = (fConst2 * fSlow8);
171 double fSlow18 = ((fConst1 * (fSlow5 + fSlow17)) + (-3.0 - fSlow3));
172 double fSlow19 = ((fSlow3 + (fConst1 * (fSlow5 - fSlow17))) + -3.0);
173 double fSlow20 = (fSlow3 + (-1.0 - (fConst1 * (fSlow5 - fSlow9))));
174 double fSlow21 = (fConst2 * fSlow14);
175 double fSlow22 = ((fConst1 * (fSlow13 + fSlow21)) - fSlow12);
176 double fSlow23 = (fSlow12 + (fConst1 * (fSlow13 - fSlow21)));
177 double fSlow24 = (fSlow12 - (fConst1 * (fSlow13 - fSlow15)));
178 for (int i = 0; (i < count); i = (i + 1)) {
179 fRec0[0] = (double(input0[i]) - (fSlow10 * (((fSlow18 * fRec0[1]) + (fSlow19 * fRec0[2])) + (fSlow20 * fRec0[3]))));
180 output0[i] = FAUSTFLOAT((fSlow10 * ((((fSlow16 * fRec0[0]) + (fSlow22 * fRec0[1])) + (fSlow23 * fRec0[2])) + (fSlow24 * fRec0[3]))));
181 for (int j0 = 3; (j0 > 0); j0 = (j0 - 1)) {
182 fRec0[j0] = fRec0[(j0 - 1)];
183
184 }
185
186 }
187
188 }
189
190 };
191
192
instantiate()193 dsp *instantiate()
194 {
195 return new module();
196 }
197 } /* namespace tonestack_m2199 */
198
199