1 // generated from file './/sfp_p1.dsp' by dsp2cc:
2 // Code generated with Faust 0.9.90 (http://faust.grame.fr)
3
4
5 namespace sfp_p1 {
6
7 class Dsp: public PluginLV2 {
8 private:
9 uint32_t fSamplingFreq;
10 FAUSTFLOAT fslider0;
11 FAUSTFLOAT *fslider0_;
12 double fRec0[2];
13 double fConst0;
14 double fConst1;
15 double fConst2;
16 double fConst3;
17 double fConst4;
18 double fConst5;
19 double fConst6;
20 double fConst7;
21 double fConst8;
22 double fConst9;
23 double fConst10;
24 double fConst11;
25 double fConst12;
26 double fConst13;
27 double fConst14;
28 double fConst15;
29 double fConst16;
30 double fConst17;
31 double fConst18;
32 double fConst19;
33 double fConst20;
34 double fConst21;
35 double fConst22;
36 double fConst23;
37 double fConst24;
38 double fConst25;
39 double fConst26;
40 double fConst27;
41 double fConst28;
42 double fConst29;
43 double fConst30;
44 double fConst31;
45 double fConst32;
46 double fConst33;
47 double fConst34;
48 double fConst35;
49 double fConst36;
50 double fConst37;
51 double fConst38;
52 double fConst39;
53 double fVec0[2];
54 double fConst40;
55 double fConst41;
56 double fConst42;
57 double fRec4[2];
58 double fRec3[6];
59 double fConst43;
60 double fConst44;
61 double fConst45;
62 double fConst46;
63 double fConst47;
64 double fConst48;
65 double fConst49;
66 double fConst50;
67 double fConst51;
68 FAUSTFLOAT fslider1;
69 FAUSTFLOAT *fslider1_;
70 double fRec5[2];
71 double fVec1[2];
72 double fConst52;
73 double fRec2[2];
74 double fRec1[5];
75 double fConst53;
76 double fConst54;
77 double fConst55;
78 double fConst56;
79 double fConst57;
80 double fConst58;
81 double fConst59;
82 double fConst60;
83 double fConst61;
84 double fConst62;
85 double fConst63;
86 double fConst64;
87 double fConst65;
88 double fConst66;
89 double fConst67;
90
91 void connect(uint32_t port,void* data);
92 void clear_state_f();
93 void init(uint32_t samplingFreq);
94 void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0);
95
96 static void clear_state_f_static(PluginLV2*);
97 static void init_static(uint32_t samplingFreq, PluginLV2*);
98 static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginLV2*);
99 static void del_instance(PluginLV2 *p);
100 static void connect_static(uint32_t port,void* data, PluginLV2 *p);
101 public:
102 Dsp();
103 ~Dsp();
104 };
105
106
107
Dsp()108 Dsp::Dsp()
109 : PluginLV2() {
110 version = PLUGINLV2_VERSION;
111 id = "sfp";
112 name = N_("SuperFuzz");
113 mono_audio = compute_static;
114 stereo_audio = 0;
115 set_samplerate = init_static;
116 activate_plugin = 0;
117 connect_ports = connect_static;
118 clear_state = clear_state_f_static;
119 delete_instance = del_instance;
120 }
121
~Dsp()122 Dsp::~Dsp() {
123 }
124
clear_state_f()125 inline void Dsp::clear_state_f()
126 {
127 for (int i=0; i<2; i++) fRec0[i] = 0;
128 for (int i=0; i<2; i++) fVec0[i] = 0;
129 for (int i=0; i<2; i++) fRec4[i] = 0;
130 for (int i=0; i<6; i++) fRec3[i] = 0;
131 for (int i=0; i<2; i++) fRec5[i] = 0;
132 for (int i=0; i<2; i++) fVec1[i] = 0;
133 for (int i=0; i<2; i++) fRec2[i] = 0;
134 for (int i=0; i<5; i++) fRec1[i] = 0;
135 }
136
clear_state_f_static(PluginLV2 * p)137 void Dsp::clear_state_f_static(PluginLV2 *p)
138 {
139 static_cast<Dsp*>(p)->clear_state_f();
140 }
141
init(uint32_t samplingFreq)142 inline void Dsp::init(uint32_t samplingFreq)
143 {
144 fSamplingFreq = samplingFreq;
145 fConst0 = min(1.92e+05, max(1.0, (double)fSamplingFreq));
146 fConst1 = double(fConst0);
147 fConst2 = (2.05622157103542e-20 * fConst1);
148 fConst3 = ((fConst1 * ((fConst1 * ((fConst1 * (0 - (1.80052581626697e-17 + fConst2))) - 8.9116016172994e-17)) - 8.06858552953373e-17)) - 2.03513434786736e-17);
149 fConst4 = (1.01060172159129e-20 * fConst1);
150 fConst5 = (2.03513460543809e-17 + (fConst1 * (8.06858604331616e-17 + (fConst1 * (8.0634909264833e-17 + (fConst1 * (2.87093333481566e-18 + fConst4)))))));
151 fConst6 = (1.84708529522986e-19 * fConst1);
152 fConst7 = (9.13123542662614e-16 + (fConst1 * (2.31469014072784e-15 + (fConst1 * (1.36914113807875e-15 + (fConst1 * (1.83475075894458e-16 + fConst6)))))));
153 fConst8 = (9.09577352129774e-21 * fConst1);
154 fConst9 = (5.54006149590308e-19 + (fConst1 * (fConst8 - 2.72598623324966e-19)));
155 fConst10 = (3.07685811911133e-18 * fConst1);
156 fConst11 = (4.08800058161684e-16 + (fConst1 * (fConst10 - 1.00183267050103e-16)));
157 fConst12 = (1.62091769212376e-18 * fConst1);
158 fConst13 = ((fConst1 * (5.25997200776013e-17 - fConst12)) - 2.10421942979062e-16);
159 fConst14 = ((fConst1 * (8.06858552953373e-17 + (fConst1 * ((fConst1 * (1.80052581626697e-17 - fConst2)) - 8.9116016172994e-17)))) - 2.03513434786736e-17);
160 fConst15 = (2.03513460543809e-17 + (fConst1 * ((fConst1 * (8.0634909264833e-17 + (fConst1 * (fConst4 - 2.87093333481566e-18)))) - 8.06858604331616e-17)));
161 fConst16 = (9.13123542662614e-16 + (fConst1 * ((fConst1 * (1.36914113807875e-15 + (fConst1 * (fConst6 - 1.83475075894458e-16)))) - 2.31469014072784e-15)));
162 fConst17 = (8.22488628414166e-20 * fConst1);
163 fConst18 = faustpower<2>(fConst1);
164 fConst19 = ((fConst1 * (1.61371710590675e-16 + (fConst18 * (fConst17 - 3.60105163253394e-17)))) - 8.14053739146943e-17);
165 fConst20 = (4.04240688636518e-20 * fConst1);
166 fConst21 = (8.14053842175235e-17 + (fConst1 * ((fConst18 * (5.74186666963131e-18 - fConst20)) - 1.61371720866323e-16)));
167 fConst22 = (7.38834118091945e-19 * fConst1);
168 fConst23 = (3.65249417065045e-15 + (fConst1 * ((fConst18 * (3.66950151788917e-16 - fConst22)) - 4.62938028145568e-15)));
169 fConst24 = ((fConst18 * (1.78232032345988e-16 - (1.23373294262125e-19 * fConst18))) - 1.22108060872041e-16);
170 fConst25 = (1.22108076326285e-16 + (fConst18 * ((6.06361032954776e-20 * fConst18) - 1.61269818529666e-16)));
171 fConst26 = (5.47874125597568e-15 + (fConst18 * ((1.10825117713792e-18 * fConst18) - 2.7382822761575e-15)));
172 fConst27 = ((fConst1 * ((fConst18 * (3.60105163253394e-17 + fConst17)) - 1.61371710590675e-16)) - 8.14053739146943e-17);
173 fConst28 = (8.14053842175235e-17 + (fConst1 * (1.61371720866323e-16 + (fConst18 * (0 - (5.74186666963131e-18 + fConst20))))));
174 fConst29 = (3.65249417065045e-15 + (fConst1 * (4.62938028145568e-15 + (fConst18 * (0 - (3.66950151788917e-16 + fConst22))))));
175 fConst30 = (3.54359308063424e-24 * fConst1);
176 fConst31 = (1.94643920812984e-18 + (fConst1 * ((fConst1 * (2.77200698725965e-17 + (fConst1 * ((fConst1 * (1.80920540450679e-20 - fConst30)) - 9.38774091555291e-18)))) - 2.0298803841787e-17)));
177 fConst32 = (1.77179654031712e-23 * fConst1);
178 fConst33 = (9.73219604064918e-18 + (fConst1 * ((fConst1 * (2.77200698725965e-17 + (fConst1 * (9.38774091555291e-18 + (fConst1 * (fConst32 - 5.42761621352036e-20)))))) - 6.08964115253609e-17)));
179 fConst34 = (3.54359308063424e-23 * fConst1);
180 fConst35 = (1.94643920812984e-17 + (fConst1 * ((fConst1 * ((fConst1 * (1.87754818311058e-17 + (fConst1 * (3.61841080901358e-20 - fConst34)))) - 5.54401397451929e-17)) - 4.0597607683574e-17)));
181 fConst36 = (1.94643920812984e-17 + (fConst1 * (4.0597607683574e-17 + (fConst1 * ((fConst1 * ((fConst1 * (3.61841080901358e-20 + fConst34)) - 1.87754818311058e-17)) - 5.54401397451929e-17)))));
182 fConst37 = (9.73219604064918e-18 + (fConst1 * (6.08964115253609e-17 + (fConst1 * (2.77200698725965e-17 + (fConst1 * ((fConst1 * (0 - (5.42761621352036e-20 + fConst32))) - 9.38774091555291e-18)))))));
183 fConst38 = (1.94643920812984e-18 + (fConst1 * (2.0298803841787e-17 + (fConst1 * (2.77200698725965e-17 + (fConst1 * (9.38774091555291e-18 + (fConst1 * (1.80920540450679e-20 + fConst30)))))))));
184 fConst39 = (1.0 / fConst38);
185 fConst40 = (470.33999466970965 / fConst0);
186 fConst41 = (1 - fConst40);
187 fConst42 = (1.0 / (1 + fConst40));
188 fConst43 = (2.54522299651678e-19 * fConst1);
189 fConst44 = ((fConst1 * (4.27785660896858e-17 - fConst43)) - 1.64186678306723e-17);
190 fConst45 = (7.63566898955033e-19 * fConst1);
191 fConst46 = ((fConst1 * (fConst45 - 4.27785660896858e-17)) - 1.64186678306723e-17);
192 fConst47 = (5.09044599303355e-19 * fConst1);
193 fConst48 = (3.28373356613446e-17 + (fConst1 * (0 - (8.55571321793716e-17 + fConst47))));
194 fConst49 = (3.28373356613446e-17 + (fConst1 * (8.55571321793716e-17 - fConst47)));
195 fConst50 = ((fConst1 * (4.27785660896858e-17 + fConst45)) - 1.64186678306723e-17);
196 fConst51 = ((fConst1 * (0 - (4.27785660896858e-17 + fConst43))) - 1.64186678306723e-17);
197 fConst52 = (fConst18 / fConst38);
198 fConst53 = ((5.45746411277865e-20 * fConst18) - 1.10801229918062e-18);
199 fConst54 = ((1.8461148714668e-17 * fConst18) - 8.17600116323368e-16);
200 fConst55 = (4.20843885958123e-16 - (9.72550615274259e-18 * fConst18));
201 fConst56 = (5.54006149590308e-19 + (fConst1 * (2.72598623324966e-19 + fConst8)));
202 fConst57 = (4.08800058161684e-16 + (fConst1 * (1.00183267050103e-16 + fConst10)));
203 fConst58 = ((fConst1 * (0 - (5.25997200776013e-17 + fConst12))) - 2.10421942979062e-16);
204 fConst59 = (1.23074324764453e-17 * fConst1);
205 fConst60 = (2.00366534100206e-16 + fConst59);
206 fConst61 = (3.6383094085191e-20 * fConst1);
207 fConst62 = (0 - (5.45197246649933e-19 + fConst61));
208 fConst63 = (6.48367076849506e-18 * fConst1);
209 fConst64 = (1.05199440155203e-16 + fConst63);
210 fConst65 = (5.45197246649933e-19 - fConst61);
211 fConst66 = (2.00366534100206e-16 - fConst59);
212 fConst67 = (fConst63 - 1.05199440155203e-16);
213 clear_state_f();
214 }
215
init_static(uint32_t samplingFreq,PluginLV2 * p)216 void Dsp::init_static(uint32_t samplingFreq, PluginLV2 *p)
217 {
218 static_cast<Dsp*>(p)->init(samplingFreq);
219 }
220
compute(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0)221 void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
222 {
223 #define fslider0 (*fslider0_)
224 #define fslider1 (*fslider1_)
225 double fSlow0 = (0.007000000000000006 * double(fslider0));
226 double fSlow1 = (0.007000000000000006 * double(fslider1));
227 for (int i=0; i<count; i++) {
228 fRec0[0] = (fSlow0 + (0.993 * fRec0[1]));
229 double fTemp0 = (fConst7 + (fRec0[0] * (fConst5 + (fConst3 * fRec0[0]))));
230 double fTemp1 = (double)input0[i];
231 fVec0[0] = fTemp1;
232 fRec4[0] = (fConst42 * ((fVec0[0] + (fConst41 * fRec4[1])) - fVec0[1]));
233 fRec3[0] = (fRec4[0] - (fConst39 * (((((fConst37 * fRec3[1]) + (fConst36 * fRec3[2])) + (fConst35 * fRec3[3])) + (fConst33 * fRec3[4])) + (fConst31 * fRec3[5]))));
234 fRec5[0] = (fSlow1 + (0.993 * fRec5[1]));
235 double fTemp2 = (fRec5[0] * ((((((fConst51 * fRec3[0]) + (fConst50 * fRec3[1])) + (fConst49 * fRec3[2])) + (fConst48 * fRec3[3])) + (fConst46 * fRec3[4])) + (fConst44 * fRec3[5])));
236 fVec1[0] = fTemp2;
237 fRec2[0] = (fConst42 * ((fConst41 * fRec2[1]) + (fConst52 * (fVec1[0] - fVec1[1]))));
238 fRec1[0] = (fRec2[0] - (((((fRec1[1] * (fConst29 + (fRec0[0] * (fConst28 + (fConst27 * fRec0[0]))))) + (fRec1[2] * (fConst26 + (fRec0[0] * (fConst25 + (fConst24 * fRec0[0])))))) + (fRec1[3] * (fConst23 + (fRec0[0] * (fConst21 + (fConst19 * fRec0[0])))))) + (fRec1[4] * (fConst16 + (fRec0[0] * (fConst15 + (fConst14 * fRec0[0])))))) / fTemp0));
239 output0[i] = (FAUSTFLOAT)(fConst18 * ((((fConst1 * ((fRec1[3] * (fConst67 + (fRec0[0] * (fConst66 + (fConst65 * fRec0[0]))))) + (fRec1[1] * (fConst64 + (fRec0[0] * ((fConst62 * fRec0[0]) - fConst60)))))) + ((fRec1[0] * (fConst58 + (fRec0[0] * (fConst57 + (fConst56 * fRec0[0]))))) + (fRec1[2] * (fConst55 + (fRec0[0] * (fConst54 + (fConst53 * fRec0[0]))))))) + (fRec1[4] * (fConst13 + (fRec0[0] * (fConst11 + (fConst9 * fRec0[0])))))) / fTemp0));
240 // post processing
241 for (int i=4; i>0; i--) fRec1[i] = fRec1[i-1];
242 fRec2[1] = fRec2[0];
243 fVec1[1] = fVec1[0];
244 fRec5[1] = fRec5[0];
245 for (int i=5; i>0; i--) fRec3[i] = fRec3[i-1];
246 fRec4[1] = fRec4[0];
247 fVec0[1] = fVec0[0];
248 fRec0[1] = fRec0[0];
249 }
250 #undef fslider0
251 #undef fslider1
252 }
253
compute_static(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0,PluginLV2 * p)254 void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginLV2 *p)
255 {
256 static_cast<Dsp*>(p)->compute(count, input0, output0);
257 }
258
259
connect(uint32_t port,void * data)260 void Dsp::connect(uint32_t port,void* data)
261 {
262 switch ((PortIndex)port)
263 {
264 case EXPANDER:
265 fslider1_ = (float*)data; // , 0.5, 0.0, 1.0, 0.01
266 break;
267 case TRIM:
268 fslider0_ = (float*)data; // , 0.25, 0.0, 0.49, 0.01
269 break;
270 default:
271 break;
272 }
273 }
274
connect_static(uint32_t port,void * data,PluginLV2 * p)275 void Dsp::connect_static(uint32_t port,void* data, PluginLV2 *p)
276 {
277 static_cast<Dsp*>(p)->connect(port, data);
278 }
279
280
plugin()281 PluginLV2 *plugin() {
282 return new Dsp();
283 }
284
del_instance(PluginLV2 * p)285 void Dsp::del_instance(PluginLV2 *p)
286 {
287 delete static_cast<Dsp*>(p);
288 }
289
290 /*
291 typedef enum
292 {
293 EXPANDER,
294 TRIM,
295 } PortIndex;
296 */
297
298 } // end namespace sfp_p1
299