1 // generated from file '../src/plugins/fuzzfacefm.dsp' by dsp2cc:
2 // Code generated with Faust (https://faust.grame.fr)
3 
4 #include "gx_faust_support.h"
5 #include "gx_plugin.h"
6 
7 #include "clipping.h"
8 
9 namespace pluginlib {
10 namespace fuzzfacefm {
11 
12 class Dsp: public PluginDef {
13 private:
14 	int fSampleRate;
15 	FAUSTFLOAT fVslider0;
16 	double fRec1[2];
17 	double fConst0;
18 	double fConst2;
19 	FAUSTFLOAT fVslider1;
20 	double fRec2[2];
21 	double fConst4;
22 	double fConst6;
23 	double fConst8;
24 	double fConst10;
25 	double fConst12;
26 	FAUSTFLOAT fVslider2;
27 	double fRec3[2];
28 	double fConst14;
29 	double fConst16;
30 	double fConst18;
31 	double fConst20;
32 	double fConst22;
33 	double fConst24;
34 	double fConst25;
35 	double fConst26;
36 	double fConst27;
37 	double fConst28;
38 	double fConst29;
39 	double fConst30;
40 	double fConst31;
41 	double fConst32;
42 	double fConst33;
43 	double fConst34;
44 	double fConst35;
45 	double fConst36;
46 	double fConst38;
47 	double fConst40;
48 	double fConst42;
49 	double fConst44;
50 	double fConst46;
51 	double fConst48;
52 	double fConst50;
53 	double fConst52;
54 	double fConst54;
55 	double fConst56;
56 	double fConst58;
57 	double fConst60;
58 	double fConst61;
59 	double fConst62;
60 	double fConst63;
61 	double fConst64;
62 	double fConst65;
63 	double fConst66;
64 	double fConst67;
65 	double fConst68;
66 	double fConst69;
67 	double fConst70;
68 	double fConst71;
69 	double fConst72;
70 	double fRec0[4];
71 	double fConst74;
72 	double fConst75;
73 	double fConst76;
74 	double fConst78;
75 	double fConst80;
76 	double fConst82;
77 	double fConst84;
78 	double fConst87;
79 	double fConst88;
80 	double fConst89;
81 	double fConst91;
82 	double fConst93;
83 	double fConst94;
84 	double fConst95;
85 	double fConst96;
86 	double fConst97;
87 	double fConst98;
88 	double fConst99;
89 	double fConst100;
90 	double fConst101;
91 	double fConst102;
92 	double fConst103;
93 	double fConst104;
94 
95 
96 	gx_resample::FixedRateResampler smpCl;
97 
98 	FAUSTFLOAT 	fsliderV0;
99 	double 	fRecV0[2];
100 	void clear_state_f();
101 	int load_ui_f(const UiBuilder& b, int form);
102 	static const char *glade_def;
103 	void init(unsigned int sample_rate);
104 	void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0);
105 	int register_par(const ParamReg& reg);
106 
107 	static void clear_state_f_static(PluginDef*);
108 	static int load_ui_f_static(const UiBuilder& b, int form);
109 	static void init_static(unsigned int sample_rate, PluginDef*);
110 	static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef*);
111 	static int register_params_static(const ParamReg& reg);
112 	static void del_instance(PluginDef *p);
113 public:
114 	Dsp();
115 	~Dsp();
116 };
117 
118 
119 
Dsp()120 Dsp::Dsp()
121 	: PluginDef() {
122 	version = PLUGINDEF_VERSION;
123 	flags = 0;
124 	id = "fuzzfacefm";
125 	name = N_("Fuzz Face Fuller");
126 	groups = 0;
127 	description = N_("Micke Fuller Fuzz Face simulation"); // description (tooltip)
128 	category = N_("Fuzz");       // category
129 	shortname = N_("FF Fuller");     // shortname
130 	mono_audio = compute_static;
131 	stereo_audio = 0;
132 	set_samplerate = init_static;
133 	activate_plugin = 0;
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 < 2); l0 = (l0 + 1)) fRec1[l0] = 0.0;
146 	for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) fRec2[l1] = 0.0;
147 	for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) fRec3[l2] = 0.0;
148 	for (int l3 = 0; (l3 < 4); l3 = (l3 + 1)) fRec0[l3] = 0.0;
149 
150 
151 	for (int i=0; i<2; i++) fRecV0[i] = 0;
152 }
153 
clear_state_f_static(PluginDef * p)154 void Dsp::clear_state_f_static(PluginDef *p)
155 {
156 	static_cast<Dsp*>(p)->clear_state_f();
157 }
158 
init(unsigned int sample_rate)159 inline void Dsp::init(unsigned int sample_rate)
160 {
161 	fSampleRate = sample_rate;
162 	fConst0 = std::min<double>(192000.0, std::max<double>(1.0, double(fSampleRate)));
163 	double fConst1 = (3.3531209733912099e-19 * fConst0);
164 	fConst2 = ((fConst0 * (fConst1 + 3.24149709132582e-15)) + -1.4628895453456301e-14);
165 	double fConst3 = (4.2717686608045702e-16 * fConst0);
166 	fConst4 = ((fConst0 * (fConst3 + 6.4321494874189598e-16)) + 3.45797348759893e-55);
167 	double fConst5 = (4.27512178177797e-16 * fConst0);
168 	fConst6 = ((fConst0 * (-6.4344317434698802e-16 - fConst5)) + -3.2623424697545702e-55);
169 	double fConst7 = (1.6814895745264899e-16 * fConst0);
170 	fConst8 = ((fConst0 * (-1.63110208134281e-12 - fConst7)) + 1.69410806769336e-10);
171 	double fConst9 = (2.1421638303336699e-13 * fConst0);
172 	fConst10 = ((fConst0 * (-7.4421674350198897e-12 - fConst9)) + 3.2160747437094799e-11);
173 	double fConst11 = (2.1438453199081999e-13 * fConst0);
174 	fConst12 = ((fConst0 * (fConst11 + 7.4478704182697307e-12)) + -3.2172158717349402e-11);
175 	double fConst13 = (7.5535874162256398e-17 * fConst0);
176 	fConst14 = ((fConst0 * (fConst13 + 1.61641996632585e-12)) + -1.6091784998802001e-10);
177 	double fConst15 = (1.5062889936039299e-19 * fConst0);
178 	fConst16 = ((fConst0 * (-3.2183569997603901e-15 - fConst15)) + -1.5333557259551101e-54);
179 	double fConst17 = (4.2452186616965102e-16 * fConst0);
180 	fConst18 = (7.6075416727176396e-56 - fConst17);
181 	double fConst19 = (4.2467249506901202e-16 * fConst0);
182 	fConst20 = (fConst19 + -7.1771534334600597e-56);
183 	double fConst21 = (2.1288498022809499e-13 * fConst0);
184 	fConst22 = (fConst21 + 7.0753644361608499e-12);
185 	double fConst23 = (2.1296051610225699e-13 * fConst0);
186 	fConst24 = (-7.0778749178168597e-12 - fConst23);
187 	fConst25 = ((fConst0 * (3.24149709132582e-15 - fConst1)) + 1.4628895453456301e-14);
188 	fConst26 = ((fConst0 * (6.4321494874189598e-16 - fConst3)) + -3.45797348759893e-55);
189 	fConst27 = ((fConst0 * (fConst5 + -6.4344317434698802e-16)) + 3.2623424697545702e-55);
190 	fConst28 = ((fConst0 * (fConst7 + -1.63110208134281e-12)) + -1.69410806769336e-10);
191 	fConst29 = ((fConst0 * (fConst9 + -7.4421674350198897e-12)) + -3.2160747437094799e-11);
192 	fConst30 = ((fConst0 * (7.4478704182697307e-12 - fConst11)) + 3.2172158717349402e-11);
193 	fConst31 = ((fConst0 * (1.61641996632585e-12 - fConst13)) + 1.6091784998802001e-10);
194 	fConst32 = ((fConst0 * (fConst15 + -3.2183569997603901e-15)) + 1.5333557259551101e-54);
195 	fConst33 = (fConst17 + 7.6075416727176396e-56);
196 	fConst34 = (-7.1771534334600597e-56 - fConst19);
197 	fConst35 = (7.0753644361608499e-12 - fConst21);
198 	fConst36 = (fConst23 + -7.0778749178168597e-12);
199 	double fConst37 = (1.1177069911303999e-19 * fConst0);
200 	fConst38 = ((fConst0 * (fConst37 + -3.24149709132582e-15)) + 1.4628895453456301e-14);
201 	double fConst39 = (1.4239228869348599e-16 * fConst0);
202 	fConst40 = ((fConst0 * (fConst39 + -6.4321494874189598e-16)) + -3.45797348759893e-55);
203 	double fConst41 = (1.42504059392599e-16 * fConst0);
204 	fConst42 = ((fConst0 * (6.4344317434698802e-16 - fConst41)) + 3.2623424697545702e-55);
205 	double fConst43 = (5.6049652484216404e-17 * fConst0);
206 	fConst44 = ((fConst0 * (1.63110208134281e-12 - fConst43)) + -1.69410806769336e-10);
207 	double fConst45 = (7.1405461011122294e-14 * fConst0);
208 	fConst46 = ((fConst0 * (7.4421674350198897e-12 - fConst45)) + -3.2160747437094799e-11);
209 	double fConst47 = (7.1461510663606604e-14 * fConst0);
210 	fConst48 = ((fConst0 * (fConst47 + -7.4478704182697307e-12)) + 3.2172158717349402e-11);
211 	double fConst49 = (2.5178624720752199e-17 * fConst0);
212 	fConst50 = ((fConst0 * (fConst49 + -1.61641996632585e-12)) + 1.6091784998802001e-10);
213 	double fConst51 = (5.0209633120131098e-20 * fConst0);
214 	fConst52 = ((fConst0 * (3.2183569997603901e-15 - fConst51)) + 1.5333557259551101e-54);
215 	double fConst53 = (1.4150728872321699e-16 * fConst0);
216 	fConst54 = (-7.6075416727176396e-56 - fConst53);
217 	double fConst55 = (1.4155749835633699e-16 * fConst0);
218 	fConst56 = (fConst55 + 7.1771534334600597e-56);
219 	double fConst57 = (7.0961660076031701e-14 * fConst0);
220 	fConst58 = (fConst57 + -7.0753644361608499e-12);
221 	double fConst59 = (7.0986838700752397e-14 * fConst0);
222 	fConst60 = (7.0778749178168597e-12 - fConst59);
223 	fConst61 = ((fConst0 * (-3.24149709132582e-15 - fConst37)) + -1.4628895453456301e-14);
224 	fConst62 = ((fConst0 * (-6.4321494874189598e-16 - fConst39)) + 3.45797348759893e-55);
225 	fConst63 = ((fConst0 * (fConst41 + 6.4344317434698802e-16)) + -3.2623424697545702e-55);
226 	fConst64 = ((fConst0 * (fConst43 + 1.63110208134281e-12)) + 1.69410806769336e-10);
227 	fConst65 = ((fConst0 * (fConst45 + 7.4421674350198897e-12)) + 3.2160747437094799e-11);
228 	fConst66 = ((fConst0 * (-7.4478704182697307e-12 - fConst47)) + -3.2172158717349402e-11);
229 	fConst67 = ((fConst0 * (-1.61641996632585e-12 - fConst49)) + -1.6091784998802001e-10);
230 	fConst68 = ((fConst0 * (fConst51 + 3.2183569997603901e-15)) + -1.5333557259551101e-54);
231 	fConst69 = (fConst53 + -7.6075416727176396e-56);
232 	fConst70 = (7.1771534334600597e-56 - fConst55);
233 	fConst71 = (-7.0753644361608499e-12 - fConst57);
234 	fConst72 = (fConst59 + 7.0778749178168597e-12);
235 	double fConst73 = mydsp_faustpower3_f(fConst0);
236 	fConst74 = (0.0 - (4.1501032582223993e-16 * fConst73));
237 	fConst75 = (4.0947065519365001e-14 * fConst73);
238 	fConst76 = mydsp_faustpower2_f(fConst0);
239 	double fConst77 = (2.0681037922594001e-13 * fConst0);
240 	fConst78 = (fConst77 + 4.7473961557966103e-12);
241 	double fConst79 = (1.6544830338075201e-13 * fConst0);
242 	fConst80 = (-3.7979169246372897e-12 - fConst79);
243 	double fConst81 = (1.4068733280676199e-13 * fConst0);
244 	fConst82 = (-3.22952119441946e-12 - fConst81);
245 	double fConst83 = (1.1254986624540899e-13 * fConst0);
246 	fConst84 = (fConst83 + 2.5836169555355699e-12);
247 	double fConst85 = (4.2206199842028502e-13 * fConst0);
248 	double fConst86 = (3.3764959873622802e-13 * fConst0);
249 	fConst87 = (fConst76 * ((fConst85 + 3.22952119441946e-12) + (-2.5836169555355699e-12 - fConst86)));
250 	fConst88 = (0.0 - (8.4695984861682025e-16 * fConst73));
251 	fConst89 = (8.356543983544001e-14 * fConst73);
252 	double fConst90 = (6.2043113767781895e-13 * fConst0);
253 	fConst91 = (-4.7473961557966103e-12 - fConst90);
254 	double fConst92 = (4.9634491014225504e-13 * fConst0);
255 	fConst93 = (fConst92 + 3.7979169246372897e-12);
256 	fConst94 = (0.0 - (1.2450309774667304e-15 * fConst73));
257 	fConst95 = (1.2284119655809702e-13 * fConst73);
258 	fConst96 = (fConst90 + -4.7473961557966103e-12);
259 	fConst97 = (3.7979169246372897e-12 - fConst92);
260 	fConst98 = (3.22952119441946e-12 - fConst85);
261 	fConst99 = (fConst86 + -2.5836169555355699e-12);
262 	fConst100 = (fConst76 * ((2.5836169555355699e-12 - fConst83) + (fConst81 + -3.22952119441946e-12)));
263 	fConst101 = (0.0 - (2.8231994953894002e-16 * fConst73));
264 	fConst102 = (2.7855146611813e-14 * fConst73);
265 	fConst103 = (4.7473961557966103e-12 - fConst77);
266 	fConst104 = (fConst79 + -3.7979169246372897e-12);
267 
268 	sample_rate = 96000;
269 	smpCl.setup(fSampleRate, sample_rate);
270 	fSampleRate = sample_rate;
271 
272 	clear_state_f();
273 }
274 
init_static(unsigned int sample_rate,PluginDef * p)275 void Dsp::init_static(unsigned int sample_rate, PluginDef *p)
276 {
277 	static_cast<Dsp*>(p)->init(sample_rate);
278 }
279 
compute(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0)280 void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
281 {
282 	double 	fSlowV0 = (0.0010000000000000009 * double(fsliderV0));
283 
284 	double fSlow0 = (0.0070000000000000062 * (1.0 - double(fVslider0)));
285 	double fSlow1 = (0.0070000000000000062 * (1.0 - double(fVslider1)));
286 	double fSlow2 = (0.0070000000000000062 * double(fVslider2));
287 	for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
288 		fRec1[0] = (fSlow0 + (0.99299999999999999 * fRec1[1]));
289 		fRec2[0] = (fSlow1 + (0.99299999999999999 * fRec2[1]));
290 		fRec3[0] = (fSlow2 + (0.99299999999999999 * fRec3[1]));
291 		double fTemp0 = (((fRec1[0] * ((fConst0 * (fConst61 + (fRec2[0] * (fConst62 + (fConst63 * fRec2[0]))))) + 6.9697987543413902e-54)) + (fConst0 * (fConst64 + ((fRec2[0] * (fConst65 + (fConst66 * fRec2[0]))) + (fRec3[0] * (fConst67 + ((fRec1[0] * (fConst68 + (fConst0 * (fRec2[0] * (fConst69 + (fConst70 * fRec2[0])))))) + (fConst0 * (fRec2[0] * (fConst71 + (fConst72 * fRec2[0]))))))))))) + 7.3144477267281697e-10);
292 		fRec0[0] = (double(input0[i0]) - ((((fRec0[1] * (((fRec1[0] * ((fConst0 * (fConst2 + (fRec2[0] * (fConst4 + (fConst6 * fRec2[0]))))) + 2.0909396263024202e-53)) + (fConst0 * (fConst8 + ((fRec2[0] * (fConst10 + (fConst12 * fRec2[0]))) + (fRec3[0] * (fConst14 + ((fRec1[0] * (fConst16 + (fConst0 * (fRec2[0] * (fConst18 + (fConst20 * fRec2[0])))))) + (fConst0 * (fRec2[0] * (fConst22 + (fConst24 * fRec2[0]))))))))))) + 2.19433431801845e-09)) + (fRec0[2] * (((fRec1[0] * ((fConst0 * (fConst25 + (fRec2[0] * (fConst26 + (fConst27 * fRec2[0]))))) + 2.0909396263024202e-53)) + (fConst0 * (fConst28 + ((fRec2[0] * (fConst29 + (fConst30 * fRec2[0]))) + (fRec3[0] * (fConst31 + ((fRec1[0] * (fConst32 + (fConst0 * (fRec2[0] * (fConst33 + (fConst34 * fRec2[0])))))) + (fConst0 * (fRec2[0] * (fConst35 + (fConst36 * fRec2[0]))))))))))) + 2.19433431801845e-09))) + (fRec0[3] * (((fRec1[0] * ((fConst0 * (fConst38 + (fRec2[0] * (fConst40 + (fConst42 * fRec2[0]))))) + 6.9697987543413902e-54)) + (fConst0 * (fConst44 + ((fRec2[0] * (fConst46 + (fConst48 * fRec2[0]))) + (fRec3[0] * (fConst50 + ((fRec1[0] * (fConst52 + (fConst0 * (fRec2[0] * (fConst54 + (fConst56 * fRec2[0])))))) + (fConst0 * (fRec2[0] * (fConst58 + (fConst60 * fRec2[0]))))))))))) + 7.3144477267281697e-10))) / fTemp0));
293 		output0[i0] = FAUSTFLOAT((((((fRec0[0] * ((fRec2[0] * ((fConst74 * fRec2[0]) - fConst75)) + (fConst76 * (fConst78 + (fConst80 + (fRec1[0] * (fConst82 + (fConst84 + (fConst0 * (fRec2[0] * (((2.8231994953894002e-16 * fRec2[0]) + -1.1142058644725399e-13) + 1.3927573305906699e-13))))))))))) + (fRec0[1] * ((fRec1[0] * (fConst87 + (fRec2[0] * ((fConst88 * fRec2[0]) - fConst89)))) + (fConst76 * (fConst91 + (fConst93 + (fConst0 * (fRec2[0] * (((1.2450309774667304e-15 * fRec2[0]) + -4.9136478623238799e-13) + 6.1420598279048502e-13))))))))) + (fRec0[2] * ((fRec2[0] * ((fConst94 * fRec2[0]) - fConst95)) + (fConst76 * (fConst96 + (fConst97 + (fRec1[0] * (fConst98 + (fConst99 + (fConst0 * (fRec2[0] * (((8.4695984861682025e-16 * fRec2[0]) + -3.34261759341761e-13) + 4.1782719917720101e-13)))))))))))) + (fRec0[3] * ((fRec1[0] * (fConst100 + (fRec2[0] * ((fConst101 * fRec2[0]) - fConst102)))) + (fConst76 * (fConst103 + (fConst104 + (fConst0 * (fRec2[0] * (((4.1501032582223993e-16 * fRec2[0]) + -1.6378826207746301e-13) + 2.0473532759682801e-13))))))))) / fTemp0));
294 		fRec1[1] = fRec1[0];
295 		fRec2[1] = fRec2[0];
296 		fRec3[1] = fRec3[0];
297 		for (int j0 = 3; (j0 > 0); j0 = (j0 - 1)) {
298 			fRec0[j0] = fRec0[(j0 - 1)];
299 		}
300 	}
301 
302 	FAUSTFLOAT bufCl[smpCl.max_out_count(count)];
303 	int ReCount = smpCl.up(count, output0, bufCl);
304 	for (int i0 = 0; (i0 < ReCount); i0 = (i0 + 1)) {
305 		bufCl[i0] = FAUSTFLOAT(double(asymclip4(double(bufCl[i0]))));
306 	}
307 	smpCl.down(bufCl, output0);
308 
309 	for (int i=0; i<count; i++) {
310 		fRecV0[0] = ((0.999 * fRecV0[1]) + fSlowV0);
311 		output0[i] = (FAUSTFLOAT)((double)output0[i] * fRecV0[0]);
312 		// post processing
313 		fRecV0[1] = fRecV0[0];
314 	}
315 
316 }
317 
compute_static(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0,PluginDef * p)318 void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef *p)
319 {
320 	static_cast<Dsp*>(p)->compute(count, input0, output0);
321 }
322 
register_par(const ParamReg & reg)323 int Dsp::register_par(const ParamReg& reg)
324 {
325 	reg.registerFloatVar("fuzzfacefm.Level",N_("Level"),"S","",&fsliderV0, 0.5, 0.0, 1, 0.01, 0);
326 	reg.registerFloatVar("fuzzfacefm.Drive",N_("Drive"),"S","",&fVslider0, 0.5, 0.0, 1.0, 0.01, 0);
327 	reg.registerFloatVar("fuzzfacefm.Fuzz",N_("Fuzz"),"S","",&fVslider1, 0.5, 0.0, 1.0, 0.01, 0);
328 	reg.registerFloatVar("fuzzfacefm.Input",N_("Input"),"S","",&fVslider2, 0.5, 0.0, 1.0, 0.01, 0);
329 	return 0;
330 }
331 
register_params_static(const ParamReg & reg)332 int Dsp::register_params_static(const ParamReg& reg)
333 {
334 	return static_cast<Dsp*>(reg.plugin)->register_par(reg);
335 }
336 
337 const char *Dsp::glade_def = "\
338 <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
339 <!-- Generated with glade 3.22.1 -->\n\
340 <interface>\n\
341   <requires lib=\"gtk+\" version=\"3.20\"/>\n\
342   <requires lib=\"gxwidgets\" version=\"0.0\"/>\n\
343   <object class=\"GtkWindow\" id=\"window1\">\n\
344     <property name=\"can_focus\">False</property>\n\
345     <child>\n\
346       <placeholder/>\n\
347     </child>\n\
348     <child>\n\
349       <object class=\"GtkBox\" id=\"vbox1\">\n\
350         <property name=\"visible\">True</property>\n\
351         <property name=\"can_focus\">False</property>\n\
352         <property name=\"orientation\">vertical</property>\n\
353         <child>\n\
354           <object class=\"GtkBox\" id=\"rackbox\">\n\
355             <property name=\"visible\">True</property>\n\
356             <property name=\"can_focus\">False</property>\n\
357             <property name=\"spacing\">4</property>\n\
358             <child>\n\
359               <object class=\"GtkBox\" id=\"hbox1\">\n\
360                 <property name=\"visible\">True</property>\n\
361                 <property name=\"can_focus\">False</property>\n\
362                 <property name=\"spacing\">10</property>\n\
363                 <child>\n\
364                   <object class=\"GtkBox\" id=\"vbox2\">\n\
365                     <property name=\"visible\">True</property>\n\
366                     <property name=\"can_focus\">False</property>\n\
367                     <property name=\"orientation\">vertical</property>\n\
368                     <child>\n\
369                       <object class=\"GtkLabel\" id=\"label1:rack_label\">\n\
370                         <property name=\"visible\">True</property>\n\
371                         <property name=\"can_focus\">False</property>\n\
372                         <property name=\"label\" translatable=\"yes\">label</property>\n\
373                       </object>\n\
374                       <packing>\n\
375                         <property name=\"expand\">False</property>\n\
376                         <property name=\"fill\">False</property>\n\
377                         <property name=\"position\">0</property>\n\
378                       </packing>\n\
379                     </child>\n\
380                     <child>\n\
381                       <object class=\"GxSmallKnobR\" id=\"gxbigknob1\">\n\
382                         <property name=\"visible\">True</property>\n\
383                         <property name=\"can_focus\">True</property>\n\
384                         <property name=\"receives_default\">True</property>\n\
385                         <property name=\"var_id\">fuzzfacefm.Input</property>\n\
386                         <property name=\"label_ref\">label1:rack_label</property>\n\
387                       </object>\n\
388                       <packing>\n\
389                         <property name=\"expand\">False</property>\n\
390                         <property name=\"fill\">False</property>\n\
391                         <property name=\"position\">1</property>\n\
392                       </packing>\n\
393                     </child>\n\
394                   </object>\n\
395                   <packing>\n\
396                     <property name=\"expand\">False</property>\n\
397                     <property name=\"fill\">False</property>\n\
398                     <property name=\"position\">0</property>\n\
399                   </packing>\n\
400                 </child>\n\
401                 <child>\n\
402                   <object class=\"GtkBox\" id=\"vbox3\">\n\
403                     <property name=\"visible\">True</property>\n\
404                     <property name=\"can_focus\">False</property>\n\
405                     <property name=\"orientation\">vertical</property>\n\
406                     <child>\n\
407                       <object class=\"GtkLabel\" id=\"label2:rack_label\">\n\
408                         <property name=\"visible\">True</property>\n\
409                         <property name=\"can_focus\">False</property>\n\
410                         <property name=\"label\" translatable=\"yes\">label</property>\n\
411                       </object>\n\
412                       <packing>\n\
413                         <property name=\"expand\">False</property>\n\
414                         <property name=\"fill\">False</property>\n\
415                         <property name=\"position\">0</property>\n\
416                       </packing>\n\
417                     </child>\n\
418                     <child>\n\
419                       <object class=\"GxSmallKnobR\" id=\"gxbigknob2\">\n\
420                         <property name=\"visible\">True</property>\n\
421                         <property name=\"can_focus\">True</property>\n\
422                         <property name=\"receives_default\">True</property>\n\
423                         <property name=\"var_id\">fuzzfacefm.Drive</property>\n\
424                         <property name=\"label_ref\">label2:rack_label</property>\n\
425                       </object>\n\
426                       <packing>\n\
427                         <property name=\"expand\">False</property>\n\
428                         <property name=\"fill\">False</property>\n\
429                         <property name=\"position\">1</property>\n\
430                       </packing>\n\
431                     </child>\n\
432                   </object>\n\
433                   <packing>\n\
434                     <property name=\"expand\">False</property>\n\
435                     <property name=\"fill\">False</property>\n\
436                     <property name=\"position\">1</property>\n\
437                   </packing>\n\
438                 </child>\n\
439                 <child>\n\
440                   <object class=\"GtkBox\" id=\"vbox4\">\n\
441                     <property name=\"visible\">True</property>\n\
442                     <property name=\"can_focus\">False</property>\n\
443                     <property name=\"orientation\">vertical</property>\n\
444                     <child>\n\
445                       <object class=\"GtkLabel\" id=\"label3:rack_label\">\n\
446                         <property name=\"visible\">True</property>\n\
447                         <property name=\"can_focus\">False</property>\n\
448                         <property name=\"label\" translatable=\"yes\">label</property>\n\
449                       </object>\n\
450                       <packing>\n\
451                         <property name=\"expand\">False</property>\n\
452                         <property name=\"fill\">False</property>\n\
453                         <property name=\"position\">0</property>\n\
454                       </packing>\n\
455                     </child>\n\
456                     <child>\n\
457                       <object class=\"GxSmallKnobR\" id=\"gxbigknob3\">\n\
458                         <property name=\"visible\">True</property>\n\
459                         <property name=\"can_focus\">True</property>\n\
460                         <property name=\"receives_default\">True</property>\n\
461                         <property name=\"var_id\">fuzzfacefm.Fuzz</property>\n\
462                         <property name=\"label_ref\">label3:rack_label</property>\n\
463                       </object>\n\
464                       <packing>\n\
465                         <property name=\"expand\">False</property>\n\
466                         <property name=\"fill\">False</property>\n\
467                         <property name=\"position\">1</property>\n\
468                       </packing>\n\
469                     </child>\n\
470                   </object>\n\
471                   <packing>\n\
472                     <property name=\"expand\">False</property>\n\
473                     <property name=\"fill\">False</property>\n\
474                     <property name=\"position\">2</property>\n\
475                   </packing>\n\
476                 </child>\n\
477                 <child>\n\
478                   <object class=\"GtkBox\" id=\"vbox5\">\n\
479                     <property name=\"visible\">True</property>\n\
480                     <property name=\"can_focus\">False</property>\n\
481                     <property name=\"orientation\">vertical</property>\n\
482                     <child>\n\
483                       <object class=\"GtkLabel\" id=\"label4:rack_label\">\n\
484                         <property name=\"visible\">True</property>\n\
485                         <property name=\"can_focus\">False</property>\n\
486                         <property name=\"label\" translatable=\"yes\">label</property>\n\
487                       </object>\n\
488                       <packing>\n\
489                         <property name=\"expand\">False</property>\n\
490                         <property name=\"fill\">False</property>\n\
491                         <property name=\"position\">0</property>\n\
492                       </packing>\n\
493                     </child>\n\
494                     <child>\n\
495                       <object class=\"GxMidKnob\" id=\"gxbigknob4\">\n\
496                         <property name=\"visible\">True</property>\n\
497                         <property name=\"can_focus\">True</property>\n\
498                         <property name=\"receives_default\">True</property>\n\
499                         <property name=\"var_id\">fuzzfacefm.Level</property>\n\
500                         <property name=\"label_ref\">label4:rack_label</property>\n\
501                       </object>\n\
502                       <packing>\n\
503                         <property name=\"expand\">False</property>\n\
504                         <property name=\"fill\">False</property>\n\
505                         <property name=\"position\">1</property>\n\
506                       </packing>\n\
507                     </child>\n\
508                   </object>\n\
509                   <packing>\n\
510                     <property name=\"expand\">False</property>\n\
511                     <property name=\"fill\">False</property>\n\
512                     <property name=\"position\">3</property>\n\
513                   </packing>\n\
514                 </child>\n\
515               </object>\n\
516               <packing>\n\
517                 <property name=\"expand\">True</property>\n\
518                 <property name=\"fill\">False</property>\n\
519                 <property name=\"pack_type\">end</property>\n\
520                 <property name=\"position\">0</property>\n\
521               </packing>\n\
522             </child>\n\
523           </object>\n\
524           <packing>\n\
525             <property name=\"expand\">True</property>\n\
526             <property name=\"fill\">False</property>\n\
527             <property name=\"position\">0</property>\n\
528           </packing>\n\
529         </child>\n\
530         <child>\n\
531           <object class=\"GtkBox\" id=\"minibox\">\n\
532             <property name=\"visible\">True</property>\n\
533             <property name=\"can_focus\">False</property>\n\
534             <property name=\"spacing\">4</property>\n\
535             <child>\n\
536               <object class=\"GxHSlider\" id=\"gxhslider1\">\n\
537                 <property name=\"visible\">True</property>\n\
538                 <property name=\"can_focus\">True</property>\n\
539                 <property name=\"receives_default\">True</property>\n\
540                 <property name=\"round_digits\">0</property>\n\
541                 <property name=\"var_id\">fuzzfacefm.Level</property>\n\
542                 <property name=\"show_value\">False</property>\n\
543                 <property name=\"value_position\">right</property>\n\
544                 <property name=\"value_xalign\">0.52000000000000002</property>\n\
545                 <property name=\"label_ref\">label0:rack_label</property>\n\
546               </object>\n\
547               <packing>\n\
548                 <property name=\"expand\">False</property>\n\
549                 <property name=\"fill\">False</property>\n\
550                 <property name=\"position\">0</property>\n\
551               </packing>\n\
552             </child>\n\
553             <child>\n\
554               <object class=\"GtkLabel\" id=\"label0:rack_label\">\n\
555                 <property name=\"visible\">True</property>\n\
556                 <property name=\"can_focus\">False</property>\n\
557                 <property name=\"label\" translatable=\"yes\">Level</property>\n\
558                 <property name=\"xalign\">0</property>\n\
559               </object>\n\
560               <packing>\n\
561                 <property name=\"expand\">False</property>\n\
562                 <property name=\"fill\">False</property>\n\
563                 <property name=\"position\">1</property>\n\
564               </packing>\n\
565             </child>\n\
566           </object>\n\
567           <packing>\n\
568             <property name=\"expand\">True</property>\n\
569             <property name=\"fill\">True</property>\n\
570             <property name=\"position\">1</property>\n\
571           </packing>\n\
572         </child>\n\
573       </object>\n\
574     </child>\n\
575   </object>\n\
576 </interface>\n\
577 ";
578 
load_ui_f(const UiBuilder & b,int form)579 inline int Dsp::load_ui_f(const UiBuilder& b, int form)
580 {
581     if (form & UI_FORM_GLADE) {
582         b.load_glade(glade_def);
583         return 0;
584     }
585     if (form & UI_FORM_STACK) {
586 #define PARAM(p) ("fuzzfacefm" "." p)
587 
588 b.openHorizontalhideBox("");
589     b.create_master_slider(PARAM("Fuzz"), N_("Fuzz"));
590 b.closeBox();
591 b.openHorizontalBox("");
592 
593     b.create_small_rackknobr(PARAM("Input"), N_("Input"));
594 
595     b.create_small_rackknobr(PARAM("Drive"), N_("Drive"));
596 
597     b.create_small_rackknobr(PARAM("Fuzz"), N_("Fuzz"));
598 
599     b.create_small_rackknobr(PARAM("Level"), N_("Level"));
600 b.closeBox();
601 
602 #undef PARAM
603         return 0;
604     }
605 	return -1;
606 }
607 
load_ui_f_static(const UiBuilder & b,int form)608 int Dsp::load_ui_f_static(const UiBuilder& b, int form)
609 {
610 	return static_cast<Dsp*>(b.plugin)->load_ui_f(b, form);
611 }
plugin()612 PluginDef *plugin() {
613 	return new Dsp();
614 }
615 
del_instance(PluginDef * p)616 void Dsp::del_instance(PluginDef *p)
617 {
618 	delete static_cast<Dsp*>(p);
619 }
620 
621 } // end namespace fuzzfacefm
622 } // end namespace pluginlib
623