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