1 // generated from file '../src/faust/ring_modulator_st.dsp' by dsp2cc:
2 // Code generated with Faust (https://faust.grame.fr)
3
4
5 namespace ring_modulator_st {
6 class mydspSIG0 {
7
8 private:
9
10 int iVec0[2];
11 int iRec0[2];
12
13 public:
14
getNumInputsmydspSIG0()15 int getNumInputsmydspSIG0() {
16 return 0;
17 }
getNumOutputsmydspSIG0()18 int getNumOutputsmydspSIG0() {
19 return 1;
20 }
21
instanceInitmydspSIG0(int sample_rate)22 void instanceInitmydspSIG0(int sample_rate) {
23 for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) {
24 iVec0[l0] = 0;
25 }
26 for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) {
27 iRec0[l1] = 0;
28 }
29 }
30
fillmydspSIG0(int count,double * table)31 void fillmydspSIG0(int count, double* table) {
32 for (int i1 = 0; (i1 < count); i1 = (i1 + 1)) {
33 iVec0[0] = 1;
34 iRec0[0] = ((iVec0[1] + iRec0[1]) % 65536);
35 table[i1] = std::sin((9.5873799242852573e-05 * double(iRec0[0])));
36 iVec0[1] = iVec0[0];
37 iRec0[1] = iRec0[0];
38 }
39 }
40
41 };
42
newmydspSIG0()43 static mydspSIG0* newmydspSIG0() { return (mydspSIG0*)new mydspSIG0(); }
deletemydspSIG0(mydspSIG0 * dsp)44 static void deletemydspSIG0(mydspSIG0* dsp) { delete dsp; }
45
46 static double ftbl0mydspSIG0[65536];
47
48
49 class Dsp: public PluginDef {
50 private:
51 int fSampleRate;
52 FAUSTFLOAT fHslider0;
53 double fConst0;
54 FAUSTFLOAT fHslider1;
55 double fRec1[2];
56
57 void clear_state_f();
58 int load_ui_f(const UiBuilder& b, int form);
59 static const char *glade_def;
60 void init(unsigned int sample_rate);
61 void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *input1, FAUSTFLOAT *output0, FAUSTFLOAT *output1);
62 int register_par(const ParamReg& reg);
63
64 static void clear_state_f_static(PluginDef*);
65 static int load_ui_f_static(const UiBuilder& b, int form);
66 static void init_static(unsigned int sample_rate, PluginDef*);
67 static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *input1, FAUSTFLOAT *output0, FAUSTFLOAT *output1, PluginDef*);
68 static int register_params_static(const ParamReg& reg);
69 static void del_instance(PluginDef *p);
70 public:
71 Dsp();
72 ~Dsp();
73 };
74
75
76
Dsp()77 Dsp::Dsp()
78 : PluginDef() {
79 version = PLUGINDEF_VERSION;
80 flags = 0;
81 id = "ringModulatorSt";
82 name = N_("Ring Modulator");
83 groups = 0;
84 description = N_("Ring Modulator Stereo Version"); // description (tooltip)
85 category = N_("Modulation"); // category
86 shortname = ""; // shortname
87 mono_audio = 0;
88 stereo_audio = compute_static;
89 set_samplerate = init_static;
90 activate_plugin = 0;
91 register_params = register_params_static;
92 load_ui = load_ui_f_static;
93 clear_state = clear_state_f_static;
94 delete_instance = del_instance;
95 }
96
~Dsp()97 Dsp::~Dsp() {
98 }
99
clear_state_f()100 inline void Dsp::clear_state_f()
101 {
102 for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) fRec1[l2] = 0.0;
103 }
104
clear_state_f_static(PluginDef * p)105 void Dsp::clear_state_f_static(PluginDef *p)
106 {
107 static_cast<Dsp*>(p)->clear_state_f();
108 }
109
init(unsigned int sample_rate)110 inline void Dsp::init(unsigned int sample_rate)
111 {
112 mydspSIG0* sig0 = newmydspSIG0();
113 sig0->instanceInitmydspSIG0(sample_rate);
114 sig0->fillmydspSIG0(65536, ftbl0mydspSIG0);
115 deletemydspSIG0(sig0);
116 fSampleRate = sample_rate;
117 fConst0 = (1.0 / std::min<double>(192000.0, std::max<double>(1.0, double(fSampleRate))));
118 clear_state_f();
119 }
120
init_static(unsigned int sample_rate,PluginDef * p)121 void Dsp::init_static(unsigned int sample_rate, PluginDef *p)
122 {
123 static_cast<Dsp*>(p)->init(sample_rate);
124 }
125
compute(int count,FAUSTFLOAT * input0,FAUSTFLOAT * input1,FAUSTFLOAT * output0,FAUSTFLOAT * output1)126 void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *input1, FAUSTFLOAT *output0, FAUSTFLOAT *output1)
127 {
128 double fSlow0 = double(fHslider0);
129 double fSlow1 = (1.0 - fSlow0);
130 double fSlow2 = (fConst0 * double(fHslider1));
131 for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
132 fRec1[0] = (fSlow2 + (fRec1[1] - std::floor((fSlow2 + fRec1[1]))));
133 double fTemp0 = (fSlow1 + (fSlow0 * ftbl0mydspSIG0[int((65536.0 * fRec1[0]))]));
134 output0[i0] = FAUSTFLOAT((double(input0[i0]) * fTemp0));
135 output1[i0] = FAUSTFLOAT((double(input1[i0]) * fTemp0));
136 fRec1[1] = fRec1[0];
137 }
138 }
139
compute_static(int count,FAUSTFLOAT * input0,FAUSTFLOAT * input1,FAUSTFLOAT * output0,FAUSTFLOAT * output1,PluginDef * p)140 void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *input1, FAUSTFLOAT *output0, FAUSTFLOAT *output1, PluginDef *p)
141 {
142 static_cast<Dsp*>(p)->compute(count, input0, input1, output0, output1);
143 }
144
register_par(const ParamReg & reg)145 int Dsp::register_par(const ParamReg& reg)
146 {
147 reg.registerFloatVar("ringModulatorSt.dry/wet",N_("Mix"),"S","",&fHslider0, 0.5, 0.0, 1.0, 0.050000000000000003, 0);
148 reg.registerFloatVar("ringModulatorSt.freq",N_("Freq"),"S","",&fHslider1, 240.0, 120.0, 1600.0, 0.5, 0);
149 return 0;
150 }
151
register_params_static(const ParamReg & reg)152 int Dsp::register_params_static(const ParamReg& reg)
153 {
154 return static_cast<Dsp*>(reg.plugin)->register_par(reg);
155 }
156
157 const char *Dsp::glade_def = "\
158 <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
159 <!-- Generated with glade 3.22.1 -->\n\
160 <interface>\n\
161 <requires lib=\"gtk+\" version=\"3.20\"/>\n\
162 <requires lib=\"gxwidgets\" version=\"0.0\"/>\n\
163 <object class=\"GtkWindow\" id=\"window1\">\n\
164 <property name=\"can_focus\">False</property>\n\
165 <child>\n\
166 <placeholder/>\n\
167 </child>\n\
168 <child>\n\
169 <object class=\"GtkBox\" id=\"vbox1\">\n\
170 <property name=\"visible\">True</property>\n\
171 <property name=\"can_focus\">False</property>\n\
172 <property name=\"orientation\">vertical</property>\n\
173 <child>\n\
174 <object class=\"GtkBox\" id=\"rackbox\">\n\
175 <property name=\"visible\">True</property>\n\
176 <property name=\"can_focus\">False</property>\n\
177 <property name=\"spacing\">4</property>\n\
178 <child>\n\
179 <object class=\"GtkBox\" id=\"hbox1\">\n\
180 <property name=\"visible\">True</property>\n\
181 <property name=\"can_focus\">False</property>\n\
182 <property name=\"spacing\">10</property>\n\
183 <child>\n\
184 <object class=\"GtkBox\" id=\"vbox2\">\n\
185 <property name=\"visible\">True</property>\n\
186 <property name=\"can_focus\">False</property>\n\
187 <property name=\"orientation\">vertical</property>\n\
188 <child>\n\
189 <object class=\"GtkLabel\" id=\"label1:rack_label\">\n\
190 <property name=\"visible\">True</property>\n\
191 <property name=\"can_focus\">False</property>\n\
192 <property name=\"label\" translatable=\"yes\">label</property>\n\
193 </object>\n\
194 <packing>\n\
195 <property name=\"expand\">False</property>\n\
196 <property name=\"fill\">False</property>\n\
197 <property name=\"position\">0</property>\n\
198 </packing>\n\
199 </child>\n\
200 <child>\n\
201 <object class=\"GxMidKnob\" id=\"gxbigknob1\">\n\
202 <property name=\"visible\">True</property>\n\
203 <property name=\"can_focus\">True</property>\n\
204 <property name=\"receives_default\">True</property>\n\
205 <property name=\"var_id\">ringModulatorSt.freq</property>\n\
206 <property name=\"label_ref\">label1:rack_label</property>\n\
207 </object>\n\
208 <packing>\n\
209 <property name=\"expand\">False</property>\n\
210 <property name=\"fill\">False</property>\n\
211 <property name=\"position\">1</property>\n\
212 </packing>\n\
213 </child>\n\
214 </object>\n\
215 <packing>\n\
216 <property name=\"expand\">False</property>\n\
217 <property name=\"fill\">False</property>\n\
218 <property name=\"position\">0</property>\n\
219 </packing>\n\
220 </child>\n\
221 <child>\n\
222 <object class=\"GtkBox\" id=\"vbox3\">\n\
223 <property name=\"visible\">True</property>\n\
224 <property name=\"can_focus\">False</property>\n\
225 <property name=\"orientation\">vertical</property>\n\
226 <child>\n\
227 <object class=\"GtkLabel\" id=\"label2:rack_label\">\n\
228 <property name=\"visible\">True</property>\n\
229 <property name=\"can_focus\">False</property>\n\
230 <property name=\"label\" translatable=\"yes\">label</property>\n\
231 </object>\n\
232 <packing>\n\
233 <property name=\"expand\">False</property>\n\
234 <property name=\"fill\">False</property>\n\
235 <property name=\"position\">0</property>\n\
236 </packing>\n\
237 </child>\n\
238 <child>\n\
239 <object class=\"GxSmallKnobR\" id=\"gxbigknob2\">\n\
240 <property name=\"visible\">True</property>\n\
241 <property name=\"can_focus\">True</property>\n\
242 <property name=\"receives_default\">True</property>\n\
243 <property name=\"var_id\">ringModulatorSt.dry/wet</property>\n\
244 <property name=\"label_ref\">label2:rack_label</property>\n\
245 </object>\n\
246 <packing>\n\
247 <property name=\"expand\">False</property>\n\
248 <property name=\"fill\">False</property>\n\
249 <property name=\"position\">1</property>\n\
250 </packing>\n\
251 </child>\n\
252 </object>\n\
253 <packing>\n\
254 <property name=\"expand\">False</property>\n\
255 <property name=\"fill\">False</property>\n\
256 <property name=\"position\">1</property>\n\
257 </packing>\n\
258 </child>\n\
259 </object>\n\
260 <packing>\n\
261 <property name=\"expand\">True</property>\n\
262 <property name=\"fill\">False</property>\n\
263 <property name=\"pack_type\">end</property>\n\
264 <property name=\"position\">0</property>\n\
265 </packing>\n\
266 </child>\n\
267 </object>\n\
268 <packing>\n\
269 <property name=\"expand\">True</property>\n\
270 <property name=\"fill\">False</property>\n\
271 <property name=\"position\">0</property>\n\
272 </packing>\n\
273 </child>\n\
274 <child>\n\
275 <object class=\"GtkBox\" id=\"minibox\">\n\
276 <property name=\"visible\">True</property>\n\
277 <property name=\"can_focus\">False</property>\n\
278 <property name=\"spacing\">4</property>\n\
279 <child>\n\
280 <object class=\"GxHSlider\" id=\"gxhslider1\">\n\
281 <property name=\"visible\">True</property>\n\
282 <property name=\"can_focus\">True</property>\n\
283 <property name=\"receives_default\">True</property>\n\
284 <property name=\"round_digits\">0</property>\n\
285 <property name=\"var_id\">ringModulatorSt.freq</property>\n\
286 <property name=\"show_value\">False</property>\n\
287 <property name=\"value_position\">right</property>\n\
288 <property name=\"value_xalign\">0.52000000000000002</property>\n\
289 <property name=\"label_ref\">label0:rack_label</property>\n\
290 </object>\n\
291 <packing>\n\
292 <property name=\"expand\">False</property>\n\
293 <property name=\"fill\">False</property>\n\
294 <property name=\"position\">0</property>\n\
295 </packing>\n\
296 </child>\n\
297 <child>\n\
298 <object class=\"GtkLabel\" id=\"label0:rack_label\">\n\
299 <property name=\"visible\">True</property>\n\
300 <property name=\"can_focus\">False</property>\n\
301 <property name=\"label\" translatable=\"yes\">Level</property>\n\
302 <property name=\"xalign\">0</property>\n\
303 </object>\n\
304 <packing>\n\
305 <property name=\"expand\">False</property>\n\
306 <property name=\"fill\">False</property>\n\
307 <property name=\"position\">1</property>\n\
308 </packing>\n\
309 </child>\n\
310 </object>\n\
311 <packing>\n\
312 <property name=\"expand\">True</property>\n\
313 <property name=\"fill\">True</property>\n\
314 <property name=\"position\">1</property>\n\
315 </packing>\n\
316 </child>\n\
317 </object>\n\
318 </child>\n\
319 </object>\n\
320 </interface>\n\
321 ";
322
load_ui_f(const UiBuilder & b,int form)323 inline int Dsp::load_ui_f(const UiBuilder& b, int form)
324 {
325 if (form & UI_FORM_GLADE) {
326 b.load_glade(glade_def);
327 return 0;
328 }
329 if (form & UI_FORM_STACK) {
330 #define PARAM(p) ("ringModulatorSt" "." p)
331 // ----- ring - modulator
332 b.openHorizontalhideBox("");
333 b.create_master_slider(PARAM("freq"), "Hz");
334 b.closeBox();
335 b.openVerticalBox("");
336 {
337 b.openHorizontalTableBox("");
338 {
339 b.create_small_rackknob(PARAM("freq"), _("Frequency"));
340 b.create_small_rackknobr(PARAM("dry/wet"), _(" Mix "));
341 }
342 b.closeBox();
343 }
344 b.closeBox();
345
346
347 #undef PARAM
348 return 0;
349 }
350 return -1;
351 }
352
load_ui_f_static(const UiBuilder & b,int form)353 int Dsp::load_ui_f_static(const UiBuilder& b, int form)
354 {
355 return static_cast<Dsp*>(b.plugin)->load_ui_f(b, form);
356 }
plugin()357 PluginDef *plugin() {
358 return new Dsp();
359 }
360
del_instance(PluginDef * p)361 void Dsp::del_instance(PluginDef *p)
362 {
363 delete static_cast<Dsp*>(p);
364 }
365
366 } // end namespace ring_modulator_st
367