1 // generated from file '../src/faust/digital_delay.dsp' by dsp2cc:
2 // Code generated with Faust (https://faust.grame.fr)
3 
4 #include "beat.h"
5 
6 namespace digital_delay {
7 
8 class Dsp: public PluginDef {
9 private:
10 	int fSampleRate;
11 	FAUSTFLOAT fVslider0;
12 	FAUSTFLOAT fCheckbox0;
13 	FAUSTFLOAT fVslider1;
14 	FAUSTFLOAT fHslider0;
15 	float fConst1;
16 	FAUSTFLOAT fHslider1;
17 	FAUSTFLOAT fHslider2;
18 	FAUSTFLOAT fVslider2;
19 	float fRec2[3];
20 	float fRec1[3];
21 	float fVec0[2];
22 	float fConst5;
23 	float fConst6;
24 	float fConst7;
25 	float fConst13;
26 	float fConst14;
27 	float fConst20;
28 	float fConst21;
29 	float fConst26;
30 	float fConst27;
31 	float fConst32;
32 	float fConst33;
33 	float fConst38;
34 	float fConst39;
35 	float fConst41;
36 	float fConst42;
37 	float fConst44;
38 	float fConst46;
39 	float fConst47;
40 	float fConst48;
41 	float fRec11[2];
42 	float fConst49;
43 	float fConst50;
44 	float fRec10[3];
45 	float fConst51;
46 	float fConst52;
47 	float fRec9[3];
48 	float fConst54;
49 	float fConst55;
50 	float fConst56;
51 	float fRec8[3];
52 	float fConst58;
53 	float fConst59;
54 	float fConst60;
55 	float fRec7[3];
56 	float fConst62;
57 	float fConst63;
58 	float fConst64;
59 	float fRec6[3];
60 	float fConst66;
61 	float fConst67;
62 	float fConst68;
63 	float fRec5[3];
64 	float fConst70;
65 	float fConst71;
66 	float fVec1[2];
67 	float fRec4[2];
68 	float fConst72;
69 	float fConst73;
70 	float fConst74;
71 	float fRec3[3];
72 	float fRec18[2];
73 	float fRec16[2];
74 	float fRec14[2];
75 	float fRec12[2];
76 	float fRec26[2];
77 	float fRec24[2];
78 	float fRec22[2];
79 	float fRec20[2];
80 	int IOTA;
81 	float *fVec2;
82 	FAUSTFLOAT fHslider3;
83 	float fConst75;
84 	FAUSTFLOAT fHslider4;
85 	float fConst76;
86 	float fConst77;
87 	float fRec28[2];
88 	float fRec29[2];
89 	float fRec30[2];
90 	float fRec31[2];
91 	float fRec0[2];
92 
93 	bool mem_allocated;
94 	void mem_alloc();
95 	void mem_free();
96 	void clear_state_f();
97 	int activate(bool start);
98 	int load_ui_f(const UiBuilder& b, int form);
99 	static const char *glade_def;
100 	void init(unsigned int sample_rate);
101 	void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0);
102 	int register_par(const ParamReg& reg);
103 
104 	static void clear_state_f_static(PluginDef*);
105 	static int activate_static(bool start, PluginDef*);
106 	static int load_ui_f_static(const UiBuilder& b, int form);
107 	static void init_static(unsigned int sample_rate, PluginDef*);
108 	static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef*);
109 	static int register_params_static(const ParamReg& reg);
110 	static void del_instance(PluginDef *p);
111 public:
112 	Dsp();
113 	~Dsp();
114 };
115 
116 
117 
Dsp()118 Dsp::Dsp()
119 	: PluginDef(),
120 	  fVec2(0),
121 	  mem_allocated(false) {
122 	version = PLUGINDEF_VERSION;
123 	flags = 0;
124 	id = "dide";
125 	name = N_("Digital Delay");
126 	groups = 0;
127 	description = N_("Digital Delay"); // description (tooltip)
128 	category = N_("Echo / Delay");       // category
129 	shortname = N_("Digi Delay");     // shortname
130 	mono_audio = compute_static;
131 	stereo_audio = 0;
132 	set_samplerate = init_static;
133 	activate_plugin = activate_static;
134 	register_params = register_params_static;
135 	load_ui = load_ui_f_static;
136 	clear_state = clear_state_f_static;
137 	delete_instance = del_instance;
138 }
139 
~Dsp()140 Dsp::~Dsp() {
141 }
142 
clear_state_f()143 inline void Dsp::clear_state_f()
144 {
145 	for (int l0 = 0; (l0 < 3); l0 = (l0 + 1)) fRec2[l0] = 0.0f;
146 	for (int l1 = 0; (l1 < 3); l1 = (l1 + 1)) fRec1[l1] = 0.0f;
147 	for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) fVec0[l2] = 0.0f;
148 	for (int l3 = 0; (l3 < 2); l3 = (l3 + 1)) fRec11[l3] = 0.0f;
149 	for (int l4 = 0; (l4 < 3); l4 = (l4 + 1)) fRec10[l4] = 0.0f;
150 	for (int l5 = 0; (l5 < 3); l5 = (l5 + 1)) fRec9[l5] = 0.0f;
151 	for (int l6 = 0; (l6 < 3); l6 = (l6 + 1)) fRec8[l6] = 0.0f;
152 	for (int l7 = 0; (l7 < 3); l7 = (l7 + 1)) fRec7[l7] = 0.0f;
153 	for (int l8 = 0; (l8 < 3); l8 = (l8 + 1)) fRec6[l8] = 0.0f;
154 	for (int l9 = 0; (l9 < 3); l9 = (l9 + 1)) fRec5[l9] = 0.0f;
155 	for (int l10 = 0; (l10 < 2); l10 = (l10 + 1)) fVec1[l10] = 0.0f;
156 	for (int l11 = 0; (l11 < 2); l11 = (l11 + 1)) fRec4[l11] = 0.0f;
157 	for (int l12 = 0; (l12 < 3); l12 = (l12 + 1)) fRec3[l12] = 0.0f;
158 	for (int l13 = 0; (l13 < 2); l13 = (l13 + 1)) fRec18[l13] = 0.0f;
159 	for (int l14 = 0; (l14 < 2); l14 = (l14 + 1)) fRec16[l14] = 0.0f;
160 	for (int l15 = 0; (l15 < 2); l15 = (l15 + 1)) fRec14[l15] = 0.0f;
161 	for (int l16 = 0; (l16 < 2); l16 = (l16 + 1)) fRec12[l16] = 0.0f;
162 	for (int l17 = 0; (l17 < 2); l17 = (l17 + 1)) fRec26[l17] = 0.0f;
163 	for (int l18 = 0; (l18 < 2); l18 = (l18 + 1)) fRec24[l18] = 0.0f;
164 	for (int l19 = 0; (l19 < 2); l19 = (l19 + 1)) fRec22[l19] = 0.0f;
165 	for (int l20 = 0; (l20 < 2); l20 = (l20 + 1)) fRec20[l20] = 0.0f;
166 	for (int l21 = 0; (l21 < 1048576); l21 = (l21 + 1)) fVec2[l21] = 0.0f;
167 	for (int l22 = 0; (l22 < 2); l22 = (l22 + 1)) fRec28[l22] = 0.0f;
168 	for (int l23 = 0; (l23 < 2); l23 = (l23 + 1)) fRec29[l23] = 0.0f;
169 	for (int l24 = 0; (l24 < 2); l24 = (l24 + 1)) fRec30[l24] = 0.0f;
170 	for (int l25 = 0; (l25 < 2); l25 = (l25 + 1)) fRec31[l25] = 0.0f;
171 	for (int l26 = 0; (l26 < 2); l26 = (l26 + 1)) fRec0[l26] = 0.0f;
172 }
173 
clear_state_f_static(PluginDef * p)174 void Dsp::clear_state_f_static(PluginDef *p)
175 {
176 	static_cast<Dsp*>(p)->clear_state_f();
177 }
178 
init(unsigned int sample_rate)179 inline void Dsp::init(unsigned int sample_rate)
180 {
181 	fSampleRate = sample_rate;
182 	float fConst0 = std::min<float>(192000.0f, std::max<float>(1.0f, float(fSampleRate)));
183 	fConst1 = (3.14159274f / fConst0);
184 	float fConst2 = std::tan((37699.1133f / fConst0));
185 	float fConst3 = (1.0f / fConst2);
186 	float fConst4 = (((fConst3 + 1.0f) / fConst2) + 1.0f);
187 	fConst5 = (0.800000012f / fConst4);
188 	fConst6 = (1.0f / (fConst3 + 1.0f));
189 	fConst7 = (1.0f - fConst3);
190 	float fConst8 = (25132.7422f / fConst0);
191 	float fConst9 = std::tan(fConst8);
192 	float fConst10 = (1.0f / fConst9);
193 	float fConst11 = (fConst0 * std::sin((50265.4844f / fConst0)));
194 	float fConst12 = (3141.59277f / fConst11);
195 	fConst13 = (1.0f / (((fConst10 + fConst12) / fConst9) + 1.0f));
196 	fConst14 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fConst9))));
197 	float fConst15 = (12566.3711f / fConst0);
198 	float fConst16 = std::tan(fConst15);
199 	float fConst17 = (1.0f / fConst16);
200 	float fConst18 = (fConst0 * std::sin(fConst8));
201 	float fConst19 = (6268.30127f / fConst18);
202 	fConst20 = (1.0f / (((fConst17 + fConst19) / fConst16) + 1.0f));
203 	fConst21 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fConst16))));
204 	float fConst22 = std::tan((6283.18555f / fConst0));
205 	float fConst23 = (1.0f / fConst22);
206 	float fConst24 = (fConst0 * std::sin(fConst15));
207 	float fConst25 = (1570.79639f / fConst24);
208 	fConst26 = (1.0f / (((fConst23 + fConst25) / fConst22) + 1.0f));
209 	fConst27 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fConst22))));
210 	float fConst28 = std::tan((1178.09729f / fConst0));
211 	float fConst29 = (1.0f / fConst28);
212 	float fConst30 = (fConst0 * std::sin((2356.19458f / fConst0)));
213 	float fConst31 = (392.699097f / fConst30);
214 	fConst32 = (1.0f / (((fConst29 + fConst31) / fConst28) + 1.0f));
215 	fConst33 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fConst28))));
216 	float fConst34 = std::tan((628.318542f / fConst0));
217 	float fConst35 = (1.0f / fConst34);
218 	float fConst36 = (fConst0 * std::sin((1256.63708f / fConst0)));
219 	float fConst37 = (221.880875f / fConst36);
220 	fConst38 = (1.0f / (((fConst35 + fConst37) / fConst34) + 1.0f));
221 	fConst39 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fConst34))));
222 	float fConst40 = std::tan((251.327408f / fConst0));
223 	fConst41 = (1.0f / fConst40);
224 	fConst42 = (1.0f / (((fConst41 + 1.0f) / fConst40) + 1.0f));
225 	float fConst43 = mydsp_faustpower2_f(fConst40);
226 	fConst44 = (1.0f / fConst43);
227 	float fConst45 = (fConst41 + 1.0f);
228 	fConst46 = (0.0f - (1.0f / (fConst40 * fConst45)));
229 	fConst47 = (1.0f / fConst45);
230 	fConst48 = (1.0f - fConst41);
231 	fConst49 = (((fConst41 + -1.0f) / fConst40) + 1.0f);
232 	fConst50 = (2.0f * (1.0f - fConst44));
233 	fConst51 = (0.0f - (2.0f / fConst43));
234 	fConst52 = (((fConst35 - fConst37) / fConst34) + 1.0f);
235 	float fConst53 = (157.079636f / fConst36);
236 	fConst54 = (((fConst35 + fConst53) / fConst34) + 1.0f);
237 	fConst55 = (((fConst35 - fConst53) / fConst34) + 1.0f);
238 	fConst56 = (((fConst29 - fConst31) / fConst28) + 1.0f);
239 	float fConst57 = (466.723724f / fConst30);
240 	fConst58 = (((fConst29 + fConst57) / fConst28) + 1.0f);
241 	fConst59 = (((fConst29 - fConst57) / fConst28) + 1.0f);
242 	fConst60 = (((fConst23 - fConst25) / fConst22) + 1.0f);
243 	float fConst61 = (2218.80884f / fConst24);
244 	fConst62 = (((fConst23 + fConst61) / fConst22) + 1.0f);
245 	fConst63 = (((fConst23 - fConst61) / fConst22) + 1.0f);
246 	fConst64 = (((fConst17 - fConst19) / fConst16) + 1.0f);
247 	float fConst65 = (3141.59277f / fConst18);
248 	fConst66 = (((fConst17 + fConst65) / fConst16) + 1.0f);
249 	fConst67 = (((fConst17 - fConst65) / fConst16) + 1.0f);
250 	fConst68 = (((fConst10 - fConst12) / fConst9) + 1.0f);
251 	float fConst69 = (3955.03076f / fConst11);
252 	fConst70 = (((fConst10 + fConst69) / fConst9) + 1.0f);
253 	fConst71 = (((fConst10 - fConst69) / fConst9) + 1.0f);
254 	fConst72 = (1.0f / fConst4);
255 	fConst73 = (((fConst3 + -1.0f) / fConst2) + 1.0f);
256 	fConst74 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fConst2))));
257 	fConst75 = (60.0f * fConst0);
258 	fConst76 = (10.0f / fConst0);
259 	fConst77 = (0.0f - fConst76);
260 	IOTA = 0;
261 }
262 
init_static(unsigned int sample_rate,PluginDef * p)263 void Dsp::init_static(unsigned int sample_rate, PluginDef *p)
264 {
265 	static_cast<Dsp*>(p)->init(sample_rate);
266 }
267 
mem_alloc()268 void Dsp::mem_alloc()
269 {
270 	if (!fVec2) fVec2 = new float[1048576];
271 	mem_allocated = true;
272 }
273 
mem_free()274 void Dsp::mem_free()
275 {
276 	mem_allocated = false;
277 	if (fVec2) { delete fVec2; fVec2 = 0; }
278 }
279 
activate(bool start)280 int Dsp::activate(bool start)
281 {
282 	if (start) {
283 		if (!mem_allocated) {
284 			mem_alloc();
285 			clear_state_f();
286 		}
287 	} else if (mem_allocated) {
288 		mem_free();
289 	}
290 	return 0;
291 }
292 
activate_static(bool start,PluginDef * p)293 int Dsp::activate_static(bool start, PluginDef *p)
294 {
295 	return static_cast<Dsp*>(p)->activate(start);
296 }
297 
compute(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0)298 void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
299 {
300 	float fSlow0 = (0.00999999978f * float(fVslider0));
301 	float fSlow1 = float(fCheckbox0);
302 	int iSlow2 = int(fSlow1);
303 	float fSlow3 = (0.00999999978f * float(fVslider1));
304 	float fSlow4 = float(fHslider0);
305 	int iSlow5 = int(std::min<float>(2.0f, std::max<float>(0.0f, (fSlow4 + -2.0f))));
306 	int iSlow6 = (iSlow5 == 0);
307 	int iSlow7 = (iSlow5 == 1);
308 	int iSlow8 = int(std::min<float>(2.0f, std::max<float>(0.0f, (fSlow4 + -1.0f))));
309 	int iSlow9 = (iSlow8 == 0);
310 	int iSlow10 = (iSlow8 == 1);
311 	int iSlow11 = int(std::min<float>(2.0f, std::max<float>(0.0f, fSlow4)));
312 	int iSlow12 = (iSlow11 == 0);
313 	int iSlow13 = (iSlow11 == 1);
314 	float fSlow14 = std::tan((fConst1 * float(fHslider1)));
315 	float fSlow15 = (1.0f / fSlow14);
316 	float fSlow16 = (((fSlow15 + 1.41421354f) / fSlow14) + 1.0f);
317 	float fSlow17 = (1.0f / fSlow16);
318 	float fSlow18 = std::tan((fConst1 * float(fHslider2)));
319 	float fSlow19 = (1.0f / fSlow18);
320 	float fSlow20 = (1.0f / (((fSlow19 + 1.41421354f) / fSlow18) + 1.0f));
321 	float fSlow21 = mydsp_faustpower2_f(fSlow18);
322 	float fSlow22 = (1.0f / fSlow21);
323 	float fSlow23 = (0.00999999978f * float(fVslider2));
324 	float fSlow24 = (((fSlow19 + -1.41421354f) / fSlow18) + 1.0f);
325 	float fSlow25 = (2.0f * (1.0f - fSlow22));
326 	float fSlow26 = (0.0f - (2.0f / fSlow21));
327 	float fSlow27 = (((fSlow15 + -1.41421354f) / fSlow14) + 1.0f);
328 	float fSlow28 = (2.0f * (1.0f - (1.0f / mydsp_faustpower2_f(fSlow14))));
329 	float fSlow29 = (fConst41 / fSlow16);
330 	float fSlow30 = (1.0f - fSlow1);
331 	float fSlow31 = std::min<float>(524288.0f, float(B2N(int(float(fHslider3)), float((fConst75 / float(fHslider4))))));
332 	for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
333 		float fTemp0 = float(input0[i0]);
334 		fRec2[0] = ((fSlow23 * fRec0[1]) - (fSlow20 * ((fSlow24 * fRec2[2]) + (fSlow25 * fRec2[1]))));
335 		fRec1[0] = ((fSlow20 * (((fSlow22 * fRec2[0]) + (fSlow26 * fRec2[1])) + (fSlow22 * fRec2[2]))) - (fSlow17 * ((fSlow27 * fRec1[2]) + (fSlow28 * fRec1[1]))));
336 		float fTemp1 = (fRec1[2] + (fRec1[0] + (2.0f * fRec1[1])));
337 		float fTemp2 = (fSlow17 * fTemp1);
338 		fVec0[0] = fTemp2;
339 		fRec11[0] = ((fConst46 * fVec0[1]) - (fConst47 * ((fConst48 * fRec11[1]) - (fSlow29 * fTemp1))));
340 		fRec10[0] = (fRec11[0] - (fConst42 * ((fConst49 * fRec10[2]) + (fConst50 * fRec10[1]))));
341 		float fTemp3 = (fConst39 * fRec9[1]);
342 		fRec9[0] = ((fConst42 * (((fConst44 * fRec10[0]) + (fConst51 * fRec10[1])) + (fConst44 * fRec10[2]))) - (fConst38 * ((fConst52 * fRec9[2]) + fTemp3)));
343 		float fTemp4 = (fConst33 * fRec8[1]);
344 		fRec8[0] = ((fConst38 * ((fTemp3 + (fConst54 * fRec9[0])) + (fConst55 * fRec9[2]))) - (fConst32 * ((fConst56 * fRec8[2]) + fTemp4)));
345 		float fTemp5 = (fConst27 * fRec7[1]);
346 		fRec7[0] = ((fConst32 * ((fTemp4 + (fConst58 * fRec8[0])) + (fConst59 * fRec8[2]))) - (fConst26 * ((fConst60 * fRec7[2]) + fTemp5)));
347 		float fTemp6 = (fConst21 * fRec6[1]);
348 		fRec6[0] = ((fConst26 * ((fTemp5 + (fConst62 * fRec7[0])) + (fConst63 * fRec7[2]))) - (fConst20 * ((fConst64 * fRec6[2]) + fTemp6)));
349 		float fTemp7 = (fConst14 * fRec5[1]);
350 		fRec5[0] = ((fConst20 * ((fTemp6 + (fConst66 * fRec6[0])) + (fConst67 * fRec6[2]))) - (fConst13 * ((fConst68 * fRec5[2]) + fTemp7)));
351 		float fTemp8 = ((fTemp7 + (fConst70 * fRec5[0])) + (fConst71 * fRec5[2]));
352 		fVec1[0] = fTemp8;
353 		fRec4[0] = (0.0f - (fConst6 * ((fConst7 * fRec4[1]) - (fConst13 * (fTemp8 + fVec1[1])))));
354 		fRec3[0] = (fRec4[0] - (fConst72 * ((fConst73 * fRec3[2]) + (fConst74 * fRec3[1]))));
355 		float fElse0 = (fConst5 * (fRec3[2] + (fRec3[0] + (2.0f * fRec3[1]))));
356 		float fThen1 = (iSlow13 ? fElse0 : fTemp2);
357 		float fTemp9 = (iSlow12 ? fTemp2 : fThen1);
358 		float fTemp10 = (0.200000003f * fRec14[1]);
359 		float fTemp11 = (0.100000001f * fRec12[1]);
360 		float fTemp12 = ((0.400000006f * fRec16[1]) + fTemp11);
361 		float fTemp13 = ((fTemp10 + (fTemp9 + (0.600000024f * fRec18[1]))) - fTemp12);
362 		fRec18[0] = fTemp13;
363 		float fRec19 = (0.0f - (0.600000024f * fTemp13));
364 		fRec16[0] = (fRec19 + fRec18[1]);
365 		float fTemp14 = (fTemp9 + fTemp10);
366 		float fRec17 = (0.400000006f * (fTemp14 - fTemp12));
367 		fRec14[0] = (fRec17 + fRec16[1]);
368 		float fRec15 = (0.0f - (0.200000003f * (fTemp14 - fTemp11)));
369 		fRec12[0] = (fRec15 + fRec14[1]);
370 		float fRec13 = (0.100000001f * (fTemp9 - fTemp11));
371 		float fElse2 = (fRec13 + fRec12[1]);
372 		float fThen3 = (iSlow10 ? fElse2 : fTemp9);
373 		float fTemp15 = (iSlow9 ? fTemp9 : fThen3);
374 		float fTemp16 = (0.300000012f * fRec24[1]);
375 		float fTemp17 = (0.5f * fRec20[1]);
376 		float fTemp18 = ((0.400000006f * fRec22[1]) + fTemp17);
377 		float fTemp19 = ((fTemp16 + (fTemp15 + (0.200000003f * fRec26[1]))) - fTemp18);
378 		fRec26[0] = fTemp19;
379 		float fRec27 = (0.0f - (0.200000003f * fTemp19));
380 		fRec24[0] = (fRec27 + fRec26[1]);
381 		float fRec25 = (0.0f - (0.300000012f * ((fTemp15 + fTemp16) - fTemp18)));
382 		fRec22[0] = (fRec25 + fRec24[1]);
383 		float fRec23 = (0.400000006f * (fTemp15 - fTemp18));
384 		fRec20[0] = (fRec23 + fRec22[1]);
385 		float fRec21 = (0.5f * (fTemp15 - fTemp17));
386 		float fElse4 = (fRec21 + fRec20[1]);
387 		float fThen5 = (iSlow7 ? fElse4 : fTemp15);
388 		float fThen6 = (iSlow6 ? fTemp15 : fThen5);
389 		float fTemp20 = ((iSlow2 ? fRec0[1] : fThen6) + (fSlow30 * fTemp0));
390 		fVec2[(IOTA & 1048575)] = fTemp20;
391 		float fThen8 = (((fRec29[1] == 1.0f) & (fSlow31 != fRec31[1])) ? fConst77 : 0.0f);
392 		float fThen10 = (((fRec29[1] == 0.0f) & (fSlow31 != fRec30[1])) ? fConst76 : fThen8);
393 		float fElse10 = (((fRec29[1] > 0.0f) & (fRec29[1] < 1.0f)) ? fRec28[1] : 0.0f);
394 		float fTemp21 = ((fRec28[1] != 0.0f) ? fElse10 : fThen10);
395 		fRec28[0] = fTemp21;
396 		fRec29[0] = std::max<float>(0.0f, std::min<float>(1.0f, (fRec29[1] + fTemp21)));
397 		fRec30[0] = (((fRec29[1] >= 1.0f) & (fRec31[1] != fSlow31)) ? fSlow31 : fRec30[1]);
398 		fRec31[0] = (((fRec29[1] <= 0.0f) & (fRec30[1] != fSlow31)) ? fSlow31 : fRec31[1]);
399 		float fTemp22 = fVec2[((IOTA - int(std::min<float>(524288.0f, std::max<float>(0.0f, fRec30[0])))) & 1048575)];
400 		float fTemp23 = (fTemp22 + (fRec29[0] * (fVec2[((IOTA - int(std::min<float>(524288.0f, std::max<float>(0.0f, fRec31[0])))) & 1048575)] - fTemp22)));
401 		float fThen13 = (fSlow3 * fTemp23);
402 		fRec0[0] = (iSlow2 ? fTemp23 : fThen13);
403 		output0[i0] = FAUSTFLOAT((fTemp0 + (fSlow0 * fRec0[0])));
404 		fRec2[2] = fRec2[1];
405 		fRec2[1] = fRec2[0];
406 		fRec1[2] = fRec1[1];
407 		fRec1[1] = fRec1[0];
408 		fVec0[1] = fVec0[0];
409 		fRec11[1] = fRec11[0];
410 		fRec10[2] = fRec10[1];
411 		fRec10[1] = fRec10[0];
412 		fRec9[2] = fRec9[1];
413 		fRec9[1] = fRec9[0];
414 		fRec8[2] = fRec8[1];
415 		fRec8[1] = fRec8[0];
416 		fRec7[2] = fRec7[1];
417 		fRec7[1] = fRec7[0];
418 		fRec6[2] = fRec6[1];
419 		fRec6[1] = fRec6[0];
420 		fRec5[2] = fRec5[1];
421 		fRec5[1] = fRec5[0];
422 		fVec1[1] = fVec1[0];
423 		fRec4[1] = fRec4[0];
424 		fRec3[2] = fRec3[1];
425 		fRec3[1] = fRec3[0];
426 		fRec18[1] = fRec18[0];
427 		fRec16[1] = fRec16[0];
428 		fRec14[1] = fRec14[0];
429 		fRec12[1] = fRec12[0];
430 		fRec26[1] = fRec26[0];
431 		fRec24[1] = fRec24[0];
432 		fRec22[1] = fRec22[0];
433 		fRec20[1] = fRec20[0];
434 		IOTA = (IOTA + 1);
435 		fRec28[1] = fRec28[0];
436 		fRec29[1] = fRec29[0];
437 		fRec30[1] = fRec30[0];
438 		fRec31[1] = fRec31[0];
439 		fRec0[1] = fRec0[0];
440 	}
441 }
442 
compute_static(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0,PluginDef * p)443 void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef *p)
444 {
445 	static_cast<Dsp*>(p)->compute(count, input0, output0);
446 }
447 
register_par(const ParamReg & reg)448 int Dsp::register_par(const ParamReg& reg)
449 {
450 	reg.registerFloatVar("dide.Freeze",N_("Freeze"),"B",N_("Freeze the current delay"),&fCheckbox0, 0.0, 0.0, 1.0, 1.0, 0);
451 	reg.registerFloatVar("dide.bpm",N_("BPM"),"S",N_("Delay in Beats per Minute"),&fHslider4, 120.0f, 24.0f, 360.0f, 1.0f, 0);
452 	reg.registerFloatVar("dide.feedback",N_("Feedback"),"S",N_("Percentage of the feedback level in the de.delay loop"),&fVslider2, 50.0f, 1.0f, 100.0f, 1.0f, 0);
453 	reg.registerFloatVar("dide.gain",N_("Gain"),"S",N_("Overall gain of the de.delay line in percent"),&fVslider0, 100.0f, 0.0f, 120.0f, 1.0f, 0);
454 	reg.registerFloatVar("dide.highpass",N_("Hipass"),"S",N_("Highpass filter frequency in the feedback loop"),&fHslider2, 120.0f, 20.0f, 20000.0f, 1.0f, 0);
455 	reg.registerFloatVar("dide.howpass",N_("Lopass"),"S",N_("Lowpass filter frequency in the feedback loop"),&fHslider1, 12000.0f, 20.0f, 20000.0f, 1.0f, 0);
456 	reg.registerFloatVar("dide.level",N_("Level"),"S",N_("Percentage of the de.delay gain level"),&fVslider1, 50.0f, 1.0f, 100.0f, 1.0f, 0);
457 	static const value_pair fHslider0_values[] = {{"plain"},{"presence"},{"tape"},{"tape2"},{0}};
458 	reg.registerFloatVar("dide.mode",N_("Mode"),"S","",&fHslider0, 0.0f, 0.0f, 3.0f, 1.0f, fHslider0_values);
459 	static const value_pair fHslider3_values[] = {{"Dotted 1/2 note"},{"1/2 note"},{"1/2 note triplets"},{" Dotted 1/4 note"},{"1/4 note"},{"1/4 note triplets"},{"Dotted 1/8 note"},{"1/8 note"},{"1/8 note triplets"},{" Dotted 1/16 note"},{"1/16 note"},{"1/16 note triplets"},{"Dotted 1/32 note"},{"1/32 note"},{"1/32 note triplets"},{" Dotted 1/64 note"},{"1/64 note"},{"1/64 note triplets"},{0}};
460 	reg.registerFloatVar("dide.notes",N_("Notes"),"S",N_("Note setting for bpm"),&fHslider3, 4.0f, 0.0f, 17.0f, 1.0f, fHslider3_values);
461 	return 0;
462 }
463 
register_params_static(const ParamReg & reg)464 int Dsp::register_params_static(const ParamReg& reg)
465 {
466 	return static_cast<Dsp*>(reg.plugin)->register_par(reg);
467 }
468 
469 const char *Dsp::glade_def = "\
470 <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
471 <!-- Generated with glade 3.22.1 -->\n\
472 <interface>\n\
473   <requires lib=\"gtk+\" version=\"3.0\"/>\n\
474   <requires lib=\"gxwidgets\" version=\"0.0\"/>\n\
475   <object class=\"GtkWindow\" id=\"window1\">\n\
476     <property name=\"can_focus\">False</property>\n\
477     <child>\n\
478       <placeholder/>\n\
479     </child>\n\
480     <child>\n\
481       <object class=\"GtkBox\" id=\"vbox1\">\n\
482         <property name=\"visible\">True</property>\n\
483         <property name=\"can_focus\">False</property>\n\
484         <property name=\"orientation\">vertical</property>\n\
485         <child>\n\
486           <object class=\"GtkBox\" id=\"rackbox\">\n\
487             <property name=\"visible\">True</property>\n\
488             <property name=\"can_focus\">False</property>\n\
489             <child>\n\
490               <object class=\"GtkBox\" id=\"vbox2\">\n\
491                 <property name=\"visible\">True</property>\n\
492                 <property name=\"can_focus\">False</property>\n\
493                 <property name=\"orientation\">vertical</property>\n\
494                 <child>\n\
495                   <object class=\"GtkLabel\" id=\"label1\">\n\
496                     <property name=\"visible\">True</property>\n\
497                     <property name=\"can_focus\">False</property>\n\
498                   </object>\n\
499                   <packing>\n\
500                     <property name=\"expand\">False</property>\n\
501                     <property name=\"fill\">False</property>\n\
502                     <property name=\"position\">0</property>\n\
503                   </packing>\n\
504                 </child>\n\
505                 <child>\n\
506                   <object class=\"GtkLabel\" id=\"label1:rack_label\">\n\
507                     <property name=\"visible\">True</property>\n\
508                     <property name=\"can_focus\">False</property>\n\
509                     <property name=\"label\" translatable=\"yes\">label</property>\n\
510                   </object>\n\
511                   <packing>\n\
512                     <property name=\"expand\">False</property>\n\
513                     <property name=\"fill\">False</property>\n\
514                     <property name=\"position\">1</property>\n\
515                   </packing>\n\
516                 </child>\n\
517                 <child>\n\
518                   <object class=\"GxMidKnob\" id=\"GxMidKnob1\">\n\
519                     <property name=\"visible\">True</property>\n\
520                     <property name=\"can_focus\">True</property>\n\
521                     <property name=\"receives_default\">True</property>\n\
522                     <property name=\"var_id\">dide.bpm</property>\n\
523                     <property name=\"label_ref\">label1:rack_label</property>\n\
524                   </object>\n\
525                   <packing>\n\
526                     <property name=\"expand\">True</property>\n\
527                     <property name=\"fill\">True</property>\n\
528                     <property name=\"position\">2</property>\n\
529                   </packing>\n\
530                 </child>\n\
531                 <child>\n\
532                   <object class=\"GtkLabel\" id=\"label2\">\n\
533                     <property name=\"visible\">True</property>\n\
534                     <property name=\"can_focus\">False</property>\n\
535                   </object>\n\
536                   <packing>\n\
537                     <property name=\"expand\">False</property>\n\
538                     <property name=\"fill\">False</property>\n\
539                     <property name=\"position\">3</property>\n\
540                   </packing>\n\
541                 </child>\n\
542               </object>\n\
543               <packing>\n\
544                 <property name=\"expand\">True</property>\n\
545                 <property name=\"fill\">True</property>\n\
546                 <property name=\"position\">0</property>\n\
547               </packing>\n\
548             </child>\n\
549             <child>\n\
550               <object class=\"GtkBox\" id=\"vbox8\">\n\
551                 <property name=\"visible\">True</property>\n\
552                 <property name=\"can_focus\">False</property>\n\
553                 <property name=\"orientation\">vertical</property>\n\
554                 <property name=\"spacing\">10</property>\n\
555                 <child>\n\
556                   <object class=\"GtkBox\" id=\"hbox1\">\n\
557                     <property name=\"visible\">True</property>\n\
558                     <property name=\"can_focus\">False</property>\n\
559                     <child>\n\
560                       <object class=\"GtkBox\" id=\"vbox3\">\n\
561                         <property name=\"visible\">True</property>\n\
562                         <property name=\"can_focus\">False</property>\n\
563                         <property name=\"orientation\">vertical</property>\n\
564                         <child>\n\
565                           <object class=\"GtkLabel\" id=\"label2:rack_label\">\n\
566                             <property name=\"visible\">True</property>\n\
567                             <property name=\"can_focus\">False</property>\n\
568                             <property name=\"label\" translatable=\"yes\">label</property>\n\
569                           </object>\n\
570                           <packing>\n\
571                             <property name=\"expand\">False</property>\n\
572                             <property name=\"fill\">False</property>\n\
573                             <property name=\"position\">0</property>\n\
574                           </packing>\n\
575                         </child>\n\
576                         <child>\n\
577                           <object class=\"GxSmallKnobR\" id=\"GxMidKnob2\">\n\
578                             <property name=\"visible\">True</property>\n\
579                             <property name=\"can_focus\">True</property>\n\
580                             <property name=\"receives_default\">True</property>\n\
581                             <property name=\"var_id\">dide.feedback</property>\n\
582                             <property name=\"label_ref\">label2:rack_label</property>\n\
583                           </object>\n\
584                           <packing>\n\
585                             <property name=\"expand\">False</property>\n\
586                             <property name=\"fill\">False</property>\n\
587                             <property name=\"position\">1</property>\n\
588                           </packing>\n\
589                         </child>\n\
590                       </object>\n\
591                       <packing>\n\
592                         <property name=\"expand\">True</property>\n\
593                         <property name=\"fill\">True</property>\n\
594                         <property name=\"position\">0</property>\n\
595                       </packing>\n\
596                     </child>\n\
597                     <child>\n\
598                       <object class=\"GtkBox\" id=\"vbox4\">\n\
599                         <property name=\"visible\">True</property>\n\
600                         <property name=\"can_focus\">False</property>\n\
601                         <property name=\"orientation\">vertical</property>\n\
602                         <child>\n\
603                           <object class=\"GtkLabel\" id=\"label3:rack_label\">\n\
604                             <property name=\"visible\">True</property>\n\
605                             <property name=\"can_focus\">False</property>\n\
606                             <property name=\"label\" translatable=\"yes\">label</property>\n\
607                           </object>\n\
608                           <packing>\n\
609                             <property name=\"expand\">False</property>\n\
610                             <property name=\"fill\">False</property>\n\
611                             <property name=\"position\">0</property>\n\
612                           </packing>\n\
613                         </child>\n\
614                         <child>\n\
615                           <object class=\"GxSmallKnobR\" id=\"GxMidKnob3\">\n\
616                             <property name=\"visible\">True</property>\n\
617                             <property name=\"can_focus\">True</property>\n\
618                             <property name=\"receives_default\">True</property>\n\
619                             <property name=\"var_id\">dide.level</property>\n\
620                             <property name=\"label_ref\">label3:rack_label</property>\n\
621                           </object>\n\
622                           <packing>\n\
623                             <property name=\"expand\">False</property>\n\
624                             <property name=\"fill\">False</property>\n\
625                             <property name=\"position\">1</property>\n\
626                           </packing>\n\
627                         </child>\n\
628                       </object>\n\
629                       <packing>\n\
630                         <property name=\"expand\">True</property>\n\
631                         <property name=\"fill\">True</property>\n\
632                         <property name=\"position\">1</property>\n\
633                       </packing>\n\
634                     </child>\n\
635                     <child>\n\
636                       <object class=\"GtkBox\" id=\"vbox5\">\n\
637                         <property name=\"visible\">True</property>\n\
638                         <property name=\"can_focus\">False</property>\n\
639                         <property name=\"orientation\">vertical</property>\n\
640                         <child>\n\
641                           <object class=\"GtkLabel\" id=\"label4:rack_label\">\n\
642                             <property name=\"visible\">True</property>\n\
643                             <property name=\"can_focus\">False</property>\n\
644                             <property name=\"label\" translatable=\"yes\">label</property>\n\
645                           </object>\n\
646                           <packing>\n\
647                             <property name=\"expand\">False</property>\n\
648                             <property name=\"fill\">False</property>\n\
649                             <property name=\"position\">0</property>\n\
650                           </packing>\n\
651                         </child>\n\
652                         <child>\n\
653                           <object class=\"GxSmallKnobR\" id=\"GxMidKnob4\">\n\
654                             <property name=\"visible\">True</property>\n\
655                             <property name=\"can_focus\">True</property>\n\
656                             <property name=\"receives_default\">True</property>\n\
657                             <property name=\"var_id\">dide.highpass</property>\n\
658                             <property name=\"label_ref\">label4:rack_label</property>\n\
659                           </object>\n\
660                           <packing>\n\
661                             <property name=\"expand\">False</property>\n\
662                             <property name=\"fill\">False</property>\n\
663                             <property name=\"position\">1</property>\n\
664                           </packing>\n\
665                         </child>\n\
666                       </object>\n\
667                       <packing>\n\
668                         <property name=\"expand\">True</property>\n\
669                         <property name=\"fill\">True</property>\n\
670                         <property name=\"position\">2</property>\n\
671                       </packing>\n\
672                     </child>\n\
673                     <child>\n\
674                       <object class=\"GtkBox\" id=\"vbox6\">\n\
675                         <property name=\"visible\">True</property>\n\
676                         <property name=\"can_focus\">False</property>\n\
677                         <property name=\"orientation\">vertical</property>\n\
678                         <child>\n\
679                           <object class=\"GtkLabel\" id=\"label5:rack_label\">\n\
680                             <property name=\"visible\">True</property>\n\
681                             <property name=\"can_focus\">False</property>\n\
682                             <property name=\"label\" translatable=\"yes\">label</property>\n\
683                           </object>\n\
684                           <packing>\n\
685                             <property name=\"expand\">False</property>\n\
686                             <property name=\"fill\">False</property>\n\
687                             <property name=\"position\">0</property>\n\
688                           </packing>\n\
689                         </child>\n\
690                         <child>\n\
691                           <object class=\"GxSmallKnobR\" id=\"GxMidKnob5\">\n\
692                             <property name=\"visible\">True</property>\n\
693                             <property name=\"can_focus\">True</property>\n\
694                             <property name=\"receives_default\">True</property>\n\
695                             <property name=\"var_id\">dide.howpass</property>\n\
696                             <property name=\"label_ref\">label5:rack_label</property>\n\
697                           </object>\n\
698                           <packing>\n\
699                             <property name=\"expand\">False</property>\n\
700                             <property name=\"fill\">False</property>\n\
701                             <property name=\"position\">1</property>\n\
702                           </packing>\n\
703                         </child>\n\
704                       </object>\n\
705                       <packing>\n\
706                         <property name=\"expand\">True</property>\n\
707                         <property name=\"fill\">True</property>\n\
708                         <property name=\"position\">3</property>\n\
709                       </packing>\n\
710                     </child>\n\
711                   </object>\n\
712                   <packing>\n\
713                     <property name=\"expand\">True</property>\n\
714                     <property name=\"fill\">True</property>\n\
715                     <property name=\"position\">0</property>\n\
716                   </packing>\n\
717                 </child>\n\
718                 <child>\n\
719                   <object class=\"GtkGrid\" id=\"table1\">\n\
720                     <property name=\"visible\">True</property>\n\
721                     <property name=\"can_focus\">False</property>\n\
722                     <property name=\"row_spacing\">3</property>\n\
723                     <property name=\"column_spacing\">6</property>\n\
724                     <child>\n\
725                       <object class=\"GxSelector\" id=\"gxselector2\">\n\
726                         <property name=\"visible\">True</property>\n\
727                         <property name=\"can_focus\">True</property>\n\
728                         <property name=\"receives_default\">True</property>\n\
729                         <property name=\"hexpand\">True</property>\n\
730                         <property name=\"var_id\">dide.mode</property>\n\
731                         <property name=\"label_ref\">label21:rack_label_inverse</property>\n\
732                       </object>\n\
733                       <packing>\n\
734                         <property name=\"left_attach\">1</property>\n\
735                         <property name=\"top_attach\">1</property>\n\
736                       </packing>\n\
737                     </child>\n\
738                     <child>\n\
739                       <object class=\"GtkLabel\" id=\"label11:rack_label_inverse\">\n\
740                         <property name=\"visible\">True</property>\n\
741                         <property name=\"can_focus\">False</property>\n\
742                         <property name=\"label\" translatable=\"yes\">label</property>\n\
743                         <property name=\"xalign\">1</property>\n\
744                       </object>\n\
745                       <packing>\n\
746                         <property name=\"left_attach\">0</property>\n\
747                         <property name=\"top_attach\">0</property>\n\
748                       </packing>\n\
749                     </child>\n\
750                     <child>\n\
751                       <object class=\"GtkLabel\" id=\"label21:rack_label_inverse\">\n\
752                         <property name=\"visible\">True</property>\n\
753                         <property name=\"can_focus\">False</property>\n\
754                         <property name=\"label\" translatable=\"yes\">label</property>\n\
755                         <property name=\"xalign\">1</property>\n\
756                       </object>\n\
757                       <packing>\n\
758                         <property name=\"left_attach\">0</property>\n\
759                         <property name=\"top_attach\">1</property>\n\
760                       </packing>\n\
761                     </child>\n\
762                     <child>\n\
763                       <object class=\"GxSelector\" id=\"gxselector1\">\n\
764                         <property name=\"visible\">True</property>\n\
765                         <property name=\"can_focus\">True</property>\n\
766                         <property name=\"receives_default\">True</property>\n\
767                         <property name=\"hexpand\">True</property>\n\
768                         <property name=\"var_id\">dide.notes</property>\n\
769                         <property name=\"label_ref\">label11:rack_label_inverse</property>\n\
770                       </object>\n\
771                       <packing>\n\
772                         <property name=\"left_attach\">1</property>\n\
773                         <property name=\"top_attach\">0</property>\n\
774                         <property name=\"width\">3</property>\n\
775                       </packing>\n\
776                     </child>\n\
777                     <child>\n\
778                       <object class=\"GtkLabel\" id=\"label31:rack_label_inverse\">\n\
779                         <property name=\"visible\">True</property>\n\
780                         <property name=\"can_focus\">False</property>\n\
781                         <property name=\"label\" translatable=\"yes\">label</property>\n\
782                         <property name=\"xalign\">1</property>\n\
783                       </object>\n\
784                       <packing>\n\
785                         <property name=\"left_attach\">2</property>\n\
786                         <property name=\"top_attach\">1</property>\n\
787                       </packing>\n\
788                     </child>\n\
789                     <child>\n\
790                       <object class=\"GxSwitch\" id=\"gxswitch1\">\n\
791                         <property name=\"visible\">True</property>\n\
792                         <property name=\"can_focus\">True</property>\n\
793                         <property name=\"receives_default\">True</property>\n\
794                         <property name=\"var_id\">dide.Freeze</property>\n\
795                         <property name=\"label_ref\">label31:rack_label_inverse</property>\n\
796                         <property name=\"base_name\">frbutton</property>\n\
797                       </object>\n\
798                       <packing>\n\
799                         <property name=\"left_attach\">3</property>\n\
800                         <property name=\"top_attach\">1</property>\n\
801                       </packing>\n\
802                     </child>\n\
803                   </object>\n\
804                   <packing>\n\
805                     <property name=\"expand\">False</property>\n\
806                     <property name=\"fill\">False</property>\n\
807                     <property name=\"position\">1</property>\n\
808                   </packing>\n\
809                 </child>\n\
810               </object>\n\
811               <packing>\n\
812                 <property name=\"expand\">True</property>\n\
813                 <property name=\"fill\">True</property>\n\
814                 <property name=\"position\">1</property>\n\
815               </packing>\n\
816             </child>\n\
817             <child>\n\
818               <object class=\"GtkBox\" id=\"vbox7\">\n\
819                 <property name=\"visible\">True</property>\n\
820                 <property name=\"can_focus\">False</property>\n\
821                 <property name=\"orientation\">vertical</property>\n\
822                 <child>\n\
823                   <object class=\"GtkLabel\" id=\"label6:rack_label1\">\n\
824                     <property name=\"visible\">True</property>\n\
825                     <property name=\"can_focus\">False</property>\n\
826                   </object>\n\
827                   <packing>\n\
828                     <property name=\"expand\">False</property>\n\
829                     <property name=\"fill\">False</property>\n\
830                     <property name=\"position\">0</property>\n\
831                   </packing>\n\
832                 </child>\n\
833                 <child>\n\
834                   <object class=\"GtkLabel\" id=\"label6:rack_label\">\n\
835                     <property name=\"visible\">True</property>\n\
836                     <property name=\"can_focus\">False</property>\n\
837                     <property name=\"label\" translatable=\"yes\">label</property>\n\
838                   </object>\n\
839                   <packing>\n\
840                     <property name=\"expand\">False</property>\n\
841                     <property name=\"fill\">False</property>\n\
842                     <property name=\"position\">1</property>\n\
843                   </packing>\n\
844                 </child>\n\
845                 <child>\n\
846                   <object class=\"GxMidKnob\" id=\"GxMidKnob6\">\n\
847                     <property name=\"visible\">True</property>\n\
848                     <property name=\"can_focus\">True</property>\n\
849                     <property name=\"receives_default\">True</property>\n\
850                     <property name=\"var_id\">dide.gain</property>\n\
851                     <property name=\"label_ref\">label6:rack_label</property>\n\
852                   </object>\n\
853                   <packing>\n\
854                     <property name=\"expand\">True</property>\n\
855                     <property name=\"fill\">True</property>\n\
856                     <property name=\"position\">2</property>\n\
857                   </packing>\n\
858                 </child>\n\
859                 <child>\n\
860                   <object class=\"GtkLabel\" id=\"label6:rack_label2\">\n\
861                     <property name=\"visible\">True</property>\n\
862                     <property name=\"can_focus\">False</property>\n\
863                   </object>\n\
864                   <packing>\n\
865                     <property name=\"expand\">False</property>\n\
866                     <property name=\"fill\">False</property>\n\
867                     <property name=\"position\">3</property>\n\
868                   </packing>\n\
869                 </child>\n\
870               </object>\n\
871               <packing>\n\
872                 <property name=\"expand\">True</property>\n\
873                 <property name=\"fill\">True</property>\n\
874                 <property name=\"position\">2</property>\n\
875               </packing>\n\
876             </child>\n\
877           </object>\n\
878           <packing>\n\
879             <property name=\"expand\">True</property>\n\
880             <property name=\"fill\">False</property>\n\
881             <property name=\"position\">0</property>\n\
882           </packing>\n\
883         </child>\n\
884         <child>\n\
885           <object class=\"GtkBox\" id=\"minibox\">\n\
886             <property name=\"visible\">True</property>\n\
887             <property name=\"can_focus\">False</property>\n\
888             <property name=\"spacing\">4</property>\n\
889             <child>\n\
890               <object class=\"GxHSlider\" id=\"gxhslider1\">\n\
891                 <property name=\"visible\">True</property>\n\
892                 <property name=\"can_focus\">True</property>\n\
893                 <property name=\"receives_default\">True</property>\n\
894                 <property name=\"round_digits\">0</property>\n\
895                 <property name=\"var_id\">dide.gain</property>\n\
896                 <property name=\"show_value\">False</property>\n\
897                 <property name=\"value_position\">right</property>\n\
898                 <property name=\"value_xalign\">0.52000000000000002</property>\n\
899                 <property name=\"label_ref\">label0:rack_label</property>\n\
900               </object>\n\
901               <packing>\n\
902                 <property name=\"expand\">False</property>\n\
903                 <property name=\"fill\">False</property>\n\
904                 <property name=\"position\">0</property>\n\
905               </packing>\n\
906             </child>\n\
907             <child>\n\
908               <object class=\"GtkLabel\" id=\"label0:rack_label\">\n\
909                 <property name=\"visible\">True</property>\n\
910                 <property name=\"can_focus\">False</property>\n\
911                 <property name=\"label\" translatable=\"yes\">Amount</property>\n\
912                 <property name=\"xalign\">0</property>\n\
913               </object>\n\
914               <packing>\n\
915                 <property name=\"expand\">False</property>\n\
916                 <property name=\"fill\">False</property>\n\
917                 <property name=\"position\">1</property>\n\
918               </packing>\n\
919             </child>\n\
920           </object>\n\
921           <packing>\n\
922             <property name=\"expand\">True</property>\n\
923             <property name=\"fill\">True</property>\n\
924             <property name=\"position\">1</property>\n\
925           </packing>\n\
926         </child>\n\
927       </object>\n\
928     </child>\n\
929   </object>\n\
930 </interface>\n\
931 ";
932 
load_ui_f(const UiBuilder & b,int form)933 inline int Dsp::load_ui_f(const UiBuilder& b, int form)
934 {
935     if (form & UI_FORM_GLADE) {
936         b.load_glade(glade_def);
937         return 0;
938     }
939     if (form & UI_FORM_STACK) {
940 #define PARAM(p) ("dide" "." p)
941 // -----delay
942 b.openHorizontalhideBox("");
943 b.create_master_slider(PARAM("bpm"), _(" delay (bpm)"));
944 b.closeBox();
945 b.openVerticalBox("");
946 {
947     b.openHorizontalBox("");
948     {
949         b.openVerticalBox("");
950         {
951             b.create_selector(PARAM("notes"), "tact");
952             b.set_next_flags(UI_NUM_SHOW_ALWAYS|UI_NUM_TOP);
953             b.create_small_rackknob(PARAM("bpm"), _(" delay (bpm)"));
954         }
955         b.closeBox();
956         b.openVerticalBox("");
957         {
958             b.openHorizontalBox("");
959             b.openFrameBox("");
960             b.closeBox();
961             b.create_selector(PARAM("mode"), "mode");
962             b.closeBox();
963             b.openHorizontalBox("");
964             {
965                 b.set_next_flags(UI_NUM_SHOW_ALWAYS|UI_NUM_TOP);
966                 b.create_small_rackknob(PARAM("highpass"), _("highpass(hz)"));
967                 b.set_next_flags(UI_NUM_SHOW_ALWAYS|UI_NUM_TOP);
968                 b.create_small_rackknob(PARAM("howpass"), _("lowpass(hz)"));
969             }
970             b.closeBox();
971         }
972         b.closeBox();
973         b.openVerticalBox("");
974         {
975             b.create_small_rackknob(PARAM("level"), _("level"));
976             b.create_small_rackknob(PARAM("feedback"), _("feedback"));
977         }
978         b.closeBox();
979         b.openVerticalBox("");
980         {
981             b.create_small_rackknobr(PARAM("gain"), _("amount"));
982             b.openFrameBox("");
983             b.closeBox();
984             b.create_switch(sw_frbutton,PARAM("Freeze"), _("freeze"));
985         }
986         b.closeBox();
987     }
988     b.closeBox();
989 }
990 b.closeBox();
991 
992 #undef PARAM
993         return 0;
994     }
995 	return -1;
996 }
997 
load_ui_f_static(const UiBuilder & b,int form)998 int Dsp::load_ui_f_static(const UiBuilder& b, int form)
999 {
1000 	return static_cast<Dsp*>(b.plugin)->load_ui_f(b, form);
1001 }
plugin()1002 PluginDef *plugin() {
1003 	return new Dsp();
1004 }
1005 
del_instance(PluginDef * p)1006 void Dsp::del_instance(PluginDef *p)
1007 {
1008 	delete static_cast<Dsp*>(p);
1009 }
1010 
1011 } // end namespace digital_delay
1012