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