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