1 // generated from file '../src/LV2/faust/gxamp11.dsp' by dsp2cc:
2 // Code generated with Faust (https://faust.grame.fr)
3 
4 #include "valve.h"
5 
6 namespace gxamp11 {
7 
8 class Dsp: public PluginLV2 {
9 private:
10 	uint32_t fSampleRate;
11 	FAUSTFLOAT fCheckbox0;
12 	FAUSTFLOAT	*fCheckbox0_;
13 	double fConst4;
14 	double fConst6;
15 	double fConst7;
16 	FAUSTFLOAT fCheckbox1;
17 	FAUSTFLOAT	*fCheckbox1_;
18 	double fRec9[2];
19 	double fRec8[3];
20 	double fConst9;
21 	double fVec0[2];
22 	double fConst10;
23 	double fRec10[2];
24 	double fRec7[2];
25 	double fConst11;
26 	double fConst12;
27 	double fRec6[2];
28 	double fConst14;
29 	double fConst15;
30 	double fRec11[2];
31 	double fRec21[2];
32 	double fRec20[3];
33 	double fConst17;
34 	double fVec1[2];
35 	double fConst18;
36 	double fRec22[2];
37 	double fRec19[2];
38 	double fRec18[2];
39 	double fRec23[2];
40 	double fRec28[2];
41 	int IOTA;
42 	double fVec2[32768];
43 	double fConst19;
44 	int iConst20;
45 	double fRec30[2];
46 	double fRec29[2];
47 	FAUSTFLOAT fVslider0;
48 	FAUSTFLOAT	*fVslider0_;
49 	double fRec31[2];
50 	FAUSTFLOAT fVslider1;
51 	FAUSTFLOAT	*fVslider1_;
52 	double fConst23;
53 	double fConst25;
54 	double fConst27;
55 	double fConst28;
56 	double fConst30;
57 	double fConst32;
58 	double fConst33;
59 	double fConst36;
60 	double fConst37;
61 	double fConst38;
62 	double fRec39[3];
63 	double fVec3[2];
64 	double fRec38[2];
65 	double fRec37[2];
66 	double fConst39;
67 	double fConst41;
68 	double fConst42;
69 	double fRec36[3];
70 	double fVec4[2];
71 	double fConst43;
72 	double fConst44;
73 	double fConst45;
74 	double fRec35[2];
75 	double fConst46;
76 	double fConst47;
77 	double fRec34[3];
78 	double fConst48;
79 	double fConst52;
80 	double fConst53;
81 	double fConst54;
82 	double fConst56;
83 	double fConst57;
84 	double fRec33[3];
85 	double fConst58;
86 	double fRec43[2];
87 	double fRec42[3];
88 	double fConst59;
89 	double fConst60;
90 	double fConst61;
91 	double fRec41[3];
92 	double fRec40[3];
93 	double fConst62;
94 	double fConst63;
95 	double fConst64;
96 	double fRec47[2];
97 	double fRec46[3];
98 	double fVec5[2];
99 	double fConst65;
100 	double fConst66;
101 	double fRec45[2];
102 	double fConst67;
103 	double fRec44[3];
104 	double fConst68;
105 	double fConst69;
106 	double fRec49[2];
107 	double fRec48[3];
108 	double fVec6[2];
109 	double fRec32[2];
110 	double fVec7[2];
111 	double fRec27[2];
112 	double fRec26[3];
113 	double fConst71;
114 	double fVec8[2];
115 	double fConst72;
116 	double fRec50[2];
117 	double fRec25[2];
118 	double fRec24[2];
119 	double fRec51[2];
120 	double fRec17[3];
121 	FAUSTFLOAT fVslider2;
122 	FAUSTFLOAT	*fVslider2_;
123 	double fRec52[2];
124 	double fVec9[2];
125 	double fRec16[2];
126 	double fRec15[2];
127 	double fRec14[3];
128 	double fVec10[2];
129 	double fRec53[2];
130 	double fRec13[2];
131 	double fRec12[2];
132 	double fRec54[2];
133 	double fRec5[3];
134 	double fRec4[2];
135 	double fRec3[2];
136 	double fRec2[3];
137 	double fVec11[2];
138 	double fRec55[2];
139 	double fRec1[2];
140 	double fRec0[2];
141 	double fRec56[2];
142 	FAUSTFLOAT fVslider3;
143 	FAUSTFLOAT	*fVslider3_;
144 	double fRec57[2];
145 
146 	void connect(uint32_t port,void* data);
147 	void clear_state_f();
148 	void init(uint32_t sample_rate);
149 	void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0);
150 
151 	static void clear_state_f_static(PluginLV2*);
152 	static void init_static(uint32_t sample_rate, PluginLV2*);
153 	static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginLV2*);
154 	static void del_instance(PluginLV2 *p);
155 	static void connect_static(uint32_t port,void* data, PluginLV2 *p);
156 public:
157 	Dsp();
158 	~Dsp();
159 };
160 
161 
162 
Dsp()163 Dsp::Dsp()
164 	: PluginLV2() {
165 	version = PLUGINLV2_VERSION;
166 	id = "12AU7 feedback";
167 	name = N_("12AU7 feedback");
168 	mono_audio = compute_static;
169 	stereo_audio = 0;
170 	set_samplerate = init_static;
171 	activate_plugin = 0;
172 	connect_ports = connect_static;
173 	clear_state = clear_state_f_static;
174 	delete_instance = del_instance;
175 }
176 
~Dsp()177 Dsp::~Dsp() {
178 }
179 
clear_state_f()180 inline void Dsp::clear_state_f()
181 {
182 	for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) fRec9[l0] = 0.0;
183 	for (int l1 = 0; (l1 < 3); l1 = (l1 + 1)) fRec8[l1] = 0.0;
184 	for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) fVec0[l2] = 0.0;
185 	for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) fRec10[l3] = 0.0;
186 	for (int l4 = 0; (l4 < 2); l4 = (l4 + 1)) fRec7[l4] = 0.0;
187 	for (int l5 = 0; (l5 < 2); l5 = (l5 + 1)) fRec6[l5] = 0.0;
188 	for (int l6 = 0; (l6 < 2); l6 = (l6 + 1)) fRec11[l6] = 0.0;
189 	for (int l7 = 0; (l7 < 2); l7 = (l7 + 1)) fRec21[l7] = 0.0;
190 	for (int l8 = 0; (l8 < 3); l8 = (l8 + 1)) fRec20[l8] = 0.0;
191 	for (int l9 = 0; (l9 < 2); l9 = (l9 + 1)) fVec1[l9] = 0.0;
192 	for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) fRec22[l10] = 0.0;
193 	for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) fRec19[l11] = 0.0;
194 	for (int l12 = 0; (l12 < 2); l12 = (l12 + 1)) fRec18[l12] = 0.0;
195 	for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) fRec23[l13] = 0.0;
196 	for (int l14 = 0; (l14 < 2); l14 = (l14 + 1)) fRec28[l14] = 0.0;
197 	for (int l15 = 0; (l15 < 32768); l15 = (l15 + 1)) fVec2[l15] = 0.0;
198 	for (int l16 = 0; (l16 < 2); l16 = (l16 + 1)) fRec30[l16] = 0.0;
199 	for (int l17 = 0; (l17 < 2); l17 = (l17 + 1)) fRec29[l17] = 0.0;
200 	for (int l18 = 0; (l18 < 2); l18 = (l18 + 1)) fRec31[l18] = 0.0;
201 	for (int l19 = 0; (l19 < 3); l19 = (l19 + 1)) fRec39[l19] = 0.0;
202 	for (int l20 = 0; (l20 < 2); l20 = (l20 + 1)) fVec3[l20] = 0.0;
203 	for (int l21 = 0; (l21 < 2); l21 = (l21 + 1)) fRec38[l21] = 0.0;
204 	for (int l22 = 0; (l22 < 2); l22 = (l22 + 1)) fRec37[l22] = 0.0;
205 	for (int l23 = 0; (l23 < 3); l23 = (l23 + 1)) fRec36[l23] = 0.0;
206 	for (int l24 = 0; (l24 < 2); l24 = (l24 + 1)) fVec4[l24] = 0.0;
207 	for (int l25 = 0; (l25 < 2); l25 = (l25 + 1)) fRec35[l25] = 0.0;
208 	for (int l26 = 0; (l26 < 3); l26 = (l26 + 1)) fRec34[l26] = 0.0;
209 	for (int l27 = 0; (l27 < 3); l27 = (l27 + 1)) fRec33[l27] = 0.0;
210 	for (int l28 = 0; (l28 < 2); l28 = (l28 + 1)) fRec43[l28] = 0.0;
211 	for (int l29 = 0; (l29 < 3); l29 = (l29 + 1)) fRec42[l29] = 0.0;
212 	for (int l30 = 0; (l30 < 3); l30 = (l30 + 1)) fRec41[l30] = 0.0;
213 	for (int l31 = 0; (l31 < 3); l31 = (l31 + 1)) fRec40[l31] = 0.0;
214 	for (int l32 = 0; (l32 < 2); l32 = (l32 + 1)) fRec47[l32] = 0.0;
215 	for (int l33 = 0; (l33 < 3); l33 = (l33 + 1)) fRec46[l33] = 0.0;
216 	for (int l34 = 0; (l34 < 2); l34 = (l34 + 1)) fVec5[l34] = 0.0;
217 	for (int l35 = 0; (l35 < 2); l35 = (l35 + 1)) fRec45[l35] = 0.0;
218 	for (int l36 = 0; (l36 < 3); l36 = (l36 + 1)) fRec44[l36] = 0.0;
219 	for (int l37 = 0; (l37 < 2); l37 = (l37 + 1)) fRec49[l37] = 0.0;
220 	for (int l38 = 0; (l38 < 3); l38 = (l38 + 1)) fRec48[l38] = 0.0;
221 	for (int l39 = 0; (l39 < 2); l39 = (l39 + 1)) fVec6[l39] = 0.0;
222 	for (int l40 = 0; (l40 < 2); l40 = (l40 + 1)) fRec32[l40] = 0.0;
223 	for (int l41 = 0; (l41 < 2); l41 = (l41 + 1)) fVec7[l41] = 0.0;
224 	for (int l42 = 0; (l42 < 2); l42 = (l42 + 1)) fRec27[l42] = 0.0;
225 	for (int l43 = 0; (l43 < 3); l43 = (l43 + 1)) fRec26[l43] = 0.0;
226 	for (int l44 = 0; (l44 < 2); l44 = (l44 + 1)) fVec8[l44] = 0.0;
227 	for (int l45 = 0; (l45 < 2); l45 = (l45 + 1)) fRec50[l45] = 0.0;
228 	for (int l46 = 0; (l46 < 2); l46 = (l46 + 1)) fRec25[l46] = 0.0;
229 	for (int l47 = 0; (l47 < 2); l47 = (l47 + 1)) fRec24[l47] = 0.0;
230 	for (int l48 = 0; (l48 < 2); l48 = (l48 + 1)) fRec51[l48] = 0.0;
231 	for (int l49 = 0; (l49 < 3); l49 = (l49 + 1)) fRec17[l49] = 0.0;
232 	for (int l50 = 0; (l50 < 2); l50 = (l50 + 1)) fRec52[l50] = 0.0;
233 	for (int l51 = 0; (l51 < 2); l51 = (l51 + 1)) fVec9[l51] = 0.0;
234 	for (int l52 = 0; (l52 < 2); l52 = (l52 + 1)) fRec16[l52] = 0.0;
235 	for (int l53 = 0; (l53 < 2); l53 = (l53 + 1)) fRec15[l53] = 0.0;
236 	for (int l54 = 0; (l54 < 3); l54 = (l54 + 1)) fRec14[l54] = 0.0;
237 	for (int l55 = 0; (l55 < 2); l55 = (l55 + 1)) fVec10[l55] = 0.0;
238 	for (int l56 = 0; (l56 < 2); l56 = (l56 + 1)) fRec53[l56] = 0.0;
239 	for (int l57 = 0; (l57 < 2); l57 = (l57 + 1)) fRec13[l57] = 0.0;
240 	for (int l58 = 0; (l58 < 2); l58 = (l58 + 1)) fRec12[l58] = 0.0;
241 	for (int l59 = 0; (l59 < 2); l59 = (l59 + 1)) fRec54[l59] = 0.0;
242 	for (int l60 = 0; (l60 < 3); l60 = (l60 + 1)) fRec5[l60] = 0.0;
243 	for (int l61 = 0; (l61 < 2); l61 = (l61 + 1)) fRec4[l61] = 0.0;
244 	for (int l62 = 0; (l62 < 2); l62 = (l62 + 1)) fRec3[l62] = 0.0;
245 	for (int l63 = 0; (l63 < 3); l63 = (l63 + 1)) fRec2[l63] = 0.0;
246 	for (int l64 = 0; (l64 < 2); l64 = (l64 + 1)) fVec11[l64] = 0.0;
247 	for (int l65 = 0; (l65 < 2); l65 = (l65 + 1)) fRec55[l65] = 0.0;
248 	for (int l66 = 0; (l66 < 2); l66 = (l66 + 1)) fRec1[l66] = 0.0;
249 	for (int l67 = 0; (l67 < 2); l67 = (l67 + 1)) fRec0[l67] = 0.0;
250 	for (int l68 = 0; (l68 < 2); l68 = (l68 + 1)) fRec56[l68] = 0.0;
251 	for (int l69 = 0; (l69 < 2); l69 = (l69 + 1)) fRec57[l69] = 0.0;
252 }
253 
clear_state_f_static(PluginLV2 * p)254 void Dsp::clear_state_f_static(PluginLV2 *p)
255 {
256 	static_cast<Dsp*>(p)->clear_state_f();
257 }
258 
init(uint32_t sample_rate)259 inline void Dsp::init(uint32_t sample_rate)
260 {
261 	fSampleRate = sample_rate;
262 	double fConst0 = std::min<double>(192000.0, std::max<double>(1.0, double(fSampleRate)));
263 	double fConst1 = std::tan((97.389372261283583 / fConst0));
264 	double fConst2 = (1.0 / fConst1);
265 	double fConst3 = (fConst2 + 1.0);
266 	fConst4 = (1.0 / (fConst1 * fConst3));
267 	double fConst5 = (1.0 / std::tan((20517.741620594938 / fConst0)));
268 	fConst6 = (1.0 / (fConst5 + 1.0));
269 	fConst7 = (1.0 - fConst5);
270 	double fConst8 = (1.0 / std::tan((609.46897479641984 / fConst0)));
271 	fConst9 = (1.0 / (fConst8 + 1.0));
272 	fConst10 = (1.0 - fConst8);
273 	fConst11 = (0.0 - fConst4);
274 	fConst12 = ((1.0 - fConst2) / fConst3);
275 	double fConst13 = (3.1415926535897931 / fConst0);
276 	fConst14 = (1.0 / (fConst13 + 1.0));
277 	fConst15 = (1.0 - fConst13);
278 	double fConst16 = (1.0 / std::tan((414.69023027385271 / fConst0)));
279 	fConst17 = (1.0 / (fConst16 + 1.0));
280 	fConst18 = (1.0 - fConst16);
281 	fConst19 = (0.009000000000000008 / fConst0);
282 	iConst20 = int(std::min<double>(65536.0, std::max<double>(0.0, (0.1111111111111111 * fConst0))));
283 	double fConst21 = std::tan((3769.9111843077517 / fConst0));
284 	double fConst22 = (1.0 / fConst21);
285 	fConst23 = (1.0 / (((fConst22 + 1.0000000000000004) / fConst21) + 1.0));
286 	double fConst24 = mydsp_faustpower2_f(fConst21);
287 	fConst25 = (1.0 / fConst24);
288 	double fConst26 = std::tan((10053.096491487338 / fConst0));
289 	fConst27 = (1.0 / fConst26);
290 	fConst28 = (1.0 / (((fConst27 + 1.0000000000000004) / fConst26) + 1.0));
291 	double fConst29 = (fConst22 + 1.0);
292 	fConst30 = (1.0 / (fConst21 * fConst29));
293 	double fConst31 = (fConst27 + 1.0);
294 	fConst32 = (1.0 / fConst31);
295 	fConst33 = (1.0 - fConst27);
296 	double fConst34 = std::tan((47123.889803846898 / fConst0));
297 	double fConst35 = (1.0 / fConst34);
298 	fConst36 = (1.0 / (((fConst35 + 1.4142135623730949) / fConst34) + 1.0));
299 	fConst37 = (((fConst35 + -1.4142135623730949) / fConst34) + 1.0);
300 	fConst38 = (2.0 * (1.0 - (1.0 / mydsp_faustpower2_f(fConst34))));
301 	fConst39 = (((fConst27 + -1.0000000000000004) / fConst26) + 1.0);
302 	double fConst40 = mydsp_faustpower2_f(fConst26);
303 	fConst41 = (1.0 / fConst40);
304 	fConst42 = (2.0 * (1.0 - fConst41));
305 	fConst43 = (0.0 - fConst30);
306 	fConst44 = (1.0 - fConst22);
307 	fConst45 = (fConst44 / fConst29);
308 	fConst46 = (((fConst22 + -1.0000000000000004) / fConst21) + 1.0);
309 	fConst47 = (2.0 * (1.0 - fConst25));
310 	fConst48 = (0.0 - (2.0 / fConst24));
311 	double fConst49 = std::tan((942.47779607693792 / fConst0));
312 	double fConst50 = (1.0 / fConst49);
313 	double fConst51 = (fConst50 + 1.0);
314 	fConst52 = (1.0 / ((fConst51 / fConst49) + 1.0));
315 	fConst53 = (1.0 - fConst50);
316 	fConst54 = (1.0 - (fConst53 / fConst49));
317 	double fConst55 = mydsp_faustpower2_f(fConst49);
318 	fConst56 = (1.0 / fConst55);
319 	fConst57 = (2.0 * (1.0 - fConst56));
320 	fConst58 = (0.0 - (1.0 / (fConst26 * fConst31)));
321 	fConst59 = (0.0 - (2.0 / fConst40));
322 	fConst60 = (1.0 / ((fConst29 / fConst21) + 1.0));
323 	fConst61 = (1.0 - (fConst44 / fConst21));
324 	fConst62 = (1.0 / (((fConst50 + 1.0000000000000004) / fConst49) + 1.0));
325 	fConst63 = (1.0 / (fConst49 * fConst51));
326 	fConst64 = (1.0 / fConst29);
327 	fConst65 = (0.0 - fConst63);
328 	fConst66 = (fConst53 / fConst51);
329 	fConst67 = (((fConst50 + -1.0000000000000004) / fConst49) + 1.0);
330 	fConst68 = (0.0 - (2.0 / fConst55));
331 	fConst69 = (1.0 / fConst51);
332 	double fConst70 = (1.0 / std::tan((270.1769682087222 / fConst0)));
333 	fConst71 = (1.0 / (fConst70 + 1.0));
334 	fConst72 = (1.0 - fConst70);
335 	IOTA = 0;
336 	clear_state_f();
337 }
338 
init_static(uint32_t sample_rate,PluginLV2 * p)339 void Dsp::init_static(uint32_t sample_rate, PluginLV2 *p)
340 {
341 	static_cast<Dsp*>(p)->init(sample_rate);
342 }
343 
compute(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0)344 void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
345 {
346 #define fCheckbox0 (*fCheckbox0_)
347 #define fCheckbox1 (*fCheckbox1_)
348 #define fVslider0 (*fVslider0_)
349 #define fVslider1 (*fVslider1_)
350 #define fVslider2 (*fVslider2_)
351 #define fVslider3 (*fVslider3_)
352 	int iSlow0 = int(double(fCheckbox0));
353 	int iSlow1 = int(double(fCheckbox1));
354 	double fSlow2 = (1.0000000000000009e-05 * double(fVslider0));
355 	double fSlow3 = double(fVslider1);
356 	double fSlow4 = (1.25 * fSlow3);
357 	double fSlow5 = (2.0 * (fSlow3 + -0.5));
358 	double fSlow6 = (0.024937655860349125 * (1.0 - std::max<double>(0.0, fSlow5)));
359 	double fSlow7 = std::pow(10.0, (2.0 * fSlow3));
360 	double fSlow8 = (1.0 - std::max<double>(0.0, (-1.0 * fSlow5)));
361 	double fSlow9 = std::pow(10.0, (1.2 * fSlow3));
362 	double fSlow10 = std::pow(10.0, (0.80000000000000004 * fSlow3));
363 	double fSlow11 = (fConst62 * fSlow7);
364 	double fSlow12 = (fConst62 * std::pow(10.0, (0.90000000000000002 * fSlow3)));
365 	double fSlow13 = (0.0010000000000000009 * std::pow(10.0, (0.050000000000000003 * double(fVslider2))));
366 	double fSlow14 = (0.0010000000000000009 * std::pow(10.0, (0.050000000000000003 * double(fVslider3))));
367 	for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
368 		fRec9[0] = ((0.93028479253239138 * (fRec5[1] + fRec5[2])) - (0.86056958506478287 * fRec9[1]));
369 		fRec8[0] = (fRec9[0] - ((1.8405051250752198 * fRec8[1]) + (0.86129424393186271 * fRec8[2])));
370 		double fTemp0 = (0.92544984225177063 * (fRec8[0] + fRec8[2]));
371 		double fTemp1 = (1.8508996845035413 * fRec8[1]);
372 		double fTemp2 = ((fTemp1 + fTemp0) / (double(Ranode(int(TUBE_TABLE_12AU7_250k), double(fRec7[1]))) + 100000.0));
373 		fVec0[0] = fTemp2;
374 		fRec10[0] = (fConst9 * ((820.0 * (fTemp2 + fVec0[1])) - (fConst10 * fRec10[1])));
375 		fRec7[0] = (double(Ftube(int(TUBE_TABLE_12AU7_250k), double(((fTemp0 + (fRec10[0] + fTemp1)) + -0.44548700000000002)))) + -75.672317073170731);
376 		fRec6[0] = ((0.10000000000000001 * ((fConst4 * fRec7[0]) + (fConst11 * fRec7[1]))) - (fConst12 * fRec6[1]));
377 		fRec11[0] = (fConst14 * ((fConst15 * fRec11[1]) + (0.10000000000000001 * (fRec7[0] - fRec7[1]))));
378 		fRec21[0] = ((0.93028479253239138 * (fRec17[1] + fRec17[2])) - (0.86056958506478287 * fRec21[1]));
379 		fRec20[0] = (fRec21[0] - ((1.8405051250752198 * fRec20[1]) + (0.86129424393186271 * fRec20[2])));
380 		double fTemp3 = (0.92544984225177063 * (fRec20[0] + fRec20[2]));
381 		double fTemp4 = (1.8508996845035413 * fRec20[1]);
382 		double fTemp5 = ((fTemp4 + fTemp3) / (double(Ranode(int(TUBE_TABLE_12AU7_250k), double(fRec19[1]))) + 100000.0));
383 		fVec1[0] = fTemp5;
384 		fRec22[0] = (fConst17 * ((1500.0 * (fTemp5 + fVec1[1])) - (fConst18 * fRec22[1])));
385 		fRec19[0] = (double(Ftube(int(TUBE_TABLE_12AU7_250k), double(((fTemp3 + (fRec22[0] + fTemp4)) + -0.77616200000000002)))) + -78.255866666666662);
386 		fRec18[0] = ((0.10000000000000001 * ((fConst4 * fRec19[0]) + (fConst11 * fRec19[1]))) - (fConst12 * fRec18[1]));
387 		fRec23[0] = (fConst14 * ((fConst15 * fRec23[1]) + (0.10000000000000001 * (fRec19[0] - fRec19[1]))));
388 		double fTemp6 = double(input0[i0]);
389 		double fTemp7 = std::fabs(fTemp6);
390 		fRec28[0] = ((0.99990000000000001 * fRec28[1]) + (9.9999999999988987e-05 * fTemp7));
391 		double fTemp8 = std::max<double>(fRec28[0], fTemp7);
392 		fVec2[(IOTA & 32767)] = fTemp8;
393 		fRec30[0] = ((fTemp8 + fRec30[1]) - fVec2[((IOTA - iConst20) & 32767)]);
394 		fRec29[0] = ((0.999 * fRec29[1]) + (fConst19 * fRec30[0]));
395 		double fTemp9 = std::max<double>(-1.0, std::min<double>(-0.01, (fTemp8 + (-1.0 - (1.02 * fRec29[0])))));
396 		double fTemp10 = (fTemp6 - fTemp9);
397 		double fTemp11 = (40.100000000000001 * fTemp10);
398 		double fTemp12 = std::max<double>(-600.0, fTemp11);
399 		double fThen2 = (fTemp12 / (1.0 - std::exp((-1.0 * fTemp12))));
400 		double fElse2 = (0.0 - (fTemp12 * std::exp(fTemp12)));
401 		double fThen3 = ((fTemp10 * ((134.00083333333336 * fTemp10) + 20.050000000000001)) + 1.0);
402 		double fElse3 = ((fTemp12 < -50.0) ? fElse2 : fThen2);
403 		double fTemp13 = (0.0 - (40.100000000000001 * fTemp9));
404 		double fTemp14 = std::max<double>(-600.0, fTemp13);
405 		double fThen4 = (fTemp14 / (1.0 - std::exp((-1.0 * fTemp14))));
406 		double fElse4 = (0.0 - (fTemp14 * std::exp(fTemp14)));
407 		double fThen5 = ((fTemp13 * ((0.083333333333333329 * fTemp13) + 0.5)) + 1.0);
408 		double fElse5 = ((fTemp14 < -50.0) ? fElse4 : fThen4);
409 		double fTemp15 = (((std::fabs(fTemp11) > 0.0001) ? fElse3 : fThen3) - ((std::fabs(fTemp13) > 0.0001) ? fElse5 : fThen5));
410 		fRec31[0] = (fSlow2 + (0.999 * fRec31[1]));
411 		double fTemp16 = (1.0 - fRec31[0]);
412 		double fTemp17 = (0.024937655860349125 * (fRec31[0] * fTemp15));
413 		double fTemp18 = std::max<double>(-1.0, std::min<double>(1.0, (fSlow7 * std::max<double>(-0.69999999999999996, std::min<double>(0.69999999999999996, fTemp17)))));
414 		fRec39[0] = (fTemp17 - (fConst36 * ((fConst37 * fRec39[2]) + (fConst38 * fRec39[1]))));
415 		double fTemp19 = (fRec39[2] + (fRec39[0] + (2.0 * fRec39[1])));
416 		fVec3[0] = fTemp19;
417 		fRec38[0] = ((fConst36 * ((fConst4 * fTemp19) + (fConst11 * fVec3[1]))) - (fConst12 * fRec38[1]));
418 		fRec37[0] = (0.0 - (fConst32 * ((fConst33 * fRec37[1]) - (fRec38[0] + fRec38[1]))));
419 		fRec36[0] = (fRec37[0] - (fConst28 * ((fConst39 * fRec36[2]) + (fConst42 * fRec36[1]))));
420 		double fTemp20 = (fRec36[2] + (fRec36[0] + (2.0 * fRec36[1])));
421 		fVec4[0] = fTemp20;
422 		fRec35[0] = ((fConst28 * ((fConst30 * fTemp20) + (fConst43 * fVec4[1]))) - (fConst45 * fRec35[1]));
423 		fRec34[0] = (fRec35[0] - (fConst23 * ((fConst46 * fRec34[2]) + (fConst47 * fRec34[1]))));
424 		double fTemp21 = (fConst57 * fRec33[1]);
425 		fRec33[0] = ((fConst23 * (((fConst25 * fRec34[0]) + (fConst48 * fRec34[1])) + (fConst25 * fRec34[2]))) - (fConst52 * ((fConst54 * fRec33[2]) + fTemp21)));
426 		double fTemp22 = std::max<double>(-1.0, std::min<double>(1.0, (fSlow9 * (fRec33[2] + (fConst52 * (fTemp21 + (fConst54 * fRec33[0])))))));
427 		fRec43[0] = ((fConst58 * fRec38[1]) - (fConst32 * ((fConst33 * fRec43[1]) - (fConst27 * fRec38[0]))));
428 		fRec42[0] = (fRec43[0] - (fConst28 * ((fConst39 * fRec42[2]) + (fConst42 * fRec42[1]))));
429 		double fTemp23 = (fConst47 * fRec41[1]);
430 		fRec41[0] = ((fConst28 * (((fConst41 * fRec42[0]) + (fConst59 * fRec42[1])) + (fConst41 * fRec42[2]))) - (fConst60 * ((fConst61 * fRec41[2]) + fTemp23)));
431 		double fTemp24 = (fConst57 * fRec40[1]);
432 		fRec40[0] = ((fRec41[2] + (fConst60 * (fTemp23 + (fConst61 * fRec41[0])))) - (fConst52 * ((fConst54 * fRec40[2]) + fTemp24)));
433 		double fTemp25 = std::max<double>(-1.0, std::min<double>(1.0, (fSlow10 * (fRec40[2] + (fConst52 * (fTemp24 + (fConst54 * fRec40[0])))))));
434 		fRec47[0] = (0.0 - (fConst64 * ((fConst44 * fRec47[1]) - (fConst28 * (fTemp20 + fVec4[1])))));
435 		fRec46[0] = (fRec47[0] - (fConst23 * ((fConst46 * fRec46[2]) + (fConst47 * fRec46[1]))));
436 		double fTemp26 = (fRec46[2] + (fRec46[0] + (2.0 * fRec46[1])));
437 		fVec5[0] = fTemp26;
438 		fRec45[0] = ((fConst23 * ((fConst63 * fTemp26) + (fConst65 * fVec5[1]))) - (fConst66 * fRec45[1]));
439 		fRec44[0] = (fRec45[0] - (fConst62 * ((fConst67 * fRec44[2]) + (fConst57 * fRec44[1]))));
440 		double fTemp27 = std::max<double>(-1.0, std::min<double>(1.0, (fSlow11 * (((fConst56 * fRec44[0]) + (fConst68 * fRec44[1])) + (fConst56 * fRec44[2])))));
441 		fRec49[0] = (0.0 - (fConst69 * ((fConst53 * fRec49[1]) - (fConst23 * (fTemp26 + fVec5[1])))));
442 		fRec48[0] = (fRec49[0] - (fConst62 * ((fConst67 * fRec48[2]) + (fConst57 * fRec48[1]))));
443 		double fTemp28 = std::max<double>(-1.0, std::min<double>(1.0, (fSlow12 * (fRec48[2] + (fRec48[0] + (2.0 * fRec48[1]))))));
444 		double fTemp29 = (((1.333521432 * (fTemp22 * (1.0 - (0.33333333333333331 * mydsp_faustpower2_f(fTemp22))))) + (1.584893192 * ((fTemp25 * (1.0 - (0.33333333333333331 * mydsp_faustpower2_f(fTemp25)))) + (fTemp27 * (1.0 - (0.33333333333333331 * mydsp_faustpower2_f(fTemp27))))))) + (1.2589412 * (fTemp28 * (1.0 - (0.33333333333333331 * mydsp_faustpower2_f(fTemp28))))));
445 		fVec6[0] = fTemp29;
446 		fRec32[0] = (0.0 - (fConst6 * ((fConst7 * fRec32[1]) - (fTemp29 + fVec6[1]))));
447 		double fTemp30 = ((fTemp15 * ((fTemp16 * ((fSlow4 * ((0.099750623441396499 * (1.0 - std::fabs((0.024937655860349125 * (fTemp16 * fTemp15))))) + -0.024937655860349125)) + 0.024937655860349125)) + (fSlow6 * fRec31[0]))) + ((0.5 * (fTemp18 * (1.0 - (0.33333333333333331 * mydsp_faustpower2_f(fTemp18))))) + (fSlow8 * fRec32[0])));
448 		fVec7[0] = fTemp30;
449 		fRec27[0] = ((0.93028479253239138 * (fTemp30 + fVec7[1])) - (0.86056958506478287 * fRec27[1]));
450 		fRec26[0] = (fRec27[0] - ((1.8405051250752198 * fRec26[1]) + (0.86129424393186271 * fRec26[2])));
451 		double fTemp31 = (0.92544984225177063 * (fRec26[0] + fRec26[2]));
452 		double fTemp32 = (1.8508996845035413 * fRec26[1]);
453 		double fTemp33 = ((fTemp32 + fTemp31) / (double(Ranode(int(TUBE_TABLE_12AU7_68k), double(fRec25[1]))) + 100000.0));
454 		fVec8[0] = fTemp33;
455 		fRec50[0] = (fConst71 * ((2700.0 * (fTemp33 + fVec8[1])) - (fConst72 * fRec50[1])));
456 		fRec25[0] = (double(Ftube(int(TUBE_TABLE_12AU7_68k), double(((fTemp31 + (fRec50[0] + fTemp32)) + -1.2572399999999999)))) + -83.435555555555567);
457 		fRec24[0] = ((0.10000000000000001 * ((fConst4 * fRec25[0]) + (fConst11 * fRec25[1]))) - (fConst12 * fRec24[1]));
458 		fRec51[0] = (fConst14 * ((fConst15 * fRec51[1]) + (0.10000000000000001 * (fRec25[0] - fRec25[1]))));
459 		fRec17[0] = ((iSlow1 ? fRec23[0] : fRec18[0]) - (iSlow1 ? fRec51[0] : fRec24[0]));
460 		fRec52[0] = (fSlow13 + (0.999 * fRec52[1]));
461 		double fTemp34 = (fRec17[0] * fRec52[0]);
462 		fVec9[0] = fTemp34;
463 		fRec16[0] = (0.0 - (fConst6 * ((fConst7 * fRec16[1]) - (fTemp34 + fVec9[1]))));
464 		fRec15[0] = ((0.93028479253239138 * (fRec16[0] + fRec16[1])) - (0.86056958506478287 * fRec15[1]));
465 		fRec14[0] = (fRec15[0] - ((1.8405051250752198 * fRec14[1]) + (0.86129424393186271 * fRec14[2])));
466 		double fTemp35 = (0.92544984225177063 * (fRec14[0] + fRec14[2]));
467 		double fTemp36 = (1.8508996845035413 * fRec14[1]);
468 		double fTemp37 = ((fTemp36 + fTemp35) / (double(Ranode(int(TUBE_TABLE_12AU7_250k), double(fRec13[1]))) + 100000.0));
469 		fVec10[0] = fTemp37;
470 		fRec53[0] = (fConst17 * ((1500.0 * (fTemp37 + fVec10[1])) - (fConst18 * fRec53[1])));
471 		fRec13[0] = (double(Ftube(int(TUBE_TABLE_12AU7_250k), double(((fTemp35 + (fRec53[0] + fTemp36)) + -0.77616200000000002)))) + -78.255866666666662);
472 		fRec12[0] = ((0.10000000000000001 * ((fConst4 * fRec13[0]) + (fConst11 * fRec13[1]))) - (fConst12 * fRec12[1]));
473 		fRec54[0] = (fConst14 * ((fConst15 * fRec54[1]) + (0.10000000000000001 * (fRec13[0] - fRec13[1]))));
474 		fRec5[0] = ((iSlow1 ? fRec11[0] : fRec6[0]) + (iSlow1 ? fRec54[0] : fRec12[0]));
475 		fRec4[0] = (0.0 - (fConst6 * ((fConst7 * fRec4[1]) - (fRec5[0] + fRec5[1]))));
476 		fRec3[0] = ((0.93028479253239138 * (fRec4[0] + fRec4[1])) - (0.86056958506478287 * fRec3[1]));
477 		fRec2[0] = (fRec3[0] - ((1.8405051250752198 * fRec2[1]) + (0.86129424393186271 * fRec2[2])));
478 		double fTemp38 = (0.92544984225177063 * (fRec2[0] + fRec2[2]));
479 		double fTemp39 = (1.8508996845035413 * fRec2[1]);
480 		double fTemp40 = ((fTemp39 + fTemp38) / (double(Ranode(int(TUBE_TABLE_12AU7_250k), double(fRec1[1]))) + 100000.0));
481 		fVec11[0] = fTemp40;
482 		fRec55[0] = (fConst9 * ((820.0 * (fTemp40 + fVec11[1])) - (fConst10 * fRec55[1])));
483 		fRec1[0] = (double(Ftube(int(TUBE_TABLE_12AU7_250k), double(((fTemp38 + (fRec55[0] + fTemp39)) + -0.44548700000000002)))) + -75.672317073170731);
484 		fRec0[0] = ((0.10000000000000001 * ((fConst4 * fRec1[0]) + (fConst11 * fRec1[1]))) - (fConst12 * fRec0[1]));
485 		fRec56[0] = (fConst14 * ((fConst15 * fRec56[1]) + (0.10000000000000001 * (fRec1[0] - fRec1[1]))));
486 		fRec57[0] = (fSlow14 + (0.999 * fRec57[1]));
487 		output0[i0] = FAUSTFLOAT(((iSlow0 ? fRec56[0] : fRec0[0]) * fRec57[0]));
488 		fRec9[1] = fRec9[0];
489 		fRec8[2] = fRec8[1];
490 		fRec8[1] = fRec8[0];
491 		fVec0[1] = fVec0[0];
492 		fRec10[1] = fRec10[0];
493 		fRec7[1] = fRec7[0];
494 		fRec6[1] = fRec6[0];
495 		fRec11[1] = fRec11[0];
496 		fRec21[1] = fRec21[0];
497 		fRec20[2] = fRec20[1];
498 		fRec20[1] = fRec20[0];
499 		fVec1[1] = fVec1[0];
500 		fRec22[1] = fRec22[0];
501 		fRec19[1] = fRec19[0];
502 		fRec18[1] = fRec18[0];
503 		fRec23[1] = fRec23[0];
504 		fRec28[1] = fRec28[0];
505 		IOTA = (IOTA + 1);
506 		fRec30[1] = fRec30[0];
507 		fRec29[1] = fRec29[0];
508 		fRec31[1] = fRec31[0];
509 		fRec39[2] = fRec39[1];
510 		fRec39[1] = fRec39[0];
511 		fVec3[1] = fVec3[0];
512 		fRec38[1] = fRec38[0];
513 		fRec37[1] = fRec37[0];
514 		fRec36[2] = fRec36[1];
515 		fRec36[1] = fRec36[0];
516 		fVec4[1] = fVec4[0];
517 		fRec35[1] = fRec35[0];
518 		fRec34[2] = fRec34[1];
519 		fRec34[1] = fRec34[0];
520 		fRec33[2] = fRec33[1];
521 		fRec33[1] = fRec33[0];
522 		fRec43[1] = fRec43[0];
523 		fRec42[2] = fRec42[1];
524 		fRec42[1] = fRec42[0];
525 		fRec41[2] = fRec41[1];
526 		fRec41[1] = fRec41[0];
527 		fRec40[2] = fRec40[1];
528 		fRec40[1] = fRec40[0];
529 		fRec47[1] = fRec47[0];
530 		fRec46[2] = fRec46[1];
531 		fRec46[1] = fRec46[0];
532 		fVec5[1] = fVec5[0];
533 		fRec45[1] = fRec45[0];
534 		fRec44[2] = fRec44[1];
535 		fRec44[1] = fRec44[0];
536 		fRec49[1] = fRec49[0];
537 		fRec48[2] = fRec48[1];
538 		fRec48[1] = fRec48[0];
539 		fVec6[1] = fVec6[0];
540 		fRec32[1] = fRec32[0];
541 		fVec7[1] = fVec7[0];
542 		fRec27[1] = fRec27[0];
543 		fRec26[2] = fRec26[1];
544 		fRec26[1] = fRec26[0];
545 		fVec8[1] = fVec8[0];
546 		fRec50[1] = fRec50[0];
547 		fRec25[1] = fRec25[0];
548 		fRec24[1] = fRec24[0];
549 		fRec51[1] = fRec51[0];
550 		fRec17[2] = fRec17[1];
551 		fRec17[1] = fRec17[0];
552 		fRec52[1] = fRec52[0];
553 		fVec9[1] = fVec9[0];
554 		fRec16[1] = fRec16[0];
555 		fRec15[1] = fRec15[0];
556 		fRec14[2] = fRec14[1];
557 		fRec14[1] = fRec14[0];
558 		fVec10[1] = fVec10[0];
559 		fRec53[1] = fRec53[0];
560 		fRec13[1] = fRec13[0];
561 		fRec12[1] = fRec12[0];
562 		fRec54[1] = fRec54[0];
563 		fRec5[2] = fRec5[1];
564 		fRec5[1] = fRec5[0];
565 		fRec4[1] = fRec4[0];
566 		fRec3[1] = fRec3[0];
567 		fRec2[2] = fRec2[1];
568 		fRec2[1] = fRec2[0];
569 		fVec11[1] = fVec11[0];
570 		fRec55[1] = fRec55[0];
571 		fRec1[1] = fRec1[0];
572 		fRec0[1] = fRec0[0];
573 		fRec56[1] = fRec56[0];
574 		fRec57[1] = fRec57[0];
575 	}
576 #undef fCheckbox0
577 #undef fCheckbox1
578 #undef fVslider0
579 #undef fVslider1
580 #undef fVslider2
581 #undef fVslider3
582 }
583 
compute_static(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0,PluginLV2 * p)584 void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginLV2 *p)
585 {
586 	static_cast<Dsp*>(p)->compute(count, input0, output0);
587 }
588 
589 
connect(uint32_t port,void * data)590 void Dsp::connect(uint32_t port,void* data)
591 {
592 	switch ((PortIndex)port)
593 	{
594 	case HIGHGAIN:
595 		fCheckbox1_ = (float*)data; // , 0.0, 0.0, 1.0, 1.0
596 		fCheckbox0_ = (float*)data; // , 0.0, 0.0, 1.0, 1.0
597 		break;
598 	case DRIVE:
599 		fVslider1_ = (float*)data; // , 0.34999999999999998, 0.0, 1.0, 0.01
600 		break;
601 	case WET_DRY:
602 		fVslider0_ = (float*)data; // , 100.0, 0.0, 100.0, 1.0
603 		break;
604 	case PREGAIN:
605 		fVslider2_ = (float*)data; // , -6.0, -20.0, 20.0, 0.10000000000000001
606 		break;
607 	case GAIN1:
608 		fVslider3_ = (float*)data; // , -6.0, -20.0, 20.0, 0.10000000000000001
609 		break;
610 	default:
611 		break;
612 	}
613 }
614 
connect_static(uint32_t port,void * data,PluginLV2 * p)615 void Dsp::connect_static(uint32_t port,void* data, PluginLV2 *p)
616 {
617 	static_cast<Dsp*>(p)->connect(port, data);
618 }
619 
620 
plugin()621 PluginLV2 *plugin() {
622 	return new Dsp();
623 }
624 
del_instance(PluginLV2 * p)625 void Dsp::del_instance(PluginLV2 *p)
626 {
627 	delete static_cast<Dsp*>(p);
628 }
629 
630 /*
631 typedef enum
632 {
633    DRIVE,
634    WET_DRY,
635    HIGHGAIN,
636    PREGAIN,
637    GAIN1,
638 } PortIndex;
639 */
640 
641 } // end namespace gxamp11
642