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