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