Guitarix
gx_drumseq.cc
Go to the documentation of this file.
1 // generated from file '../src/plugins/drumseq.dsp' by dsp2cc:
2 // Code generated with Faust 0.9.73 (http://faust.grame.fr)
3 
4 
5 
6 
7 inline void DrumSequencer::clear_state_f()
8 {
9  for (int i=0; i<2; i++) iVec0[i] = 0;
10  for (int i=0; i<2; i++) fRec0[i] = 0;
11  for (int i=0; i<2; i++) fVec1[i] = 0;
12  for (int i=0; i<2; i++) fRec3[i] = 0;
13  for (int i=0; i<2; i++) iRec1[i] = 0;
14  for (int i=0; i<2; i++) fRec2[i] = 0;
15  for (int i=0; i<2; i++) fRec4[i] = 0;
16  for (int i=0; i<2; i++) fRec5[i] = 0;
17  for (int i=0; i<2; i++) fVec2[i] = 0;
18  for (int i=0; i<2; i++) iRec6[i] = 0;
19  for (int i=0; i<2; i++) fRec7[i] = 0;
20  for (int i=0; i<2; i++) fRec8[i] = 0;
21  for (int i=0; i<2; i++) fRec9[i] = 0;
22  for (int i=0; i<2; i++) iRec12[i] = 0;
23  for (int i=0; i<2; i++) fRec11[i] = 0;
24  for (int i=0; i<3; i++) fRec10[i] = 0;
25  for (int i=0; i<2; i++) iRec13[i] = 0;
26  for (int i=0; i<2; i++) fRec14[i] = 0;
27  for (int i=0; i<2; i++) fRec16[i] = 0;
28  for (int i=0; i<3; i++) fRec15[i] = 0;
29  for (int i=0; i<2; i++) iRec17[i] = 0;
30  for (int i=0; i<2; i++) fRec18[i] = 0;
31  for (int i=0; i<2; i++) fRec19[i] = 0;
32  for (int i=0; i<2; i++) fVec3[i] = 0;
33  for (int i=0; i<2; i++) fRec20[i] = 0;
34  for (int i=0; i<2; i++) fRec25[i] = 0;
35  for (int i=0; i<2; i++) fVec4[i] = 0;
36  for (int i=0; i<64; i++) fVec5[i] = 0;
37  for (int i=0; i<2; i++) fRec26[i] = 0;
38  for (int i=0; i<2; i++) fRec27[i] = 0;
39  for (int i=0; i<2; i++) fRec23[i] = 0;
40  for (int i=0; i<2; i++) fRec24[i] = 0;
41  for (int i=0; i<2; i++) fRec30[i] = 0;
42  for (int i=0; i<2; i++) fRec31[i] = 0;
43  for (int i=0; i<2; i++) fRec28[i] = 0;
44  for (int i=0; i<2; i++) fRec29[i] = 0;
45  for (int i=0; i<2; i++) fRec34[i] = 0;
46  for (int i=0; i<2; i++) fRec35[i] = 0;
47  for (int i=0; i<2; i++) fRec32[i] = 0;
48  for (int i=0; i<2; i++) fRec33[i] = 0;
49  for (int i=0; i<2; i++) fRec38[i] = 0;
50  for (int i=0; i<2; i++) fRec39[i] = 0;
51  for (int i=0; i<2; i++) fRec36[i] = 0;
52  for (int i=0; i<2; i++) fRec37[i] = 0;
53  for (int i=0; i<2; i++) fVec6[i] = 0;
54  for (int i=0; i<2; i++) fRec22[i] = 0;
55  for (int i=0; i<3; i++) fRec21[i] = 0;
56  for (int i=0; i<2; i++) fRec42[i] = 0;
57  for (int i=0; i<2; i++) iRec40[i] = 0;
58  for (int i=0; i<2; i++) fRec41[i] = 0;
59  for (int i=0; i<3; i++) fRec43[i] = 0;
60  for (int i=0; i<2; i++) fRec44[i] = 0;
61  for (int i=0; i<2; i++) fVec7[i] = 0;
62  for (int i=0; i<2; i++) fRec45[i] = 0;
63  for (int i=0; i<2; i++) fRec49[i] = 0;
64  for (int i=0; i<3; i++) fRec48[i] = 0;
65  for (int i=0; i<2; i++) fVec8[i] = 0;
66  for (int i=0; i<2; i++) fRec47[i] = 0;
67  for (int i=0; i<3; i++) fRec46[i] = 0;
68  for (int i=0; i<2; i++) fRec52[i] = 0;
69  for (int i=0; i<2; i++) iRec50[i] = 0;
70  for (int i=0; i<2; i++) fRec51[i] = 0;
71  for (int i=0; i<2; i++) fRec57[i] = 0;
72  for (int i=0; i<2; i++) fRec58[i] = 0;
73  for (int i=0; i<2; i++) fRec59[i] = 0;
74  for (int i=0; i<2; i++) fRec55[i] = 0;
75  for (int i=0; i<2; i++) fRec56[i] = 0;
76  for (int i=0; i<2; i++) fRec54[i] = 0;
77  for (int i=0; i<3; i++) fRec53[i] = 0;
78  for (int i=0; i<2; i++) fRec62[i] = 0;
79  for (int i=0; i<2; i++) iRec60[i] = 0;
80  for (int i=0; i<2; i++) fRec61[i] = 0;
81  for (int i=0; i<2; i++) fRec63[i] = 0;
82  for (int i=0; i<2; i++) fVec9[i] = 0;
83  for (int i=0; i<2; i++) fRec66[i] = 0;
84  for (int i=0; i<2; i++) iRec64[i] = 0;
85  for (int i=0; i<2; i++) fRec65[i] = 0;
86  for (int i=0; i<2; i++) fRec67[i] = 0;
87  for (int i=0; i<2; i++) fRec68[i] = 0;
88  for (int i=0; i<2; i++) fRec69[i] = 0;
89  for (int i=0; i<2; i++) fRec70[i] = 0;
90  for (int i=0; i<2; i++) fRec73[i] = 0;
91  for (int i=0; i<2; i++) fRec74[i] = 0;
92  for (int i=0; i<2; i++) fRec75[i] = 0;
93  for (int i=0; i<2; i++) fVec10[i] = 0;
94  for (int i=0; i<2; i++) fRec71[i] = 0;
95  for (int i=0; i<2; i++) fRec72[i] = 0;
96  for (int i=0; i<2; i++) iRec76[i] = 0;
97  for (int i=0; i<2; i++) fRec77[i] = 0;
98  for (int i=0; i<2; i++) fRecout[i] = 0;
99  seq_size = min_seq_size();
100 }
101 
102 void DrumSequencer::clear_state_f_static(PluginDef *p)
103 {
104  static_cast<DrumSequencer*>(p)->clear_state_f();
105 }
106 
107 inline void DrumSequencer::init(unsigned int samplingFreq)
108 {
109  fSamplingFreq = samplingFreq;
110  iConst0 = min(192000, max(1, fSamplingFreq));
111  fConst1 = double(iConst0);
112  fConst2 = (1.0 / double(int((0.0005 * fConst1))));
113  fConst3 = (1 - (1.0 / pow(1e+03,(13.333333333333334 / double(iConst0)))));
114  fConst4 = (2e+03 / double(iConst0));
115  fConst5 = (1162.3892818282234 / double(iConst0));
116  fConst6 = cos(fConst5);
117  fConst7 = sin(fConst5);
118  fConst8 = (0 - fConst7);
119  fConst9 = (1 - (1.0 / pow(1e+03,(18.181818181818183 / double(iConst0)))));
120  fConst10 = (2073.4511513692632 / double(iConst0));
121  fConst11 = cos(fConst10);
122  fConst12 = sin(fConst10);
123  fConst13 = (0 - fConst12);
124  fConst14 = tan((22116.812281272145 / double(iConst0)));
125  fConst15 = (2 * (1 - (1.0 / faustpower<2>(fConst14))));
126  fConst16 = (1.0 / fConst14);
127  fConst17 = (1 + ((fConst16 - 1.0000000000000004) / fConst14));
128  fConst18 = (1.0 / (1 + ((1.0000000000000004 + fConst16) / fConst14)));
129  fConst19 = (1 + fConst16);
130  fConst20 = (4.656612875245797e-10 / fConst19);
131  fConst21 = (0 - ((1 - fConst16) / fConst19));
132  fConst22 = (1 - (1.0 / pow(1e+03,(5.0 / double(iConst0)))));
133  fConst23 = tan((1643.0529578274618 / double(iConst0)));
134  fConst24 = (1.0 / faustpower<2>(fConst23));
135  fConst25 = (2 * (1 - fConst24));
136  fConst26 = (1.0 / fConst23);
137  fConst27 = (1 + ((fConst26 - 1.0000000000000004) / fConst23));
138  fConst28 = (1.0 / (1 + ((1.0000000000000004 + fConst26) / fConst23)));
139  fConst29 = (0 - fConst26);
140  fConst30 = (1 + fConst26);
141  fConst31 = (4.656612875245797e-10 / fConst30);
142  fConst32 = (0 - ((1 - fConst26) / fConst30));
143  fConst33 = (2 * (0 - fConst24));
144  fConst34 = (1 - (1.0 / pow(1e+03,(5.46448087431694 / double(iConst0)))));
145  fConst35 = (1.0 / double(int((0.1 * fConst1))));
146  fConst36 = (3.141592653589793 / double(iConst0));
147  fConst37 = (1.6e+03 / fConst1);
148  IOTA = 0;
149  fConst38 = max((double)0, min((double)2047, (0.0003125 * fConst1)));
150  iConst39 = int(fConst38);
151  iConst40 = (1 + iConst39);
152  iConst41 = int(iConst40);
153  fConst42 = (0.00015625 * (fConst38 - iConst39));
154  fConst43 = (0.00015625 * (iConst40 - fConst38));
155  fConst44 = (4.572399611740729 / double(iConst0));
156  fConst45 = cos(fConst44);
157  fConst46 = sin(fConst44);
158  fConst47 = (0 - fConst46);
159  fConst48 = (0.72772 * fConst1);
160  fConst49 = (6.283185307179586 / double(iConst0));
161  fConst50 = (20.327952464404543 / double(iConst0));
162  fConst51 = cos(fConst50);
163  fConst52 = sin(fConst50);
164  fConst53 = (0 - fConst52);
165  fConst54 = (3.235294117647059 * fConst1);
166  fConst55 = (326.7256359733385 / double(iConst0));
167  fConst56 = cos(fConst55);
168  fConst57 = sin(fConst55);
169  fConst58 = (0 - fConst57);
170  fConst59 = (52.0 * fConst1);
171  fConst60 = (1498.2980347889782 / double(iConst0));
172  fConst61 = cos(fConst60);
173  fConst62 = sin(fConst60);
174  fConst63 = (0 - fConst62);
175  fConst64 = (238.46153846153845 * fConst1);
176  fConst65 = (1.0 / double(int((0.005 * fConst1))));
177  fConst66 = (1 - (1.0 / pow(1e+03,(1e+01 / double(iConst0)))));
178  fConst67 = (2e+02 / double(iConst0));
179  fConst68 = (1.0 / double(iConst0));
180  fConst69 = (2.0 / double(iConst0));
181  fConst70 = (1.0 / double(int((0.03 * fConst1))));
182  fConst71 = tan((1570.7963267948965 / double(iConst0)));
183  fConst72 = (1.0 / faustpower<2>(fConst71));
184  fConst73 = (2 * (1 - fConst72));
185  fConst74 = (1.0 / fConst71);
186  fConst75 = (1 + ((fConst74 - 1.0000000000000004) / fConst71));
187  fConst76 = (1.0 / (1 + ((1.0000000000000004 + fConst74) / fConst71)));
188  fConst77 = (0 - fConst74);
189  fConst78 = (1 + fConst74);
190  fConst79 = (1.396983862573739e-11 / fConst78);
191  fConst80 = (0 - ((1 - fConst74) / fConst78));
192  fConst81 = (2 * (0 - fConst72));
193  fConst82 = (1.0 / double(int((0.01 * fConst1))));
194  fConst83 = (1 - (1.0 / pow(1e+03,fConst68)));
195  fConst84 = (1e+02 / double(iConst0));
196  fConst85 = tan((3141.592653589793 / double(iConst0)));
197  fConst86 = (2 * (1 - (1.0 / faustpower<2>(fConst85))));
198  fConst87 = (1.0 / fConst85);
199  fConst88 = (1 + ((fConst87 - 1.0000000000000004) / fConst85));
200  fConst89 = (1.0 / (1 + ((1.0000000000000004 + fConst87) / fConst85)));
201  fConst90 = (31.41592653589793 / double(iConst0));
202  fConst91 = cos(fConst90);
203  fConst92 = sin(fConst90);
204  fConst93 = (0 - fConst92);
205  fConst94 = (1.0 / double(int((0.02 * fConst1))));
206  fConst95 = (1 + fConst87);
207  fConst96 = (1.0 / fConst95);
208  fConst97 = (0 - ((1 - fConst87) / fConst95));
209  fConst98 = (1 - (1.0 / pow(1e+03,(2.5 / double(iConst0)))));
210  fConst99 = (1 - (1.0 / pow(1e+03,fConst84)));
211  fConst100 = (565.4866776461628 / double(iConst0));
212  fConst101 = cos(fConst100);
213  fConst102 = sin(fConst100);
214  fConst103 = (0 - fConst102);
215  fConst104 = (452.3893421169302 / double(iConst0));
216  fConst105 = cos(fConst104);
217  fConst106 = sin(fConst104);
218  fConst107 = (0 - fConst106);
219  fConst108 = (480.66367599923836 / double(iConst0));
220  fConst109 = cos(fConst108);
221  fConst110 = sin(fConst108);
222  fConst111 = (0 - fConst110);
223  fConst112 = (0.012345679012345678 * fConst1);
224  fConst113 = (162.0 / fConst1);
225  fConst114 = (0.012345679012345678 * iConst0);
226  counter = 0;
227  step = 0;
228  fSlow1 = 0.0;
229  fSlow3 = 0.0;
230  fSlow5 = 0.0;
231  fSlow7 = 0.0;
232  position = 0.0;
233  clear_state_f();
234 }
235 
236 void DrumSequencer::init_static(unsigned int samplingFreq, PluginDef *p)
237 {
238  static_cast<DrumSequencer*>(p)->init(samplingFreq);
239 }
240 
241 void always_inline DrumSequencer::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
242 {
243  double fSlow15 = (60/double(fsliderbpm*ftact))*fSamplingFreq;
244  double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * double(fslidersnare))));
245  double fSlow2 = (0.0010000000000000009 * pow(10,(0.05 * double(fsliderhat))));
246  double fSlow4 = (0.0010000000000000009 * pow(10,(0.05 * double(fsliderkick))));
247  double fSlow6 = (0.0010000000000000009 * pow(10,(0.05 * double(fslidertom))));
248  double fSlowgain = (0.0010000000000000009 * pow(10,(0.05 * double(fslidergain))));
249  counter = counter+count;
250  if (counter >= (int)fSlow15) {
251  fSlow1 = double(Vecsnare[step]);
252  if ((int)fSlow15 > 4800) {
253  fSlow3 = double(Vechat[step]);
254  }
255  fSlow5 = double(Veckick[step]);
256  fSlow7 = double(Vectom[step]);
257  int m = int(fSlow15*0.05);
258  int r = rand()%(m+1 - (-m))+ (-m);
259  counter = int(r*fsliderhum);
260  if (step<seq_size) step = step+1;
261  else step = 0;
262  double ph1 = 2300.0/seq_size;
263  position = fmin(2300,fmax(0,double(step*ph1)));
264  //position = double(step);
265  } else {
266  fSlow1 = 0.0;
267  fSlow3 = 0.0;
268  fSlow5 = 0.0;
269  fSlow7 = 0.0;
270  }
271  for (int i=0; i<count; i++) {
272  fRecout[0] = ((0.999 * fRecout[1]) + fSlowgain);
273  iVec0[0] = 1;
274  fRec0[0] = ((0.999 * fRec0[1]) + fSlow0);
275  fVec1[0] = fSlow1;
276  fRec3[0] = ((fRec3[1] + (fSlow1 > fVec1[1])) - (fConst2 * (fRec3[1] > 0.0)));
277  int iTemp0 = (fRec3[0] > 0.0);
278  int iTemp1 = (iTemp0 > 0);
279  iRec1[0] = (iTemp1 & (iRec1[1] | (fRec2[1] >= 1)));
280  int iTemp2 = (iTemp0 <= 0);
281  int iTemp3 = (iTemp2 & (fRec2[1] > 0));
282  fRec2[0] = (((fConst4 * (((iRec1[1] == 0) & iTemp1) & (fRec2[1] < 1))) + (fRec2[1] * (1 - (fConst3 * iTemp3)))) * ((iTemp3 == 0) | (fRec2[1] >= 1e-06)));
283  fRec4[0] = ((fConst7 * fRec5[1]) + (fConst6 * fRec4[1]));
284  fRec5[0] = ((1 + ((fConst6 * fRec5[1]) + (fConst8 * fRec4[1]))) - iVec0[1]);
285  fVec2[0] = 0.25;
286  iRec6[0] = (iTemp1 & (iRec6[1] | (fRec7[1] >= 1)));
287  int iTemp4 = (iTemp2 & (fRec7[1] > 0));
288  fRec7[0] = (((fConst4 * (((iRec6[1] == 0) & iTemp1) & (fRec7[1] < 1))) + (fRec7[1] * (1 - (fConst9 * iTemp4)))) * ((iTemp4 == 0) | (fRec7[1] >= 1e-06)));
289  fRec8[0] = ((fConst12 * fRec9[1]) + (fConst11 * fRec8[1]));
290  fRec9[0] = ((1 + ((fConst11 * fRec9[1]) + (fConst13 * fRec8[1]))) - iVec0[1]);
291  iRec12[0] = (12345 + (1103515245 * iRec12[1]));
292  fRec11[0] = ((fConst21 * fRec11[1]) + (fConst20 * (iRec12[0] + iRec12[1])));
293  fRec10[0] = (fRec11[0] - (fConst18 * ((fConst17 * fRec10[2]) + (fConst15 * fRec10[1]))));
294  iRec13[0] = (iTemp1 & (iRec13[1] | (fRec14[1] >= 1)));
295  int iTemp5 = (iTemp2 & (fRec14[1] > 0));
296  fRec14[0] = (((fConst4 * (((iRec13[1] == 0) & iTemp1) & (fRec14[1] < 1))) + (fRec14[1] * (1 - (fConst22 * iTemp5)))) * ((iTemp5 == 0) | (fRec14[1] >= 1e-06)));
297  fRec16[0] = ((fConst32 * fRec16[1]) + (fConst31 * ((fConst26 * iRec12[0]) + (fConst29 * iRec12[1]))));
298  fRec15[0] = (fRec16[0] - (fConst28 * ((fConst27 * fRec15[2]) + (fConst25 * fRec15[1]))));
299  iRec17[0] = (iTemp1 & (iRec17[1] | (fRec18[1] >= 1)));
300  int iTemp6 = (iTemp2 & (fRec18[1] > 0));
301  fRec18[0] = (((fConst4 * (((iRec17[1] == 0) & iTemp1) & (fRec18[1] < 1))) + (fRec18[1] * (1 - (fConst34 * iTemp6)))) * ((iTemp6 == 0) | (fRec18[1] >= 1e-06)));
302  fRec19[0] = ((0.999 * fRec19[1]) + fSlow2);
303  fVec3[0] = fSlow3;
304  int iTemp7 = (fSlow3 > fVec3[1]);
305  fRec20[0] = ((fRec20[1] + iTemp7) - (fConst35 * (fRec20[1] > 0.0)));
306  double fTemp8 = tan((fConst36 * (12000 - (3000 * fRec20[0]))));
307  double fTemp9 = (1.0 / fTemp8);
308  double fTemp10 = (1 + ((1.0000000000000004 + fTemp9) / fTemp8));
309  double fTemp11 = faustpower<2>(fTemp8);
310  double fTemp12 = (1.0 / fTemp11);
311  double fTemp13 = (1 + fTemp9);
312  fRec25[0] = fmod((fConst37 + fRec25[1]),1);
313  double fTemp14 = faustpower<2>(((2 * fRec25[0]) - 1));
314  fVec4[0] = fTemp14;
315  double fTemp15 = (iVec0[1] * (fVec4[0] - fVec4[1]));
316  fVec5[IOTA&63] = fTemp15;
317  double fTemp16 = (((0.00015625 * fVec5[IOTA&63]) - (fConst43 * fVec5[(IOTA-iConst39)&63])) - (fConst42 * fVec5[(IOTA-iConst41)&63]));
318  fRec26[0] = ((fConst46 * fRec27[1]) + (fConst45 * fRec26[1]));
319  fRec27[0] = ((1 + ((fConst45 * fRec27[1]) + (fConst47 * fRec26[1]))) - iVec0[1]);
320  double fTemp17 = (fConst49 * (2094.4 + (fConst48 * (fRec26[0] * fTemp16))));
321  double fTemp18 = cos(fTemp17);
322  double fTemp19 = sin(fTemp17);
323  fRec23[0] = ((fRec24[1] * fTemp19) + (fRec23[1] * fTemp18));
324  fRec24[0] = ((1 + ((fRec24[1] * fTemp18) + (fRec23[1] * (0 - fTemp19)))) - iVec0[1]);
325  fRec30[0] = ((fConst52 * fRec31[1]) + (fConst51 * fRec30[1]));
326  fRec31[0] = ((1 + ((fConst51 * fRec31[1]) + (fConst53 * fRec30[1]))) - iVec0[1]);
327  double fTemp20 = (fConst49 * (4944.0 + (fConst54 * (fRec30[0] * fTemp16))));
328  double fTemp21 = cos(fTemp20);
329  double fTemp22 = sin(fTemp20);
330  fRec28[0] = ((fRec29[1] * fTemp22) + (fRec28[1] * fTemp21));
331  fRec29[0] = ((1 + ((fRec29[1] * fTemp21) + (fRec28[1] * (0 - fTemp22)))) - iVec0[1]);
332  fRec34[0] = ((fConst57 * fRec35[1]) + (fConst56 * fRec34[1]));
333  fRec35[0] = ((1 + ((fConst56 * fRec35[1]) + (fConst58 * fRec34[1]))) - iVec0[1]);
334  double fTemp23 = (fConst49 * (3847.9999999999995 + (fConst59 * (fRec34[0] * fTemp16))));
335  double fTemp24 = cos(fTemp23);
336  double fTemp25 = sin(fTemp23);
337  fRec32[0] = ((fRec33[1] * fTemp25) + (fRec32[1] * fTemp24));
338  fRec33[0] = ((1 + ((fRec33[1] * fTemp24) + (fRec32[1] * (0 - fTemp25)))) - iVec0[1]);
339  fRec38[0] = ((fConst62 * fRec39[1]) + (fConst61 * fRec38[1]));
340  fRec39[0] = ((1 + ((fConst61 * fRec39[1]) + (fConst63 * fRec38[1]))) - iVec0[1]);
341  double fTemp26 = (fConst49 * (2144.0 + (fConst64 * (fRec38[0] * fTemp16))));
342  double fTemp27 = cos(fTemp26);
343  double fTemp28 = sin(fTemp26);
344  fRec36[0] = ((fRec37[1] * fTemp28) + (fRec36[1] * fTemp27));
345  fRec37[0] = ((1 + ((fRec37[1] * fTemp27) + (fRec36[1] * (0 - fTemp28)))) - iVec0[1]);
346  double fTemp29 = (((fRec36[0] + fRec32[0]) + fRec28[0]) + fRec23[0]);
347  fVec6[0] = fTemp29;
348  fRec22[0] = ((fRec22[1] * (0 - ((1 - fTemp9) / fTemp13))) + (((fVec6[1] * (0 - fTemp9)) + (fVec6[0] / fTemp8)) / fTemp13));
349  fRec21[0] = (fRec22[0] - (((fRec21[2] * (1 + ((fTemp9 - 1.0000000000000004) / fTemp8))) + (2 * (fRec21[1] * (1 - fTemp12)))) / fTemp10));
350  fRec42[0] = ((iTemp7 + fRec42[1]) - (fConst65 * (fRec42[1] > 0.0)));
351  int iTemp30 = (fRec42[0] > 0.0);
352  int iTemp31 = (iTemp30 > 0);
353  iRec40[0] = (iTemp31 & (iRec40[1] | (fRec41[1] >= 1)));
354  int iTemp32 = ((iTemp30 <= 0) & (fRec41[1] > 0));
355  fRec41[0] = (((fConst67 * (((iRec40[1] == 0) & iTemp31) & (fRec41[1] < 1))) + (fRec41[1] * (1 - (fConst66 * iTemp32)))) * ((iTemp32 == 0) | (fRec41[1] >= 1e-06)));
356  double fTemp33 = (9000 + (6000 * fRec20[0]));
357  double fTemp34 = (0 - (3.141592653589793 * fTemp33));
358  fRec43[0] = (0 - ((((fRec43[1] * (0 - (fConst69 * fTemp34))) * cos((fConst49 * fTemp33))) + (faustpower<2>((fConst68 * fTemp34)) * fRec43[2])) - fVec6[0]));
359  fRec44[0] = ((0.999 * fRec44[1]) + fSlow4);
360  fVec7[0] = fSlow5;
361  int iTemp35 = (fSlow5 > fVec7[1]);
362  fRec45[0] = ((iTemp35 + fRec45[1]) - (fConst70 * (fRec45[1] > 0.0)));
363  double fTemp36 = tan((fConst36 * (500 + (5500 * fRec45[0]))));
364  double fTemp37 = (1.0 / fTemp36);
365  double fTemp38 = (1 + ((1.0000000000000004 + fTemp37) / fTemp36));
366  double fTemp39 = (1 + fTemp37);
367  fRec49[0] = ((fConst80 * fRec49[1]) + (fConst79 * ((fConst74 * iRec12[0]) + (fConst77 * iRec12[1]))));
368  fRec48[0] = (fRec49[0] - (fConst76 * ((fConst75 * fRec48[2]) + (fConst73 * fRec48[1]))));
369  double fTemp40 = (((fConst72 * fRec48[0]) + (fConst81 * fRec48[1])) + (fConst72 * fRec48[2]));
370  fVec8[0] = fTemp40;
371  fRec47[0] = ((fRec47[1] * (0 - ((1 - fTemp37) / fTemp39))) + (fConst76 * ((fVec8[0] + fVec8[1]) / fTemp39)));
372  fRec46[0] = (fRec47[0] - (((fRec46[2] * (1 + ((fTemp37 - 1.0000000000000004) / fTemp36))) + (2 * (fRec46[1] * (1 - (1.0 / faustpower<2>(fTemp36)))))) / fTemp38));
373  fRec52[0] = ((iTemp35 + fRec52[1]) - (fConst82 * (fRec52[1] > 0.0)));
374  int iTemp41 = (fRec52[0] > 0.0);
375  int iTemp42 = (iTemp41 > 0);
376  iRec50[0] = (iTemp42 & (iRec50[1] | (fRec51[1] >= 1)));
377  int iTemp43 = ((iTemp41 <= 0) & (fRec51[1] > 0));
378  fRec51[0] = (((fConst84 * (((iRec50[1] == 0) & iTemp42) & (fRec51[1] < 1))) + (fRec51[1] * (1 - (fConst83 * iTemp43)))) * ((iTemp43 == 0) | (fRec51[1] >= 1e-06)));
379  fRec57[0] = ((fConst92 * fRec58[1]) + (fConst91 * fRec57[1]));
380  fRec58[0] = ((1 + ((fConst91 * fRec58[1]) + (fConst93 * fRec57[1]))) - iVec0[1]);
381  fRec59[0] = ((fRec59[1] + iTemp35) - (fConst94 * (fRec59[1] > 0.0)));
382  double fTemp44 = (fConst49 * ((50 * (1 + fRec59[0])) + (19.23076923076923 * fRec57[0])));
383  double fTemp45 = cos(fTemp44);
384  double fTemp46 = sin(fTemp44);
385  fRec55[0] = ((fRec56[1] * fTemp46) + (fRec55[1] * fTemp45));
386  fRec56[0] = ((1 + ((fRec56[1] * fTemp45) + (fRec55[1] * (0 - fTemp46)))) - iVec0[1]);
387  fRec54[0] = ((fConst97 * fRec54[1]) + (fConst96 * (fRec55[0] + fRec55[1])));
388  fRec53[0] = (fRec54[0] - (fConst89 * ((fConst88 * fRec53[2]) + (fConst86 * fRec53[1]))));
389  fRec62[0] = ((iTemp35 + fRec62[1]) - (fConst65 * (fRec62[1] > 0.0)));
390  int iTemp47 = (fRec62[0] > 0.0);
391  int iTemp48 = (iTemp47 > 0);
392  iRec60[0] = (iTemp48 & (iRec60[1] | (fRec61[1] >= 1)));
393  int iTemp49 = ((iTemp47 <= 0) & (fRec61[1] > 0));
394  fRec61[0] = (((fConst67 * (((iRec60[1] == 0) & iTemp48) & (fRec61[1] < 1))) + (fRec61[1] * (1 - (fConst98 * iTemp49)))) * ((iTemp49 == 0) | (fRec61[1] >= 1e-06)));
395  fRec63[0] = ((0.999 * fRec63[1]) + fSlow6);
396  fVec9[0] = fSlow7;
397  fRec66[0] = ((fRec66[1] + (fSlow7 > fVec9[1])) - (fConst65 * (fRec66[1] > 0.0)));
398  int iTemp50 = (fRec66[0] > 0.0);
399  int iTemp51 = (iTemp50 > 0);
400  iRec64[0] = (iTemp51 & (iRec64[1] | (fRec65[1] >= 1)));
401  int iTemp52 = (iTemp50 <= 0);
402  int iTemp53 = (iTemp52 & (fRec65[1] > 0));
403  fRec65[0] = (((fConst67 * (((iRec64[1] == 0) & iTemp51) & (fRec65[1] < 1))) + (fRec65[1] * (1 - (fConst99 * iTemp53)))) * ((iTemp53 == 0) | (fRec65[1] >= 1e-06)));
404  fRec67[0] = ((fConst102 * fRec68[1]) + (fConst101 * fRec67[1]));
405  fRec68[0] = ((1 + ((fConst101 * fRec68[1]) + (fConst103 * fRec67[1]))) - iVec0[1]);
406  fRec69[0] = ((fConst106 * fRec70[1]) + (fConst105 * fRec69[1]));
407  fRec70[0] = ((1 + ((fConst105 * fRec70[1]) + (fConst107 * fRec69[1]))) - iVec0[1]);
408  fRec73[0] = ((fConst110 * fRec74[1]) + (fConst109 * fRec73[1]));
409  fRec74[0] = ((1 + ((fConst109 * fRec74[1]) + (fConst111 * fRec73[1]))) - iVec0[1]);
410  fRec75[0] = fmod((1.0 + fRec75[1]),fConst112);
411  double fTemp54 = faustpower<2>(((fConst113 * fRec75[0]) - 1.0));
412  fVec10[0] = fTemp54;
413  double fTemp55 = (fConst49 * ((fConst114 * (fVec2[1] * (fVec10[0] - fVec10[1]))) + (58.84615384615384 * fRec73[0])));
414  double fTemp56 = cos(fTemp55);
415  double fTemp57 = sin(fTemp55);
416  fRec71[0] = ((fRec72[1] * fTemp57) + (fRec71[1] * fTemp56));
417  fRec72[0] = ((1 + ((fRec72[1] * fTemp56) + (fRec71[1] * (0 - fTemp57)))) - iVec0[1]);
418  iRec76[0] = (iTemp51 & (iRec76[1] | (fRec77[1] >= 1)));
419  int iTemp58 = (iTemp52 & (fRec77[1] > 0));
420  fRec77[0] = (((fConst67 * (((iRec76[1] == 0) & iTemp51) & (fRec77[1] < 1))) + (fRec77[1] * (1 - (fConst98 * iTemp58)))) * ((iTemp58 == 0) | (fRec77[1] >= 1e-06)));
421  output0[i] = (FAUSTFLOAT)((double)input0[i] + ((2 * ((((0.25 * (fRec77[0] * ((5 * fRec71[0]) + (0.5 * (fRec69[0] + fRec67[0]))))) + (3 * fRec65[0])) * fRec63[0]) + (((((fConst89 * (fRec61[0] * (fRec53[2] + (fRec53[0] + (2 * fRec53[1]))))) + ((fRec51[0] * (fRec46[2] + (fRec46[0] + (2 * fRec46[1])))) / fTemp38)) * fRec44[0]) + (0.5 * (((fRec41[0] * (fRec43[0] - fRec43[2])) + ((sqrt(fRec41[0]) * (((fRec21[0] / fTemp11) + (2 * (fRec21[1] * (0 - fTemp12)))) + (fRec21[2] / fTemp11))) / fTemp10)) * fRec19[0]))) + (0.1 * (((fConst28 * (fRec18[0] * (((fConst24 * fRec15[0]) + (fConst33 * fRec15[1])) + (fConst24 * fRec15[2])))) + ((fConst18 * (fRec14[0] * (fRec10[2] + (fRec10[0] + (2 * fRec10[1]))))) + ((5.0 * ((0.25 + fRec8[0]) * fRec7[0])) + (5.0 * ((0.25 + fRec4[0]) * fRec2[0]))))) * fRec0[0]))))) * fRecout[0]));
422  // post processing
423  fRec77[1] = fRec77[0];
424  iRec76[1] = iRec76[0];
425  fRec72[1] = fRec72[0];
426  fRec71[1] = fRec71[0];
427  fVec10[1] = fVec10[0];
428  fRec75[1] = fRec75[0];
429  fRec74[1] = fRec74[0];
430  fRec73[1] = fRec73[0];
431  fRec70[1] = fRec70[0];
432  fRec69[1] = fRec69[0];
433  fRec68[1] = fRec68[0];
434  fRec67[1] = fRec67[0];
435  fRec65[1] = fRec65[0];
436  iRec64[1] = iRec64[0];
437  fRec66[1] = fRec66[0];
438  fVec9[1] = fVec9[0];
439  fRec63[1] = fRec63[0];
440  fRec61[1] = fRec61[0];
441  iRec60[1] = iRec60[0];
442  fRec62[1] = fRec62[0];
443  fRec53[2] = fRec53[1]; fRec53[1] = fRec53[0];
444  fRec54[1] = fRec54[0];
445  fRec56[1] = fRec56[0];
446  fRec55[1] = fRec55[0];
447  fRec59[1] = fRec59[0];
448  fRec58[1] = fRec58[0];
449  fRec57[1] = fRec57[0];
450  fRec51[1] = fRec51[0];
451  iRec50[1] = iRec50[0];
452  fRec52[1] = fRec52[0];
453  fRec46[2] = fRec46[1]; fRec46[1] = fRec46[0];
454  fRec47[1] = fRec47[0];
455  fVec8[1] = fVec8[0];
456  fRec48[2] = fRec48[1]; fRec48[1] = fRec48[0];
457  fRec49[1] = fRec49[0];
458  fRec45[1] = fRec45[0];
459  fVec7[1] = fVec7[0];
460  fRec44[1] = fRec44[0];
461  fRec43[2] = fRec43[1]; fRec43[1] = fRec43[0];
462  fRec41[1] = fRec41[0];
463  iRec40[1] = iRec40[0];
464  fRec42[1] = fRec42[0];
465  fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
466  fRec22[1] = fRec22[0];
467  fVec6[1] = fVec6[0];
468  fRec37[1] = fRec37[0];
469  fRec36[1] = fRec36[0];
470  fRec39[1] = fRec39[0];
471  fRec38[1] = fRec38[0];
472  fRec33[1] = fRec33[0];
473  fRec32[1] = fRec32[0];
474  fRec35[1] = fRec35[0];
475  fRec34[1] = fRec34[0];
476  fRec29[1] = fRec29[0];
477  fRec28[1] = fRec28[0];
478  fRec31[1] = fRec31[0];
479  fRec30[1] = fRec30[0];
480  fRec24[1] = fRec24[0];
481  fRec23[1] = fRec23[0];
482  fRec27[1] = fRec27[0];
483  fRec26[1] = fRec26[0];
484  IOTA = IOTA+1;
485  fVec4[1] = fVec4[0];
486  fRec25[1] = fRec25[0];
487  fRec20[1] = fRec20[0];
488  fVec3[1] = fVec3[0];
489  fRec19[1] = fRec19[0];
490  fRec18[1] = fRec18[0];
491  iRec17[1] = iRec17[0];
492  fRec15[2] = fRec15[1]; fRec15[1] = fRec15[0];
493  fRec16[1] = fRec16[0];
494  fRec14[1] = fRec14[0];
495  iRec13[1] = iRec13[0];
496  fRec10[2] = fRec10[1]; fRec10[1] = fRec10[0];
497  fRec11[1] = fRec11[0];
498  iRec12[1] = iRec12[0];
499  fRec9[1] = fRec9[0];
500  fRec8[1] = fRec8[0];
501  fRec7[1] = fRec7[0];
502  iRec6[1] = iRec6[0];
503  fVec2[1] = fVec2[0];
504  fRec5[1] = fRec5[0];
505  fRec4[1] = fRec4[0];
506  fRec2[1] = fRec2[0];
507  iRec1[1] = iRec1[0];
508  fRec3[1] = fRec3[0];
509  fVec1[1] = fVec1[0];
510  fRec0[1] = fRec0[0];
511  fRecout[1] = fRecout[0];
512  iVec0[1] = iVec0[0];
513  }
514 }
515 
516 void __rt_func DrumSequencer::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef *p)
517 {
518  static_cast<DrumSequencer*>(p)->compute(count, input0, output0);
519 }
520 
521 int DrumSequencer::register_par(const ParamReg& reg)
522 {
523  reg.registerVar("seq.bpm","","S",N_("Beats per Minute"),&fsliderbpm, 120, 24, 360, 1);
524  reg.registerVar("seq.hat_closed.dsp.Gain","","S",N_("Volume level in decibels"),&fsliderhat, -2e+01, -6e+01, 4e+01, 0.1);
525  reg.registerVar("seq.kick.dsp.Gain","","S",N_("Volume level in decibels"),&fsliderkick, -2e+01, -6e+01, 4e+01, 0.1);
526  reg.registerVar("seq.snare.dsp.Gain","","S",N_("Volume level in decibels"),&fslidersnare, -2e+01, -6e+01, 4e+01, 0.1);
527  reg.registerVar("seq.tom.dsp.Gain","","S",N_("Volume level in decibels"),&fslidertom, -2e+01, -6e+01, 4e+01, 0.1);
528  static const value_pair ftact_values[] = {{"1/4"},{"2/4"},{"3/4"},{"4/4"},{0}};
529  reg.registerEnumVar("seq.tact","","S",N_("select tact"),ftact_values,&ftact, 4.0, 1.0, 4.0, 1.0);
530  reg.registerVar("seq.asequences","","S",N_("Number of Sequences"),&fsec, 24.0, 24.0, 240.0, 4.0);
531  reg.registerVar("seq.gain","","S",N_("Volume level in decibels"),&fslidergain, 0.0, -6e+01, 4e+01, 0.1);
532  reg.registerVar("seq.hum","","B",N_("Randomize Sequence"),&fsliderhum, 0.0, 0.0, 1.0, 1.0);
533  reg.registerNonMidiFloatVar("seq.pos",&position, false, true, 0.0, 0.0, 2300.0, 1.0);
534  for (int i=0; i<24; i++) Vectom.push_back(0);
535  for (int i=0; i<24; i++) Veckick.push_back(0);
536  for (int i=0; i<24; i++) Vechat.push_back(0);
537  for (int i=0; i<24; i++) Vecsnare.push_back(0);
538  tomp = SeqParameter::insert_param(param, "seq.sequencer.tom", &tomset);
539  snarep = SeqParameter::insert_param(param, "seq.sequencer.snare", &snareset);
540  hatp = SeqParameter::insert_param(param, "seq.sequencer.hat", &hatset);
541  kickp = SeqParameter::insert_param(param, "seq.sequencer.kick", &kickset);
542  tomp->signal_changed().connect(
543  sigc::hide(
544  sigc::mem_fun(this, &DrumSequencer::reset_tom)));
545  snarep->signal_changed().connect(
546  sigc::hide(
547  sigc::mem_fun(this, &DrumSequencer::reset_snare)));
548  hatp->signal_changed().connect(
549  sigc::hide(
550  sigc::mem_fun(this, &DrumSequencer::reset_hat)));
551  kickp->signal_changed().connect(
552  sigc::hide(
553  sigc::mem_fun(this, &DrumSequencer::reset_kick)));
554 
555  return 0;
556 }
557 
558 int DrumSequencer::register_params_static(const ParamReg& reg)
559 {
560  return static_cast<DrumSequencer*>(reg.plugin)->register_par(reg);
561 }
562 
563 void DrumSequencer::del_instance(PluginDef *p)
564 {
565  delete static_cast<DrumSequencer*>(p);
566 }
567 
always_inline
#define always_inline
Definition: gx_faust_support.h:29
cabinet_impulse_former::init
void init(int samplingFreq)
Definition: cabinet_impulse_former.cc:37
cabinet_impulse_former::fConst1
double fConst1
Definition: cabinet_impulse_former.cc:25
value_pair
Definition: gx_plugin.h:117
FAUSTFLOAT
#define FAUSTFLOAT
Definition: gx_faust_support.h:21
cabinet_impulse_former::fRec0
double fRec0[3]
Definition: cabinet_impulse_former.cc:33
ParamReg::plugin
PluginDef * plugin
Definition: gx_plugin.h:123
ParamReg::registerVar
float *(* registerVar)(const char *id, const char *name, const char *tp, const char *tooltip, float *var, float val, float low, float up, float step)
Definition: gx_plugin.h:124
ParamReg::registerEnumVar
void(* registerEnumVar)(const char *id, const char *name, const char *tp, const char *tooltip, const value_pair *values, float *var, float val, float low, float up, float step)
Definition: gx_plugin.h:132
min
#define min(x, y)
Definition: gx_faust_support.h:6
PluginDef
Definition: gx_plugin.h:183
max
#define max(x, y)
Definition: gx_faust_support.h:5
cabinet_impulse_former::fConst5
double fConst5
Definition: cabinet_impulse_former.cc:30
N_
#define N_(String)
Definition: gx_faust_support.h:23
cabinet_impulse_former::compute
void compute(int count, float *input0, float *output0)
Definition: cabinet_impulse_former.cc:51
cabinet_impulse_former::fConst4
double fConst4
Definition: cabinet_impulse_former.cc:29
ParamReg
Definition: gx_plugin.h:122
cabinet_impulse_former::fConst2
double fConst2
Definition: cabinet_impulse_former.cc:26
ParamReg::registerNonMidiFloatVar
void(* registerNonMidiFloatVar)(const char *id, float *var, bool preset, bool nosave, float val, float low, float up, float step)
Definition: gx_plugin.h:130
__rt_func
#define __rt_func
Definition: gx_compiler.h:7
cabinet_impulse_former::fSamplingFreq
int fSamplingFreq
Definition: cabinet_impulse_former.cc:35
cabinet_impulse_former::fConst3
double fConst3
Definition: cabinet_impulse_former.cc:28