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