Codebase list guitarix / debian/0.18.0-1
Imported Debian patch 0.18.0-1 Roland Stigge authored 12 years ago Ross Gammon committed 8 years ago
112 changed file(s) with 10033 addition(s) and 5805 deletion(s). Raw diff Collapse all Expand all
0 Hi
1
2 If you package guitarix for distribution, please use the
3 included zita-resampler package for build. There is a small
4 optimization included in this zita-resampler version witch allow us to
5 use multiple instances with best result.
6
7 Use the --includeresampler config option please.
8
9 However, it will work with ordenary zita-resampler package from
10 your distribution as well, but the result will be different.
11
12 The included zita-convolver package could save replaced with any version
13 your distribution have included.
14
15 Please make use of the g++ optimization flags you find in the wscript
16 in the top folder, as many your distribution allow. That will lead
17 to a better performance as you slightly know.
18
19 Please use the included libgxw / libgxwmm as static library, as long
20 we didn't release it as separate package.
21
22 Don’t use the --shared-lib config flag please.
23
24 Also note that the --generate-cpp-wrapper flag is broken with GTK+ > 2.14
25 Don’t use this flag, it is useful for developers only.
26
27 You also didn't need to build with faust, all needed files are generated
28 and included, use the --no-faust configure flag please. So you haven't
29 any dependence to faust, we, the developers have those dependence and included
30 the complete source for those how like to work with it, to share our work.
31
32 Anyhow, if you have problems or discover a bug or have a patch witch
33 you would like to include upstream, let us know.
34
35 As ever, we are interested to hear if guitarix is included in your
36 distribution, we could make links on our project page to lead users
37 to the distribution packages so that they didn't need to compile the
38 stuff by them self but instead use your approved packages and could
39 see what work there distribution maintainers have done.
40
41 feel free to contact us at guitarix-developer(at)lists.sourceforge.net
42
43 kind regards
44
45 guitarix-developers
0 guitarix2 (0.18.0) unstable; urgency=low
1 * add tube model 12AT7
2 * fix runtime isuess when build with g++ > 4.5
3 * add presence level controller
4 * add bass booster level controller
5 * switch to function pointer based engine
6 * fix isuess with GtkBuilder > 2.14
7 * fix correct use of included zita-resampler source
8 * add factory settings by autoandimat
9
10 -- brummer <brummer-@web.de> Mon, 09 Aug 2011 17:44:35 +0200
11
012 guitarix2 (0.17.0) unstable; urgency=low
113 * fix jack session support
214 * add 2 new amp models
0 guitarix (0.18.0-1) unstable; urgency=low
1
2 * New upstream release
3
4 -- Roland Stigge <stigge@antcom.de> Thu, 11 Aug 2011 23:05:05 +0200
5
06 guitarix (0.17.0-1) unstable; urgency=low
17
28 * New upstream release
Binary diff not shown
+0
-4
po/LINGUAS less more
0 # This file is autogenerated. Do not edit.
1 es
2 it
3 fr
1818 a0 = 2 * (K*K - 1) / D;
1919 a1 = (1 - sqrt(2)*K + K*K) / D;
2020 };
21
22 process = lfboost(120, 10);
21 level = vslider("Level", 10, 0.5, 20, 0.5) ;
22 process = lfboost(120, level);
66
77 /****************************************************************
88 ** Tube Preamp Emulation stage 1 - 2
9 * 12AU7 feedback
910 */
1011
1112 val(x) = valve.vt(dist, q(x), x)
0 declare name "amp2";
1
2 import("music.lib");
3 import("filter.lib");
4 import("effect.lib");
5 import("guitarix.lib");
6
7 /****************************************************************
8 ** Tube Preamp Emulation stage 1 - 2
9 * 12AT7
10 */
11
12
13 tubestage(tb,fck,Rk) = tube : hpf with {
14 lpfk = lowpass1(fck);
15 Ftube = ffunction(float Ftube6(int,float), "valve.h", "");
16 vplus = 250.0;
17 divider = 40;
18 Rp = 100.0e3;
19 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
20 hpf = highpass1(31.0);
21 };
22
23 tubeax(preamp,gain1) = hgroup("stage1", stage1) :
24 hgroup("stage2", stage2)
25 with {
26
27 stage1 = tubestage(0,86.0,2700.0) : *(preamp):
28 lowpass1(6531.0) : tubestage(1,132.0,1500.0) : *(preamp);
29 stage2 = lowpass1(6531.0) : tubestage(1,194.0,820.0) : *(gain1);
30
31 } ;
32
33 process = component("gxdistortion.dsp").dist(vslider(".gxdistortion.drive[alias]",0.35, 0, 1, 0.01),vslider(".gxdistortion.wet_dry[alias]", 100, 0, 100, 1) : /(100)): tubeax(preamp,gain1) with {
34 preamp = (vslider(".amp2.stage1.Pregain[alias]",0,-20,20,0.1):db2linear : smoothi(0.999));
35 gain1 = vslider(".amp2.stage2.gain1[alias]", 6, -20.0, 20.0, 0.1) : db2linear : smoothi(0.999);
36 };
37
0 declare name "amp";
1
2 import("music.lib");
3 import("filter.lib");
4 import("effect.lib");
5 import("guitarix.lib");
6
7 /****************************************************************
8 ** Tube amp Emulation stage 1 - 2 - 3
9 * 12AT7 -> master 6V6
10 */
11
12 a = 0.75;
13 r(x) = x-sym_clip(a*0.88);
14 soft_clip(x) = x:sym_clip(a*0.75) <:+(r(x)*0.333);
15 hard_clip = sym_clip(0.88);
16
17 tubestage(tb,fck,Rk) = tube : hpf with {
18 lpfk = lowpass1(fck);
19 Ftube = ffunction(float Ftube6(int,float), "valve.h", "");
20 vplus = 250.0;
21 divider = 40;
22 Rp = 100.0e3;
23 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
24 hpf = highpass1(31.0);
25 };
26
27 tubestage2(tb,fck,Rk) = tube : hpf with {
28 lpfk = lowpass1(fck);
29 Ftube = ffunction(float Ftube2(int,float), "valve.h", "");
30 vplus = 250.0;
31 divider = 40;
32 Rp = 100.0e3;
33 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
34 hpf = highpass1(31.0);
35 };
36
37 gx_drive(drive) = _ <: _ + nonlin(4,4,0.125) * drive * 10 ;
38
39 process = hgroup("amp2", hgroup("stage1", stage1) : component("gxdistortion.dsp").dist(vslider(".gxdistortion.drive[alias]",0.35, 0, 1, 0.01),vslider(".gxdistortion.wet_dry[alias]", 100, 0, 100, 1) : /(100)) :
40 hgroup("stage2", stage2)
41 ) with {
42
43 preamp = (vslider(".amp2.stage1.Pregain[alias]",0,-20,20,0.1):db2linear : smoothi(0.999));
44 stage1 = *(preamp): tubestage(0,86.0,2700.0) :
45 lowpass1(6531.0) : tubestage(1,132.0,1500.0) :tubestage(1,194.0,820.0) ;
46 stage2 = lowpass1(6531.0) : *(gain1) <: (tubestage2(1,6531.0,820.0),tubestage2(0,6531.0,820.0)) :> _
47 with {
48 gain1 = vslider(".amp2.stage2.gain1[alias]", 6, -20.0, 20.0, 0.1) : db2linear : smoothi(0.999);
49 } ;
50 };
51
0 declare name "amp";
1
2 import("music.lib");
3 import("filter.lib");
4 import("effect.lib");
5 import("guitarix.lib");
6 import("maxmsp.lib");
7
8 /****************************************************************
9 ** Tube amp Emulation stage 1 - 2 - 3
10 * 12AT7 -> push pull 6V6
11 */
12
13
14 notch1(x) = notch(x,9645.,-12.,14.1);
15 notch2(x) = notch(x,7890.,-17.,7.1);
16 notch3(x) = notch(x,5046.,-12.,19.1);
17
18 tubestage(tb,fck,Rk) = tube : hpf with {
19 lpfk = lowpass1(fck);
20 Ftube = ffunction(float Ftube6(int,float), "valve.h", "");
21 vplus = 250.0;
22 divider = 40;
23 Rp = 100.0e3;
24 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
25 hpf = highpass1(31.0);
26 };
27
28 tubestage2(tb,fck,Rk) = tube : hpf with {
29 lpfk = lowpass1(fck);
30 Ftube = ffunction(float Ftube2(int,float), "valve.h", "");
31 vplus = 250.0;
32 divider = 40;
33 Rp = 100.0e3;
34 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
35 hpf = highpass1(31.0);
36 };
37
38 gx_drive(drive) = _ <: _ + nonlin(4,4,0.125) * drive * 10 ;
39
40 process = hgroup("amp2", hgroup("stage1", stage1) :
41 component("gxdistortion.dsp").dist2(vslider(".gxdistortion.drive[alias]",0.35, 0, 1, 0.01),vslider(".gxdistortion.wet_dry[alias]", 100, 0, 100, 1) : /(100)) :
42 hgroup("stage2", stage2)
43 ) with {
44
45 preamp = (vslider(".amp2.stage1.Pregain[alias]",0,-20,20,0.1):db2linear : smoothi(0.999));
46 stage1 = speakerbp(310.0, 12000.0) :
47 *(preamp) : (tubestage(0,86.0,2700.0) : + ~ tubestage(1,132.0,1500.0)):
48 lowpass1(6531.0) : (tubestage(1,132.0,1500.0) : + ~ tubestage(1,194.0,820.0)) : tubestage(1,194.0,820.0) ;
49 stage2 = lowpass1(6531.0) : *(gain1) <: ((min(0.7,tubestage2(1,6531.0,410.0))),(max(-0.75,tubestage2(0,6531.0,410.0)))) :>
50 notch1 : notch2 : notch3
51 with {
52 gain1 = vslider(".amp2.stage2.gain1[alias]", 6, -20.0, 20.0, 0.1) : db2linear : smoothi(0.999);
53 } ;
54 };
55
0 declare name "amp";
1
2 import("music.lib");
3 import("filter.lib");
4 import("effect.lib");
5 import("guitarix.lib");
6
7 /****************************************************************
8 ** Tube Preamp Emulation stage 1 - 2
9 * 12AT7 feedback
10 */
11
12 val(x) = valve.vt(dist, q(x), x)
13 with {
14 dist = 40.1;
15 q(x) = lp1tm1(x) * 1 - lp2tm1(x) * 1.02 - 1.0 : clip(-1,-0.01);
16 lp(a) = *(1 - a) : + ~ *(a);
17 lp1tm1 = abs <: lp(0.9999), _ : max;
18 avgs = lp1tm1 : avg;
19 avg_size = SR/9;
20 avg(x) = x - delay1s(avg_size,x) : + ~ _ : /(avg_size);
21 lp2tm1 = avgs : lp(0.999);
22 };
23
24
25 tubestage(tb,fck,Rk) = tube : hpf with {
26 lpfk = lowpass1(fck);
27 Ftube = ffunction(float Ftube6(int,float), "valve.h", "");
28 vplus = 250.0;
29 divider = 40;
30 Rp = 100.0e3;
31 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
32 hpf = highpass1(31.0);
33 };
34
35 tubeax(preamp,gain1) = hgroup("stage1", stage1) :
36 hgroup("stage2", stage2)
37 with {
38
39 stage1 = tubestage(0,86.0,2700.0) : - ~ tubestage(1,132.0,1500.0) : *(preamp):
40 lowpass1(6531.0) : tubestage(1,132.0,1500.0): + ~ tubestage(1,194.0,820.0) ;
41 stage2 = lowpass1(6531.0) : tubestage(1,194.0,820.0) : *(gain1);
42
43 } ;
44
45
46 process = val : component("gxdistortion.dsp").dist1(vslider(".gxdistortion.drive[alias]",0.35, 0, 1, 0.01),vslider(".gxdistortion.wet_dry[alias]", 100, 0, 100, 1) : /(100)) : tubeax(preamp,gain1) with {
47 preamp = (vslider(".amp2.stage1.Pregain[alias]",0,-20,20,0.1):db2linear : smoothi(0.999));
48 gain1 = vslider(".amp2.stage2.gain1[alias]", 6, -20.0, 20.0, 0.1) : db2linear : smoothi(0.999);
49 } ;
50
77
88 /****************************************************************
99 ** Tube Preamp Emulation stage 1 - 2
10 * 12ax7 -> pusch pull 6V6
1011 */
1112
1213
77
88 /****************************************************************
99 ** Tube Preamp Emulation stage 1 - 2
10 * 12AU7 -> pusch pull 6V6
1011 */
1112
1213
1718 tubestage(tb,fck,Rk) = tube : hpf with {
1819 lpfk = lowpass1(fck);
1920 Ftube = ffunction(float Ftube3(int,float), "valve.h", "");
20 vplus = 250.0;
21 divider = 40;
21 vplus = 130.0;
22 divider = 10;
2223 Rp = 100.0e3;
2324 tube = (+ : Ftube(tb)) ~ (-(vplus) : *(Rk/Rp) : lpfk) : /(divider);
2425 hpf = highpass1(31.0);
66
77 /****************************************************************
88 ** Tube Preamp Emulation stage 1 - 2
9 * 12ax7 feedback
910 */
1011
1112 val(x) = valve.vt(dist, q(x), x)
110110 val(x) = valve.vt(dist, q(x), x)
111111 with {
112112 dist = 40.1;
113 q(x) = lp1tm1(x) * 1 - lp2tm1(x) * 1.02 - 1.0 : clip(-1,-0.01);
113 q(x) = lp1tm1(x) * 1.0 - lp2tm1(x) * 1.02 - 1.0 : clip(-1.0,-0.01);
114114 lp(a) = *(1 - a) : + ~ *(a);
115115 lp1tm1 = abs <: lp(0.9999), _ : max;
116116 avgs = lp1tm1 : avg;
117117 avg_size = SR/9;
118118 avg(x) = x - delay1s(avg_size,x) : + ~ _ : /(avg_size);
119119 lp2tm1 = avgs : lp(0.999);
120 };
121
122 vt = valve.vt(dist, q) : neg : valve.vt(dist, q) : neg with
123 {
124 q_p = 0.9;
125 dist_p = 1.7;
126 q = -q_p*-q_p*-q_p;
127 dist = pow(10,dist_p);
120128 };
121129
122130 //-distortion
146154 wetdry = vslider("wet_dry[name:wet/dry]", 100, 0, 100, 1) : /(100);
147155 drive = vslider("drive", 0.35, 0, 1, 0.01);
148156
149 dist(drive,wetdry) =_<:(*(dry): gx_drive(drive)),(*(wetdry):distdrive(drive)):>_
157 dist(drive,wetdry) =_<:(*(dry: smoothi(0.999)): gx_drive(drive)),(*(wetdry: smoothi(0.999)):distdrive(drive)):>_
150158 with{
151159
152160 dry = 1 - wetdry;
153161
154162 };
155163
156 dist1(drive,wetdry) =_<:(*(dry): gx_drive(drive)),(*(wetdry) <: (clipit: cubicnl(drive,0.0) : * (0.5)),distdrive(drive) :>_):>_
164 dist1(drive,wetdry) =_<:(*(dry: smoothi(0.999)): gx_drive(drive)),(*(wetdry: smoothi(0.999)) <: (clipit: cubicnl(drive,0.0) : * (0.5)),distdrive(drive) :>_):>_
157165 with{
158166
159167 dry = 1 - wetdry;
160168
161169 };
162170
163 dist2(drive,wetdry) =_<:(*(dry: smoothi(0.999)): gx_drive(drive)),(*(wetdry: smoothi(0.999)):val :distdrive(drive)):>_
171 dist2(drive,wetdry) =_<:(*(dry: smoothi(0.999)): gx_drive(drive)),(*(wetdry: smoothi(0.999)):val :distdrive(drive)):>_
164172 with{
165173
166174 dry = 1 - wetdry;
167175
168176 };
169
177
178 dist4(drive,wetdry) =_<:(*(dry: smoothi(0.999)): gx_drive(drive)),
179 (*(wetdry: smoothi(0.999)) : val <:
180 (cubicnl(drive,0.0) : * (0.5)),distdrive(drive) :>_):>_
181 with{
182
183 dry = 1 - wetdry;
184
185 };
186
170187 process = distdrive;
3030 rev2N( 16, 12,0.7);
3131 };
3232
33 //wet_dry = vslider("wet_dry", 0, -1, 1, 0.01);
34 wet_dry = vslider("wet_dry[name:wet/dry]", 100, 0, 100, 1) : /(100);
35 dry = 1 - wet_dry;
33 wet_dry = vslider("wet_dry", 0, -1, 1, 0.01);
34 //wet_dry = vslider("wet_dry[name:wet/dry]", 100, 0, 100, 1) : /(100);
35 //dry = 1 - wet_dry;
3636
3737 switch = checkbox("feed_on_off[name:reverb_on_of]");
38 s_reverb = _ <: select2(switch, _, ( _<:*(dry),(*(wet_dry):sat_rev):>_));
39 //s_reverb = _ <: select2(switch, _, (wet_dry_mix(wet_dry,sat_rev)));
38 //s_reverb = _ <: select2(switch, _, ( _<:*(dry),(*(wet_dry):sat_rev):>_));
39 s_reverb = _ <: select2(switch, _, (wet_dry_mix(wet_dry,sat_rev)));
4040
4141 process = _ : (s_reverb) <: _,_;
4242
0 declare name "con";
1
2 import("music.lib");
3 import("guitarix.lib");
4
5 gain = vslider("Level[alias]", 1, 0.5, 5, 0.5) ;
6
7 process = *(gain);
215215 C2 = 22:nF;
216216 C3 = 22:nF;
217217 };
218
219 ampeg_rev = environment { /* reverbrocket*/
220 R1 = 250:k;
221 R2 = 250:k;
222 R3 = 10:k;
223 R4 = 100:k;
224 C1 = 100:pF;
225 C2 = 100:nF;
226 C3 = 47:nF;
227 };
218228
219229 bogner = environment { /* Triple Giant Preamp */
220230 R1 = 250:k;
245255 C2 = 47:nF;
246256 C3 = 47:nF;
247257 };
258
259 fender_blues = environment { /* Fender blues junior */
260 R1 = 250:k;
261 R2 = 250:k;
262 R3 = 25:k;
263 R4 = 100:k;
264 C1 = 250:pF;
265 C2 = 22:nF;
266 C3 = 22:nF;
267 };
268
269 fender_default = environment { /* Fender */
270 R1 = 250:k;
271 R2 = 250:k;
272 R3 = 10:k;
273 R4 = 100:k;
274 C1 = 250:pF;
275 C2 = 100:nF;
276 C3 = 47:nF;
277 };
278
279 fender_deville = environment { /* Fender Hot Rod */
280 R1 = 250:k;
281 R2 = 250:k;
282 R3 = 25:k;
283 R4 = 130:k;
284 C1 = 250:pF;
285 C2 = 100:nF;
286 C3 = 22:nF;
287 };
288
289 gibsen = environment { /* gs12 reverbrocket */
290 R1 = 1:M;
291 R2 = 1:M;
292 R3 = 94:k; // 47k fixed
293 R4 = 270:k;
294 C1 = 25:pF;
295 C2 = 60:nF;
296 C3 = 20:nF;
297 };
298
299
248300 };
249301
250302 t = vslider("Treble[alias]", 0.5, 0, 1, 0.01);
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.ampeg_rev;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.bogner;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.crunch;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.fender_blues;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.fender_default;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.fender_deville;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.gibsen;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.groove;];
0 declare name "amp.tonestack";
1 tstack = component("tonestack.dsp");
2 process = tstack[tse=tstack.ts.sovtek;];
120120 'tonestack_ibanez.dsp',
121121 'tonestack_roland.dsp',
122122 'tonestack_ampeg.dsp',
123 'tonestack_ampeg_rev.dsp',
124
125 'tonestack_sovtek.dsp',
126 'tonestack_bogner.dsp',
127 'tonestack_groove.dsp',
128 'tonestack_crunch.dsp',
129 'tonestack_fender_blues.dsp',
130 'tonestack_fender_default.dsp',
131 'tonestack_fender_deville.dsp',
132 'tonestack_gibsen.dsp',
123133
124134
125135 # effects
152162 'gxamp11.dsp',
153163 'gxamp12.dsp',
154164 'gxamp13.dsp',
165 'gxamp14.dsp',
166 'gxamp15.dsp',
167 'gxamp16.dsp',
168 'gxamp17.dsp',
155169 'gx_ampmodul.dsp',
156170 'gxfeed.dsp',
157171 'gx_feedback.dsp',
166180 'tremolo.dsp',
167181 'phaser_mono.dsp',
168182 'flanger_mono.dsp',
183 'presence_level.dsp',
169184 ]
170185
171186 float_sources = [ # big arrays and no sensitive processing
66 double fConst3;
77 double fConst4;
88 double fRec0[3];
9 double fConst5;
10 double fConst6;
11 double fConst7;
12 double fConst8;
9 FAUSTFLOAT fslider0;
1310 int fSamplingFreq;
1411
1512 void init(int samplingFreq)
2118 fConst3 = (1 + (fConst0 * (fConst0 - 1.4142135623730951)));
2219 fConst4 = (1.0 / (1 + (fConst0 * (1.4142135623730951 + fConst0))));
2320 for (int i=0; i<3; i++) fRec0[i] = 0;
24 fConst5 = (3.1622776601683795 * fConst0);
25 fConst6 = (1 + (fConst0 * (fConst5 - 2.514866859365871)));
26 fConst7 = (2 * ((3.1622776601683795 * fConst1) - 1));
27 fConst8 = (1 + (fConst0 * (fConst5 + 2.514866859365871)));
2821 }
2922
3023 void compute(int count, float *input0, float *output0)
3124 {
25 double fSlow0 = pow(10,(0.05 * fslider0));
26 double fSlow1 = sqrt((2 * fSlow0));
27 double fSlow2 = (fConst0 * fSlow0);
28 double fSlow3 = (1 + (fConst0 * (fSlow2 - fSlow1)));
29 double fSlow4 = (2 * ((fConst1 * fSlow0) - 1));
30 double fSlow5 = (1 + (fConst0 * (fSlow2 + fSlow1)));
3231 for (int i=0; i<count; i++) {
3332 fRec0[0] = ((double)input0[i] - (fConst4 * ((fConst3 * fRec0[2]) + (fConst2 * fRec0[1]))));
34 output0[i] = (FAUSTFLOAT)(fConst4 * (((fConst8 * fRec0[0]) + (fConst7 * fRec0[1])) + (fConst6 * fRec0[2])));
33 output0[i] = (FAUSTFLOAT)(fConst4 * (((fSlow5 * fRec0[0]) + (fSlow4 * fRec0[1])) + (fSlow3 * fRec0[2])));
3534 // post processing
3635 fRec0[2] = fRec0[1]; fRec0[1] = fRec0[0];
3736 }
4039 static struct RegisterParams { RegisterParams(); } RegisterParams;
4140 RegisterParams::RegisterParams()
4241 {
42 registerVar("bassbooster.Level","","S","",&fslider0, 1e+01, 0.5, 2e+01, 0.5);
4343 registerInit("bassbooster", init);
4444 }
4545
3838 double fConst31;
3939 double fConst32;
4040 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
41 double fRec17[2];
4142 double fRec16[3];
4243 double fVec0[2];
4344 double fConst33;
6061 double fConst44;
6162 double fConst45;
6263 double fConst46;
63 double fRec22[2];
64 double fRec21[3];
64 double fRec23[2];
65 double fRec22[3];
6566 double fVec1[2];
6667 double fConst47;
67 double fRec20[2];
68 double fRec19[3];
68 double fRec21[2];
69 double fRec20[3];
6970 double fVec2[2];
7071 double fConst48;
7172 double fConst49;
72 double fRec18[2];
73 double fRec17[3];
73 double fRec19[2];
74 double fRec18[3];
7475 double fConst50;
75 double fRec24[2];
76 double fRec23[3];
76 double fRec25[2];
77 double fRec24[3];
7778 double fConst51;
78 double fRec27[2];
79 double fRec28[2];
80 double fRec27[3];
81 double fConst52;
7982 double fRec26[3];
80 double fConst52;
81 double fRec25[3];
8283 double fVec3[2];
8384 double fConst53;
8485 double fRec10[2];
8788 double fConst56;
8889 double fVec4[2];
8990 double fConst57;
90 double fRec28[2];
91 double fRec29[2];
92 double fRec30[2];
9193 double fRec9[2];
9294 double fConst58;
9395 double fRec8[2];
99101 double fConst62;
100102 double fVec6[2];
101103 double fConst63;
102 double fRec29[2];
104 double fRec31[2];
103105 double fRec5[2];
104106 double fRec4[2];
105107 double fVec7[2];
109111 double fConst66;
110112 double fVec8[2];
111113 double fConst67;
112 double fRec30[2];
114 double fRec32[2];
113115 double fRec2[2];
114116 double fRec1[2];
115117 int fSamplingFreq;
152154 fConst30 = (1 + ((fConst29 - 1.414213562373095) / fConst27));
153155 fConst31 = (1 + ((1.414213562373095 + fConst29) / fConst27));
154156 fConst32 = (1.0 / fConst31);
157 for (int i=0; i<2; i++) fRec17[i] = 0;
155158 for (int i=0; i<3; i++) fRec16[i] = 0;
156159 for (int i=0; i<2; i++) fVec0[i] = 0;
157160 fConst33 = (0 - fConst0);
173176 fConst44 = (1.0 / fConst43);
174177 fConst45 = (1 + fConst15);
175178 fConst46 = (0 - ((1 - fConst15) / fConst45));
176 for (int i=0; i<2; i++) fRec22[i] = 0;
177 for (int i=0; i<3; i++) fRec21[i] = 0;
179 for (int i=0; i<2; i++) fRec23[i] = 0;
180 for (int i=0; i<3; i++) fRec22[i] = 0;
178181 for (int i=0; i<2; i++) fVec1[i] = 0;
179182 fConst47 = (1.0 / (fConst45 * fConst23));
180 for (int i=0; i<2; i++) fRec20[i] = 0;
181 for (int i=0; i<3; i++) fRec19[i] = 0;
183 for (int i=0; i<2; i++) fRec21[i] = 0;
184 for (int i=0; i<3; i++) fRec20[i] = 0;
182185 for (int i=0; i<2; i++) fVec2[i] = 0;
183186 fConst48 = (0 - fConst9);
184187 fConst49 = (1.0 / (fConst40 * fConst43));
185 for (int i=0; i<2; i++) fRec18[i] = 0;
186 for (int i=0; i<3; i++) fRec17[i] = 0;
188 for (int i=0; i<2; i++) fRec19[i] = 0;
189 for (int i=0; i<3; i++) fRec18[i] = 0;
187190 fConst50 = (2 * (0 - fConst7));
188 for (int i=0; i<2; i++) fRec24[i] = 0;
189 for (int i=0; i<3; i++) fRec23[i] = 0;
191 for (int i=0; i<2; i++) fRec25[i] = 0;
192 for (int i=0; i<3; i++) fRec24[i] = 0;
190193 fConst51 = (0 - fConst15);
191 for (int i=0; i<2; i++) fRec27[i] = 0;
194 for (int i=0; i<2; i++) fRec28[i] = 0;
195 for (int i=0; i<3; i++) fRec27[i] = 0;
196 fConst52 = (2 * (0 - fConst13));
192197 for (int i=0; i<3; i++) fRec26[i] = 0;
193 fConst52 = (2 * (0 - fConst13));
194 for (int i=0; i<3; i++) fRec25[i] = 0;
195198 for (int i=0; i<2; i++) fVec3[i] = 0;
196199 fConst53 = (1.5848931924611136 / fConst4);
197200 for (int i=0; i<2; i++) fRec10[i] = 0;
200203 fConst56 = (0 - ((1 - fConst54) / fConst55));
201204 for (int i=0; i<2; i++) fVec4[i] = 0;
202205 fConst57 = (0.027 / fConst55);
203 for (int i=0; i<2; i++) fRec28[i] = 0;
206 for (int i=0; i<2; i++) fRec29[i] = 0;
207 for (int i=0; i<2; i++) fRec30[i] = 0;
204208 for (int i=0; i<2; i++) fRec9[i] = 0;
205209 fConst58 = (0.025 / fConst1);
206210 for (int i=0; i<2; i++) fRec8[i] = 0;
212216 fConst62 = (0 - ((1 - fConst60) / fConst61));
213217 for (int i=0; i<2; i++) fVec6[i] = 0;
214218 fConst63 = (0.015 / fConst61);
215 for (int i=0; i<2; i++) fRec29[i] = 0;
219 for (int i=0; i<2; i++) fRec31[i] = 0;
216220 for (int i=0; i<2; i++) fRec5[i] = 0;
217221 for (int i=0; i<2; i++) fRec4[i] = 0;
218222 for (int i=0; i<2; i++) fVec7[i] = 0;
222226 fConst66 = (0 - ((1 - fConst64) / fConst65));
223227 for (int i=0; i<2; i++) fVec8[i] = 0;
224228 fConst67 = (0.0082 / fConst65);
225 for (int i=0; i<2; i++) fRec30[i] = 0;
229 for (int i=0; i<2; i++) fRec32[i] = 0;
226230 for (int i=0; i<2; i++) fRec2[i] = 0;
227231 for (int i=0; i<2; i++) fRec1[i] = 0;
228232 }
232236 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
233237 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
234238 double fSlow2 = fslider2;
235 double fSlow3 = (0.01 * fSlow2);
239 double fSlow3 = (1.000000000000001e-05 * fSlow2);
236240 double fSlow4 = fslider3;
237241 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
238242 double fSlow6 = (fConst39 * pow(1e+01,(2 * fSlow4)));
240244 double fSlow8 = pow(1e+01,(1.2 * fSlow4));
241245 double fSlow9 = (2 * (fSlow4 - 0.5));
242246 double fSlow10 = (1 - max(0, (0 - fSlow9)));
243 double fSlow11 = (1 - fSlow3);
247 double fSlow11 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
244248 double fSlow12 = (1.25 * fSlow4);
245 double fSlow13 = (0.01 * (fSlow2 * (1 - max(0, fSlow9))));
249 double fSlow13 = (1 - max(0, fSlow9));
246250 for (int i=0; i<count; i++) {
247251 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
248252 fRec7[0] = (fSlow1 + (0.999 * fRec7[1]));
249253 double fTemp0 = (fConst8 * fRec11[1]);
250254 double fTemp1 = (fConst14 * fRec12[1]);
255 fRec17[0] = (fSlow3 + (0.999 * fRec17[1]));
251256 double fTemp2 = (double)input0[i];
252 fRec16[0] = ((fSlow3 * fTemp2) - (fConst32 * ((fConst30 * fRec16[2]) + (fConst28 * fRec16[1]))));
257 fRec16[0] = ((fTemp2 * fRec17[0]) - (fConst32 * ((fConst30 * fRec16[2]) + (fConst28 * fRec16[1]))));
253258 double fTemp3 = (fRec16[2] + (fRec16[0] + (2 * fRec16[1])));
254259 fVec0[0] = fTemp3;
255 fRec15[0] = ((fConst34 * ((fConst0 * fVec0[0]) + (fConst33 * fVec0[1]))) + (fConst2 * fRec15[1]));
260 fRec15[0] = ((fConst34 * ((fConst33 * fVec0[1]) + (fConst0 * fVec0[0]))) + (fConst2 * fRec15[1]));
256261 fRec14[0] = ((fConst36 * ((fConst35 * fRec15[1]) + (fConst21 * fRec15[0]))) + (fConst26 * fRec14[1]));
257262 fRec13[0] = (fRec14[0] - (fConst24 * ((fConst22 * fRec13[2]) + (fConst20 * fRec13[1]))));
258263 fRec12[0] = ((fConst24 * (((fConst19 * fRec13[0]) + (fConst37 * fRec13[1])) + (fConst19 * fRec13[2]))) - (fConst17 * ((fConst16 * fRec12[2]) + fTemp1)));
259264 fRec11[0] = ((fRec12[2] + (fConst17 * (fTemp1 + (fConst16 * fRec12[0])))) - (fConst11 * ((fConst10 * fRec11[2]) + fTemp0)));
260265 double fTemp4 = max(-1, min(1, (fSlow5 * (fRec11[2] + (fConst11 * (fTemp0 + (fConst10 * fRec11[0])))))));
261 fRec22[0] = ((fConst36 * (fRec15[0] + fRec15[1])) + (fConst26 * fRec22[1]));
262 fRec21[0] = (fRec22[0] - (fConst24 * ((fConst22 * fRec21[2]) + (fConst20 * fRec21[1]))));
263 double fTemp5 = (fRec21[2] + (fRec21[0] + (2 * fRec21[1])));
266 fRec23[0] = ((fConst36 * (fRec15[0] + fRec15[1])) + (fConst26 * fRec23[1]));
267 fRec22[0] = (fRec23[0] - (fConst24 * ((fConst22 * fRec22[2]) + (fConst20 * fRec22[1]))));
268 double fTemp5 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
264269 fVec1[0] = fTemp5;
265 fRec20[0] = ((fConst47 * (fVec1[0] + fVec1[1])) + (fConst46 * fRec20[1]));
266 fRec19[0] = (fRec20[0] - (fConst44 * ((fConst42 * fRec19[2]) + (fConst14 * fRec19[1]))));
267 double fTemp6 = (fRec19[2] + (fRec19[0] + (2 * fRec19[1])));
270 fRec21[0] = ((fConst47 * (fVec1[0] + fVec1[1])) + (fConst46 * fRec21[1]));
271 fRec20[0] = (fRec21[0] - (fConst44 * ((fConst42 * fRec20[2]) + (fConst14 * fRec20[1]))));
272 double fTemp6 = (fRec20[2] + (fRec20[0] + (2 * fRec20[1])));
268273 fVec2[0] = fTemp6;
269 fRec18[0] = ((fConst49 * ((fConst48 * fVec2[1]) + (fConst9 * fVec2[0]))) + (fConst41 * fRec18[1]));
270 fRec17[0] = (fRec18[0] - (fConst39 * ((fConst38 * fRec17[2]) + (fConst8 * fRec17[1]))));
271 double fTemp7 = max(-1, min(1, (fSlow6 * (((fConst7 * fRec17[0]) + (fConst50 * fRec17[1])) + (fConst7 * fRec17[2])))));
272 fRec24[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst41 * fRec24[1]));
273 fRec23[0] = (fRec24[0] - (fConst39 * ((fConst38 * fRec23[2]) + (fConst8 * fRec23[1]))));
274 double fTemp8 = max(-1, min(1, (fSlow7 * (fRec23[2] + (fRec23[0] + (2 * fRec23[1]))))));
275 double fTemp9 = (fConst8 * fRec25[1]);
276 fRec27[0] = ((fConst47 * ((fConst51 * fVec1[1]) + (fConst15 * fVec1[0]))) + (fConst46 * fRec27[1]));
277 fRec26[0] = (fRec27[0] - (fConst44 * ((fConst42 * fRec26[2]) + (fConst14 * fRec26[1]))));
278 fRec25[0] = ((fConst44 * (((fConst13 * fRec26[0]) + (fConst52 * fRec26[1])) + (fConst13 * fRec26[2]))) - (fConst11 * ((fConst10 * fRec25[2]) + fTemp9)));
279 double fTemp10 = max(-1, min(1, (fSlow8 * (fRec25[2] + (fConst11 * (fTemp9 + (fConst10 * fRec25[0])))))));
274 fRec19[0] = ((fConst49 * ((fConst48 * fVec2[1]) + (fConst9 * fVec2[0]))) + (fConst41 * fRec19[1]));
275 fRec18[0] = (fRec19[0] - (fConst39 * ((fConst38 * fRec18[2]) + (fConst8 * fRec18[1]))));
276 double fTemp7 = max(-1, min(1, (fSlow6 * (((fConst7 * fRec18[0]) + (fConst50 * fRec18[1])) + (fConst7 * fRec18[2])))));
277 fRec25[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst41 * fRec25[1]));
278 fRec24[0] = (fRec25[0] - (fConst39 * ((fConst38 * fRec24[2]) + (fConst8 * fRec24[1]))));
279 double fTemp8 = max(-1, min(1, (fSlow7 * (fRec24[2] + (fRec24[0] + (2 * fRec24[1]))))));
280 double fTemp9 = (fConst8 * fRec26[1]);
281 fRec28[0] = ((fConst47 * ((fConst51 * fVec1[1]) + (fConst15 * fVec1[0]))) + (fConst46 * fRec28[1]));
282 fRec27[0] = (fRec28[0] - (fConst44 * ((fConst42 * fRec27[2]) + (fConst14 * fRec27[1]))));
283 fRec26[0] = ((fConst44 * (((fConst13 * fRec27[0]) + (fConst52 * fRec27[1])) + (fConst13 * fRec27[2]))) - (fConst11 * ((fConst10 * fRec26[2]) + fTemp9)));
284 double fTemp10 = max(-1, min(1, (fSlow8 * (fRec26[2] + (fConst11 * (fTemp9 + (fConst10 * fRec26[0])))))));
280285 double fTemp11 = (((fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10)))) + ((fTemp8 * (1 - (0.3333333333333333 * faustpower<2>(fTemp8)))) + (0.841395141645195 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))))) + (0.7943282347242815 * (fTemp4 * (1 - (0.3333333333333333 * faustpower<2>(fTemp4))))));
281286 fVec3[0] = fTemp11;
282287 fRec10[0] = ((fConst53 * (fVec3[0] + fVec3[1])) + (fConst5 * fRec10[1]));
283288 double fTemp12 = (fRec9[1] - 2.5e+02);
284289 fVec4[0] = fTemp12;
285 fRec28[0] = ((fConst57 * (fVec4[0] + fVec4[1])) + (fConst56 * fRec28[1]));
286 fRec9[0] = Ftube(0, ((fTemp2 * (fSlow13 + (fSlow11 * (1 + (fSlow12 * ((4 - (4 * fabs((fSlow11 * fTemp2)))) - 1)))))) + (fRec28[0] + (fSlow10 * fRec10[0]))));
290 fRec29[0] = ((fConst57 * (fVec4[0] + fVec4[1])) + (fConst56 * fRec29[1]));
291 fRec30[0] = (fSlow11 + (0.999 * fRec30[1]));
292 fRec9[0] = Ftube(0, ((fTemp2 * ((fSlow13 * fRec17[0]) + (fRec30[0] * (1 + (fSlow12 * ((4 - (4 * fabs((fTemp2 * fRec30[0])))) - 1)))))) + (fRec29[0] + (fSlow10 * fRec10[0]))));
287293 fRec8[0] = ((fConst58 * ((fConst33 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
288294 double fTemp13 = (fRec8[0] * fRec7[0]);
289295 fVec5[0] = fTemp13;
290296 fRec6[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst5 * fRec6[1]));
291297 double fTemp14 = (fRec5[1] - 2.5e+02);
292298 fVec6[0] = fTemp14;
293 fRec29[0] = ((fConst63 * (fVec6[0] + fVec6[1])) + (fConst62 * fRec29[1]));
294 fRec5[0] = Ftube(1, (fRec29[0] + fRec6[0]));
299 fRec31[0] = ((fConst63 * (fVec6[0] + fVec6[1])) + (fConst62 * fRec31[1]));
300 fRec5[0] = Ftube(1, (fRec31[0] + fRec6[0]));
295301 fRec4[0] = ((fConst58 * ((fConst33 * fRec5[1]) + (fConst0 * fRec5[0]))) + (fConst2 * fRec4[1]));
296302 double fTemp15 = (fRec7[0] * fRec4[0]);
297303 fVec7[0] = fTemp15;
298304 fRec3[0] = ((fConst59 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec3[1]));
299305 double fTemp16 = (fRec2[1] - 2.5e+02);
300306 fVec8[0] = fTemp16;
301 fRec30[0] = ((fConst67 * (fVec8[0] + fVec8[1])) + (fConst66 * fRec30[1]));
302 fRec2[0] = Ftube(1, (fRec30[0] + fRec3[0]));
307 fRec32[0] = ((fConst67 * (fVec8[0] + fVec8[1])) + (fConst66 * fRec32[1]));
308 fRec2[0] = Ftube(1, (fRec32[0] + fRec3[0]));
303309 fRec1[0] = ((fConst58 * ((fConst33 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
304310 output0[i] = (FAUSTFLOAT)(fRec1[0] * fRec0[0]);
305311 // post processing
306312 fRec1[1] = fRec1[0];
307313 fRec2[1] = fRec2[0];
308 fRec30[1] = fRec30[0];
314 fRec32[1] = fRec32[0];
309315 fVec8[1] = fVec8[0];
310316 fRec3[1] = fRec3[0];
311317 fVec7[1] = fVec7[0];
312318 fRec4[1] = fRec4[0];
313319 fRec5[1] = fRec5[0];
314 fRec29[1] = fRec29[0];
320 fRec31[1] = fRec31[0];
315321 fVec6[1] = fVec6[0];
316322 fRec6[1] = fRec6[0];
317323 fVec5[1] = fVec5[0];
318324 fRec8[1] = fRec8[0];
319325 fRec9[1] = fRec9[0];
320 fRec28[1] = fRec28[0];
326 fRec30[1] = fRec30[0];
327 fRec29[1] = fRec29[0];
321328 fVec4[1] = fVec4[0];
322329 fRec10[1] = fRec10[0];
323330 fVec3[1] = fVec3[0];
324 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
325331 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
326 fRec27[1] = fRec27[0];
327 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
328 fRec24[1] = fRec24[0];
329 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
330 fRec18[1] = fRec18[0];
332 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
333 fRec28[1] = fRec28[0];
334 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
335 fRec25[1] = fRec25[0];
336 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
337 fRec19[1] = fRec19[0];
331338 fVec2[1] = fVec2[0];
332 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
333 fRec20[1] = fRec20[0];
339 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
340 fRec21[1] = fRec21[0];
334341 fVec1[1] = fVec1[0];
335 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
336 fRec22[1] = fRec22[0];
342 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
343 fRec23[1] = fRec23[0];
337344 fRec11[2] = fRec11[1]; fRec11[1] = fRec11[0];
338345 fRec12[2] = fRec12[1]; fRec12[1] = fRec12[0];
339346 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
341348 fRec15[1] = fRec15[0];
342349 fVec0[1] = fVec0[0];
343350 fRec16[2] = fRec16[1]; fRec16[1] = fRec16[0];
351 fRec17[1] = fRec17[0];
344352 fRec7[1] = fRec7[0];
345353 fRec0[1] = fRec0[0];
346354 }
4444 double fConst35;
4545 double fConst36;
4646 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
47 double fRec18[2];
4748 double fRec17[3];
4849 double fVec1[2];
4950 double fConst37;
6667 double fConst48;
6768 double fConst49;
6869 double fConst50;
69 double fRec23[2];
70 double fRec22[3];
70 double fRec24[2];
71 double fRec23[3];
7172 double fVec2[2];
7273 double fConst51;
73 double fRec21[2];
74 double fRec20[3];
74 double fRec22[2];
75 double fRec21[3];
7576 double fVec3[2];
7677 double fConst52;
7778 double fConst53;
78 double fRec19[2];
79 double fRec18[3];
79 double fRec20[2];
80 double fRec19[3];
8081 double fConst54;
81 double fRec25[2];
82 double fRec24[3];
82 double fRec26[2];
83 double fRec25[3];
8384 double fConst55;
84 double fRec28[2];
85 double fRec29[2];
86 double fRec28[3];
87 double fConst56;
8588 double fRec27[3];
86 double fConst56;
87 double fRec26[3];
8889 double fVec4[2];
8990 double fConst57;
9091 double fRec11[2];
9394 double fConst60;
9495 double fVec5[2];
9596 double fConst61;
96 double fRec29[2];
97 double fRec30[2];
98 double fRec31[2];
9799 double fRec10[2];
98100 double fConst62;
99101 double fRec9[2];
105107 double fConst66;
106108 double fVec7[2];
107109 double fConst67;
108 double fRec30[2];
110 double fRec32[2];
109111 double fRec6[2];
110112 double fRec5[2];
111113 double fVec8[2];
113115 double fRec2[2];
114116 double fRec1[2];
115117 double fVec9[2];
118 double fRec35[2];
119 double fRec34[2];
116120 double fRec33[2];
117 double fRec32[2];
118 double fRec31[2];
119121 int fSamplingFreq;
120122
121123 void init(int samplingFreq)
162164 fConst34 = (1 + ((fConst33 - 1.414213562373095) / fConst31));
163165 fConst35 = (1 + ((1.414213562373095 + fConst33) / fConst31));
164166 fConst36 = (1.0 / fConst35);
167 for (int i=0; i<2; i++) fRec18[i] = 0;
165168 for (int i=0; i<3; i++) fRec17[i] = 0;
166169 for (int i=0; i<2; i++) fVec1[i] = 0;
167170 fConst37 = (0 - fConst0);
183186 fConst48 = (1.0 / fConst47);
184187 fConst49 = (1 + fConst19);
185188 fConst50 = (0 - ((1 - fConst19) / fConst49));
186 for (int i=0; i<2; i++) fRec23[i] = 0;
187 for (int i=0; i<3; i++) fRec22[i] = 0;
189 for (int i=0; i<2; i++) fRec24[i] = 0;
190 for (int i=0; i<3; i++) fRec23[i] = 0;
188191 for (int i=0; i<2; i++) fVec2[i] = 0;
189192 fConst51 = (1.0 / (fConst49 * fConst27));
190 for (int i=0; i<2; i++) fRec21[i] = 0;
191 for (int i=0; i<3; i++) fRec20[i] = 0;
193 for (int i=0; i<2; i++) fRec22[i] = 0;
194 for (int i=0; i<3; i++) fRec21[i] = 0;
192195 for (int i=0; i<2; i++) fVec3[i] = 0;
193196 fConst52 = (0 - fConst13);
194197 fConst53 = (1.0 / (fConst44 * fConst47));
195 for (int i=0; i<2; i++) fRec19[i] = 0;
196 for (int i=0; i<3; i++) fRec18[i] = 0;
198 for (int i=0; i<2; i++) fRec20[i] = 0;
199 for (int i=0; i<3; i++) fRec19[i] = 0;
197200 fConst54 = (2 * (0 - fConst11));
198 for (int i=0; i<2; i++) fRec25[i] = 0;
199 for (int i=0; i<3; i++) fRec24[i] = 0;
201 for (int i=0; i<2; i++) fRec26[i] = 0;
202 for (int i=0; i<3; i++) fRec25[i] = 0;
200203 fConst55 = (0 - fConst19);
201 for (int i=0; i<2; i++) fRec28[i] = 0;
204 for (int i=0; i<2; i++) fRec29[i] = 0;
205 for (int i=0; i<3; i++) fRec28[i] = 0;
206 fConst56 = (2 * (0 - fConst17));
202207 for (int i=0; i<3; i++) fRec27[i] = 0;
203 fConst56 = (2 * (0 - fConst17));
204 for (int i=0; i<3; i++) fRec26[i] = 0;
205208 for (int i=0; i<2; i++) fVec4[i] = 0;
206209 fConst57 = (1.5848931924611136 / fConst8);
207210 for (int i=0; i<2; i++) fRec11[i] = 0;
210213 fConst60 = (0 - ((1 - fConst58) / fConst59));
211214 for (int i=0; i<2; i++) fVec5[i] = 0;
212215 fConst61 = (0.027 / fConst59);
213 for (int i=0; i<2; i++) fRec29[i] = 0;
216 for (int i=0; i<2; i++) fRec30[i] = 0;
217 for (int i=0; i<2; i++) fRec31[i] = 0;
214218 for (int i=0; i<2; i++) fRec10[i] = 0;
215219 fConst62 = (0.05 / fConst1);
216220 for (int i=0; i<2; i++) fRec9[i] = 0;
222226 fConst66 = (0 - ((1 - fConst64) / fConst65));
223227 for (int i=0; i<2; i++) fVec7[i] = 0;
224228 fConst67 = (0.015 / fConst65);
225 for (int i=0; i<2; i++) fRec30[i] = 0;
229 for (int i=0; i<2; i++) fRec32[i] = 0;
226230 for (int i=0; i<2; i++) fRec6[i] = 0;
227231 for (int i=0; i<2; i++) fRec5[i] = 0;
228232 for (int i=0; i<2; i++) fVec8[i] = 0;
230234 for (int i=0; i<2; i++) fRec2[i] = 0;
231235 for (int i=0; i<2; i++) fRec1[i] = 0;
232236 for (int i=0; i<2; i++) fVec9[i] = 0;
237 for (int i=0; i<2; i++) fRec35[i] = 0;
238 for (int i=0; i<2; i++) fRec34[i] = 0;
233239 for (int i=0; i<2; i++) fRec33[i] = 0;
234 for (int i=0; i<2; i++) fRec32[i] = 0;
235 for (int i=0; i<2; i++) fRec31[i] = 0;
236240 }
237241
238242 void compute(int count, float *input0, float *output0)
240244 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
241245 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
242246 double fSlow2 = fslider2;
243 double fSlow3 = (0.01 * fSlow2);
247 double fSlow3 = (1.000000000000001e-05 * fSlow2);
244248 double fSlow4 = fslider3;
245249 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
246250 double fSlow6 = (fConst43 * pow(1e+01,(2 * fSlow4)));
248252 double fSlow8 = pow(1e+01,(1.2 * fSlow4));
249253 double fSlow9 = (2 * (fSlow4 - 0.5));
250254 double fSlow10 = (1 - max(0, (0 - fSlow9)));
251 double fSlow11 = (1 - fSlow3);
255 double fSlow11 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
252256 double fSlow12 = (1.25 * fSlow4);
253 double fSlow13 = (0.01 * (fSlow2 * (1 - max(0, fSlow9))));
257 double fSlow13 = (1 - max(0, fSlow9));
254258 for (int i=0; i<count; i++) {
255259 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
256260 double fTemp0 = (fRec2[1] - 1.3e+02);
259263 fRec8[0] = (fSlow1 + (0.999 * fRec8[1]));
260264 double fTemp1 = (fConst12 * fRec12[1]);
261265 double fTemp2 = (fConst18 * fRec13[1]);
266 fRec18[0] = (fSlow3 + (0.999 * fRec18[1]));
262267 double fTemp3 = (double)input0[i];
263 fRec17[0] = ((fSlow3 * fTemp3) - (fConst36 * ((fConst34 * fRec17[2]) + (fConst32 * fRec17[1]))));
268 fRec17[0] = ((fTemp3 * fRec18[0]) - (fConst36 * ((fConst34 * fRec17[2]) + (fConst32 * fRec17[1]))));
264269 double fTemp4 = (fRec17[2] + (fRec17[0] + (2 * fRec17[1])));
265270 fVec1[0] = fTemp4;
266271 fRec16[0] = ((fConst38 * ((fConst37 * fVec1[1]) + (fConst0 * fVec1[0]))) + (fConst2 * fRec16[1]));
269274 fRec13[0] = ((fConst28 * (((fConst23 * fRec14[0]) + (fConst41 * fRec14[1])) + (fConst23 * fRec14[2]))) - (fConst21 * ((fConst20 * fRec13[2]) + fTemp2)));
270275 fRec12[0] = ((fRec13[2] + (fConst21 * (fTemp2 + (fConst20 * fRec13[0])))) - (fConst15 * ((fConst14 * fRec12[2]) + fTemp1)));
271276 double fTemp5 = max(-1, min(1, (fSlow5 * (fRec12[2] + (fConst15 * (fTemp1 + (fConst14 * fRec12[0])))))));
272 fRec23[0] = ((fConst40 * (fRec16[0] + fRec16[1])) + (fConst30 * fRec23[1]));
273 fRec22[0] = (fRec23[0] - (fConst28 * ((fConst26 * fRec22[2]) + (fConst24 * fRec22[1]))));
274 double fTemp6 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
277 fRec24[0] = ((fConst40 * (fRec16[0] + fRec16[1])) + (fConst30 * fRec24[1]));
278 fRec23[0] = (fRec24[0] - (fConst28 * ((fConst26 * fRec23[2]) + (fConst24 * fRec23[1]))));
279 double fTemp6 = (fRec23[2] + (fRec23[0] + (2 * fRec23[1])));
275280 fVec2[0] = fTemp6;
276 fRec21[0] = ((fConst51 * (fVec2[0] + fVec2[1])) + (fConst50 * fRec21[1]));
277 fRec20[0] = (fRec21[0] - (fConst48 * ((fConst46 * fRec20[2]) + (fConst18 * fRec20[1]))));
278 double fTemp7 = (fRec20[2] + (fRec20[0] + (2 * fRec20[1])));
281 fRec22[0] = ((fConst51 * (fVec2[0] + fVec2[1])) + (fConst50 * fRec22[1]));
282 fRec21[0] = (fRec22[0] - (fConst48 * ((fConst46 * fRec21[2]) + (fConst18 * fRec21[1]))));
283 double fTemp7 = (fRec21[2] + (fRec21[0] + (2 * fRec21[1])));
279284 fVec3[0] = fTemp7;
280 fRec19[0] = ((fConst53 * ((fConst52 * fVec3[1]) + (fConst13 * fVec3[0]))) + (fConst45 * fRec19[1]));
281 fRec18[0] = (fRec19[0] - (fConst43 * ((fConst42 * fRec18[2]) + (fConst12 * fRec18[1]))));
282 double fTemp8 = max(-1, min(1, (fSlow6 * (((fConst11 * fRec18[0]) + (fConst54 * fRec18[1])) + (fConst11 * fRec18[2])))));
283 fRec25[0] = ((fConst53 * (fVec3[0] + fVec3[1])) + (fConst45 * fRec25[1]));
284 fRec24[0] = (fRec25[0] - (fConst43 * ((fConst42 * fRec24[2]) + (fConst12 * fRec24[1]))));
285 double fTemp9 = max(-1, min(1, (fSlow7 * (fRec24[2] + (fRec24[0] + (2 * fRec24[1]))))));
286 double fTemp10 = (fConst12 * fRec26[1]);
287 fRec28[0] = ((fConst51 * ((fConst55 * fVec2[1]) + (fConst19 * fVec2[0]))) + (fConst50 * fRec28[1]));
288 fRec27[0] = (fRec28[0] - (fConst48 * ((fConst46 * fRec27[2]) + (fConst18 * fRec27[1]))));
289 fRec26[0] = ((fConst48 * (((fConst17 * fRec27[0]) + (fConst56 * fRec27[1])) + (fConst17 * fRec27[2]))) - (fConst15 * ((fConst14 * fRec26[2]) + fTemp10)));
290 double fTemp11 = max(-1, min(1, (fSlow8 * (fRec26[2] + (fConst15 * (fTemp10 + (fConst14 * fRec26[0])))))));
285 fRec20[0] = ((fConst53 * ((fConst52 * fVec3[1]) + (fConst13 * fVec3[0]))) + (fConst45 * fRec20[1]));
286 fRec19[0] = (fRec20[0] - (fConst43 * ((fConst42 * fRec19[2]) + (fConst12 * fRec19[1]))));
287 double fTemp8 = max(-1, min(1, (fSlow6 * (((fConst11 * fRec19[0]) + (fConst54 * fRec19[1])) + (fConst11 * fRec19[2])))));
288 fRec26[0] = ((fConst53 * (fVec3[0] + fVec3[1])) + (fConst45 * fRec26[1]));
289 fRec25[0] = (fRec26[0] - (fConst43 * ((fConst42 * fRec25[2]) + (fConst12 * fRec25[1]))));
290 double fTemp9 = max(-1, min(1, (fSlow7 * (fRec25[2] + (fRec25[0] + (2 * fRec25[1]))))));
291 double fTemp10 = (fConst12 * fRec27[1]);
292 fRec29[0] = ((fConst51 * ((fConst55 * fVec2[1]) + (fConst19 * fVec2[0]))) + (fConst50 * fRec29[1]));
293 fRec28[0] = (fRec29[0] - (fConst48 * ((fConst46 * fRec28[2]) + (fConst18 * fRec28[1]))));
294 fRec27[0] = ((fConst48 * (((fConst17 * fRec28[0]) + (fConst56 * fRec28[1])) + (fConst17 * fRec28[2]))) - (fConst15 * ((fConst14 * fRec27[2]) + fTemp10)));
295 double fTemp11 = max(-1, min(1, (fSlow8 * (fRec27[2] + (fConst15 * (fTemp10 + (fConst14 * fRec27[0])))))));
291296 double fTemp12 = (((fTemp11 * (1 - (0.3333333333333333 * faustpower<2>(fTemp11)))) + ((fTemp9 * (1 - (0.3333333333333333 * faustpower<2>(fTemp9)))) + (0.841395141645195 * (fTemp8 * (1 - (0.3333333333333333 * faustpower<2>(fTemp8))))))) + (0.7943282347242815 * (fTemp5 * (1 - (0.3333333333333333 * faustpower<2>(fTemp5))))));
292297 fVec4[0] = fTemp12;
293298 fRec11[0] = ((fConst57 * (fVec4[0] + fVec4[1])) + (fConst9 * fRec11[1]));
294299 double fTemp13 = (fRec10[1] - 1.3e+02);
295300 fVec5[0] = fTemp13;
296 fRec29[0] = ((fConst61 * (fVec5[0] + fVec5[1])) + (fConst60 * fRec29[1]));
297 fRec10[0] = Ftube4(0, ((fTemp3 * (fSlow13 + (fSlow11 * (1 + (fSlow12 * ((4 - (4 * fabs((fSlow11 * fTemp3)))) - 1)))))) + (fRec29[0] + (fSlow10 * fRec11[0]))));
301 fRec30[0] = ((fConst61 * (fVec5[0] + fVec5[1])) + (fConst60 * fRec30[1]));
302 fRec31[0] = (fSlow11 + (0.999 * fRec31[1]));
303 fRec10[0] = Ftube4(0, ((fTemp3 * ((fSlow13 * fRec18[0]) + (fRec31[0] * (1 + (fSlow12 * ((4 - (4 * fabs((fTemp3 * fRec31[0])))) - 1)))))) + (fRec30[0] + (fSlow10 * fRec11[0]))));
298304 fRec9[0] = ((fConst62 * ((fConst37 * fRec10[1]) + (fConst0 * fRec10[0]))) + (fConst2 * fRec9[1]));
299305 double fTemp14 = (fRec9[0] * fRec8[0]);
300306 fVec6[0] = fTemp14;
301307 fRec7[0] = ((fConst63 * (fVec6[0] + fVec6[1])) + (fConst9 * fRec7[1]));
302308 double fTemp15 = (fRec6[1] - 1.3e+02);
303309 fVec7[0] = fTemp15;
304 fRec30[0] = ((fConst67 * (fVec7[0] + fVec7[1])) + (fConst66 * fRec30[1]));
305 fRec6[0] = Ftube4(1, (fRec30[0] + fRec7[0]));
310 fRec32[0] = ((fConst67 * (fVec7[0] + fVec7[1])) + (fConst66 * fRec32[1]));
311 fRec6[0] = Ftube4(1, (fRec32[0] + fRec7[0]));
306312 fRec5[0] = ((fConst62 * ((fConst37 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
307313 double fTemp16 = (fRec8[0] * fRec5[0]);
308314 fVec8[0] = fTemp16;
309315 fRec4[0] = ((fConst63 * (fVec8[0] + fVec8[1])) + (fConst9 * fRec4[1]));
310316 fRec2[0] = Ftube4(1, (fRec4[0] + fRec3[0]));
311317 fRec1[0] = ((fConst62 * ((fConst37 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
312 double fTemp17 = (fRec32[1] - 1.3e+02);
318 double fTemp17 = (fRec34[1] - 1.3e+02);
313319 fVec9[0] = fTemp17;
314 fRec33[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec33[1]));
315 fRec32[0] = Ftube4(0, (fRec33[0] + fRec4[0]));
316 fRec31[0] = ((fConst62 * ((fConst37 * fRec32[1]) + (fConst0 * fRec32[0]))) + (fConst2 * fRec31[1]));
317 output0[i] = (FAUSTFLOAT)((fRec31[0] + fRec1[0]) * fRec0[0]);
320 fRec35[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec35[1]));
321 fRec34[0] = Ftube4(0, (fRec35[0] + fRec4[0]));
322 fRec33[0] = ((fConst62 * ((fConst37 * fRec34[1]) + (fConst0 * fRec34[0]))) + (fConst2 * fRec33[1]));
323 output0[i] = (FAUSTFLOAT)((fRec33[0] + fRec1[0]) * fRec0[0]);
318324 // post processing
319 fRec31[1] = fRec31[0];
320 fRec32[1] = fRec32[0];
321325 fRec33[1] = fRec33[0];
326 fRec34[1] = fRec34[0];
327 fRec35[1] = fRec35[0];
322328 fVec9[1] = fVec9[0];
323329 fRec1[1] = fRec1[0];
324330 fRec2[1] = fRec2[0];
326332 fVec8[1] = fVec8[0];
327333 fRec5[1] = fRec5[0];
328334 fRec6[1] = fRec6[0];
329 fRec30[1] = fRec30[0];
335 fRec32[1] = fRec32[0];
330336 fVec7[1] = fVec7[0];
331337 fRec7[1] = fRec7[0];
332338 fVec6[1] = fVec6[0];
333339 fRec9[1] = fRec9[0];
334340 fRec10[1] = fRec10[0];
335 fRec29[1] = fRec29[0];
341 fRec31[1] = fRec31[0];
342 fRec30[1] = fRec30[0];
336343 fVec5[1] = fVec5[0];
337344 fRec11[1] = fRec11[0];
338345 fVec4[1] = fVec4[0];
339 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
340346 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
341 fRec28[1] = fRec28[0];
342 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
343 fRec25[1] = fRec25[0];
344 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
345 fRec19[1] = fRec19[0];
347 fRec28[2] = fRec28[1]; fRec28[1] = fRec28[0];
348 fRec29[1] = fRec29[0];
349 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
350 fRec26[1] = fRec26[0];
351 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
352 fRec20[1] = fRec20[0];
346353 fVec3[1] = fVec3[0];
347 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
348 fRec21[1] = fRec21[0];
354 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
355 fRec22[1] = fRec22[0];
349356 fVec2[1] = fVec2[0];
350 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
351 fRec23[1] = fRec23[0];
357 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
358 fRec24[1] = fRec24[0];
352359 fRec12[2] = fRec12[1]; fRec12[1] = fRec12[0];
353360 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
354361 fRec14[2] = fRec14[1]; fRec14[1] = fRec14[0];
356363 fRec16[1] = fRec16[0];
357364 fVec1[1] = fVec1[0];
358365 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
366 fRec18[1] = fRec18[0];
359367 fRec8[1] = fRec8[0];
360368 fRec3[1] = fRec3[0];
361369 fVec0[1] = fVec0[0];
4545 double fConst34;
4646 double fRec19[2];
4747 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
48 double fRec22[2];
4849 double fRec18[3];
4950 double fVec1[2];
5051 double fConst35;
6768 double fConst46;
6869 double fConst47;
6970 double fConst48;
70 double fRec27[2];
71 double fRec26[3];
71 double fRec28[2];
72 double fRec27[3];
7273 double fVec2[2];
7374 double fConst49;
74 double fRec25[2];
75 double fRec24[3];
75 double fRec26[2];
76 double fRec25[3];
7677 double fVec3[2];
7778 double fConst50;
7879 double fConst51;
79 double fRec23[2];
80 double fRec22[3];
80 double fRec24[2];
81 double fRec23[3];
8182 double fConst52;
82 double fRec29[2];
83 double fRec28[3];
83 double fRec30[2];
84 double fRec29[3];
8485 double fConst53;
85 double fRec32[2];
86 double fRec33[2];
87 double fRec32[3];
88 double fConst54;
8689 double fRec31[3];
87 double fConst54;
88 double fRec30[3];
8990 double fVec4[2];
9091 double fConst55;
9192 double fRec12[2];
9495 double fConst58;
9596 double fVec5[2];
9697 double fConst59;
97 double fRec33[2];
98 double fRec34[2];
99 double fRec35[2];
98100 double fRec11[2];
99101 double fConst60;
100102 double fRec10[2];
103105 double fConst63;
104106 double fVec6[2];
105107 double fConst64;
108 double fRec38[2];
109 double fRec37[2];
106110 double fRec36[2];
107 double fRec35[2];
108 double fRec34[2];
109111 double fRec9[2];
110112 double fVec7[2];
111113 double fConst65;
112114 double fRec7[2];
113115 double fVec8[2];
114 double fRec37[2];
116 double fRec39[2];
115117 double fRec6[2];
116118 double fRec5[2];
117119 double fConst66;
119121 double fConst68;
120122 double fVec9[2];
121123 double fConst69;
124 double fRec42[2];
125 double fRec41[2];
122126 double fRec40[2];
123 double fRec39[2];
124 double fRec38[2];
125127 double fRec4[2];
126128 double fRec3[2];
127129 double fVec10[2];
128 double fRec41[2];
130 double fRec43[2];
129131 double fRec2[2];
130132 double fRec1[2];
131133 int fSamplingFreq;
175177 for (int i=0; i<2; i++) fRec20[i] = 0;
176178 fConst34 = (0.009000000000000008 / fSamplingFreq);
177179 for (int i=0; i<2; i++) fRec19[i] = 0;
180 for (int i=0; i<2; i++) fRec22[i] = 0;
178181 for (int i=0; i<3; i++) fRec18[i] = 0;
179182 for (int i=0; i<2; i++) fVec1[i] = 0;
180183 fConst35 = (0 - fConst0);
196199 fConst46 = (1.0 / fConst45);
197200 fConst47 = (1 + fConst15);
198201 fConst48 = (0 - ((1 - fConst15) / fConst47));
199 for (int i=0; i<2; i++) fRec27[i] = 0;
200 for (int i=0; i<3; i++) fRec26[i] = 0;
202 for (int i=0; i<2; i++) fRec28[i] = 0;
203 for (int i=0; i<3; i++) fRec27[i] = 0;
201204 for (int i=0; i<2; i++) fVec2[i] = 0;
202205 fConst49 = (1.0 / (fConst47 * fConst23));
203 for (int i=0; i<2; i++) fRec25[i] = 0;
204 for (int i=0; i<3; i++) fRec24[i] = 0;
206 for (int i=0; i<2; i++) fRec26[i] = 0;
207 for (int i=0; i<3; i++) fRec25[i] = 0;
205208 for (int i=0; i<2; i++) fVec3[i] = 0;
206209 fConst50 = (0 - fConst9);
207210 fConst51 = (1.0 / (fConst42 * fConst45));
208 for (int i=0; i<2; i++) fRec23[i] = 0;
209 for (int i=0; i<3; i++) fRec22[i] = 0;
211 for (int i=0; i<2; i++) fRec24[i] = 0;
212 for (int i=0; i<3; i++) fRec23[i] = 0;
210213 fConst52 = (2 * (0 - fConst7));
211 for (int i=0; i<2; i++) fRec29[i] = 0;
212 for (int i=0; i<3; i++) fRec28[i] = 0;
214 for (int i=0; i<2; i++) fRec30[i] = 0;
215 for (int i=0; i<3; i++) fRec29[i] = 0;
213216 fConst53 = (0 - fConst15);
214 for (int i=0; i<2; i++) fRec32[i] = 0;
217 for (int i=0; i<2; i++) fRec33[i] = 0;
218 for (int i=0; i<3; i++) fRec32[i] = 0;
219 fConst54 = (2 * (0 - fConst13));
215220 for (int i=0; i<3; i++) fRec31[i] = 0;
216 fConst54 = (2 * (0 - fConst13));
217 for (int i=0; i<3; i++) fRec30[i] = 0;
218221 for (int i=0; i<2; i++) fVec4[i] = 0;
219222 fConst55 = (1.5848931924611136 / fConst4);
220223 for (int i=0; i<2; i++) fRec12[i] = 0;
223226 fConst58 = (0 - ((1 - fConst56) / fConst57));
224227 for (int i=0; i<2; i++) fVec5[i] = 0;
225228 fConst59 = (0.027 / fConst57);
226 for (int i=0; i<2; i++) fRec33[i] = 0;
229 for (int i=0; i<2; i++) fRec34[i] = 0;
230 for (int i=0; i<2; i++) fRec35[i] = 0;
227231 for (int i=0; i<2; i++) fRec11[i] = 0;
228232 fConst60 = (0.1 / fConst1);
229233 for (int i=0; i<2; i++) fRec10[i] = 0;
232236 fConst63 = (0 - ((1 - fConst61) / fConst62));
233237 for (int i=0; i<2; i++) fVec6[i] = 0;
234238 fConst64 = (0.015 / fConst62);
239 for (int i=0; i<2; i++) fRec38[i] = 0;
240 for (int i=0; i<2; i++) fRec37[i] = 0;
235241 for (int i=0; i<2; i++) fRec36[i] = 0;
236 for (int i=0; i<2; i++) fRec35[i] = 0;
237 for (int i=0; i<2; i++) fRec34[i] = 0;
238242 for (int i=0; i<2; i++) fRec9[i] = 0;
239243 for (int i=0; i<2; i++) fVec7[i] = 0;
240244 fConst65 = (1.0 / fConst4);
241245 for (int i=0; i<2; i++) fRec7[i] = 0;
242246 for (int i=0; i<2; i++) fVec8[i] = 0;
243 for (int i=0; i<2; i++) fRec37[i] = 0;
247 for (int i=0; i<2; i++) fRec39[i] = 0;
244248 for (int i=0; i<2; i++) fRec6[i] = 0;
245249 for (int i=0; i<2; i++) fRec5[i] = 0;
246250 fConst66 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
248252 fConst68 = (0 - ((1 - fConst66) / fConst67));
249253 for (int i=0; i<2; i++) fVec9[i] = 0;
250254 fConst69 = (0.0082 / fConst67);
255 for (int i=0; i<2; i++) fRec42[i] = 0;
256 for (int i=0; i<2; i++) fRec41[i] = 0;
251257 for (int i=0; i<2; i++) fRec40[i] = 0;
252 for (int i=0; i<2; i++) fRec39[i] = 0;
253 for (int i=0; i<2; i++) fRec38[i] = 0;
254258 for (int i=0; i<2; i++) fRec4[i] = 0;
255259 for (int i=0; i<2; i++) fRec3[i] = 0;
256260 for (int i=0; i<2; i++) fVec10[i] = 0;
257 for (int i=0; i<2; i++) fRec41[i] = 0;
261 for (int i=0; i<2; i++) fRec43[i] = 0;
258262 for (int i=0; i<2; i++) fRec2[i] = 0;
259263 for (int i=0; i<2; i++) fRec1[i] = 0;
260264 }
264268 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
265269 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
266270 double fSlow2 = fslider2;
267 double fSlow3 = (0.00024937655860349125 * fSlow2);
271 double fSlow3 = (1.000000000000001e-05 * fSlow2);
268272 double fSlow4 = fslider3;
269273 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
270274 double fSlow6 = pow(1e+01,(2 * fSlow4));
273277 double fSlow9 = pow(1e+01,(1.2 * fSlow4));
274278 double fSlow10 = (2 * (fSlow4 - 0.5));
275279 double fSlow11 = (1 - max(0, (0 - fSlow10)));
276 double fSlow12 = (1 - (0.01 * fSlow2));
277 double fSlow13 = (0.024937655860349125 * fSlow12);
280 double fSlow12 = (0.024937655860349125 * (1 - max(0, fSlow10)));
281 double fSlow13 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
278282 double fSlow14 = (1.25 * fSlow4);
279 double fSlow15 = (0.00024937655860349125 * (fSlow2 * (1 - max(0, fSlow10))));
280283 for (int i=0; i<count; i++) {
281284 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
282285 fRec8[0] = (fSlow1 + (0.999 * fRec8[1]));
299302 double fTemp12 = max(-600, fTemp11);
300303 double fTemp13 = (0 - fTemp12);
301304 double fTemp14 = (((int((fabs(fTemp11) > 0.0001)))?((int((fTemp12 < -50)))?(exp(fTemp12) * fTemp13):(fTemp12 / (1 - exp(fTemp13)))):(1 + (fTemp10 * (20.05 + (134.00083333333336 * fTemp10))))) - ((int((fabs(fTemp7) > 0.0001)))?((int((fTemp8 < -50)))?(exp(fTemp8) * fTemp9):(fTemp8 / (1 - exp(fTemp9)))):(1 + (fTemp6 * (20.05 + (134.00083333333336 * fTemp6))))));
302 double fTemp15 = (fSlow3 * fTemp14);
305 fRec22[0] = (fSlow3 + (0.999 * fRec22[1]));
306 double fTemp15 = (0.024937655860349125 * (fRec22[0] * fTemp14));
303307 fRec18[0] = (fTemp15 - (fConst32 * ((fConst30 * fRec18[2]) + (fConst28 * fRec18[1]))));
304308 double fTemp16 = (fRec18[2] + (fRec18[0] + (2 * fRec18[1])));
305309 fVec1[0] = fTemp16;
309313 fRec14[0] = ((fConst24 * (((fConst19 * fRec15[0]) + (fConst39 * fRec15[1])) + (fConst19 * fRec15[2]))) - (fConst17 * ((fConst16 * fRec14[2]) + fTemp1)));
310314 fRec13[0] = ((fRec14[2] + (fConst17 * (fTemp1 + (fConst16 * fRec14[0])))) - (fConst11 * ((fConst10 * fRec13[2]) + fTemp0)));
311315 double fTemp17 = max(-1, min(1, (fSlow5 * (fRec13[2] + (fConst11 * (fTemp0 + (fConst10 * fRec13[0])))))));
312 fRec27[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec27[1]));
313 fRec26[0] = (fRec27[0] - (fConst24 * ((fConst22 * fRec26[2]) + (fConst20 * fRec26[1]))));
314 double fTemp18 = (fRec26[2] + (fRec26[0] + (2 * fRec26[1])));
316 fRec28[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec28[1]));
317 fRec27[0] = (fRec28[0] - (fConst24 * ((fConst22 * fRec27[2]) + (fConst20 * fRec27[1]))));
318 double fTemp18 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
315319 fVec2[0] = fTemp18;
316 fRec25[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec25[1]));
317 fRec24[0] = (fRec25[0] - (fConst46 * ((fConst44 * fRec24[2]) + (fConst14 * fRec24[1]))));
318 double fTemp19 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
320 fRec26[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec26[1]));
321 fRec25[0] = (fRec26[0] - (fConst46 * ((fConst44 * fRec25[2]) + (fConst14 * fRec25[1]))));
322 double fTemp19 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
319323 fVec3[0] = fTemp19;
320 fRec23[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec23[1]));
321 fRec22[0] = (fRec23[0] - (fConst41 * ((fConst40 * fRec22[2]) + (fConst8 * fRec22[1]))));
322 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec22[0]) + (fConst52 * fRec22[1])) + (fConst7 * fRec22[2])))));
323 fRec29[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec29[1]));
324 fRec28[0] = (fRec29[0] - (fConst41 * ((fConst40 * fRec28[2]) + (fConst8 * fRec28[1]))));
325 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec28[2] + (fRec28[0] + (2 * fRec28[1]))))));
326 double fTemp22 = (fConst8 * fRec30[1]);
327 fRec32[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec32[1]));
328 fRec31[0] = (fRec32[0] - (fConst46 * ((fConst44 * fRec31[2]) + (fConst14 * fRec31[1]))));
329 fRec30[0] = ((fConst46 * (((fConst13 * fRec31[0]) + (fConst54 * fRec31[1])) + (fConst13 * fRec31[2]))) - (fConst11 * ((fConst10 * fRec30[2]) + fTemp22)));
330 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec30[2] + (fConst11 * (fTemp22 + (fConst10 * fRec30[0])))))));
324 fRec24[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec24[1]));
325 fRec23[0] = (fRec24[0] - (fConst41 * ((fConst40 * fRec23[2]) + (fConst8 * fRec23[1]))));
326 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec23[0]) + (fConst52 * fRec23[1])) + (fConst7 * fRec23[2])))));
327 fRec30[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec30[1]));
328 fRec29[0] = (fRec30[0] - (fConst41 * ((fConst40 * fRec29[2]) + (fConst8 * fRec29[1]))));
329 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
330 double fTemp22 = (fConst8 * fRec31[1]);
331 fRec33[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec33[1]));
332 fRec32[0] = (fRec33[0] - (fConst46 * ((fConst44 * fRec32[2]) + (fConst14 * fRec32[1]))));
333 fRec31[0] = ((fConst46 * (((fConst13 * fRec32[0]) + (fConst54 * fRec32[1])) + (fConst13 * fRec32[2]))) - (fConst11 * ((fConst10 * fRec31[2]) + fTemp22)));
334 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec31[2] + (fConst11 * (fTemp22 + (fConst10 * fRec31[0])))))));
331335 double fTemp24 = (((fTemp23 * (1 - (0.3333333333333333 * faustpower<2>(fTemp23)))) + ((fTemp21 * (1 - (0.3333333333333333 * faustpower<2>(fTemp21)))) + (0.841395141645195 * (fTemp20 * (1 - (0.3333333333333333 * faustpower<2>(fTemp20))))))) + (0.7943282347242815 * (fTemp17 * (1 - (0.3333333333333333 * faustpower<2>(fTemp17))))));
332336 fVec4[0] = fTemp24;
333337 fRec12[0] = ((fConst55 * (fVec4[0] + fVec4[1])) + (fConst5 * fRec12[1]));
334338 double fTemp25 = (fRec11[1] - 1.3e+02);
335339 fVec5[0] = fTemp25;
336 fRec33[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec33[1]));
340 fRec34[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec34[1]));
337341 double fTemp26 = max(-1, min(1, (fSlow6 * max(-0.7, min(0.7, fTemp15)))));
338 fRec11[0] = Ftube3(0, ((fTemp14 * (fSlow15 + (fSlow12 * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((fSlow13 * fTemp14)))) - 0.024937655860349125)))))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec33[0] + (fSlow11 * fRec12[0])))));
342 fRec35[0] = (fSlow13 + (0.999 * fRec35[1]));
343 fRec11[0] = Ftube3(0, ((fTemp14 * ((fRec35[0] * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((0.024937655860349125 * (fRec35[0] * fTemp14))))) - 0.024937655860349125)))) + (fSlow12 * fRec22[0]))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec34[0] + (fSlow11 * fRec12[0])))));
339344 fRec10[0] = ((fConst60 * ((fConst35 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
340 double fTemp27 = (fRec35[1] - 1.3e+02);
345 double fTemp27 = (fRec37[1] - 1.3e+02);
341346 fVec6[0] = fTemp27;
342 fRec36[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec36[1]));
343 fRec35[0] = Ftube3(1, (fRec36[0] + fRec9[1]));
344 fRec34[0] = ((fConst60 * ((fConst35 * fRec35[1]) + (fConst0 * fRec35[0]))) + (fConst2 * fRec34[1]));
345 fRec9[0] = (fRec34[0] - fRec10[0]);
347 fRec38[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec38[1]));
348 fRec37[0] = Ftube3(1, (fRec38[0] + fRec9[1]));
349 fRec36[0] = ((fConst60 * ((fConst35 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
350 fRec9[0] = (fRec36[0] - fRec10[0]);
346351 double fTemp28 = (fRec9[0] * fRec8[0]);
347352 fVec7[0] = fTemp28;
348353 fRec7[0] = ((fConst65 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec7[1]));
349354 double fTemp29 = (fRec6[1] - 1.3e+02);
350355 fVec8[0] = fTemp29;
351 fRec37[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec37[1]));
352 fRec6[0] = Ftube3(1, (fRec37[0] + fRec7[0]));
356 fRec39[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec39[1]));
357 fRec6[0] = Ftube3(1, (fRec39[0] + fRec7[0]));
353358 fRec5[0] = ((fConst60 * ((fConst35 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
354 double fTemp30 = (fRec39[1] - 1.3e+02);
359 double fTemp30 = (fRec41[1] - 1.3e+02);
355360 fVec9[0] = fTemp30;
356 fRec40[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec40[1]));
357 fRec39[0] = Ftube3(1, (fRec40[0] + fRec4[1]));
358 fRec38[0] = ((fConst60 * ((fConst35 * fRec39[1]) + (fConst0 * fRec39[0]))) + (fConst2 * fRec38[1]));
359 fRec4[0] = (fRec38[0] + fRec5[0]);
361 fRec42[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec42[1]));
362 fRec41[0] = Ftube3(1, (fRec42[0] + fRec4[1]));
363 fRec40[0] = ((fConst60 * ((fConst35 * fRec41[1]) + (fConst0 * fRec41[0]))) + (fConst2 * fRec40[1]));
364 fRec4[0] = (fRec40[0] + fRec5[0]);
360365 fRec3[0] = ((fConst65 * (fRec4[0] + fRec4[1])) + (fConst5 * fRec3[1]));
361366 double fTemp31 = (fRec2[1] - 1.3e+02);
362367 fVec10[0] = fTemp31;
363 fRec41[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec41[1]));
364 fRec2[0] = Ftube3(1, (fRec41[0] + fRec3[0]));
368 fRec43[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec43[1]));
369 fRec2[0] = Ftube3(1, (fRec43[0] + fRec3[0]));
365370 fRec1[0] = ((fConst60 * ((fConst35 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
366371 output0[i] = (FAUSTFLOAT)(fRec1[0] * fRec0[0]);
367372 // post processing
368373 fRec1[1] = fRec1[0];
369374 fRec2[1] = fRec2[0];
370 fRec41[1] = fRec41[0];
375 fRec43[1] = fRec43[0];
371376 fVec10[1] = fVec10[0];
372377 fRec3[1] = fRec3[0];
373378 fRec4[1] = fRec4[0];
374 fRec38[1] = fRec38[0];
375 fRec39[1] = fRec39[0];
376379 fRec40[1] = fRec40[0];
380 fRec41[1] = fRec41[0];
381 fRec42[1] = fRec42[0];
377382 fVec9[1] = fVec9[0];
378383 fRec5[1] = fRec5[0];
379384 fRec6[1] = fRec6[0];
380 fRec37[1] = fRec37[0];
385 fRec39[1] = fRec39[0];
381386 fVec8[1] = fVec8[0];
382387 fRec7[1] = fRec7[0];
383388 fVec7[1] = fVec7[0];
384389 fRec9[1] = fRec9[0];
385 fRec34[1] = fRec34[0];
386 fRec35[1] = fRec35[0];
387390 fRec36[1] = fRec36[0];
391 fRec37[1] = fRec37[0];
392 fRec38[1] = fRec38[0];
388393 fVec6[1] = fVec6[0];
389394 fRec10[1] = fRec10[0];
390395 fRec11[1] = fRec11[0];
391 fRec33[1] = fRec33[0];
396 fRec35[1] = fRec35[0];
397 fRec34[1] = fRec34[0];
392398 fVec5[1] = fVec5[0];
393399 fRec12[1] = fRec12[0];
394400 fVec4[1] = fVec4[0];
395 fRec30[2] = fRec30[1]; fRec30[1] = fRec30[0];
396401 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
397 fRec32[1] = fRec32[0];
398 fRec28[2] = fRec28[1]; fRec28[1] = fRec28[0];
399 fRec29[1] = fRec29[0];
400 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
401 fRec23[1] = fRec23[0];
402 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
403 fRec33[1] = fRec33[0];
404 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
405 fRec30[1] = fRec30[0];
406 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
407 fRec24[1] = fRec24[0];
402408 fVec3[1] = fVec3[0];
403 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
404 fRec25[1] = fRec25[0];
409 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
410 fRec26[1] = fRec26[0];
405411 fVec2[1] = fVec2[0];
406 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
407 fRec27[1] = fRec27[0];
412 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
413 fRec28[1] = fRec28[0];
408414 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
409415 fRec14[2] = fRec14[1]; fRec14[1] = fRec14[0];
410416 fRec15[2] = fRec15[1]; fRec15[1] = fRec15[0];
412418 fRec17[1] = fRec17[0];
413419 fVec1[1] = fVec1[0];
414420 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
421 fRec22[1] = fRec22[0];
415422 fRec19[1] = fRec19[0];
416423 fRec20[1] = fRec20[0];
417424 IOTA = IOTA+1;
1111 double fRec2[2];
1212 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
1313 double fRec3[2];
14 FAUSTFLOAT& fslider1 = get_alias("amp2.stage1.Pregain");
15 double fRec12[2];
14 FAUSTFLOAT& fslider1 = get_alias("gxdistortion.wet_dry");
15 double fRec5[2];
16 FAUSTFLOAT& fslider2 = get_alias("amp2.stage1.Pregain");
17 double fRec13[2];
1618 double fConst7;
1719 double fConst8;
1820 double fConst9;
1921 double fVec1[2];
2022 double fConst10;
21 double fRec13[2];
22 double fRec11[2];
23 double fRec14[2];
24 double fRec12[2];
2325 double fConst11;
2426 double fConst12;
27 double fRec11[2];
28 double fConst13;
2529 double fRec10[2];
26 double fConst13;
27 double fRec9[2];
2830 double fConst14;
2931 double fConst15;
3032 double fConst16;
3133 double fVec2[2];
3234 double fConst17;
33 double fRec14[2];
35 double fRec15[2];
36 double fRec9[2];
3437 double fRec8[2];
35 double fRec7[2];
3638 double fConst18;
3739 double fConst19;
3840 double fConst20;
3941 double fVec3[2];
4042 double fConst21;
41 double fRec15[2];
43 double fRec16[2];
44 double fRec7[2];
4245 double fRec6[2];
43 double fRec5[2];
44 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
4546 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
47 double fRec17[2];
4648 double fConst22;
4749 double fConst23;
4850 double fConst24;
7072 double fConst46;
7173 double fConst47;
7274 double fConst48;
73 double fRec22[3];
75 double fRec24[3];
7476 double fVec4[2];
7577 double fConst49;
76 double fRec21[2];
78 double fRec23[2];
7779 double fConst50;
7880 double fConst51;
79 double fRec20[2];
81 double fRec22[2];
82 double fRec21[3];
83 double fConst52;
84 double fRec20[3];
8085 double fRec19[3];
81 double fConst52;
82 double fRec18[3];
83 double fRec17[3];
8486 double fConst53;
8587 double fConst54;
8688 double fConst55;
9092 double fConst59;
9193 double fConst60;
9294 double fConst61;
95 double fRec30[2];
96 double fRec29[3];
97 double fVec5[2];
98 double fConst62;
9399 double fRec28[2];
94100 double fRec27[3];
95 double fVec5[2];
96 double fConst62;
97 double fRec26[2];
98 double fRec25[3];
99101 double fVec6[2];
100102 double fConst63;
101103 double fConst64;
102 double fRec24[2];
103 double fRec23[3];
104 double fRec26[2];
105 double fRec25[3];
104106 double fConst65;
105 double fRec30[2];
106 double fRec29[3];
107 double fRec32[2];
108 double fRec31[3];
107109 double fConst66;
108 double fRec33[2];
109 double fRec32[3];
110 double fRec35[2];
111 double fRec34[3];
110112 double fConst67;
111 double fRec31[3];
113 double fRec33[3];
112114 double fVec7[2];
113115 double fConst68;
114 double fRec16[2];
116 double fRec18[2];
115117 double fVec8[2];
116118 double fRec4[2];
117119 double fRec1[2];
118120 double fConst69;
119121 double fRec0[2];
120122 double fVec9[2];
123 double fRec38[2];
124 double fRec37[2];
121125 double fRec36[2];
122 double fRec35[2];
123 double fRec34[2];
124126 int fSamplingFreq;
125127
126128 void init(int samplingFreq)
136138 fConst6 = (0.0082 / fConst4);
137139 for (int i=0; i<2; i++) fRec2[i] = 0;
138140 for (int i=0; i<2; i++) fRec3[i] = 0;
139 for (int i=0; i<2; i++) fRec12[i] = 0;
141 for (int i=0; i<2; i++) fRec5[i] = 0;
142 for (int i=0; i<2; i++) fRec13[i] = 0;
140143 fConst7 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
141144 fConst8 = (1 + fConst7);
142145 fConst9 = (0 - ((1 - fConst7) / fConst8));
143146 for (int i=0; i<2; i++) fVec1[i] = 0;
144147 fConst10 = (0.027 / fConst8);
145 for (int i=0; i<2; i++) fRec13[i] = 0;
146 for (int i=0; i<2; i++) fRec11[i] = 0;
148 for (int i=0; i<2; i++) fRec14[i] = 0;
149 for (int i=0; i<2; i++) fRec12[i] = 0;
147150 fConst11 = (0 - fConst0);
148151 fConst12 = (0.05 / fConst1);
152 for (int i=0; i<2; i++) fRec11[i] = 0;
153 fConst13 = (1.0 / fConst4);
149154 for (int i=0; i<2; i++) fRec10[i] = 0;
150 fConst13 = (1.0 / fConst4);
151 for (int i=0; i<2; i++) fRec9[i] = 0;
152155 fConst14 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
153156 fConst15 = (1 + fConst14);
154157 fConst16 = (0 - ((1 - fConst14) / fConst15));
155158 for (int i=0; i<2; i++) fVec2[i] = 0;
156159 fConst17 = (0.015 / fConst15);
157 for (int i=0; i<2; i++) fRec14[i] = 0;
160 for (int i=0; i<2; i++) fRec15[i] = 0;
161 for (int i=0; i<2; i++) fRec9[i] = 0;
158162 for (int i=0; i<2; i++) fRec8[i] = 0;
159 for (int i=0; i<2; i++) fRec7[i] = 0;
160163 fConst18 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
161164 fConst19 = (1 + fConst18);
162165 fConst20 = (0 - ((1 - fConst18) / fConst19));
163166 for (int i=0; i<2; i++) fVec3[i] = 0;
164167 fConst21 = (0.0082 / fConst19);
165 for (int i=0; i<2; i++) fRec15[i] = 0;
168 for (int i=0; i<2; i++) fRec16[i] = 0;
169 for (int i=0; i<2; i++) fRec7[i] = 0;
166170 for (int i=0; i<2; i++) fRec6[i] = 0;
167 for (int i=0; i<2; i++) fRec5[i] = 0;
171 for (int i=0; i<2; i++) fRec17[i] = 0;
168172 fConst22 = tan((942.4777960769379 / fSamplingFreq));
169173 fConst23 = (1.0 / faustpower<2>(fConst22));
170174 fConst24 = (2 * (1 - fConst23));
192196 fConst46 = (1 + ((fConst45 - 1.414213562373095) / fConst43));
193197 fConst47 = (1 + ((1.414213562373095 + fConst45) / fConst43));
194198 fConst48 = (1.0 / fConst47);
195 for (int i=0; i<3; i++) fRec22[i] = 0;
199 for (int i=0; i<3; i++) fRec24[i] = 0;
196200 for (int i=0; i<2; i++) fVec4[i] = 0;
197201 fConst49 = (1.0 / (fConst1 * fConst47));
198 for (int i=0; i<2; i++) fRec21[i] = 0;
202 for (int i=0; i<2; i++) fRec23[i] = 0;
199203 fConst50 = (0 - fConst37);
200204 fConst51 = (1.0 / fConst41);
201 for (int i=0; i<2; i++) fRec20[i] = 0;
205 for (int i=0; i<2; i++) fRec22[i] = 0;
206 for (int i=0; i<3; i++) fRec21[i] = 0;
207 fConst52 = (2 * (0 - fConst35));
208 for (int i=0; i<3; i++) fRec20[i] = 0;
202209 for (int i=0; i<3; i++) fRec19[i] = 0;
203 fConst52 = (2 * (0 - fConst35));
204 for (int i=0; i<3; i++) fRec18[i] = 0;
205 for (int i=0; i<3; i++) fRec17[i] = 0;
206210 fConst53 = (1 + ((fConst25 - 1.0000000000000004) / fConst22));
207211 fConst54 = (1.0 / (1 + ((fConst25 + 1.0000000000000004) / fConst22)));
208212 fConst55 = (1 + fConst25);
212216 fConst59 = (1.0 / fConst58);
213217 fConst60 = (1 + fConst31);
214218 fConst61 = (0 - ((1 - fConst31) / fConst60));
219 for (int i=0; i<2; i++) fRec30[i] = 0;
220 for (int i=0; i<3; i++) fRec29[i] = 0;
221 for (int i=0; i<2; i++) fVec5[i] = 0;
222 fConst62 = (1.0 / (fConst60 * fConst39));
215223 for (int i=0; i<2; i++) fRec28[i] = 0;
216224 for (int i=0; i<3; i++) fRec27[i] = 0;
217 for (int i=0; i<2; i++) fVec5[i] = 0;
218 fConst62 = (1.0 / (fConst60 * fConst39));
219 for (int i=0; i<2; i++) fRec26[i] = 0;
220 for (int i=0; i<3; i++) fRec25[i] = 0;
221225 for (int i=0; i<2; i++) fVec6[i] = 0;
222226 fConst63 = (0 - fConst25);
223227 fConst64 = (1.0 / (fConst55 * fConst58));
224 for (int i=0; i<2; i++) fRec24[i] = 0;
225 for (int i=0; i<3; i++) fRec23[i] = 0;
228 for (int i=0; i<2; i++) fRec26[i] = 0;
229 for (int i=0; i<3; i++) fRec25[i] = 0;
226230 fConst65 = (2 * (0 - fConst23));
227 for (int i=0; i<2; i++) fRec30[i] = 0;
228 for (int i=0; i<3; i++) fRec29[i] = 0;
231 for (int i=0; i<2; i++) fRec32[i] = 0;
232 for (int i=0; i<3; i++) fRec31[i] = 0;
229233 fConst66 = (0 - fConst31);
230 for (int i=0; i<2; i++) fRec33[i] = 0;
231 for (int i=0; i<3; i++) fRec32[i] = 0;
234 for (int i=0; i<2; i++) fRec35[i] = 0;
235 for (int i=0; i<3; i++) fRec34[i] = 0;
232236 fConst67 = (2 * (0 - fConst29));
233 for (int i=0; i<3; i++) fRec31[i] = 0;
237 for (int i=0; i<3; i++) fRec33[i] = 0;
234238 for (int i=0; i<2; i++) fVec7[i] = 0;
235239 fConst68 = (1.5848931924611136 / fConst4);
236 for (int i=0; i<2; i++) fRec16[i] = 0;
240 for (int i=0; i<2; i++) fRec18[i] = 0;
237241 for (int i=0; i<2; i++) fVec8[i] = 0;
238242 for (int i=0; i<2; i++) fRec4[i] = 0;
239243 for (int i=0; i<2; i++) fRec1[i] = 0;
240244 fConst69 = (0.025 / fConst1);
241245 for (int i=0; i<2; i++) fRec0[i] = 0;
242246 for (int i=0; i<2; i++) fVec9[i] = 0;
247 for (int i=0; i<2; i++) fRec38[i] = 0;
248 for (int i=0; i<2; i++) fRec37[i] = 0;
243249 for (int i=0; i<2; i++) fRec36[i] = 0;
244 for (int i=0; i<2; i++) fRec35[i] = 0;
245 for (int i=0; i<2; i++) fRec34[i] = 0;
246250 }
247251
248252 void compute(int count, float *input0, float *output0)
249253 {
250254 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
251 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
252 double fSlow2 = fslider2;
253 double fSlow3 = (0.01 * fSlow2);
254 double fSlow4 = (1 - fSlow3);
255 double fSlow5 = fslider3;
256 double fSlow6 = (1.25 * fSlow5);
257 double fSlow7 = (2 * (fSlow5 - 0.5));
258 double fSlow8 = (0.01 * (fSlow2 * (1 - max(0, fSlow7))));
259 double fSlow9 = pow(1e+01,(0.8 * fSlow5));
260 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow5)));
261 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow5)));
262 double fSlow12 = pow(1e+01,(1.2 * fSlow5));
255 double fSlow1 = fslider1;
256 double fSlow2 = (0.0010000000000000009 * (1 - (0.01 * fSlow1)));
257 double fSlow3 = (0.0010000000000000009 * pow(10,(0.05 * fslider2)));
258 double fSlow4 = fslider3;
259 double fSlow5 = (1.25 * fSlow4);
260 double fSlow6 = (1.000000000000001e-05 * fSlow1);
261 double fSlow7 = (2 * (fSlow4 - 0.5));
262 double fSlow8 = (1 - max(0, fSlow7));
263 double fSlow9 = pow(1e+01,(0.8 * fSlow4));
264 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow4)));
265 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow4)));
266 double fSlow12 = pow(1e+01,(1.2 * fSlow4));
263267 double fSlow13 = (1 - max(0, (0 - fSlow7)));
264268 for (int i=0; i<count; i++) {
265269 double fTemp0 = (fRec1[1] - 2.5e+02);
266270 fVec0[0] = fTemp0;
267271 fRec2[0] = ((fConst6 * (fVec0[0] + fVec0[1])) + (fConst5 * fRec2[1]));
268272 fRec3[0] = (fSlow0 + (0.999 * fRec3[1]));
269 fRec12[0] = (fSlow1 + (0.999 * fRec12[1]));
270 double fTemp1 = (fRec11[1] - 1.3e+02);
273 fRec5[0] = (fSlow2 + (0.999 * fRec5[1]));
274 fRec13[0] = (fSlow3 + (0.999 * fRec13[1]));
275 double fTemp1 = (fRec12[1] - 1.3e+02);
271276 fVec1[0] = fTemp1;
272 fRec13[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec13[1]));
273 fRec11[0] = Ftube4(0, (fRec13[0] + ((double)input0[i] * fRec12[0])));
274 fRec10[0] = ((fConst12 * ((fConst11 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
275 fRec9[0] = ((fConst13 * (fRec10[0] + fRec10[1])) + (fConst5 * fRec9[1]));
276 double fTemp2 = (fRec8[1] - 1.3e+02);
277 fRec14[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec14[1]));
278 fRec12[0] = Ftube4(0, (fRec14[0] + ((double)input0[i] * fRec13[0])));
279 fRec11[0] = ((fConst12 * ((fConst11 * fRec12[1]) + (fConst0 * fRec12[0]))) + (fConst2 * fRec11[1]));
280 fRec10[0] = ((fConst13 * (fRec11[0] + fRec11[1])) + (fConst5 * fRec10[1]));
281 double fTemp2 = (fRec9[1] - 1.3e+02);
277282 fVec2[0] = fTemp2;
278 fRec14[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec14[1]));
279 fRec8[0] = Ftube4(1, (fRec14[0] + fRec9[0]));
280 fRec7[0] = ((fConst12 * ((fConst11 * fRec8[1]) + (fConst0 * fRec8[0]))) + (fConst2 * fRec7[1]));
281 double fTemp3 = (fRec6[1] - 1.3e+02);
283 fRec15[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec15[1]));
284 fRec9[0] = Ftube4(1, (fRec15[0] + fRec10[0]));
285 fRec8[0] = ((fConst12 * ((fConst11 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
286 double fTemp3 = (fRec7[1] - 1.3e+02);
282287 fVec3[0] = fTemp3;
283 fRec15[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec15[1]));
284 fRec6[0] = Ftube4(1, (fRec15[0] + fRec7[0]));
285 fRec5[0] = ((fConst12 * ((fConst11 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
286 double fTemp4 = (fConst24 * fRec17[1]);
287 double fTemp5 = (fConst30 * fRec18[1]);
288 fRec22[0] = ((fSlow3 * fRec5[0]) - (fConst48 * ((fConst46 * fRec22[2]) + (fConst44 * fRec22[1]))));
289 double fTemp6 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
288 fRec16[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec16[1]));
289 fRec7[0] = Ftube4(1, (fRec16[0] + fRec8[0]));
290 fRec6[0] = ((fConst12 * ((fConst11 * fRec7[1]) + (fConst0 * fRec7[0]))) + (fConst2 * fRec6[1]));
291 fRec17[0] = (fSlow6 + (0.999 * fRec17[1]));
292 double fTemp4 = (fConst24 * fRec19[1]);
293 double fTemp5 = (fConst30 * fRec20[1]);
294 fRec24[0] = ((fRec6[0] * fRec17[0]) - (fConst48 * ((fConst46 * fRec24[2]) + (fConst44 * fRec24[1]))));
295 double fTemp6 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
290296 fVec4[0] = fTemp6;
291 fRec21[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec21[1]));
292 fRec20[0] = ((fConst51 * ((fConst50 * fRec21[1]) + (fConst37 * fRec21[0]))) + (fConst42 * fRec20[1]));
293 fRec19[0] = (fRec20[0] - (fConst40 * ((fConst38 * fRec19[2]) + (fConst36 * fRec19[1]))));
294 fRec18[0] = ((fConst40 * (((fConst35 * fRec19[0]) + (fConst52 * fRec19[1])) + (fConst35 * fRec19[2]))) - (fConst33 * ((fConst32 * fRec18[2]) + fTemp5)));
295 fRec17[0] = ((fRec18[2] + (fConst33 * (fTemp5 + (fConst32 * fRec18[0])))) - (fConst27 * ((fConst26 * fRec17[2]) + fTemp4)));
296 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec17[2] + (fConst27 * (fTemp4 + (fConst26 * fRec17[0])))))));
297 fRec28[0] = ((fConst51 * (fRec21[0] + fRec21[1])) + (fConst42 * fRec28[1]));
298 fRec27[0] = (fRec28[0] - (fConst40 * ((fConst38 * fRec27[2]) + (fConst36 * fRec27[1]))));
299 double fTemp8 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
297 fRec23[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec23[1]));
298 fRec22[0] = ((fConst51 * ((fConst50 * fRec23[1]) + (fConst37 * fRec23[0]))) + (fConst42 * fRec22[1]));
299 fRec21[0] = (fRec22[0] - (fConst40 * ((fConst38 * fRec21[2]) + (fConst36 * fRec21[1]))));
300 fRec20[0] = ((fConst40 * (((fConst35 * fRec21[0]) + (fConst52 * fRec21[1])) + (fConst35 * fRec21[2]))) - (fConst33 * ((fConst32 * fRec20[2]) + fTemp5)));
301 fRec19[0] = ((fRec20[2] + (fConst33 * (fTemp5 + (fConst32 * fRec20[0])))) - (fConst27 * ((fConst26 * fRec19[2]) + fTemp4)));
302 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec19[2] + (fConst27 * (fTemp4 + (fConst26 * fRec19[0])))))));
303 fRec30[0] = ((fConst51 * (fRec23[0] + fRec23[1])) + (fConst42 * fRec30[1]));
304 fRec29[0] = (fRec30[0] - (fConst40 * ((fConst38 * fRec29[2]) + (fConst36 * fRec29[1]))));
305 double fTemp8 = (fRec29[2] + (fRec29[0] + (2 * fRec29[1])));
300306 fVec5[0] = fTemp8;
301 fRec26[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec26[1]));
302 fRec25[0] = (fRec26[0] - (fConst59 * ((fConst57 * fRec25[2]) + (fConst30 * fRec25[1]))));
303 double fTemp9 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
307 fRec28[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec28[1]));
308 fRec27[0] = (fRec28[0] - (fConst59 * ((fConst57 * fRec27[2]) + (fConst30 * fRec27[1]))));
309 double fTemp9 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
304310 fVec6[0] = fTemp9;
305 fRec24[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec24[1]));
306 fRec23[0] = (fRec24[0] - (fConst54 * ((fConst53 * fRec23[2]) + (fConst24 * fRec23[1]))));
307 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec23[0]) + (fConst65 * fRec23[1])) + (fConst23 * fRec23[2])))));
308 fRec30[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec30[1]));
309 fRec29[0] = (fRec30[0] - (fConst54 * ((fConst53 * fRec29[2]) + (fConst24 * fRec29[1]))));
310 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
311 double fTemp12 = (fConst24 * fRec31[1]);
312 fRec33[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec33[1]));
313 fRec32[0] = (fRec33[0] - (fConst59 * ((fConst57 * fRec32[2]) + (fConst30 * fRec32[1]))));
314 fRec31[0] = ((fConst59 * (((fConst29 * fRec32[0]) + (fConst67 * fRec32[1])) + (fConst29 * fRec32[2]))) - (fConst27 * ((fConst26 * fRec31[2]) + fTemp12)));
315 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec31[2] + (fConst27 * (fTemp12 + (fConst26 * fRec31[0])))))));
311 fRec26[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec26[1]));
312 fRec25[0] = (fRec26[0] - (fConst54 * ((fConst53 * fRec25[2]) + (fConst24 * fRec25[1]))));
313 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec25[0]) + (fConst65 * fRec25[1])) + (fConst23 * fRec25[2])))));
314 fRec32[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec32[1]));
315 fRec31[0] = (fRec32[0] - (fConst54 * ((fConst53 * fRec31[2]) + (fConst24 * fRec31[1]))));
316 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec31[2] + (fRec31[0] + (2 * fRec31[1]))))));
317 double fTemp12 = (fConst24 * fRec33[1]);
318 fRec35[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec35[1]));
319 fRec34[0] = (fRec35[0] - (fConst59 * ((fConst57 * fRec34[2]) + (fConst30 * fRec34[1]))));
320 fRec33[0] = ((fConst59 * (((fConst29 * fRec34[0]) + (fConst67 * fRec34[1])) + (fConst29 * fRec34[2]))) - (fConst27 * ((fConst26 * fRec33[2]) + fTemp12)));
321 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec33[2] + (fConst27 * (fTemp12 + (fConst26 * fRec33[0])))))));
316322 double fTemp14 = (((fTemp13 * (1 - (0.3333333333333333 * faustpower<2>(fTemp13)))) + ((fTemp11 * (1 - (0.3333333333333333 * faustpower<2>(fTemp11)))) + (0.841395141645195 * (fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10))))))) + (0.7943282347242815 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))));
317323 fVec7[0] = fTemp14;
318 fRec16[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec16[1]));
319 double fTemp15 = ((fSlow13 * fRec16[0]) + (fRec5[0] * (fSlow8 + (fSlow4 * (1 + (fSlow6 * ((4 - (4 * fabs((fSlow4 * fRec5[0])))) - 1)))))));
324 fRec18[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec18[1]));
325 double fTemp15 = ((fSlow13 * fRec18[0]) + (fRec6[0] * ((fSlow8 * fRec17[0]) + (fRec5[0] * (1 + (fSlow5 * ((4 - (4 * fabs((fRec6[0] * fRec5[0])))) - 1)))))));
320326 fVec8[0] = fTemp15;
321327 fRec4[0] = ((fConst13 * (fVec8[0] + fVec8[1])) + (fConst5 * fRec4[1]));
322328 double fTemp16 = (fRec4[0] * fRec3[0]);
323329 fRec1[0] = Ftube2(0, (fTemp16 + fRec2[0]));
324330 fRec0[0] = ((fConst69 * ((fConst11 * fRec1[1]) + (fConst0 * fRec1[0]))) + (fConst2 * fRec0[1]));
325 double fTemp17 = (fRec35[1] - 2.5e+02);
331 double fTemp17 = (fRec37[1] - 2.5e+02);
326332 fVec9[0] = fTemp17;
327 fRec36[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec36[1]));
328 fRec35[0] = Ftube2(1, (fRec36[0] + fTemp16));
329 fRec34[0] = ((fConst69 * ((fConst11 * fRec35[1]) + (fConst0 * fRec35[0]))) + (fConst2 * fRec34[1]));
330 output0[i] = (FAUSTFLOAT)(fRec34[0] + fRec0[0]);
333 fRec38[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec38[1]));
334 fRec37[0] = Ftube2(1, (fRec38[0] + fTemp16));
335 fRec36[0] = ((fConst69 * ((fConst11 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
336 output0[i] = (FAUSTFLOAT)(fRec36[0] + fRec0[0]);
331337 // post processing
332 fRec34[1] = fRec34[0];
333 fRec35[1] = fRec35[0];
334338 fRec36[1] = fRec36[0];
339 fRec37[1] = fRec37[0];
340 fRec38[1] = fRec38[0];
335341 fVec9[1] = fVec9[0];
336342 fRec0[1] = fRec0[0];
337343 fRec1[1] = fRec1[0];
338344 fRec4[1] = fRec4[0];
339345 fVec8[1] = fVec8[0];
340 fRec16[1] = fRec16[0];
346 fRec18[1] = fRec18[0];
341347 fVec7[1] = fVec7[0];
348 fRec33[2] = fRec33[1]; fRec33[1] = fRec33[0];
349 fRec34[2] = fRec34[1]; fRec34[1] = fRec34[0];
350 fRec35[1] = fRec35[0];
342351 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
343 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
344 fRec33[1] = fRec33[0];
352 fRec32[1] = fRec32[0];
353 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
354 fRec26[1] = fRec26[0];
355 fVec6[1] = fVec6[0];
356 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
357 fRec28[1] = fRec28[0];
358 fVec5[1] = fVec5[0];
345359 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
346360 fRec30[1] = fRec30[0];
347 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
348 fRec24[1] = fRec24[0];
349 fVec6[1] = fVec6[0];
350 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
351 fRec26[1] = fRec26[0];
352 fVec5[1] = fVec5[0];
353 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
354 fRec28[1] = fRec28[0];
355 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
356 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
357361 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
358 fRec20[1] = fRec20[0];
359 fRec21[1] = fRec21[0];
362 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
363 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
364 fRec22[1] = fRec22[0];
365 fRec23[1] = fRec23[0];
360366 fVec4[1] = fVec4[0];
361 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
362 fRec5[1] = fRec5[0];
367 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
368 fRec17[1] = fRec17[0];
363369 fRec6[1] = fRec6[0];
370 fRec7[1] = fRec7[0];
371 fRec16[1] = fRec16[0];
372 fVec3[1] = fVec3[0];
373 fRec8[1] = fRec8[0];
374 fRec9[1] = fRec9[0];
364375 fRec15[1] = fRec15[0];
365 fVec3[1] = fVec3[0];
366 fRec7[1] = fRec7[0];
367 fRec8[1] = fRec8[0];
368 fRec14[1] = fRec14[0];
369376 fVec2[1] = fVec2[0];
370 fRec9[1] = fRec9[0];
371377 fRec10[1] = fRec10[0];
372378 fRec11[1] = fRec11[0];
379 fRec12[1] = fRec12[0];
380 fRec14[1] = fRec14[0];
381 fVec1[1] = fVec1[0];
373382 fRec13[1] = fRec13[0];
374 fVec1[1] = fVec1[0];
375 fRec12[1] = fRec12[0];
383 fRec5[1] = fRec5[0];
376384 fRec3[1] = fRec3[0];
377385 fRec2[1] = fRec2[0];
378386 fVec0[1] = fVec0[0];
4545 double fConst34;
4646 double fRec19[2];
4747 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
48 double fRec22[2];
4849 double fRec18[3];
4950 double fVec1[2];
5051 double fConst35;
6768 double fConst46;
6869 double fConst47;
6970 double fConst48;
70 double fRec27[2];
71 double fRec26[3];
71 double fRec28[2];
72 double fRec27[3];
7273 double fVec2[2];
7374 double fConst49;
74 double fRec25[2];
75 double fRec24[3];
75 double fRec26[2];
76 double fRec25[3];
7677 double fVec3[2];
7778 double fConst50;
7879 double fConst51;
79 double fRec23[2];
80 double fRec22[3];
80 double fRec24[2];
81 double fRec23[3];
8182 double fConst52;
82 double fRec29[2];
83 double fRec28[3];
83 double fRec30[2];
84 double fRec29[3];
8485 double fConst53;
85 double fRec32[2];
86 double fRec33[2];
87 double fRec32[3];
88 double fConst54;
8689 double fRec31[3];
87 double fConst54;
88 double fRec30[3];
8990 double fVec4[2];
9091 double fConst55;
9192 double fRec12[2];
9495 double fConst58;
9596 double fVec5[2];
9697 double fConst59;
97 double fRec33[2];
98 double fRec34[2];
99 double fRec35[2];
98100 double fRec11[2];
99101 double fConst60;
100102 double fRec10[2];
103105 double fConst63;
104106 double fVec6[2];
105107 double fConst64;
108 double fRec38[2];
109 double fRec37[2];
106110 double fRec36[2];
107 double fRec35[2];
108 double fRec34[2];
109111 double fRec9[2];
110112 double fVec7[2];
111113 double fConst65;
112114 double fRec7[2];
113115 double fVec8[2];
114 double fRec37[2];
116 double fRec39[2];
115117 double fRec6[2];
116118 double fRec5[2];
117119 double fConst66;
119121 double fConst68;
120122 double fVec9[2];
121123 double fConst69;
124 double fRec42[2];
125 double fRec41[2];
122126 double fRec40[2];
123 double fRec39[2];
124 double fRec38[2];
125127 double fRec4[2];
126128 double fRec3[2];
127129 double fVec10[2];
128 double fRec41[2];
130 double fRec43[2];
129131 double fRec2[2];
130132 double fRec1[2];
131133 int fSamplingFreq;
175177 for (int i=0; i<2; i++) fRec20[i] = 0;
176178 fConst34 = (0.009000000000000008 / fSamplingFreq);
177179 for (int i=0; i<2; i++) fRec19[i] = 0;
180 for (int i=0; i<2; i++) fRec22[i] = 0;
178181 for (int i=0; i<3; i++) fRec18[i] = 0;
179182 for (int i=0; i<2; i++) fVec1[i] = 0;
180183 fConst35 = (0 - fConst0);
196199 fConst46 = (1.0 / fConst45);
197200 fConst47 = (1 + fConst15);
198201 fConst48 = (0 - ((1 - fConst15) / fConst47));
199 for (int i=0; i<2; i++) fRec27[i] = 0;
200 for (int i=0; i<3; i++) fRec26[i] = 0;
202 for (int i=0; i<2; i++) fRec28[i] = 0;
203 for (int i=0; i<3; i++) fRec27[i] = 0;
201204 for (int i=0; i<2; i++) fVec2[i] = 0;
202205 fConst49 = (1.0 / (fConst47 * fConst23));
203 for (int i=0; i<2; i++) fRec25[i] = 0;
204 for (int i=0; i<3; i++) fRec24[i] = 0;
206 for (int i=0; i<2; i++) fRec26[i] = 0;
207 for (int i=0; i<3; i++) fRec25[i] = 0;
205208 for (int i=0; i<2; i++) fVec3[i] = 0;
206209 fConst50 = (0 - fConst9);
207210 fConst51 = (1.0 / (fConst42 * fConst45));
208 for (int i=0; i<2; i++) fRec23[i] = 0;
209 for (int i=0; i<3; i++) fRec22[i] = 0;
211 for (int i=0; i<2; i++) fRec24[i] = 0;
212 for (int i=0; i<3; i++) fRec23[i] = 0;
210213 fConst52 = (2 * (0 - fConst7));
211 for (int i=0; i<2; i++) fRec29[i] = 0;
212 for (int i=0; i<3; i++) fRec28[i] = 0;
214 for (int i=0; i<2; i++) fRec30[i] = 0;
215 for (int i=0; i<3; i++) fRec29[i] = 0;
213216 fConst53 = (0 - fConst15);
214 for (int i=0; i<2; i++) fRec32[i] = 0;
217 for (int i=0; i<2; i++) fRec33[i] = 0;
218 for (int i=0; i<3; i++) fRec32[i] = 0;
219 fConst54 = (2 * (0 - fConst13));
215220 for (int i=0; i<3; i++) fRec31[i] = 0;
216 fConst54 = (2 * (0 - fConst13));
217 for (int i=0; i<3; i++) fRec30[i] = 0;
218221 for (int i=0; i<2; i++) fVec4[i] = 0;
219222 fConst55 = (1.5848931924611136 / fConst4);
220223 for (int i=0; i<2; i++) fRec12[i] = 0;
223226 fConst58 = (0 - ((1 - fConst56) / fConst57));
224227 for (int i=0; i<2; i++) fVec5[i] = 0;
225228 fConst59 = (0.027 / fConst57);
226 for (int i=0; i<2; i++) fRec33[i] = 0;
229 for (int i=0; i<2; i++) fRec34[i] = 0;
230 for (int i=0; i<2; i++) fRec35[i] = 0;
227231 for (int i=0; i<2; i++) fRec11[i] = 0;
228232 fConst60 = (0.05 / fConst1);
229233 for (int i=0; i<2; i++) fRec10[i] = 0;
232236 fConst63 = (0 - ((1 - fConst61) / fConst62));
233237 for (int i=0; i<2; i++) fVec6[i] = 0;
234238 fConst64 = (0.015 / fConst62);
239 for (int i=0; i<2; i++) fRec38[i] = 0;
240 for (int i=0; i<2; i++) fRec37[i] = 0;
235241 for (int i=0; i<2; i++) fRec36[i] = 0;
236 for (int i=0; i<2; i++) fRec35[i] = 0;
237 for (int i=0; i<2; i++) fRec34[i] = 0;
238242 for (int i=0; i<2; i++) fRec9[i] = 0;
239243 for (int i=0; i<2; i++) fVec7[i] = 0;
240244 fConst65 = (1.0 / fConst4);
241245 for (int i=0; i<2; i++) fRec7[i] = 0;
242246 for (int i=0; i<2; i++) fVec8[i] = 0;
243 for (int i=0; i<2; i++) fRec37[i] = 0;
247 for (int i=0; i<2; i++) fRec39[i] = 0;
244248 for (int i=0; i<2; i++) fRec6[i] = 0;
245249 for (int i=0; i<2; i++) fRec5[i] = 0;
246250 fConst66 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
248252 fConst68 = (0 - ((1 - fConst66) / fConst67));
249253 for (int i=0; i<2; i++) fVec9[i] = 0;
250254 fConst69 = (0.0082 / fConst67);
255 for (int i=0; i<2; i++) fRec42[i] = 0;
256 for (int i=0; i<2; i++) fRec41[i] = 0;
251257 for (int i=0; i<2; i++) fRec40[i] = 0;
252 for (int i=0; i<2; i++) fRec39[i] = 0;
253 for (int i=0; i<2; i++) fRec38[i] = 0;
254258 for (int i=0; i<2; i++) fRec4[i] = 0;
255259 for (int i=0; i<2; i++) fRec3[i] = 0;
256260 for (int i=0; i<2; i++) fVec10[i] = 0;
257 for (int i=0; i<2; i++) fRec41[i] = 0;
261 for (int i=0; i<2; i++) fRec43[i] = 0;
258262 for (int i=0; i<2; i++) fRec2[i] = 0;
259263 for (int i=0; i<2; i++) fRec1[i] = 0;
260264 }
264268 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
265269 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
266270 double fSlow2 = fslider2;
267 double fSlow3 = (0.00024937655860349125 * fSlow2);
271 double fSlow3 = (1.000000000000001e-05 * fSlow2);
268272 double fSlow4 = fslider3;
269273 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
270274 double fSlow6 = pow(1e+01,(2 * fSlow4));
273277 double fSlow9 = pow(1e+01,(1.2 * fSlow4));
274278 double fSlow10 = (2 * (fSlow4 - 0.5));
275279 double fSlow11 = (1 - max(0, (0 - fSlow10)));
276 double fSlow12 = (1 - (0.01 * fSlow2));
277 double fSlow13 = (0.024937655860349125 * fSlow12);
280 double fSlow12 = (0.024937655860349125 * (1 - max(0, fSlow10)));
281 double fSlow13 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
278282 double fSlow14 = (1.25 * fSlow4);
279 double fSlow15 = (0.00024937655860349125 * (fSlow2 * (1 - max(0, fSlow10))));
280283 for (int i=0; i<count; i++) {
281284 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
282285 fRec8[0] = (fSlow1 + (0.999 * fRec8[1]));
299302 double fTemp12 = max(-600, fTemp11);
300303 double fTemp13 = (0 - fTemp12);
301304 double fTemp14 = (((int((fabs(fTemp11) > 0.0001)))?((int((fTemp12 < -50)))?(exp(fTemp12) * fTemp13):(fTemp12 / (1 - exp(fTemp13)))):(1 + (fTemp10 * (20.05 + (134.00083333333336 * fTemp10))))) - ((int((fabs(fTemp7) > 0.0001)))?((int((fTemp8 < -50)))?(exp(fTemp8) * fTemp9):(fTemp8 / (1 - exp(fTemp9)))):(1 + (fTemp6 * (20.05 + (134.00083333333336 * fTemp6))))));
302 double fTemp15 = (fSlow3 * fTemp14);
305 fRec22[0] = (fSlow3 + (0.999 * fRec22[1]));
306 double fTemp15 = (0.024937655860349125 * (fRec22[0] * fTemp14));
303307 fRec18[0] = (fTemp15 - (fConst32 * ((fConst30 * fRec18[2]) + (fConst28 * fRec18[1]))));
304308 double fTemp16 = (fRec18[2] + (fRec18[0] + (2 * fRec18[1])));
305309 fVec1[0] = fTemp16;
309313 fRec14[0] = ((fConst24 * (((fConst19 * fRec15[0]) + (fConst39 * fRec15[1])) + (fConst19 * fRec15[2]))) - (fConst17 * ((fConst16 * fRec14[2]) + fTemp1)));
310314 fRec13[0] = ((fRec14[2] + (fConst17 * (fTemp1 + (fConst16 * fRec14[0])))) - (fConst11 * ((fConst10 * fRec13[2]) + fTemp0)));
311315 double fTemp17 = max(-1, min(1, (fSlow5 * (fRec13[2] + (fConst11 * (fTemp0 + (fConst10 * fRec13[0])))))));
312 fRec27[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec27[1]));
313 fRec26[0] = (fRec27[0] - (fConst24 * ((fConst22 * fRec26[2]) + (fConst20 * fRec26[1]))));
314 double fTemp18 = (fRec26[2] + (fRec26[0] + (2 * fRec26[1])));
316 fRec28[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec28[1]));
317 fRec27[0] = (fRec28[0] - (fConst24 * ((fConst22 * fRec27[2]) + (fConst20 * fRec27[1]))));
318 double fTemp18 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
315319 fVec2[0] = fTemp18;
316 fRec25[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec25[1]));
317 fRec24[0] = (fRec25[0] - (fConst46 * ((fConst44 * fRec24[2]) + (fConst14 * fRec24[1]))));
318 double fTemp19 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
320 fRec26[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec26[1]));
321 fRec25[0] = (fRec26[0] - (fConst46 * ((fConst44 * fRec25[2]) + (fConst14 * fRec25[1]))));
322 double fTemp19 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
319323 fVec3[0] = fTemp19;
320 fRec23[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec23[1]));
321 fRec22[0] = (fRec23[0] - (fConst41 * ((fConst40 * fRec22[2]) + (fConst8 * fRec22[1]))));
322 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec22[0]) + (fConst52 * fRec22[1])) + (fConst7 * fRec22[2])))));
323 fRec29[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec29[1]));
324 fRec28[0] = (fRec29[0] - (fConst41 * ((fConst40 * fRec28[2]) + (fConst8 * fRec28[1]))));
325 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec28[2] + (fRec28[0] + (2 * fRec28[1]))))));
326 double fTemp22 = (fConst8 * fRec30[1]);
327 fRec32[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec32[1]));
328 fRec31[0] = (fRec32[0] - (fConst46 * ((fConst44 * fRec31[2]) + (fConst14 * fRec31[1]))));
329 fRec30[0] = ((fConst46 * (((fConst13 * fRec31[0]) + (fConst54 * fRec31[1])) + (fConst13 * fRec31[2]))) - (fConst11 * ((fConst10 * fRec30[2]) + fTemp22)));
330 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec30[2] + (fConst11 * (fTemp22 + (fConst10 * fRec30[0])))))));
324 fRec24[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec24[1]));
325 fRec23[0] = (fRec24[0] - (fConst41 * ((fConst40 * fRec23[2]) + (fConst8 * fRec23[1]))));
326 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec23[0]) + (fConst52 * fRec23[1])) + (fConst7 * fRec23[2])))));
327 fRec30[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec30[1]));
328 fRec29[0] = (fRec30[0] - (fConst41 * ((fConst40 * fRec29[2]) + (fConst8 * fRec29[1]))));
329 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
330 double fTemp22 = (fConst8 * fRec31[1]);
331 fRec33[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec33[1]));
332 fRec32[0] = (fRec33[0] - (fConst46 * ((fConst44 * fRec32[2]) + (fConst14 * fRec32[1]))));
333 fRec31[0] = ((fConst46 * (((fConst13 * fRec32[0]) + (fConst54 * fRec32[1])) + (fConst13 * fRec32[2]))) - (fConst11 * ((fConst10 * fRec31[2]) + fTemp22)));
334 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec31[2] + (fConst11 * (fTemp22 + (fConst10 * fRec31[0])))))));
331335 double fTemp24 = (((fTemp23 * (1 - (0.3333333333333333 * faustpower<2>(fTemp23)))) + ((fTemp21 * (1 - (0.3333333333333333 * faustpower<2>(fTemp21)))) + (0.841395141645195 * (fTemp20 * (1 - (0.3333333333333333 * faustpower<2>(fTemp20))))))) + (0.7943282347242815 * (fTemp17 * (1 - (0.3333333333333333 * faustpower<2>(fTemp17))))));
332336 fVec4[0] = fTemp24;
333337 fRec12[0] = ((fConst55 * (fVec4[0] + fVec4[1])) + (fConst5 * fRec12[1]));
334338 double fTemp25 = (fRec11[1] - 1.3e+02);
335339 fVec5[0] = fTemp25;
336 fRec33[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec33[1]));
340 fRec34[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec34[1]));
337341 double fTemp26 = max(-1, min(1, (fSlow6 * max(-0.7, min(0.7, fTemp15)))));
338 fRec11[0] = Ftube4(0, ((fTemp14 * (fSlow15 + (fSlow12 * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((fSlow13 * fTemp14)))) - 0.024937655860349125)))))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec33[0] + (fSlow11 * fRec12[0])))));
342 fRec35[0] = (fSlow13 + (0.999 * fRec35[1]));
343 fRec11[0] = Ftube4(0, ((fTemp14 * ((fRec35[0] * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((0.024937655860349125 * (fRec35[0] * fTemp14))))) - 0.024937655860349125)))) + (fSlow12 * fRec22[0]))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec34[0] + (fSlow11 * fRec12[0])))));
339344 fRec10[0] = ((fConst60 * ((fConst35 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
340 double fTemp27 = (fRec35[1] - 1.3e+02);
345 double fTemp27 = (fRec37[1] - 1.3e+02);
341346 fVec6[0] = fTemp27;
342 fRec36[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec36[1]));
343 fRec35[0] = Ftube4(1, (fRec36[0] + fRec9[1]));
344 fRec34[0] = ((fConst60 * ((fConst35 * fRec35[1]) + (fConst0 * fRec35[0]))) + (fConst2 * fRec34[1]));
345 fRec9[0] = (fRec34[0] - fRec10[0]);
347 fRec38[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec38[1]));
348 fRec37[0] = Ftube4(1, (fRec38[0] + fRec9[1]));
349 fRec36[0] = ((fConst60 * ((fConst35 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
350 fRec9[0] = (fRec36[0] - fRec10[0]);
346351 double fTemp28 = (fRec9[0] * fRec8[0]);
347352 fVec7[0] = fTemp28;
348353 fRec7[0] = ((fConst65 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec7[1]));
349354 double fTemp29 = (fRec6[1] - 1.3e+02);
350355 fVec8[0] = fTemp29;
351 fRec37[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec37[1]));
352 fRec6[0] = Ftube4(1, (fRec37[0] + fRec7[0]));
356 fRec39[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec39[1]));
357 fRec6[0] = Ftube4(1, (fRec39[0] + fRec7[0]));
353358 fRec5[0] = ((fConst60 * ((fConst35 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
354 double fTemp30 = (fRec39[1] - 1.3e+02);
359 double fTemp30 = (fRec41[1] - 1.3e+02);
355360 fVec9[0] = fTemp30;
356 fRec40[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec40[1]));
357 fRec39[0] = Ftube4(1, (fRec40[0] + fRec4[1]));
358 fRec38[0] = ((fConst60 * ((fConst35 * fRec39[1]) + (fConst0 * fRec39[0]))) + (fConst2 * fRec38[1]));
359 fRec4[0] = (fRec38[0] + fRec5[0]);
361 fRec42[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec42[1]));
362 fRec41[0] = Ftube4(1, (fRec42[0] + fRec4[1]));
363 fRec40[0] = ((fConst60 * ((fConst35 * fRec41[1]) + (fConst0 * fRec41[0]))) + (fConst2 * fRec40[1]));
364 fRec4[0] = (fRec40[0] + fRec5[0]);
360365 fRec3[0] = ((fConst65 * (fRec4[0] + fRec4[1])) + (fConst5 * fRec3[1]));
361366 double fTemp31 = (fRec2[1] - 1.3e+02);
362367 fVec10[0] = fTemp31;
363 fRec41[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec41[1]));
364 fRec2[0] = Ftube4(1, (fRec41[0] + fRec3[0]));
368 fRec43[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec43[1]));
369 fRec2[0] = Ftube4(1, (fRec43[0] + fRec3[0]));
365370 fRec1[0] = ((fConst60 * ((fConst35 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
366371 output0[i] = (FAUSTFLOAT)(fRec1[0] * fRec0[0]);
367372 // post processing
368373 fRec1[1] = fRec1[0];
369374 fRec2[1] = fRec2[0];
370 fRec41[1] = fRec41[0];
375 fRec43[1] = fRec43[0];
371376 fVec10[1] = fVec10[0];
372377 fRec3[1] = fRec3[0];
373378 fRec4[1] = fRec4[0];
374 fRec38[1] = fRec38[0];
375 fRec39[1] = fRec39[0];
376379 fRec40[1] = fRec40[0];
380 fRec41[1] = fRec41[0];
381 fRec42[1] = fRec42[0];
377382 fVec9[1] = fVec9[0];
378383 fRec5[1] = fRec5[0];
379384 fRec6[1] = fRec6[0];
380 fRec37[1] = fRec37[0];
385 fRec39[1] = fRec39[0];
381386 fVec8[1] = fVec8[0];
382387 fRec7[1] = fRec7[0];
383388 fVec7[1] = fVec7[0];
384389 fRec9[1] = fRec9[0];
385 fRec34[1] = fRec34[0];
386 fRec35[1] = fRec35[0];
387390 fRec36[1] = fRec36[0];
391 fRec37[1] = fRec37[0];
392 fRec38[1] = fRec38[0];
388393 fVec6[1] = fVec6[0];
389394 fRec10[1] = fRec10[0];
390395 fRec11[1] = fRec11[0];
391 fRec33[1] = fRec33[0];
396 fRec35[1] = fRec35[0];
397 fRec34[1] = fRec34[0];
392398 fVec5[1] = fVec5[0];
393399 fRec12[1] = fRec12[0];
394400 fVec4[1] = fVec4[0];
395 fRec30[2] = fRec30[1]; fRec30[1] = fRec30[0];
396401 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
397 fRec32[1] = fRec32[0];
398 fRec28[2] = fRec28[1]; fRec28[1] = fRec28[0];
399 fRec29[1] = fRec29[0];
400 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
401 fRec23[1] = fRec23[0];
402 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
403 fRec33[1] = fRec33[0];
404 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
405 fRec30[1] = fRec30[0];
406 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
407 fRec24[1] = fRec24[0];
402408 fVec3[1] = fVec3[0];
403 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
404 fRec25[1] = fRec25[0];
409 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
410 fRec26[1] = fRec26[0];
405411 fVec2[1] = fVec2[0];
406 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
407 fRec27[1] = fRec27[0];
412 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
413 fRec28[1] = fRec28[0];
408414 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
409415 fRec14[2] = fRec14[1]; fRec14[1] = fRec14[0];
410416 fRec15[2] = fRec15[1]; fRec15[1] = fRec15[0];
412418 fRec17[1] = fRec17[0];
413419 fVec1[1] = fVec1[0];
414420 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
421 fRec22[1] = fRec22[0];
415422 fRec19[1] = fRec19[0];
416423 fRec20[1] = fRec20[0];
417424 IOTA = IOTA+1;
0 namespace gxamp14 {
1 // generated from file '../src/faust/gxamp14.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
4 double fRec0[2];
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fConst3;
9 double fConst4;
10 double fConst5;
11 FAUSTFLOAT& fslider1 = get_alias("amp2.stage1.Pregain");
12 double fRec7[2];
13 double fConst6;
14 double fConst7;
15 double fConst8;
16 double fConst9;
17 double fConst10;
18 double fConst11;
19 double fConst12;
20 double fConst13;
21 double fConst14;
22 double fConst15;
23 double fConst16;
24 double fConst17;
25 double fConst18;
26 double fConst19;
27 double fConst20;
28 double fConst21;
29 double fConst22;
30 double fConst23;
31 double fConst24;
32 double fConst25;
33 double fConst26;
34 double fConst27;
35 double fConst28;
36 double fConst29;
37 double fConst30;
38 double fConst31;
39 double fConst32;
40 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
41 double fRec17[2];
42 double fRec16[3];
43 double fVec0[2];
44 double fConst33;
45 double fConst34;
46 double fRec15[2];
47 double fConst35;
48 double fConst36;
49 double fRec14[2];
50 double fRec13[3];
51 double fConst37;
52 double fRec12[3];
53 double fRec11[3];
54 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
55 double fConst38;
56 double fConst39;
57 double fConst40;
58 double fConst41;
59 double fConst42;
60 double fConst43;
61 double fConst44;
62 double fConst45;
63 double fConst46;
64 double fRec23[2];
65 double fRec22[3];
66 double fVec1[2];
67 double fConst47;
68 double fRec21[2];
69 double fRec20[3];
70 double fVec2[2];
71 double fConst48;
72 double fConst49;
73 double fRec19[2];
74 double fRec18[3];
75 double fConst50;
76 double fRec25[2];
77 double fRec24[3];
78 double fConst51;
79 double fRec28[2];
80 double fRec27[3];
81 double fConst52;
82 double fRec26[3];
83 double fVec3[2];
84 double fConst53;
85 double fRec10[2];
86 double fConst54;
87 double fConst55;
88 double fConst56;
89 double fVec4[2];
90 double fConst57;
91 double fRec29[2];
92 double fRec30[2];
93 double fRec9[2];
94 double fConst58;
95 double fRec8[2];
96 double fVec5[2];
97 double fConst59;
98 double fRec6[2];
99 double fConst60;
100 double fConst61;
101 double fConst62;
102 double fVec6[2];
103 double fConst63;
104 double fRec31[2];
105 double fRec5[2];
106 double fRec4[2];
107 double fVec7[2];
108 double fRec3[2];
109 double fConst64;
110 double fConst65;
111 double fConst66;
112 double fVec8[2];
113 double fConst67;
114 double fRec32[2];
115 double fRec2[2];
116 double fRec1[2];
117 int fSamplingFreq;
118
119 void init(int samplingFreq)
120 {
121 fSamplingFreq = samplingFreq;
122 for (int i=0; i<2; i++) fRec0[i] = 0;
123 fConst0 = (1.0 / tan((97.38937226128358 / fSamplingFreq)));
124 fConst1 = (1 + fConst0);
125 fConst2 = (0 - ((1 - fConst0) / fConst1));
126 fConst3 = (1.0 / tan((20517.741620594938 / fSamplingFreq)));
127 fConst4 = (1 + fConst3);
128 fConst5 = (0 - ((1 - fConst3) / fConst4));
129 for (int i=0; i<2; i++) fRec7[i] = 0;
130 fConst6 = tan((942.4777960769379 / fSamplingFreq));
131 fConst7 = (1.0 / faustpower<2>(fConst6));
132 fConst8 = (2 * (1 - fConst7));
133 fConst9 = (1.0 / fConst6);
134 fConst10 = (1 + ((fConst9 - 1.0) / fConst6));
135 fConst11 = (1.0 / (1 + ((1.0 + fConst9) / fConst6)));
136 fConst12 = tan((3769.9111843077517 / fSamplingFreq));
137 fConst13 = (1.0 / faustpower<2>(fConst12));
138 fConst14 = (2 * (1 - fConst13));
139 fConst15 = (1.0 / fConst12);
140 fConst16 = (1 + ((fConst15 - 1.0) / fConst12));
141 fConst17 = (1.0 / (1 + ((1.0 + fConst15) / fConst12)));
142 fConst18 = tan((10053.096491487338 / fSamplingFreq));
143 fConst19 = (1.0 / faustpower<2>(fConst18));
144 fConst20 = (2 * (1 - fConst19));
145 fConst21 = (1.0 / fConst18);
146 fConst22 = (1 + ((fConst21 - 1.0000000000000004) / fConst18));
147 fConst23 = (1 + ((1.0000000000000004 + fConst21) / fConst18));
148 fConst24 = (1.0 / fConst23);
149 fConst25 = (1 + fConst21);
150 fConst26 = (0 - ((1 - fConst21) / fConst25));
151 fConst27 = tan((47123.8898038469 / fSamplingFreq));
152 fConst28 = (2 * (1 - (1.0 / faustpower<2>(fConst27))));
153 fConst29 = (1.0 / fConst27);
154 fConst30 = (1 + ((fConst29 - 1.414213562373095) / fConst27));
155 fConst31 = (1 + ((1.414213562373095 + fConst29) / fConst27));
156 fConst32 = (1.0 / fConst31);
157 for (int i=0; i<2; i++) fRec17[i] = 0;
158 for (int i=0; i<3; i++) fRec16[i] = 0;
159 for (int i=0; i<2; i++) fVec0[i] = 0;
160 fConst33 = (0 - fConst0);
161 fConst34 = (1.0 / (fConst1 * fConst31));
162 for (int i=0; i<2; i++) fRec15[i] = 0;
163 fConst35 = (0 - fConst21);
164 fConst36 = (1.0 / fConst25);
165 for (int i=0; i<2; i++) fRec14[i] = 0;
166 for (int i=0; i<3; i++) fRec13[i] = 0;
167 fConst37 = (2 * (0 - fConst19));
168 for (int i=0; i<3; i++) fRec12[i] = 0;
169 for (int i=0; i<3; i++) fRec11[i] = 0;
170 fConst38 = (1 + ((fConst9 - 1.0000000000000004) / fConst6));
171 fConst39 = (1.0 / (1 + ((fConst9 + 1.0000000000000004) / fConst6)));
172 fConst40 = (1 + fConst9);
173 fConst41 = (0 - ((1 - fConst9) / fConst40));
174 fConst42 = (1 + ((fConst15 - 1.0000000000000004) / fConst12));
175 fConst43 = (1 + ((fConst15 + 1.0000000000000004) / fConst12));
176 fConst44 = (1.0 / fConst43);
177 fConst45 = (1 + fConst15);
178 fConst46 = (0 - ((1 - fConst15) / fConst45));
179 for (int i=0; i<2; i++) fRec23[i] = 0;
180 for (int i=0; i<3; i++) fRec22[i] = 0;
181 for (int i=0; i<2; i++) fVec1[i] = 0;
182 fConst47 = (1.0 / (fConst45 * fConst23));
183 for (int i=0; i<2; i++) fRec21[i] = 0;
184 for (int i=0; i<3; i++) fRec20[i] = 0;
185 for (int i=0; i<2; i++) fVec2[i] = 0;
186 fConst48 = (0 - fConst9);
187 fConst49 = (1.0 / (fConst40 * fConst43));
188 for (int i=0; i<2; i++) fRec19[i] = 0;
189 for (int i=0; i<3; i++) fRec18[i] = 0;
190 fConst50 = (2 * (0 - fConst7));
191 for (int i=0; i<2; i++) fRec25[i] = 0;
192 for (int i=0; i<3; i++) fRec24[i] = 0;
193 fConst51 = (0 - fConst15);
194 for (int i=0; i<2; i++) fRec28[i] = 0;
195 for (int i=0; i<3; i++) fRec27[i] = 0;
196 fConst52 = (2 * (0 - fConst13));
197 for (int i=0; i<3; i++) fRec26[i] = 0;
198 for (int i=0; i<2; i++) fVec3[i] = 0;
199 fConst53 = (1.5848931924611136 / fConst4);
200 for (int i=0; i<2; i++) fRec10[i] = 0;
201 fConst54 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
202 fConst55 = (1 + fConst54);
203 fConst56 = (0 - ((1 - fConst54) / fConst55));
204 for (int i=0; i<2; i++) fVec4[i] = 0;
205 fConst57 = (0.027 / fConst55);
206 for (int i=0; i<2; i++) fRec29[i] = 0;
207 for (int i=0; i<2; i++) fRec30[i] = 0;
208 for (int i=0; i<2; i++) fRec9[i] = 0;
209 fConst58 = (0.025 / fConst1);
210 for (int i=0; i<2; i++) fRec8[i] = 0;
211 for (int i=0; i<2; i++) fVec5[i] = 0;
212 fConst59 = (1.0 / fConst4);
213 for (int i=0; i<2; i++) fRec6[i] = 0;
214 fConst60 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
215 fConst61 = (1 + fConst60);
216 fConst62 = (0 - ((1 - fConst60) / fConst61));
217 for (int i=0; i<2; i++) fVec6[i] = 0;
218 fConst63 = (0.015 / fConst61);
219 for (int i=0; i<2; i++) fRec31[i] = 0;
220 for (int i=0; i<2; i++) fRec5[i] = 0;
221 for (int i=0; i<2; i++) fRec4[i] = 0;
222 for (int i=0; i<2; i++) fVec7[i] = 0;
223 for (int i=0; i<2; i++) fRec3[i] = 0;
224 fConst64 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
225 fConst65 = (1 + fConst64);
226 fConst66 = (0 - ((1 - fConst64) / fConst65));
227 for (int i=0; i<2; i++) fVec8[i] = 0;
228 fConst67 = (0.0082 / fConst65);
229 for (int i=0; i<2; i++) fRec32[i] = 0;
230 for (int i=0; i<2; i++) fRec2[i] = 0;
231 for (int i=0; i<2; i++) fRec1[i] = 0;
232 }
233
234 void compute(int count, float *input0, float *output0)
235 {
236 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
237 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
238 double fSlow2 = fslider2;
239 double fSlow3 = (1.000000000000001e-05 * fSlow2);
240 double fSlow4 = fslider3;
241 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
242 double fSlow6 = (fConst39 * pow(1e+01,(2 * fSlow4)));
243 double fSlow7 = (fConst39 * pow(1e+01,(0.9 * fSlow4)));
244 double fSlow8 = pow(1e+01,(1.2 * fSlow4));
245 double fSlow9 = (2 * (fSlow4 - 0.5));
246 double fSlow10 = (1 - max(0, (0 - fSlow9)));
247 double fSlow11 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
248 double fSlow12 = (1.25 * fSlow4);
249 double fSlow13 = (1 - max(0, fSlow9));
250 for (int i=0; i<count; i++) {
251 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
252 fRec7[0] = (fSlow1 + (0.999 * fRec7[1]));
253 double fTemp0 = (fConst8 * fRec11[1]);
254 double fTemp1 = (fConst14 * fRec12[1]);
255 fRec17[0] = (fSlow3 + (0.999 * fRec17[1]));
256 double fTemp2 = (double)input0[i];
257 fRec16[0] = ((fTemp2 * fRec17[0]) - (fConst32 * ((fConst30 * fRec16[2]) + (fConst28 * fRec16[1]))));
258 double fTemp3 = (fRec16[2] + (fRec16[0] + (2 * fRec16[1])));
259 fVec0[0] = fTemp3;
260 fRec15[0] = ((fConst34 * ((fConst33 * fVec0[1]) + (fConst0 * fVec0[0]))) + (fConst2 * fRec15[1]));
261 fRec14[0] = ((fConst36 * ((fConst35 * fRec15[1]) + (fConst21 * fRec15[0]))) + (fConst26 * fRec14[1]));
262 fRec13[0] = (fRec14[0] - (fConst24 * ((fConst22 * fRec13[2]) + (fConst20 * fRec13[1]))));
263 fRec12[0] = ((fConst24 * (((fConst19 * fRec13[0]) + (fConst37 * fRec13[1])) + (fConst19 * fRec13[2]))) - (fConst17 * ((fConst16 * fRec12[2]) + fTemp1)));
264 fRec11[0] = ((fRec12[2] + (fConst17 * (fTemp1 + (fConst16 * fRec12[0])))) - (fConst11 * ((fConst10 * fRec11[2]) + fTemp0)));
265 double fTemp4 = max(-1, min(1, (fSlow5 * (fRec11[2] + (fConst11 * (fTemp0 + (fConst10 * fRec11[0])))))));
266 fRec23[0] = ((fConst36 * (fRec15[0] + fRec15[1])) + (fConst26 * fRec23[1]));
267 fRec22[0] = (fRec23[0] - (fConst24 * ((fConst22 * fRec22[2]) + (fConst20 * fRec22[1]))));
268 double fTemp5 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
269 fVec1[0] = fTemp5;
270 fRec21[0] = ((fConst47 * (fVec1[0] + fVec1[1])) + (fConst46 * fRec21[1]));
271 fRec20[0] = (fRec21[0] - (fConst44 * ((fConst42 * fRec20[2]) + (fConst14 * fRec20[1]))));
272 double fTemp6 = (fRec20[2] + (fRec20[0] + (2 * fRec20[1])));
273 fVec2[0] = fTemp6;
274 fRec19[0] = ((fConst49 * ((fConst48 * fVec2[1]) + (fConst9 * fVec2[0]))) + (fConst41 * fRec19[1]));
275 fRec18[0] = (fRec19[0] - (fConst39 * ((fConst38 * fRec18[2]) + (fConst8 * fRec18[1]))));
276 double fTemp7 = max(-1, min(1, (fSlow6 * (((fConst7 * fRec18[0]) + (fConst50 * fRec18[1])) + (fConst7 * fRec18[2])))));
277 fRec25[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst41 * fRec25[1]));
278 fRec24[0] = (fRec25[0] - (fConst39 * ((fConst38 * fRec24[2]) + (fConst8 * fRec24[1]))));
279 double fTemp8 = max(-1, min(1, (fSlow7 * (fRec24[2] + (fRec24[0] + (2 * fRec24[1]))))));
280 double fTemp9 = (fConst8 * fRec26[1]);
281 fRec28[0] = ((fConst47 * ((fConst51 * fVec1[1]) + (fConst15 * fVec1[0]))) + (fConst46 * fRec28[1]));
282 fRec27[0] = (fRec28[0] - (fConst44 * ((fConst42 * fRec27[2]) + (fConst14 * fRec27[1]))));
283 fRec26[0] = ((fConst44 * (((fConst13 * fRec27[0]) + (fConst52 * fRec27[1])) + (fConst13 * fRec27[2]))) - (fConst11 * ((fConst10 * fRec26[2]) + fTemp9)));
284 double fTemp10 = max(-1, min(1, (fSlow8 * (fRec26[2] + (fConst11 * (fTemp9 + (fConst10 * fRec26[0])))))));
285 double fTemp11 = (((fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10)))) + ((fTemp8 * (1 - (0.3333333333333333 * faustpower<2>(fTemp8)))) + (0.841395141645195 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))))) + (0.7943282347242815 * (fTemp4 * (1 - (0.3333333333333333 * faustpower<2>(fTemp4))))));
286 fVec3[0] = fTemp11;
287 fRec10[0] = ((fConst53 * (fVec3[0] + fVec3[1])) + (fConst5 * fRec10[1]));
288 double fTemp12 = (fRec9[1] - 2.5e+02);
289 fVec4[0] = fTemp12;
290 fRec29[0] = ((fConst57 * (fVec4[0] + fVec4[1])) + (fConst56 * fRec29[1]));
291 fRec30[0] = (fSlow11 + (0.999 * fRec30[1]));
292 fRec9[0] = Ftube6(0, ((fTemp2 * ((fSlow13 * fRec17[0]) + (fRec30[0] * (1 + (fSlow12 * ((4 - (4 * fabs((fTemp2 * fRec30[0])))) - 1)))))) + (fRec29[0] + (fSlow10 * fRec10[0]))));
293 fRec8[0] = ((fConst58 * ((fConst33 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
294 double fTemp13 = (fRec8[0] * fRec7[0]);
295 fVec5[0] = fTemp13;
296 fRec6[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst5 * fRec6[1]));
297 double fTemp14 = (fRec5[1] - 2.5e+02);
298 fVec6[0] = fTemp14;
299 fRec31[0] = ((fConst63 * (fVec6[0] + fVec6[1])) + (fConst62 * fRec31[1]));
300 fRec5[0] = Ftube6(1, (fRec31[0] + fRec6[0]));
301 fRec4[0] = ((fConst58 * ((fConst33 * fRec5[1]) + (fConst0 * fRec5[0]))) + (fConst2 * fRec4[1]));
302 double fTemp15 = (fRec7[0] * fRec4[0]);
303 fVec7[0] = fTemp15;
304 fRec3[0] = ((fConst59 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec3[1]));
305 double fTemp16 = (fRec2[1] - 2.5e+02);
306 fVec8[0] = fTemp16;
307 fRec32[0] = ((fConst67 * (fVec8[0] + fVec8[1])) + (fConst66 * fRec32[1]));
308 fRec2[0] = Ftube6(1, (fRec32[0] + fRec3[0]));
309 fRec1[0] = ((fConst58 * ((fConst33 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
310 output0[i] = (FAUSTFLOAT)(fRec1[0] * fRec0[0]);
311 // post processing
312 fRec1[1] = fRec1[0];
313 fRec2[1] = fRec2[0];
314 fRec32[1] = fRec32[0];
315 fVec8[1] = fVec8[0];
316 fRec3[1] = fRec3[0];
317 fVec7[1] = fVec7[0];
318 fRec4[1] = fRec4[0];
319 fRec5[1] = fRec5[0];
320 fRec31[1] = fRec31[0];
321 fVec6[1] = fVec6[0];
322 fRec6[1] = fRec6[0];
323 fVec5[1] = fVec5[0];
324 fRec8[1] = fRec8[0];
325 fRec9[1] = fRec9[0];
326 fRec30[1] = fRec30[0];
327 fRec29[1] = fRec29[0];
328 fVec4[1] = fVec4[0];
329 fRec10[1] = fRec10[0];
330 fVec3[1] = fVec3[0];
331 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
332 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
333 fRec28[1] = fRec28[0];
334 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
335 fRec25[1] = fRec25[0];
336 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
337 fRec19[1] = fRec19[0];
338 fVec2[1] = fVec2[0];
339 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
340 fRec21[1] = fRec21[0];
341 fVec1[1] = fVec1[0];
342 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
343 fRec23[1] = fRec23[0];
344 fRec11[2] = fRec11[1]; fRec11[1] = fRec11[0];
345 fRec12[2] = fRec12[1]; fRec12[1] = fRec12[0];
346 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
347 fRec14[1] = fRec14[0];
348 fRec15[1] = fRec15[0];
349 fVec0[1] = fVec0[0];
350 fRec16[2] = fRec16[1]; fRec16[1] = fRec16[0];
351 fRec17[1] = fRec17[0];
352 fRec7[1] = fRec7[0];
353 fRec0[1] = fRec0[0];
354 }
355 }
356
357 static struct RegisterParams { RegisterParams(); } RegisterParams;
358 RegisterParams::RegisterParams()
359 {
360 registerInit("amp2", init);
361 }
362
363 } // end namespace gxamp14
0 namespace gxamp15 {
1 // generated from file '../src/faust/gxamp15.dsp'
2
3 double fConst0;
4 double fConst1;
5 double fConst2;
6 double fConst3;
7 double fConst4;
8 double fConst5;
9 double fVec0[2];
10 double fConst6;
11 double fRec2[2];
12 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
13 double fRec3[2];
14 FAUSTFLOAT& fslider1 = get_alias("gxdistortion.wet_dry");
15 double fRec5[2];
16 FAUSTFLOAT& fslider2 = get_alias("amp2.stage1.Pregain");
17 double fRec13[2];
18 double fConst7;
19 double fConst8;
20 double fConst9;
21 double fVec1[2];
22 double fConst10;
23 double fRec14[2];
24 double fRec12[2];
25 double fConst11;
26 double fConst12;
27 double fRec11[2];
28 double fConst13;
29 double fRec10[2];
30 double fConst14;
31 double fConst15;
32 double fConst16;
33 double fVec2[2];
34 double fConst17;
35 double fRec15[2];
36 double fRec9[2];
37 double fRec8[2];
38 double fConst18;
39 double fConst19;
40 double fConst20;
41 double fVec3[2];
42 double fConst21;
43 double fRec16[2];
44 double fRec7[2];
45 double fRec6[2];
46 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
47 double fRec17[2];
48 double fConst22;
49 double fConst23;
50 double fConst24;
51 double fConst25;
52 double fConst26;
53 double fConst27;
54 double fConst28;
55 double fConst29;
56 double fConst30;
57 double fConst31;
58 double fConst32;
59 double fConst33;
60 double fConst34;
61 double fConst35;
62 double fConst36;
63 double fConst37;
64 double fConst38;
65 double fConst39;
66 double fConst40;
67 double fConst41;
68 double fConst42;
69 double fConst43;
70 double fConst44;
71 double fConst45;
72 double fConst46;
73 double fConst47;
74 double fConst48;
75 double fRec24[3];
76 double fVec4[2];
77 double fConst49;
78 double fRec23[2];
79 double fConst50;
80 double fConst51;
81 double fRec22[2];
82 double fRec21[3];
83 double fConst52;
84 double fRec20[3];
85 double fRec19[3];
86 double fConst53;
87 double fConst54;
88 double fConst55;
89 double fConst56;
90 double fConst57;
91 double fConst58;
92 double fConst59;
93 double fConst60;
94 double fConst61;
95 double fRec30[2];
96 double fRec29[3];
97 double fVec5[2];
98 double fConst62;
99 double fRec28[2];
100 double fRec27[3];
101 double fVec6[2];
102 double fConst63;
103 double fConst64;
104 double fRec26[2];
105 double fRec25[3];
106 double fConst65;
107 double fRec32[2];
108 double fRec31[3];
109 double fConst66;
110 double fRec35[2];
111 double fRec34[3];
112 double fConst67;
113 double fRec33[3];
114 double fVec7[2];
115 double fConst68;
116 double fRec18[2];
117 double fVec8[2];
118 double fRec4[2];
119 double fRec1[2];
120 double fRec0[2];
121 double fVec9[2];
122 double fRec38[2];
123 double fRec37[2];
124 double fRec36[2];
125 int fSamplingFreq;
126
127 void init(int samplingFreq)
128 {
129 fSamplingFreq = samplingFreq;
130 fConst0 = (1.0 / tan((97.38937226128358 / fSamplingFreq)));
131 fConst1 = (1 + fConst0);
132 fConst2 = (0 - ((1 - fConst0) / fConst1));
133 fConst3 = (1.0 / tan((20517.741620594938 / fSamplingFreq)));
134 fConst4 = (1 + fConst3);
135 fConst5 = (0 - ((1 - fConst3) / fConst4));
136 for (int i=0; i<2; i++) fVec0[i] = 0;
137 fConst6 = (0.0082 / fConst4);
138 for (int i=0; i<2; i++) fRec2[i] = 0;
139 for (int i=0; i<2; i++) fRec3[i] = 0;
140 for (int i=0; i<2; i++) fRec5[i] = 0;
141 for (int i=0; i<2; i++) fRec13[i] = 0;
142 fConst7 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
143 fConst8 = (1 + fConst7);
144 fConst9 = (0 - ((1 - fConst7) / fConst8));
145 for (int i=0; i<2; i++) fVec1[i] = 0;
146 fConst10 = (0.027 / fConst8);
147 for (int i=0; i<2; i++) fRec14[i] = 0;
148 for (int i=0; i<2; i++) fRec12[i] = 0;
149 fConst11 = (0 - fConst0);
150 fConst12 = (0.025 / fConst1);
151 for (int i=0; i<2; i++) fRec11[i] = 0;
152 fConst13 = (1.0 / fConst4);
153 for (int i=0; i<2; i++) fRec10[i] = 0;
154 fConst14 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
155 fConst15 = (1 + fConst14);
156 fConst16 = (0 - ((1 - fConst14) / fConst15));
157 for (int i=0; i<2; i++) fVec2[i] = 0;
158 fConst17 = (0.015 / fConst15);
159 for (int i=0; i<2; i++) fRec15[i] = 0;
160 for (int i=0; i<2; i++) fRec9[i] = 0;
161 for (int i=0; i<2; i++) fRec8[i] = 0;
162 fConst18 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
163 fConst19 = (1 + fConst18);
164 fConst20 = (0 - ((1 - fConst18) / fConst19));
165 for (int i=0; i<2; i++) fVec3[i] = 0;
166 fConst21 = (0.0082 / fConst19);
167 for (int i=0; i<2; i++) fRec16[i] = 0;
168 for (int i=0; i<2; i++) fRec7[i] = 0;
169 for (int i=0; i<2; i++) fRec6[i] = 0;
170 for (int i=0; i<2; i++) fRec17[i] = 0;
171 fConst22 = tan((942.4777960769379 / fSamplingFreq));
172 fConst23 = (1.0 / faustpower<2>(fConst22));
173 fConst24 = (2 * (1 - fConst23));
174 fConst25 = (1.0 / fConst22);
175 fConst26 = (1 + ((fConst25 - 1.0) / fConst22));
176 fConst27 = (1.0 / (1 + ((1.0 + fConst25) / fConst22)));
177 fConst28 = tan((3769.9111843077517 / fSamplingFreq));
178 fConst29 = (1.0 / faustpower<2>(fConst28));
179 fConst30 = (2 * (1 - fConst29));
180 fConst31 = (1.0 / fConst28);
181 fConst32 = (1 + ((fConst31 - 1.0) / fConst28));
182 fConst33 = (1.0 / (1 + ((1.0 + fConst31) / fConst28)));
183 fConst34 = tan((10053.096491487338 / fSamplingFreq));
184 fConst35 = (1.0 / faustpower<2>(fConst34));
185 fConst36 = (2 * (1 - fConst35));
186 fConst37 = (1.0 / fConst34);
187 fConst38 = (1 + ((fConst37 - 1.0000000000000004) / fConst34));
188 fConst39 = (1 + ((1.0000000000000004 + fConst37) / fConst34));
189 fConst40 = (1.0 / fConst39);
190 fConst41 = (1 + fConst37);
191 fConst42 = (0 - ((1 - fConst37) / fConst41));
192 fConst43 = tan((47123.8898038469 / fSamplingFreq));
193 fConst44 = (2 * (1 - (1.0 / faustpower<2>(fConst43))));
194 fConst45 = (1.0 / fConst43);
195 fConst46 = (1 + ((fConst45 - 1.414213562373095) / fConst43));
196 fConst47 = (1 + ((1.414213562373095 + fConst45) / fConst43));
197 fConst48 = (1.0 / fConst47);
198 for (int i=0; i<3; i++) fRec24[i] = 0;
199 for (int i=0; i<2; i++) fVec4[i] = 0;
200 fConst49 = (1.0 / (fConst1 * fConst47));
201 for (int i=0; i<2; i++) fRec23[i] = 0;
202 fConst50 = (0 - fConst37);
203 fConst51 = (1.0 / fConst41);
204 for (int i=0; i<2; i++) fRec22[i] = 0;
205 for (int i=0; i<3; i++) fRec21[i] = 0;
206 fConst52 = (2 * (0 - fConst35));
207 for (int i=0; i<3; i++) fRec20[i] = 0;
208 for (int i=0; i<3; i++) fRec19[i] = 0;
209 fConst53 = (1 + ((fConst25 - 1.0000000000000004) / fConst22));
210 fConst54 = (1.0 / (1 + ((fConst25 + 1.0000000000000004) / fConst22)));
211 fConst55 = (1 + fConst25);
212 fConst56 = (0 - ((1 - fConst25) / fConst55));
213 fConst57 = (1 + ((fConst31 - 1.0000000000000004) / fConst28));
214 fConst58 = (1 + ((fConst31 + 1.0000000000000004) / fConst28));
215 fConst59 = (1.0 / fConst58);
216 fConst60 = (1 + fConst31);
217 fConst61 = (0 - ((1 - fConst31) / fConst60));
218 for (int i=0; i<2; i++) fRec30[i] = 0;
219 for (int i=0; i<3; i++) fRec29[i] = 0;
220 for (int i=0; i<2; i++) fVec5[i] = 0;
221 fConst62 = (1.0 / (fConst60 * fConst39));
222 for (int i=0; i<2; i++) fRec28[i] = 0;
223 for (int i=0; i<3; i++) fRec27[i] = 0;
224 for (int i=0; i<2; i++) fVec6[i] = 0;
225 fConst63 = (0 - fConst25);
226 fConst64 = (1.0 / (fConst55 * fConst58));
227 for (int i=0; i<2; i++) fRec26[i] = 0;
228 for (int i=0; i<3; i++) fRec25[i] = 0;
229 fConst65 = (2 * (0 - fConst23));
230 for (int i=0; i<2; i++) fRec32[i] = 0;
231 for (int i=0; i<3; i++) fRec31[i] = 0;
232 fConst66 = (0 - fConst31);
233 for (int i=0; i<2; i++) fRec35[i] = 0;
234 for (int i=0; i<3; i++) fRec34[i] = 0;
235 fConst67 = (2 * (0 - fConst29));
236 for (int i=0; i<3; i++) fRec33[i] = 0;
237 for (int i=0; i<2; i++) fVec7[i] = 0;
238 fConst68 = (1.5848931924611136 / fConst4);
239 for (int i=0; i<2; i++) fRec18[i] = 0;
240 for (int i=0; i<2; i++) fVec8[i] = 0;
241 for (int i=0; i<2; i++) fRec4[i] = 0;
242 for (int i=0; i<2; i++) fRec1[i] = 0;
243 for (int i=0; i<2; i++) fRec0[i] = 0;
244 for (int i=0; i<2; i++) fVec9[i] = 0;
245 for (int i=0; i<2; i++) fRec38[i] = 0;
246 for (int i=0; i<2; i++) fRec37[i] = 0;
247 for (int i=0; i<2; i++) fRec36[i] = 0;
248 }
249
250 void compute(int count, float *input0, float *output0)
251 {
252 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
253 double fSlow1 = fslider1;
254 double fSlow2 = (0.0010000000000000009 * (1 - (0.01 * fSlow1)));
255 double fSlow3 = (0.0010000000000000009 * pow(10,(0.05 * fslider2)));
256 double fSlow4 = fslider3;
257 double fSlow5 = (1.25 * fSlow4);
258 double fSlow6 = (1.000000000000001e-05 * fSlow1);
259 double fSlow7 = (2 * (fSlow4 - 0.5));
260 double fSlow8 = (1 - max(0, fSlow7));
261 double fSlow9 = pow(1e+01,(0.8 * fSlow4));
262 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow4)));
263 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow4)));
264 double fSlow12 = pow(1e+01,(1.2 * fSlow4));
265 double fSlow13 = (1 - max(0, (0 - fSlow7)));
266 for (int i=0; i<count; i++) {
267 double fTemp0 = (fRec1[1] - 2.5e+02);
268 fVec0[0] = fTemp0;
269 fRec2[0] = ((fConst6 * (fVec0[0] + fVec0[1])) + (fConst5 * fRec2[1]));
270 fRec3[0] = (fSlow0 + (0.999 * fRec3[1]));
271 fRec5[0] = (fSlow2 + (0.999 * fRec5[1]));
272 fRec13[0] = (fSlow3 + (0.999 * fRec13[1]));
273 double fTemp1 = (fRec12[1] - 2.5e+02);
274 fVec1[0] = fTemp1;
275 fRec14[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec14[1]));
276 fRec12[0] = Ftube6(0, (fRec14[0] + ((double)input0[i] * fRec13[0])));
277 fRec11[0] = ((fConst12 * ((fConst11 * fRec12[1]) + (fConst0 * fRec12[0]))) + (fConst2 * fRec11[1]));
278 fRec10[0] = ((fConst13 * (fRec11[0] + fRec11[1])) + (fConst5 * fRec10[1]));
279 double fTemp2 = (fRec9[1] - 2.5e+02);
280 fVec2[0] = fTemp2;
281 fRec15[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec15[1]));
282 fRec9[0] = Ftube6(1, (fRec15[0] + fRec10[0]));
283 fRec8[0] = ((fConst12 * ((fConst11 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
284 double fTemp3 = (fRec7[1] - 2.5e+02);
285 fVec3[0] = fTemp3;
286 fRec16[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec16[1]));
287 fRec7[0] = Ftube6(1, (fRec16[0] + fRec8[0]));
288 fRec6[0] = ((fConst12 * ((fConst11 * fRec7[1]) + (fConst0 * fRec7[0]))) + (fConst2 * fRec6[1]));
289 fRec17[0] = (fSlow6 + (0.999 * fRec17[1]));
290 double fTemp4 = (fConst24 * fRec19[1]);
291 double fTemp5 = (fConst30 * fRec20[1]);
292 fRec24[0] = ((fRec6[0] * fRec17[0]) - (fConst48 * ((fConst46 * fRec24[2]) + (fConst44 * fRec24[1]))));
293 double fTemp6 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
294 fVec4[0] = fTemp6;
295 fRec23[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec23[1]));
296 fRec22[0] = ((fConst51 * ((fConst50 * fRec23[1]) + (fConst37 * fRec23[0]))) + (fConst42 * fRec22[1]));
297 fRec21[0] = (fRec22[0] - (fConst40 * ((fConst38 * fRec21[2]) + (fConst36 * fRec21[1]))));
298 fRec20[0] = ((fConst40 * (((fConst35 * fRec21[0]) + (fConst52 * fRec21[1])) + (fConst35 * fRec21[2]))) - (fConst33 * ((fConst32 * fRec20[2]) + fTemp5)));
299 fRec19[0] = ((fRec20[2] + (fConst33 * (fTemp5 + (fConst32 * fRec20[0])))) - (fConst27 * ((fConst26 * fRec19[2]) + fTemp4)));
300 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec19[2] + (fConst27 * (fTemp4 + (fConst26 * fRec19[0])))))));
301 fRec30[0] = ((fConst51 * (fRec23[0] + fRec23[1])) + (fConst42 * fRec30[1]));
302 fRec29[0] = (fRec30[0] - (fConst40 * ((fConst38 * fRec29[2]) + (fConst36 * fRec29[1]))));
303 double fTemp8 = (fRec29[2] + (fRec29[0] + (2 * fRec29[1])));
304 fVec5[0] = fTemp8;
305 fRec28[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec28[1]));
306 fRec27[0] = (fRec28[0] - (fConst59 * ((fConst57 * fRec27[2]) + (fConst30 * fRec27[1]))));
307 double fTemp9 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
308 fVec6[0] = fTemp9;
309 fRec26[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec26[1]));
310 fRec25[0] = (fRec26[0] - (fConst54 * ((fConst53 * fRec25[2]) + (fConst24 * fRec25[1]))));
311 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec25[0]) + (fConst65 * fRec25[1])) + (fConst23 * fRec25[2])))));
312 fRec32[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec32[1]));
313 fRec31[0] = (fRec32[0] - (fConst54 * ((fConst53 * fRec31[2]) + (fConst24 * fRec31[1]))));
314 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec31[2] + (fRec31[0] + (2 * fRec31[1]))))));
315 double fTemp12 = (fConst24 * fRec33[1]);
316 fRec35[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec35[1]));
317 fRec34[0] = (fRec35[0] - (fConst59 * ((fConst57 * fRec34[2]) + (fConst30 * fRec34[1]))));
318 fRec33[0] = ((fConst59 * (((fConst29 * fRec34[0]) + (fConst67 * fRec34[1])) + (fConst29 * fRec34[2]))) - (fConst27 * ((fConst26 * fRec33[2]) + fTemp12)));
319 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec33[2] + (fConst27 * (fTemp12 + (fConst26 * fRec33[0])))))));
320 double fTemp14 = (((fTemp13 * (1 - (0.3333333333333333 * faustpower<2>(fTemp13)))) + ((fTemp11 * (1 - (0.3333333333333333 * faustpower<2>(fTemp11)))) + (0.841395141645195 * (fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10))))))) + (0.7943282347242815 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))));
321 fVec7[0] = fTemp14;
322 fRec18[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec18[1]));
323 double fTemp15 = ((fSlow13 * fRec18[0]) + (fRec6[0] * ((fSlow8 * fRec17[0]) + (fRec5[0] * (1 + (fSlow5 * ((4 - (4 * fabs((fRec6[0] * fRec5[0])))) - 1)))))));
324 fVec8[0] = fTemp15;
325 fRec4[0] = ((fConst13 * (fVec8[0] + fVec8[1])) + (fConst5 * fRec4[1]));
326 double fTemp16 = (fRec4[0] * fRec3[0]);
327 fRec1[0] = Ftube2(0, (fTemp16 + fRec2[0]));
328 fRec0[0] = ((fConst12 * ((fConst11 * fRec1[1]) + (fConst0 * fRec1[0]))) + (fConst2 * fRec0[1]));
329 double fTemp17 = (fRec37[1] - 2.5e+02);
330 fVec9[0] = fTemp17;
331 fRec38[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec38[1]));
332 fRec37[0] = Ftube2(1, (fRec38[0] + fTemp16));
333 fRec36[0] = ((fConst12 * ((fConst11 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
334 output0[i] = (FAUSTFLOAT)(fRec36[0] + fRec0[0]);
335 // post processing
336 fRec36[1] = fRec36[0];
337 fRec37[1] = fRec37[0];
338 fRec38[1] = fRec38[0];
339 fVec9[1] = fVec9[0];
340 fRec0[1] = fRec0[0];
341 fRec1[1] = fRec1[0];
342 fRec4[1] = fRec4[0];
343 fVec8[1] = fVec8[0];
344 fRec18[1] = fRec18[0];
345 fVec7[1] = fVec7[0];
346 fRec33[2] = fRec33[1]; fRec33[1] = fRec33[0];
347 fRec34[2] = fRec34[1]; fRec34[1] = fRec34[0];
348 fRec35[1] = fRec35[0];
349 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
350 fRec32[1] = fRec32[0];
351 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
352 fRec26[1] = fRec26[0];
353 fVec6[1] = fVec6[0];
354 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
355 fRec28[1] = fRec28[0];
356 fVec5[1] = fVec5[0];
357 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
358 fRec30[1] = fRec30[0];
359 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
360 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
361 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
362 fRec22[1] = fRec22[0];
363 fRec23[1] = fRec23[0];
364 fVec4[1] = fVec4[0];
365 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
366 fRec17[1] = fRec17[0];
367 fRec6[1] = fRec6[0];
368 fRec7[1] = fRec7[0];
369 fRec16[1] = fRec16[0];
370 fVec3[1] = fVec3[0];
371 fRec8[1] = fRec8[0];
372 fRec9[1] = fRec9[0];
373 fRec15[1] = fRec15[0];
374 fVec2[1] = fVec2[0];
375 fRec10[1] = fRec10[0];
376 fRec11[1] = fRec11[0];
377 fRec12[1] = fRec12[0];
378 fRec14[1] = fRec14[0];
379 fVec1[1] = fVec1[0];
380 fRec13[1] = fRec13[0];
381 fRec5[1] = fRec5[0];
382 fRec3[1] = fRec3[0];
383 fRec2[1] = fRec2[0];
384 fVec0[1] = fVec0[0];
385 }
386 }
387
388 static struct RegisterParams { RegisterParams(); } RegisterParams;
389 RegisterParams::RegisterParams()
390 {
391 registerInit("amp2", init);
392 }
393
394 } // end namespace gxamp15
0 namespace gxamp16 {
1 // generated from file '../src/faust/gxamp16.dsp'
2
3 double fConst0;
4 double fConst1;
5 double fConst2;
6 double fConst3;
7 double fConst4;
8 double fConst5;
9 double fConst6;
10 double fConst7;
11 double fConst8;
12 double fConst9;
13 double fConst10;
14 double fConst11;
15 double fConst12;
16 double fConst13;
17 double fConst14;
18 double fConst15;
19 double fConst16;
20 double fConst17;
21 double fVec0[2];
22 double fConst18;
23 double fRec5[2];
24 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
25 double fRec6[2];
26 FAUSTFLOAT& fslider1 = get_alias("gxdistortion.wet_dry");
27 double fRec8[2];
28 double fConst19;
29 double fConst20;
30 double fConst21;
31 double fConst22;
32 double fConst23;
33 double fConst24;
34 double fConst25;
35 double fConst26;
36 double fConst27;
37 double fVec1[2];
38 double fConst28;
39 double fRec21[2];
40 double fRec20[2];
41 double fRec19[3];
42 double fRec18[3];
43 FAUSTFLOAT& fslider2 = get_alias("amp2.stage1.Pregain");
44 double fRec22[2];
45 double fConst29;
46 double fConst30;
47 double fConst31;
48 double fVec2[2];
49 double fConst32;
50 double fRec23[2];
51 double fRec17[2];
52 double fConst33;
53 double fConst34;
54 double fRec16[2];
55 double fConst35;
56 double fConst36;
57 double fConst37;
58 double fVec3[2];
59 double fConst38;
60 double fRec26[2];
61 double fRec25[2];
62 double fRec24[2];
63 double fRec15[2];
64 double fConst39;
65 double fRec14[2];
66 double fVec4[2];
67 double fRec27[2];
68 double fRec13[2];
69 double fRec12[2];
70 double fConst40;
71 double fConst41;
72 double fConst42;
73 double fVec5[2];
74 double fConst43;
75 double fRec30[2];
76 double fRec29[2];
77 double fRec28[2];
78 double fRec11[2];
79 double fVec6[2];
80 double fRec31[2];
81 double fRec10[2];
82 double fRec9[2];
83 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
84 double fRec35[2];
85 double fRec34[2];
86 int IOTA;
87 double fVec7[65536];
88 int iConst44;
89 double fRec33[2];
90 double fConst45;
91 double fRec32[2];
92 double fConst46;
93 double fConst47;
94 double fConst48;
95 double fConst49;
96 double fConst50;
97 double fConst51;
98 double fConst52;
99 double fConst53;
100 double fConst54;
101 double fConst55;
102 double fConst56;
103 double fConst57;
104 double fConst58;
105 double fConst59;
106 double fConst60;
107 double fConst61;
108 double fConst62;
109 double fConst63;
110 double fConst64;
111 double fConst65;
112 double fConst66;
113 double fConst67;
114 double fConst68;
115 double fConst69;
116 double fConst70;
117 double fConst71;
118 double fConst72;
119 double fRec42[3];
120 double fVec8[2];
121 double fConst73;
122 double fRec41[2];
123 double fConst74;
124 double fConst75;
125 double fRec40[2];
126 double fRec39[3];
127 double fConst76;
128 double fRec38[3];
129 double fRec37[3];
130 double fConst77;
131 double fConst78;
132 double fConst79;
133 double fConst80;
134 double fConst81;
135 double fConst82;
136 double fConst83;
137 double fConst84;
138 double fConst85;
139 double fRec48[2];
140 double fRec47[3];
141 double fVec9[2];
142 double fConst86;
143 double fRec46[2];
144 double fRec45[3];
145 double fVec10[2];
146 double fConst87;
147 double fConst88;
148 double fRec44[2];
149 double fRec43[3];
150 double fConst89;
151 double fRec50[2];
152 double fRec49[3];
153 double fConst90;
154 double fRec53[2];
155 double fRec52[3];
156 double fConst91;
157 double fRec51[3];
158 double fVec11[2];
159 double fConst92;
160 double fRec36[2];
161 double fVec12[2];
162 double fRec7[2];
163 double fRec4[2];
164 double fRec3[2];
165 double fVec13[2];
166 double fRec56[2];
167 double fRec55[2];
168 double fRec54[2];
169 double fVec14[3];
170 double fConst93;
171 double fConst94;
172 double fRec2[3];
173 double fConst95;
174 double fConst96;
175 double fRec1[3];
176 double fConst97;
177 double fConst98;
178 double fRec0[3];
179 int fSamplingFreq;
180
181 void init(int samplingFreq)
182 {
183 fSamplingFreq = samplingFreq;
184 fConst0 = (31704.95306002819 / fSamplingFreq);
185 fConst1 = (2 * cos(fConst0));
186 fConst2 = (0.026178010471204185 * sin(fConst0));
187 fConst3 = (fConst2 - 1);
188 fConst4 = (49574.33207364693 / fSamplingFreq);
189 fConst5 = (2 * cos(fConst4));
190 fConst6 = (0.07042253521126761 * sin(fConst4));
191 fConst7 = (fConst6 - 1);
192 fConst8 = (60601.32228774711 / fSamplingFreq);
193 fConst9 = (2 * cos(fConst8));
194 fConst10 = (0.03546099290780142 * sin(fConst8));
195 fConst11 = (fConst10 - 1);
196 fConst12 = (1.0 / tan((97.38937226128358 / fSamplingFreq)));
197 fConst13 = (1 + fConst12);
198 fConst14 = (0 - ((1 - fConst12) / fConst13));
199 fConst15 = (1.0 / tan((20517.741620594938 / fSamplingFreq)));
200 fConst16 = (1 + fConst15);
201 fConst17 = (0 - ((1 - fConst15) / fConst16));
202 for (int i=0; i<2; i++) fVec0[i] = 0;
203 fConst18 = (0.0041 / fConst16);
204 for (int i=0; i<2; i++) fRec5[i] = 0;
205 for (int i=0; i<2; i++) fRec6[i] = 0;
206 for (int i=0; i<2; i++) fRec8[i] = 0;
207 fConst19 = tan((37699.11184307752 / fSamplingFreq));
208 fConst20 = (2 * (1 - (1.0 / faustpower<2>(fConst19))));
209 fConst21 = (1.0 / fConst19);
210 fConst22 = (1 + ((fConst21 - 0.7653668647301795) / fConst19));
211 fConst23 = (1.0 / (1 + ((0.7653668647301795 + fConst21) / fConst19)));
212 fConst24 = (1 + ((fConst21 - 1.8477590650225735) / fConst19));
213 fConst25 = (1.0 / (1 + ((fConst21 + 1.8477590650225735) / fConst19)));
214 fConst26 = (973.8937226128359 / fSamplingFreq);
215 fConst27 = (1 - fConst26);
216 for (int i=0; i<2; i++) fVec1[i] = 0;
217 fConst28 = (1.0 / (1 + fConst26));
218 for (int i=0; i<2; i++) fRec21[i] = 0;
219 for (int i=0; i<2; i++) fRec20[i] = 0;
220 for (int i=0; i<3; i++) fRec19[i] = 0;
221 for (int i=0; i<3; i++) fRec18[i] = 0;
222 for (int i=0; i<2; i++) fRec22[i] = 0;
223 fConst29 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
224 fConst30 = (1 + fConst29);
225 fConst31 = (0 - ((1 - fConst29) / fConst30));
226 for (int i=0; i<2; i++) fVec2[i] = 0;
227 fConst32 = (0.027 / fConst30);
228 for (int i=0; i<2; i++) fRec23[i] = 0;
229 for (int i=0; i<2; i++) fRec17[i] = 0;
230 fConst33 = (0 - fConst12);
231 fConst34 = (0.025 / fConst13);
232 for (int i=0; i<2; i++) fRec16[i] = 0;
233 fConst35 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
234 fConst36 = (1 + fConst35);
235 fConst37 = (0 - ((1 - fConst35) / fConst36));
236 for (int i=0; i<2; i++) fVec3[i] = 0;
237 fConst38 = (0.015 / fConst36);
238 for (int i=0; i<2; i++) fRec26[i] = 0;
239 for (int i=0; i<2; i++) fRec25[i] = 0;
240 for (int i=0; i<2; i++) fRec24[i] = 0;
241 for (int i=0; i<2; i++) fRec15[i] = 0;
242 fConst39 = (1.0 / fConst16);
243 for (int i=0; i<2; i++) fRec14[i] = 0;
244 for (int i=0; i<2; i++) fVec4[i] = 0;
245 for (int i=0; i<2; i++) fRec27[i] = 0;
246 for (int i=0; i<2; i++) fRec13[i] = 0;
247 for (int i=0; i<2; i++) fRec12[i] = 0;
248 fConst40 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
249 fConst41 = (1 + fConst40);
250 fConst42 = (0 - ((1 - fConst40) / fConst41));
251 for (int i=0; i<2; i++) fVec5[i] = 0;
252 fConst43 = (0.0082 / fConst41);
253 for (int i=0; i<2; i++) fRec30[i] = 0;
254 for (int i=0; i<2; i++) fRec29[i] = 0;
255 for (int i=0; i<2; i++) fRec28[i] = 0;
256 for (int i=0; i<2; i++) fRec11[i] = 0;
257 for (int i=0; i<2; i++) fVec6[i] = 0;
258 for (int i=0; i<2; i++) fRec31[i] = 0;
259 for (int i=0; i<2; i++) fRec10[i] = 0;
260 for (int i=0; i<2; i++) fRec9[i] = 0;
261 for (int i=0; i<2; i++) fRec35[i] = 0;
262 for (int i=0; i<2; i++) fRec34[i] = 0;
263 IOTA = 0;
264 for (int i=0; i<65536; i++) fVec7[i] = 0;
265 iConst44 = int((int((0.1111111111111111 * fSamplingFreq)) & 65535));
266 for (int i=0; i<2; i++) fRec33[i] = 0;
267 fConst45 = (0.009000000000000008 / fSamplingFreq);
268 for (int i=0; i<2; i++) fRec32[i] = 0;
269 fConst46 = tan((942.4777960769379 / fSamplingFreq));
270 fConst47 = (1.0 / faustpower<2>(fConst46));
271 fConst48 = (2 * (1 - fConst47));
272 fConst49 = (1.0 / fConst46);
273 fConst50 = (1 + ((fConst49 - 1.0) / fConst46));
274 fConst51 = (1.0 / (1 + ((1.0 + fConst49) / fConst46)));
275 fConst52 = tan((3769.9111843077517 / fSamplingFreq));
276 fConst53 = (1.0 / faustpower<2>(fConst52));
277 fConst54 = (2 * (1 - fConst53));
278 fConst55 = (1.0 / fConst52);
279 fConst56 = (1 + ((fConst55 - 1.0) / fConst52));
280 fConst57 = (1.0 / (1 + ((1.0 + fConst55) / fConst52)));
281 fConst58 = tan((10053.096491487338 / fSamplingFreq));
282 fConst59 = (1.0 / faustpower<2>(fConst58));
283 fConst60 = (2 * (1 - fConst59));
284 fConst61 = (1.0 / fConst58);
285 fConst62 = (1 + ((fConst61 - 1.0000000000000004) / fConst58));
286 fConst63 = (1 + ((1.0000000000000004 + fConst61) / fConst58));
287 fConst64 = (1.0 / fConst63);
288 fConst65 = (1 + fConst61);
289 fConst66 = (0 - ((1 - fConst61) / fConst65));
290 fConst67 = tan((47123.8898038469 / fSamplingFreq));
291 fConst68 = (2 * (1 - (1.0 / faustpower<2>(fConst67))));
292 fConst69 = (1.0 / fConst67);
293 fConst70 = (1 + ((fConst69 - 1.414213562373095) / fConst67));
294 fConst71 = (1 + ((1.414213562373095 + fConst69) / fConst67));
295 fConst72 = (1.0 / fConst71);
296 for (int i=0; i<3; i++) fRec42[i] = 0;
297 for (int i=0; i<2; i++) fVec8[i] = 0;
298 fConst73 = (1.0 / (fConst13 * fConst71));
299 for (int i=0; i<2; i++) fRec41[i] = 0;
300 fConst74 = (0 - fConst61);
301 fConst75 = (1.0 / fConst65);
302 for (int i=0; i<2; i++) fRec40[i] = 0;
303 for (int i=0; i<3; i++) fRec39[i] = 0;
304 fConst76 = (2 * (0 - fConst59));
305 for (int i=0; i<3; i++) fRec38[i] = 0;
306 for (int i=0; i<3; i++) fRec37[i] = 0;
307 fConst77 = (1 + ((fConst49 - 1.0000000000000004) / fConst46));
308 fConst78 = (1.0 / (1 + ((fConst49 + 1.0000000000000004) / fConst46)));
309 fConst79 = (1 + fConst49);
310 fConst80 = (0 - ((1 - fConst49) / fConst79));
311 fConst81 = (1 + ((fConst55 - 1.0000000000000004) / fConst52));
312 fConst82 = (1 + ((fConst55 + 1.0000000000000004) / fConst52));
313 fConst83 = (1.0 / fConst82);
314 fConst84 = (1 + fConst55);
315 fConst85 = (0 - ((1 - fConst55) / fConst84));
316 for (int i=0; i<2; i++) fRec48[i] = 0;
317 for (int i=0; i<3; i++) fRec47[i] = 0;
318 for (int i=0; i<2; i++) fVec9[i] = 0;
319 fConst86 = (1.0 / (fConst84 * fConst63));
320 for (int i=0; i<2; i++) fRec46[i] = 0;
321 for (int i=0; i<3; i++) fRec45[i] = 0;
322 for (int i=0; i<2; i++) fVec10[i] = 0;
323 fConst87 = (0 - fConst49);
324 fConst88 = (1.0 / (fConst79 * fConst82));
325 for (int i=0; i<2; i++) fRec44[i] = 0;
326 for (int i=0; i<3; i++) fRec43[i] = 0;
327 fConst89 = (2 * (0 - fConst47));
328 for (int i=0; i<2; i++) fRec50[i] = 0;
329 for (int i=0; i<3; i++) fRec49[i] = 0;
330 fConst90 = (0 - fConst55);
331 for (int i=0; i<2; i++) fRec53[i] = 0;
332 for (int i=0; i<3; i++) fRec52[i] = 0;
333 fConst91 = (2 * (0 - fConst53));
334 for (int i=0; i<3; i++) fRec51[i] = 0;
335 for (int i=0; i<2; i++) fVec11[i] = 0;
336 fConst92 = (1.5848931924611136 / fConst16);
337 for (int i=0; i<2; i++) fRec36[i] = 0;
338 for (int i=0; i<2; i++) fVec12[i] = 0;
339 for (int i=0; i<2; i++) fRec7[i] = 0;
340 for (int i=0; i<2; i++) fRec4[i] = 0;
341 for (int i=0; i<2; i++) fRec3[i] = 0;
342 for (int i=0; i<2; i++) fVec13[i] = 0;
343 for (int i=0; i<2; i++) fRec56[i] = 0;
344 for (int i=0; i<2; i++) fRec55[i] = 0;
345 for (int i=0; i<2; i++) fRec54[i] = 0;
346 for (int i=0; i<3; i++) fVec14[i] = 0;
347 fConst93 = (0 - fConst9);
348 fConst94 = (1.0 / (1 + fConst10));
349 for (int i=0; i<3; i++) fRec2[i] = 0;
350 fConst95 = (0 - fConst5);
351 fConst96 = (1.0 / (1 + fConst6));
352 for (int i=0; i<3; i++) fRec1[i] = 0;
353 fConst97 = (0 - fConst1);
354 fConst98 = (1.0 / (1 + fConst2));
355 for (int i=0; i<3; i++) fRec0[i] = 0;
356 }
357
358 void compute(int count, float *input0, float *output0)
359 {
360 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
361 double fSlow1 = fslider1;
362 double fSlow2 = (0.0010000000000000009 * (1 - (0.01 * fSlow1)));
363 double fSlow3 = (0.0010000000000000009 * pow(10,(0.05 * fslider2)));
364 double fSlow4 = fslider3;
365 double fSlow5 = (1.25 * fSlow4);
366 double fSlow6 = (1.000000000000001e-05 * fSlow1);
367 double fSlow7 = (2 * (fSlow4 - 0.5));
368 double fSlow8 = (0.024937655860349125 * (1 - max(0, fSlow7)));
369 double fSlow9 = pow(1e+01,(0.8 * fSlow4));
370 double fSlow10 = (fConst78 * pow(1e+01,(2 * fSlow4)));
371 double fSlow11 = (fConst78 * pow(1e+01,(0.9 * fSlow4)));
372 double fSlow12 = pow(1e+01,(1.2 * fSlow4));
373 double fSlow13 = (1 - max(0, (0 - fSlow7)));
374 for (int i=0; i<count; i++) {
375 double fTemp0 = (fRec4[1] - 2.5e+02);
376 fVec0[0] = fTemp0;
377 fRec5[0] = ((fConst18 * (fVec0[0] + fVec0[1])) + (fConst17 * fRec5[1]));
378 fRec6[0] = (fSlow0 + (0.999 * fRec6[1]));
379 fRec8[0] = (fSlow2 + (0.999 * fRec8[1]));
380 double fTemp1 = (double)input0[i];
381 fVec1[0] = fTemp1;
382 fRec21[0] = (fConst28 * ((fVec1[0] - fVec1[1]) + (fConst27 * fRec21[1])));
383 fRec20[0] = (fConst28 * ((fRec21[0] - fRec21[1]) + (fConst27 * fRec20[1])));
384 fRec19[0] = (fRec20[0] - (fConst25 * ((fConst24 * fRec19[2]) + (fConst20 * fRec19[1]))));
385 fRec18[0] = ((fConst25 * (fRec19[2] + (fRec19[0] + (2 * fRec19[1])))) - (fConst23 * ((fConst22 * fRec18[2]) + (fConst20 * fRec18[1]))));
386 fRec22[0] = (fSlow3 + (0.999 * fRec22[1]));
387 double fTemp2 = (fRec17[1] - 2.5e+02);
388 fVec2[0] = fTemp2;
389 fRec23[0] = ((fConst32 * (fVec2[0] + fVec2[1])) + (fConst31 * fRec23[1]));
390 fRec17[0] = Ftube6(0, (fRec23[0] + (fConst23 * (fRec22[0] * (fRec18[2] + (fRec18[0] + (2 * fRec18[1])))))));
391 fRec16[0] = ((fConst34 * ((fConst33 * fRec17[1]) + (fConst12 * fRec17[0]))) + (fConst14 * fRec16[1]));
392 double fTemp3 = (fRec25[1] - 2.5e+02);
393 fVec3[0] = fTemp3;
394 fRec26[0] = ((fConst38 * (fVec3[0] + fVec3[1])) + (fConst37 * fRec26[1]));
395 fRec25[0] = Ftube6(1, (fRec26[0] + fRec15[1]));
396 fRec24[0] = ((fConst34 * ((fConst33 * fRec25[1]) + (fConst12 * fRec25[0]))) + (fConst14 * fRec24[1]));
397 fRec15[0] = (fRec24[0] + fRec16[0]);
398 fRec14[0] = ((fConst39 * (fRec15[0] + fRec15[1])) + (fConst17 * fRec14[1]));
399 double fTemp4 = (fRec13[1] - 2.5e+02);
400 fVec4[0] = fTemp4;
401 fRec27[0] = ((fConst38 * (fVec4[0] + fVec4[1])) + (fConst37 * fRec27[1]));
402 fRec13[0] = Ftube6(1, (fRec27[0] + fRec14[0]));
403 fRec12[0] = ((fConst34 * ((fConst33 * fRec13[1]) + (fConst12 * fRec13[0]))) + (fConst14 * fRec12[1]));
404 double fTemp5 = (fRec29[1] - 2.5e+02);
405 fVec5[0] = fTemp5;
406 fRec30[0] = ((fConst43 * (fVec5[0] + fVec5[1])) + (fConst42 * fRec30[1]));
407 fRec29[0] = Ftube6(1, (fRec30[0] + fRec11[1]));
408 fRec28[0] = ((fConst34 * ((fConst33 * fRec29[1]) + (fConst12 * fRec29[0]))) + (fConst14 * fRec28[1]));
409 fRec11[0] = (fRec28[0] + fRec12[0]);
410 double fTemp6 = (fRec10[1] - 2.5e+02);
411 fVec6[0] = fTemp6;
412 fRec31[0] = ((fConst43 * (fVec6[0] + fVec6[1])) + (fConst42 * fRec31[1]));
413 fRec10[0] = Ftube6(1, (fRec31[0] + fRec11[0]));
414 fRec9[0] = ((fConst34 * ((fConst33 * fRec10[1]) + (fConst12 * fRec10[0]))) + (fConst14 * fRec9[1]));
415 double fTemp7 = (fRec9[0] * fRec8[0]);
416 fRec35[0] = (fSlow6 + (0.999 * fRec35[1]));
417 double fTemp8 = (fRec9[0] * fRec35[0]);
418 double fTemp9 = fabs(fTemp8);
419 fRec34[0] = ((9.999999999998899e-05 * fTemp9) + (0.9999 * fRec34[1]));
420 double fTemp10 = max(fRec34[0], fTemp9);
421 fVec7[IOTA&65535] = fTemp10;
422 fRec33[0] = ((fVec7[IOTA&65535] + fRec33[1]) - fVec7[(IOTA-iConst44)&65535]);
423 fRec32[0] = ((fConst45 * fRec33[0]) + (0.999 * fRec32[1]));
424 double fTemp11 = max(-1.0, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
425 double fTemp12 = (0 - fTemp11);
426 double fTemp13 = (40.1 * fTemp12);
427 double fTemp14 = max(-600, fTemp13);
428 double fTemp15 = (0 - fTemp14);
429 double fTemp16 = (fTemp8 - fTemp11);
430 double fTemp17 = (40.1 * fTemp16);
431 double fTemp18 = max(-600, fTemp17);
432 double fTemp19 = (0 - fTemp18);
433 double fTemp20 = (((int((fabs(fTemp17) > 0.0001)))?((int((fTemp18 < -50)))?(exp(fTemp18) * fTemp19):(fTemp18 / (1 - exp(fTemp19)))):(1 + (fTemp16 * (20.05 + (134.00083333333336 * fTemp16))))) - ((int((fabs(fTemp13) > 0.0001)))?((int((fTemp14 < -50)))?(exp(fTemp14) * fTemp15):(fTemp14 / (1 - exp(fTemp15)))):(1 + (fTemp12 * (20.05 + (134.00083333333336 * fTemp12))))));
434 double fTemp21 = (fConst48 * fRec37[1]);
435 double fTemp22 = (fConst54 * fRec38[1]);
436 fRec42[0] = ((0.024937655860349125 * fTemp20) - (fConst72 * ((fConst70 * fRec42[2]) + (fConst68 * fRec42[1]))));
437 double fTemp23 = (fRec42[2] + (fRec42[0] + (2 * fRec42[1])));
438 fVec8[0] = fTemp23;
439 fRec41[0] = ((fConst73 * ((fConst33 * fVec8[1]) + (fConst12 * fVec8[0]))) + (fConst14 * fRec41[1]));
440 fRec40[0] = ((fConst75 * ((fConst74 * fRec41[1]) + (fConst61 * fRec41[0]))) + (fConst66 * fRec40[1]));
441 fRec39[0] = (fRec40[0] - (fConst64 * ((fConst62 * fRec39[2]) + (fConst60 * fRec39[1]))));
442 fRec38[0] = ((fConst64 * (((fConst59 * fRec39[0]) + (fConst76 * fRec39[1])) + (fConst59 * fRec39[2]))) - (fConst57 * ((fConst56 * fRec38[2]) + fTemp22)));
443 fRec37[0] = ((fRec38[2] + (fConst57 * (fTemp22 + (fConst56 * fRec38[0])))) - (fConst51 * ((fConst50 * fRec37[2]) + fTemp21)));
444 double fTemp24 = max(-1, min(1, (fSlow9 * (fRec37[2] + (fConst51 * (fTemp21 + (fConst50 * fRec37[0])))))));
445 fRec48[0] = ((fConst75 * (fRec41[0] + fRec41[1])) + (fConst66 * fRec48[1]));
446 fRec47[0] = (fRec48[0] - (fConst64 * ((fConst62 * fRec47[2]) + (fConst60 * fRec47[1]))));
447 double fTemp25 = (fRec47[2] + (fRec47[0] + (2 * fRec47[1])));
448 fVec9[0] = fTemp25;
449 fRec46[0] = ((fConst86 * (fVec9[0] + fVec9[1])) + (fConst85 * fRec46[1]));
450 fRec45[0] = (fRec46[0] - (fConst83 * ((fConst81 * fRec45[2]) + (fConst54 * fRec45[1]))));
451 double fTemp26 = (fRec45[2] + (fRec45[0] + (2 * fRec45[1])));
452 fVec10[0] = fTemp26;
453 fRec44[0] = ((fConst88 * ((fConst87 * fVec10[1]) + (fConst49 * fVec10[0]))) + (fConst80 * fRec44[1]));
454 fRec43[0] = (fRec44[0] - (fConst78 * ((fConst77 * fRec43[2]) + (fConst48 * fRec43[1]))));
455 double fTemp27 = max(-1, min(1, (fSlow10 * (((fConst47 * fRec43[0]) + (fConst89 * fRec43[1])) + (fConst47 * fRec43[2])))));
456 fRec50[0] = ((fConst88 * (fVec10[0] + fVec10[1])) + (fConst80 * fRec50[1]));
457 fRec49[0] = (fRec50[0] - (fConst78 * ((fConst77 * fRec49[2]) + (fConst48 * fRec49[1]))));
458 double fTemp28 = max(-1, min(1, (fSlow11 * (fRec49[2] + (fRec49[0] + (2 * fRec49[1]))))));
459 double fTemp29 = (fConst48 * fRec51[1]);
460 fRec53[0] = ((fConst86 * ((fConst90 * fVec9[1]) + (fConst55 * fVec9[0]))) + (fConst85 * fRec53[1]));
461 fRec52[0] = (fRec53[0] - (fConst83 * ((fConst81 * fRec52[2]) + (fConst54 * fRec52[1]))));
462 fRec51[0] = ((fConst83 * (((fConst53 * fRec52[0]) + (fConst91 * fRec52[1])) + (fConst53 * fRec52[2]))) - (fConst51 * ((fConst50 * fRec51[2]) + fTemp29)));
463 double fTemp30 = max(-1, min(1, (fSlow12 * (fRec51[2] + (fConst51 * (fTemp29 + (fConst50 * fRec51[0])))))));
464 double fTemp31 = (((fTemp30 * (1 - (0.3333333333333333 * faustpower<2>(fTemp30)))) + ((fTemp28 * (1 - (0.3333333333333333 * faustpower<2>(fTemp28)))) + (0.841395141645195 * (fTemp27 * (1 - (0.3333333333333333 * faustpower<2>(fTemp27))))))) + (0.7943282347242815 * (fTemp24 * (1 - (0.3333333333333333 * faustpower<2>(fTemp24))))));
465 fVec11[0] = fTemp31;
466 fRec36[0] = ((fConst92 * (fVec11[0] + fVec11[1])) + (fConst17 * fRec36[1]));
467 double fTemp32 = (((fSlow13 * fRec36[0]) + (fSlow8 * fTemp20)) + (fTemp7 * (1 + (fSlow5 * ((4 - (4 * fabs(fTemp7))) - 1)))));
468 fVec12[0] = fTemp32;
469 fRec7[0] = ((fConst39 * (fVec12[0] + fVec12[1])) + (fConst17 * fRec7[1]));
470 double fTemp33 = (fRec7[0] * fRec6[0]);
471 fRec4[0] = Ftube2(0, (fTemp33 + fRec5[0]));
472 fRec3[0] = ((fConst34 * ((fConst33 * fRec4[1]) + (fConst12 * fRec4[0]))) + (fConst14 * fRec3[1]));
473 double fTemp34 = (fRec55[1] - 2.5e+02);
474 fVec13[0] = fTemp34;
475 fRec56[0] = ((fConst18 * (fVec13[0] + fVec13[1])) + (fConst17 * fRec56[1]));
476 fRec55[0] = Ftube2(1, (fRec56[0] + fTemp33));
477 fRec54[0] = ((fConst34 * ((fConst33 * fRec55[1]) + (fConst12 * fRec55[0]))) + (fConst14 * fRec54[1]));
478 double fTemp35 = (min(0.7, fRec54[0]) + max(-0.75, fRec3[0]));
479 fVec14[0] = fTemp35;
480 fRec2[0] = (fConst94 * ((fVec14[2] + (fVec14[0] + (fConst93 * fVec14[1]))) + ((fConst11 * fRec2[2]) + (fConst9 * fRec2[1]))));
481 fRec1[0] = (fConst96 * ((fRec2[2] + (fRec2[0] + (fConst95 * fRec2[1]))) + ((fConst7 * fRec1[2]) + (fConst5 * fRec1[1]))));
482 fRec0[0] = (fConst98 * ((fRec1[2] + (fRec1[0] + (fConst97 * fRec1[1]))) + ((fConst3 * fRec0[2]) + (fConst1 * fRec0[1]))));
483 output0[i] = (FAUSTFLOAT)fRec0[0];
484 // post processing
485 fRec0[2] = fRec0[1]; fRec0[1] = fRec0[0];
486 fRec1[2] = fRec1[1]; fRec1[1] = fRec1[0];
487 fRec2[2] = fRec2[1]; fRec2[1] = fRec2[0];
488 fVec14[2] = fVec14[1]; fVec14[1] = fVec14[0];
489 fRec54[1] = fRec54[0];
490 fRec55[1] = fRec55[0];
491 fRec56[1] = fRec56[0];
492 fVec13[1] = fVec13[0];
493 fRec3[1] = fRec3[0];
494 fRec4[1] = fRec4[0];
495 fRec7[1] = fRec7[0];
496 fVec12[1] = fVec12[0];
497 fRec36[1] = fRec36[0];
498 fVec11[1] = fVec11[0];
499 fRec51[2] = fRec51[1]; fRec51[1] = fRec51[0];
500 fRec52[2] = fRec52[1]; fRec52[1] = fRec52[0];
501 fRec53[1] = fRec53[0];
502 fRec49[2] = fRec49[1]; fRec49[1] = fRec49[0];
503 fRec50[1] = fRec50[0];
504 fRec43[2] = fRec43[1]; fRec43[1] = fRec43[0];
505 fRec44[1] = fRec44[0];
506 fVec10[1] = fVec10[0];
507 fRec45[2] = fRec45[1]; fRec45[1] = fRec45[0];
508 fRec46[1] = fRec46[0];
509 fVec9[1] = fVec9[0];
510 fRec47[2] = fRec47[1]; fRec47[1] = fRec47[0];
511 fRec48[1] = fRec48[0];
512 fRec37[2] = fRec37[1]; fRec37[1] = fRec37[0];
513 fRec38[2] = fRec38[1]; fRec38[1] = fRec38[0];
514 fRec39[2] = fRec39[1]; fRec39[1] = fRec39[0];
515 fRec40[1] = fRec40[0];
516 fRec41[1] = fRec41[0];
517 fVec8[1] = fVec8[0];
518 fRec42[2] = fRec42[1]; fRec42[1] = fRec42[0];
519 fRec32[1] = fRec32[0];
520 fRec33[1] = fRec33[0];
521 IOTA = IOTA+1;
522 fRec34[1] = fRec34[0];
523 fRec35[1] = fRec35[0];
524 fRec9[1] = fRec9[0];
525 fRec10[1] = fRec10[0];
526 fRec31[1] = fRec31[0];
527 fVec6[1] = fVec6[0];
528 fRec11[1] = fRec11[0];
529 fRec28[1] = fRec28[0];
530 fRec29[1] = fRec29[0];
531 fRec30[1] = fRec30[0];
532 fVec5[1] = fVec5[0];
533 fRec12[1] = fRec12[0];
534 fRec13[1] = fRec13[0];
535 fRec27[1] = fRec27[0];
536 fVec4[1] = fVec4[0];
537 fRec14[1] = fRec14[0];
538 fRec15[1] = fRec15[0];
539 fRec24[1] = fRec24[0];
540 fRec25[1] = fRec25[0];
541 fRec26[1] = fRec26[0];
542 fVec3[1] = fVec3[0];
543 fRec16[1] = fRec16[0];
544 fRec17[1] = fRec17[0];
545 fRec23[1] = fRec23[0];
546 fVec2[1] = fVec2[0];
547 fRec22[1] = fRec22[0];
548 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
549 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
550 fRec20[1] = fRec20[0];
551 fRec21[1] = fRec21[0];
552 fVec1[1] = fVec1[0];
553 fRec8[1] = fRec8[0];
554 fRec6[1] = fRec6[0];
555 fRec5[1] = fRec5[0];
556 fVec0[1] = fVec0[0];
557 }
558 }
559
560 static struct RegisterParams { RegisterParams(); } RegisterParams;
561 RegisterParams::RegisterParams()
562 {
563 registerInit("amp2", init);
564 }
565
566 } // end namespace gxamp16
0 namespace gxamp17 {
1 // generated from file '../src/faust/gxamp17.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
4 double fRec0[2];
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fConst3;
9 double fConst4;
10 double fConst5;
11 FAUSTFLOAT& fslider1 = get_alias("amp2.stage1.Pregain");
12 double fRec8[2];
13 double fConst6;
14 double fConst7;
15 double fConst8;
16 double fConst9;
17 double fConst10;
18 double fConst11;
19 double fConst12;
20 double fConst13;
21 double fConst14;
22 double fConst15;
23 double fConst16;
24 double fConst17;
25 double fConst18;
26 double fConst19;
27 double fConst20;
28 double fConst21;
29 double fConst22;
30 double fConst23;
31 double fConst24;
32 double fConst25;
33 double fConst26;
34 double fConst27;
35 double fConst28;
36 double fConst29;
37 double fConst30;
38 double fConst31;
39 double fConst32;
40 double fRec21[2];
41 int IOTA;
42 double fVec0[65536];
43 int iConst33;
44 double fRec20[2];
45 double fConst34;
46 double fRec19[2];
47 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
48 double fRec22[2];
49 double fRec18[3];
50 double fVec1[2];
51 double fConst35;
52 double fConst36;
53 double fRec17[2];
54 double fConst37;
55 double fConst38;
56 double fRec16[2];
57 double fRec15[3];
58 double fConst39;
59 double fRec14[3];
60 double fRec13[3];
61 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
62 double fConst40;
63 double fConst41;
64 double fConst42;
65 double fConst43;
66 double fConst44;
67 double fConst45;
68 double fConst46;
69 double fConst47;
70 double fConst48;
71 double fRec28[2];
72 double fRec27[3];
73 double fVec2[2];
74 double fConst49;
75 double fRec26[2];
76 double fRec25[3];
77 double fVec3[2];
78 double fConst50;
79 double fConst51;
80 double fRec24[2];
81 double fRec23[3];
82 double fConst52;
83 double fRec30[2];
84 double fRec29[3];
85 double fConst53;
86 double fRec33[2];
87 double fRec32[3];
88 double fConst54;
89 double fRec31[3];
90 double fVec4[2];
91 double fConst55;
92 double fRec12[2];
93 double fConst56;
94 double fConst57;
95 double fConst58;
96 double fVec5[2];
97 double fConst59;
98 double fRec34[2];
99 double fRec35[2];
100 double fRec11[2];
101 double fConst60;
102 double fRec10[2];
103 double fConst61;
104 double fConst62;
105 double fConst63;
106 double fVec6[2];
107 double fConst64;
108 double fRec38[2];
109 double fRec37[2];
110 double fRec36[2];
111 double fRec9[2];
112 double fVec7[2];
113 double fConst65;
114 double fRec7[2];
115 double fVec8[2];
116 double fRec39[2];
117 double fRec6[2];
118 double fRec5[2];
119 double fConst66;
120 double fConst67;
121 double fConst68;
122 double fVec9[2];
123 double fConst69;
124 double fRec42[2];
125 double fRec41[2];
126 double fRec40[2];
127 double fRec4[2];
128 double fRec3[2];
129 double fVec10[2];
130 double fRec43[2];
131 double fRec2[2];
132 double fRec1[2];
133 int fSamplingFreq;
134
135 void init(int samplingFreq)
136 {
137 fSamplingFreq = samplingFreq;
138 for (int i=0; i<2; i++) fRec0[i] = 0;
139 fConst0 = (1.0 / tan((97.38937226128358 / fSamplingFreq)));
140 fConst1 = (1 + fConst0);
141 fConst2 = (0 - ((1 - fConst0) / fConst1));
142 fConst3 = (1.0 / tan((20517.741620594938 / fSamplingFreq)));
143 fConst4 = (1 + fConst3);
144 fConst5 = (0 - ((1 - fConst3) / fConst4));
145 for (int i=0; i<2; i++) fRec8[i] = 0;
146 fConst6 = tan((942.4777960769379 / fSamplingFreq));
147 fConst7 = (1.0 / faustpower<2>(fConst6));
148 fConst8 = (2 * (1 - fConst7));
149 fConst9 = (1.0 / fConst6);
150 fConst10 = (1 + ((fConst9 - 1.0) / fConst6));
151 fConst11 = (1.0 / (1 + ((1.0 + fConst9) / fConst6)));
152 fConst12 = tan((3769.9111843077517 / fSamplingFreq));
153 fConst13 = (1.0 / faustpower<2>(fConst12));
154 fConst14 = (2 * (1 - fConst13));
155 fConst15 = (1.0 / fConst12);
156 fConst16 = (1 + ((fConst15 - 1.0) / fConst12));
157 fConst17 = (1.0 / (1 + ((1.0 + fConst15) / fConst12)));
158 fConst18 = tan((10053.096491487338 / fSamplingFreq));
159 fConst19 = (1.0 / faustpower<2>(fConst18));
160 fConst20 = (2 * (1 - fConst19));
161 fConst21 = (1.0 / fConst18);
162 fConst22 = (1 + ((fConst21 - 1.0000000000000004) / fConst18));
163 fConst23 = (1 + ((1.0000000000000004 + fConst21) / fConst18));
164 fConst24 = (1.0 / fConst23);
165 fConst25 = (1 + fConst21);
166 fConst26 = (0 - ((1 - fConst21) / fConst25));
167 fConst27 = tan((47123.8898038469 / fSamplingFreq));
168 fConst28 = (2 * (1 - (1.0 / faustpower<2>(fConst27))));
169 fConst29 = (1.0 / fConst27);
170 fConst30 = (1 + ((fConst29 - 1.414213562373095) / fConst27));
171 fConst31 = (1 + ((1.414213562373095 + fConst29) / fConst27));
172 fConst32 = (1.0 / fConst31);
173 for (int i=0; i<2; i++) fRec21[i] = 0;
174 IOTA = 0;
175 for (int i=0; i<65536; i++) fVec0[i] = 0;
176 iConst33 = int((int((0.1111111111111111 * fSamplingFreq)) & 65535));
177 for (int i=0; i<2; i++) fRec20[i] = 0;
178 fConst34 = (0.009000000000000008 / fSamplingFreq);
179 for (int i=0; i<2; i++) fRec19[i] = 0;
180 for (int i=0; i<2; i++) fRec22[i] = 0;
181 for (int i=0; i<3; i++) fRec18[i] = 0;
182 for (int i=0; i<2; i++) fVec1[i] = 0;
183 fConst35 = (0 - fConst0);
184 fConst36 = (1.0 / (fConst1 * fConst31));
185 for (int i=0; i<2; i++) fRec17[i] = 0;
186 fConst37 = (0 - fConst21);
187 fConst38 = (1.0 / fConst25);
188 for (int i=0; i<2; i++) fRec16[i] = 0;
189 for (int i=0; i<3; i++) fRec15[i] = 0;
190 fConst39 = (2 * (0 - fConst19));
191 for (int i=0; i<3; i++) fRec14[i] = 0;
192 for (int i=0; i<3; i++) fRec13[i] = 0;
193 fConst40 = (1 + ((fConst9 - 1.0000000000000004) / fConst6));
194 fConst41 = (1.0 / (1 + ((fConst9 + 1.0000000000000004) / fConst6)));
195 fConst42 = (1 + fConst9);
196 fConst43 = (0 - ((1 - fConst9) / fConst42));
197 fConst44 = (1 + ((fConst15 - 1.0000000000000004) / fConst12));
198 fConst45 = (1 + ((fConst15 + 1.0000000000000004) / fConst12));
199 fConst46 = (1.0 / fConst45);
200 fConst47 = (1 + fConst15);
201 fConst48 = (0 - ((1 - fConst15) / fConst47));
202 for (int i=0; i<2; i++) fRec28[i] = 0;
203 for (int i=0; i<3; i++) fRec27[i] = 0;
204 for (int i=0; i<2; i++) fVec2[i] = 0;
205 fConst49 = (1.0 / (fConst47 * fConst23));
206 for (int i=0; i<2; i++) fRec26[i] = 0;
207 for (int i=0; i<3; i++) fRec25[i] = 0;
208 for (int i=0; i<2; i++) fVec3[i] = 0;
209 fConst50 = (0 - fConst9);
210 fConst51 = (1.0 / (fConst42 * fConst45));
211 for (int i=0; i<2; i++) fRec24[i] = 0;
212 for (int i=0; i<3; i++) fRec23[i] = 0;
213 fConst52 = (2 * (0 - fConst7));
214 for (int i=0; i<2; i++) fRec30[i] = 0;
215 for (int i=0; i<3; i++) fRec29[i] = 0;
216 fConst53 = (0 - fConst15);
217 for (int i=0; i<2; i++) fRec33[i] = 0;
218 for (int i=0; i<3; i++) fRec32[i] = 0;
219 fConst54 = (2 * (0 - fConst13));
220 for (int i=0; i<3; i++) fRec31[i] = 0;
221 for (int i=0; i<2; i++) fVec4[i] = 0;
222 fConst55 = (1.5848931924611136 / fConst4);
223 for (int i=0; i<2; i++) fRec12[i] = 0;
224 fConst56 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
225 fConst57 = (1 + fConst56);
226 fConst58 = (0 - ((1 - fConst56) / fConst57));
227 for (int i=0; i<2; i++) fVec5[i] = 0;
228 fConst59 = (0.027 / fConst57);
229 for (int i=0; i<2; i++) fRec34[i] = 0;
230 for (int i=0; i<2; i++) fRec35[i] = 0;
231 for (int i=0; i<2; i++) fRec11[i] = 0;
232 fConst60 = (0.025 / fConst1);
233 for (int i=0; i<2; i++) fRec10[i] = 0;
234 fConst61 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
235 fConst62 = (1 + fConst61);
236 fConst63 = (0 - ((1 - fConst61) / fConst62));
237 for (int i=0; i<2; i++) fVec6[i] = 0;
238 fConst64 = (0.015 / fConst62);
239 for (int i=0; i<2; i++) fRec38[i] = 0;
240 for (int i=0; i<2; i++) fRec37[i] = 0;
241 for (int i=0; i<2; i++) fRec36[i] = 0;
242 for (int i=0; i<2; i++) fRec9[i] = 0;
243 for (int i=0; i<2; i++) fVec7[i] = 0;
244 fConst65 = (1.0 / fConst4);
245 for (int i=0; i<2; i++) fRec7[i] = 0;
246 for (int i=0; i<2; i++) fVec8[i] = 0;
247 for (int i=0; i<2; i++) fRec39[i] = 0;
248 for (int i=0; i<2; i++) fRec6[i] = 0;
249 for (int i=0; i<2; i++) fRec5[i] = 0;
250 fConst66 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
251 fConst67 = (1 + fConst66);
252 fConst68 = (0 - ((1 - fConst66) / fConst67));
253 for (int i=0; i<2; i++) fVec9[i] = 0;
254 fConst69 = (0.0082 / fConst67);
255 for (int i=0; i<2; i++) fRec42[i] = 0;
256 for (int i=0; i<2; i++) fRec41[i] = 0;
257 for (int i=0; i<2; i++) fRec40[i] = 0;
258 for (int i=0; i<2; i++) fRec4[i] = 0;
259 for (int i=0; i<2; i++) fRec3[i] = 0;
260 for (int i=0; i<2; i++) fVec10[i] = 0;
261 for (int i=0; i<2; i++) fRec43[i] = 0;
262 for (int i=0; i<2; i++) fRec2[i] = 0;
263 for (int i=0; i<2; i++) fRec1[i] = 0;
264 }
265
266 void compute(int count, float *input0, float *output0)
267 {
268 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
269 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
270 double fSlow2 = fslider2;
271 double fSlow3 = (1.000000000000001e-05 * fSlow2);
272 double fSlow4 = fslider3;
273 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
274 double fSlow6 = pow(1e+01,(2 * fSlow4));
275 double fSlow7 = (fConst41 * fSlow6);
276 double fSlow8 = (fConst41 * pow(1e+01,(0.9 * fSlow4)));
277 double fSlow9 = pow(1e+01,(1.2 * fSlow4));
278 double fSlow10 = (2 * (fSlow4 - 0.5));
279 double fSlow11 = (1 - max(0, (0 - fSlow10)));
280 double fSlow12 = (0.024937655860349125 * (1 - max(0, fSlow10)));
281 double fSlow13 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
282 double fSlow14 = (1.25 * fSlow4);
283 for (int i=0; i<count; i++) {
284 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
285 fRec8[0] = (fSlow1 + (0.999 * fRec8[1]));
286 double fTemp0 = (fConst8 * fRec13[1]);
287 double fTemp1 = (fConst14 * fRec14[1]);
288 double fTemp2 = (double)input0[i];
289 double fTemp3 = fabs(fTemp2);
290 fRec21[0] = ((9.999999999998899e-05 * fTemp3) + (0.9999 * fRec21[1]));
291 double fTemp4 = max(fRec21[0], fTemp3);
292 fVec0[IOTA&65535] = fTemp4;
293 fRec20[0] = ((fVec0[IOTA&65535] + fRec20[1]) - fVec0[(IOTA-iConst33)&65535]);
294 fRec19[0] = ((fConst34 * fRec20[0]) + (0.999 * fRec19[1]));
295 double fTemp5 = max(-1, min(-0.01, (fVec0[IOTA&65535] - (1.0 + (1.02 * fRec19[0])))));
296 double fTemp6 = (0 - fTemp5);
297 double fTemp7 = (40.1 * fTemp6);
298 double fTemp8 = max(-600, fTemp7);
299 double fTemp9 = (0 - fTemp8);
300 double fTemp10 = (fTemp2 - fTemp5);
301 double fTemp11 = (40.1 * fTemp10);
302 double fTemp12 = max(-600, fTemp11);
303 double fTemp13 = (0 - fTemp12);
304 double fTemp14 = (((int((fabs(fTemp11) > 0.0001)))?((int((fTemp12 < -50)))?(exp(fTemp12) * fTemp13):(fTemp12 / (1 - exp(fTemp13)))):(1 + (fTemp10 * (20.05 + (134.00083333333336 * fTemp10))))) - ((int((fabs(fTemp7) > 0.0001)))?((int((fTemp8 < -50)))?(exp(fTemp8) * fTemp9):(fTemp8 / (1 - exp(fTemp9)))):(1 + (fTemp6 * (20.05 + (134.00083333333336 * fTemp6))))));
305 fRec22[0] = (fSlow3 + (0.999 * fRec22[1]));
306 double fTemp15 = (0.024937655860349125 * (fRec22[0] * fTemp14));
307 fRec18[0] = (fTemp15 - (fConst32 * ((fConst30 * fRec18[2]) + (fConst28 * fRec18[1]))));
308 double fTemp16 = (fRec18[2] + (fRec18[0] + (2 * fRec18[1])));
309 fVec1[0] = fTemp16;
310 fRec17[0] = ((fConst36 * ((fConst35 * fVec1[1]) + (fConst0 * fVec1[0]))) + (fConst2 * fRec17[1]));
311 fRec16[0] = ((fConst38 * ((fConst37 * fRec17[1]) + (fConst21 * fRec17[0]))) + (fConst26 * fRec16[1]));
312 fRec15[0] = (fRec16[0] - (fConst24 * ((fConst22 * fRec15[2]) + (fConst20 * fRec15[1]))));
313 fRec14[0] = ((fConst24 * (((fConst19 * fRec15[0]) + (fConst39 * fRec15[1])) + (fConst19 * fRec15[2]))) - (fConst17 * ((fConst16 * fRec14[2]) + fTemp1)));
314 fRec13[0] = ((fRec14[2] + (fConst17 * (fTemp1 + (fConst16 * fRec14[0])))) - (fConst11 * ((fConst10 * fRec13[2]) + fTemp0)));
315 double fTemp17 = max(-1, min(1, (fSlow5 * (fRec13[2] + (fConst11 * (fTemp0 + (fConst10 * fRec13[0])))))));
316 fRec28[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec28[1]));
317 fRec27[0] = (fRec28[0] - (fConst24 * ((fConst22 * fRec27[2]) + (fConst20 * fRec27[1]))));
318 double fTemp18 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
319 fVec2[0] = fTemp18;
320 fRec26[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec26[1]));
321 fRec25[0] = (fRec26[0] - (fConst46 * ((fConst44 * fRec25[2]) + (fConst14 * fRec25[1]))));
322 double fTemp19 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
323 fVec3[0] = fTemp19;
324 fRec24[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec24[1]));
325 fRec23[0] = (fRec24[0] - (fConst41 * ((fConst40 * fRec23[2]) + (fConst8 * fRec23[1]))));
326 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec23[0]) + (fConst52 * fRec23[1])) + (fConst7 * fRec23[2])))));
327 fRec30[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec30[1]));
328 fRec29[0] = (fRec30[0] - (fConst41 * ((fConst40 * fRec29[2]) + (fConst8 * fRec29[1]))));
329 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
330 double fTemp22 = (fConst8 * fRec31[1]);
331 fRec33[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec33[1]));
332 fRec32[0] = (fRec33[0] - (fConst46 * ((fConst44 * fRec32[2]) + (fConst14 * fRec32[1]))));
333 fRec31[0] = ((fConst46 * (((fConst13 * fRec32[0]) + (fConst54 * fRec32[1])) + (fConst13 * fRec32[2]))) - (fConst11 * ((fConst10 * fRec31[2]) + fTemp22)));
334 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec31[2] + (fConst11 * (fTemp22 + (fConst10 * fRec31[0])))))));
335 double fTemp24 = (((fTemp23 * (1 - (0.3333333333333333 * faustpower<2>(fTemp23)))) + ((fTemp21 * (1 - (0.3333333333333333 * faustpower<2>(fTemp21)))) + (0.841395141645195 * (fTemp20 * (1 - (0.3333333333333333 * faustpower<2>(fTemp20))))))) + (0.7943282347242815 * (fTemp17 * (1 - (0.3333333333333333 * faustpower<2>(fTemp17))))));
336 fVec4[0] = fTemp24;
337 fRec12[0] = ((fConst55 * (fVec4[0] + fVec4[1])) + (fConst5 * fRec12[1]));
338 double fTemp25 = (fRec11[1] - 2.5e+02);
339 fVec5[0] = fTemp25;
340 fRec34[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec34[1]));
341 double fTemp26 = max(-1, min(1, (fSlow6 * max(-0.7, min(0.7, fTemp15)))));
342 fRec35[0] = (fSlow13 + (0.999 * fRec35[1]));
343 fRec11[0] = Ftube6(0, ((fTemp14 * ((fRec35[0] * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((0.024937655860349125 * (fRec35[0] * fTemp14))))) - 0.024937655860349125)))) + (fSlow12 * fRec22[0]))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec34[0] + (fSlow11 * fRec12[0])))));
344 fRec10[0] = ((fConst60 * ((fConst35 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
345 double fTemp27 = (fRec37[1] - 2.5e+02);
346 fVec6[0] = fTemp27;
347 fRec38[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec38[1]));
348 fRec37[0] = Ftube6(1, (fRec38[0] + fRec9[1]));
349 fRec36[0] = ((fConst60 * ((fConst35 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
350 fRec9[0] = (fRec36[0] - fRec10[0]);
351 double fTemp28 = (fRec9[0] * fRec8[0]);
352 fVec7[0] = fTemp28;
353 fRec7[0] = ((fConst65 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec7[1]));
354 double fTemp29 = (fRec6[1] - 2.5e+02);
355 fVec8[0] = fTemp29;
356 fRec39[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec39[1]));
357 fRec6[0] = Ftube6(1, (fRec39[0] + fRec7[0]));
358 fRec5[0] = ((fConst60 * ((fConst35 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
359 double fTemp30 = (fRec41[1] - 2.5e+02);
360 fVec9[0] = fTemp30;
361 fRec42[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec42[1]));
362 fRec41[0] = Ftube6(1, (fRec42[0] + fRec4[1]));
363 fRec40[0] = ((fConst60 * ((fConst35 * fRec41[1]) + (fConst0 * fRec41[0]))) + (fConst2 * fRec40[1]));
364 fRec4[0] = (fRec40[0] + fRec5[0]);
365 fRec3[0] = ((fConst65 * (fRec4[0] + fRec4[1])) + (fConst5 * fRec3[1]));
366 double fTemp31 = (fRec2[1] - 2.5e+02);
367 fVec10[0] = fTemp31;
368 fRec43[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec43[1]));
369 fRec2[0] = Ftube6(1, (fRec43[0] + fRec3[0]));
370 fRec1[0] = ((fConst60 * ((fConst35 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
371 output0[i] = (FAUSTFLOAT)(fRec1[0] * fRec0[0]);
372 // post processing
373 fRec1[1] = fRec1[0];
374 fRec2[1] = fRec2[0];
375 fRec43[1] = fRec43[0];
376 fVec10[1] = fVec10[0];
377 fRec3[1] = fRec3[0];
378 fRec4[1] = fRec4[0];
379 fRec40[1] = fRec40[0];
380 fRec41[1] = fRec41[0];
381 fRec42[1] = fRec42[0];
382 fVec9[1] = fVec9[0];
383 fRec5[1] = fRec5[0];
384 fRec6[1] = fRec6[0];
385 fRec39[1] = fRec39[0];
386 fVec8[1] = fVec8[0];
387 fRec7[1] = fRec7[0];
388 fVec7[1] = fVec7[0];
389 fRec9[1] = fRec9[0];
390 fRec36[1] = fRec36[0];
391 fRec37[1] = fRec37[0];
392 fRec38[1] = fRec38[0];
393 fVec6[1] = fVec6[0];
394 fRec10[1] = fRec10[0];
395 fRec11[1] = fRec11[0];
396 fRec35[1] = fRec35[0];
397 fRec34[1] = fRec34[0];
398 fVec5[1] = fVec5[0];
399 fRec12[1] = fRec12[0];
400 fVec4[1] = fVec4[0];
401 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
402 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
403 fRec33[1] = fRec33[0];
404 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
405 fRec30[1] = fRec30[0];
406 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
407 fRec24[1] = fRec24[0];
408 fVec3[1] = fVec3[0];
409 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
410 fRec26[1] = fRec26[0];
411 fVec2[1] = fVec2[0];
412 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
413 fRec28[1] = fRec28[0];
414 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
415 fRec14[2] = fRec14[1]; fRec14[1] = fRec14[0];
416 fRec15[2] = fRec15[1]; fRec15[1] = fRec15[0];
417 fRec16[1] = fRec16[0];
418 fRec17[1] = fRec17[0];
419 fVec1[1] = fVec1[0];
420 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
421 fRec22[1] = fRec22[0];
422 fRec19[1] = fRec19[0];
423 fRec20[1] = fRec20[0];
424 IOTA = IOTA+1;
425 fRec21[1] = fRec21[0];
426 fRec8[1] = fRec8[0];
427 fRec0[1] = fRec0[0];
428 }
429 }
430
431 static struct RegisterParams { RegisterParams(); } RegisterParams;
432 RegisterParams::RegisterParams()
433 {
434 registerInit("amp", init);
435 }
436
437 } // end namespace gxamp17
1111 double fConst6;
1212 double fConst7;
1313 FAUSTFLOAT& fslider1 = get_alias("gxdistortion.wet_dry");
14 double fRec10[2];
1415 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.drive");
16 double fRec11[2];
1517 double fConst8;
1618 double fConst9;
1719 double fConst10;
3941 double fConst32;
4042 double fConst33;
4143 double fConst34;
42 double fRec16[3];
44 double fRec18[3];
4345 double fVec0[2];
4446 double fConst35;
4547 double fConst36;
46 double fRec15[2];
48 double fRec17[2];
4749 double fConst37;
4850 double fConst38;
49 double fRec14[2];
51 double fRec16[2];
52 double fRec15[3];
53 double fConst39;
54 double fRec14[3];
5055 double fRec13[3];
51 double fConst39;
52 double fRec12[3];
53 double fRec11[3];
5456 double fConst40;
5557 double fConst41;
5658 double fConst42;
6062 double fConst46;
6163 double fConst47;
6264 double fConst48;
65 double fRec24[2];
66 double fRec23[3];
67 double fVec1[2];
68 double fConst49;
6369 double fRec22[2];
6470 double fRec21[3];
65 double fVec1[2];
66 double fConst49;
67 double fRec20[2];
68 double fRec19[3];
6971 double fVec2[2];
7072 double fConst50;
7173 double fConst51;
72 double fRec18[2];
73 double fRec17[3];
74 double fRec20[2];
75 double fRec19[3];
7476 double fConst52;
75 double fRec24[2];
76 double fRec23[3];
77 double fRec26[2];
78 double fRec25[3];
7779 double fConst53;
78 double fRec27[2];
79 double fRec26[3];
80 double fRec29[2];
81 double fRec28[3];
8082 double fConst54;
81 double fRec25[3];
83 double fRec27[3];
8284 double fVec3[2];
8385 double fConst55;
84 double fRec10[2];
86 double fRec12[2];
8587 FAUSTFLOAT& fslider3 = get_alias("amp2.stage1.Pregain");
86 double fRec28[2];
88 double fRec30[2];
8789 double fConst56;
8890 double fConst57;
8991 double fConst58;
9092 double fVec4[2];
9193 double fConst59;
92 double fRec29[2];
94 double fRec31[2];
9395 double fRec9[2];
9496 double fConst60;
9597 double fRec8[2];
100102 double fConst64;
101103 double fVec5[2];
102104 double fConst65;
103 double fRec30[2];
105 double fRec32[2];
104106 double fRec6[2];
105107 double fRec5[2];
106108 double fRec4[2];
110112 double fConst68;
111113 double fVec6[2];
112114 double fConst69;
113 double fRec31[2];
115 double fRec33[2];
114116 double fRec1[2];
115117 double fRec0[2];
116118 int fSamplingFreq;
127129 fConst5 = (1.0 / tan((20517.741620594938 / fSamplingFreq)));
128130 fConst6 = (1 + fConst5);
129131 fConst7 = (0 - ((1 - fConst5) / fConst6));
132 for (int i=0; i<2; i++) fRec10[i] = 0;
133 for (int i=0; i<2; i++) fRec11[i] = 0;
130134 fConst8 = tan((942.4777960769379 / fSamplingFreq));
131135 fConst9 = (1.0 / faustpower<2>(fConst8));
132136 fConst10 = (2 * (1 - fConst9));
154158 fConst32 = (1 + ((fConst31 - 1.414213562373095) / fConst29));
155159 fConst33 = (1 + ((1.414213562373095 + fConst31) / fConst29));
156160 fConst34 = (1.0 / fConst33);
157 for (int i=0; i<3; i++) fRec16[i] = 0;
161 for (int i=0; i<3; i++) fRec18[i] = 0;
158162 for (int i=0; i<2; i++) fVec0[i] = 0;
159163 fConst35 = (0 - fConst0);
160164 fConst36 = (1.0 / (fConst1 * fConst33));
161 for (int i=0; i<2; i++) fRec15[i] = 0;
165 for (int i=0; i<2; i++) fRec17[i] = 0;
162166 fConst37 = (0 - fConst23);
163167 fConst38 = (1.0 / fConst27);
164 for (int i=0; i<2; i++) fRec14[i] = 0;
168 for (int i=0; i<2; i++) fRec16[i] = 0;
169 for (int i=0; i<3; i++) fRec15[i] = 0;
170 fConst39 = (2 * (0 - fConst21));
171 for (int i=0; i<3; i++) fRec14[i] = 0;
165172 for (int i=0; i<3; i++) fRec13[i] = 0;
166 fConst39 = (2 * (0 - fConst21));
167 for (int i=0; i<3; i++) fRec12[i] = 0;
168 for (int i=0; i<3; i++) fRec11[i] = 0;
169173 fConst40 = (1 + ((fConst11 - 1.0000000000000004) / fConst8));
170174 fConst41 = (1.0 / (1 + ((fConst11 + 1.0000000000000004) / fConst8)));
171175 fConst42 = (1 + fConst11);
175179 fConst46 = (1.0 / fConst45);
176180 fConst47 = (1 + fConst17);
177181 fConst48 = (0 - ((1 - fConst17) / fConst47));
182 for (int i=0; i<2; i++) fRec24[i] = 0;
183 for (int i=0; i<3; i++) fRec23[i] = 0;
184 for (int i=0; i<2; i++) fVec1[i] = 0;
185 fConst49 = (1.0 / (fConst47 * fConst25));
178186 for (int i=0; i<2; i++) fRec22[i] = 0;
179187 for (int i=0; i<3; i++) fRec21[i] = 0;
180 for (int i=0; i<2; i++) fVec1[i] = 0;
181 fConst49 = (1.0 / (fConst47 * fConst25));
182 for (int i=0; i<2; i++) fRec20[i] = 0;
183 for (int i=0; i<3; i++) fRec19[i] = 0;
184188 for (int i=0; i<2; i++) fVec2[i] = 0;
185189 fConst50 = (0 - fConst11);
186190 fConst51 = (1.0 / (fConst42 * fConst45));
187 for (int i=0; i<2; i++) fRec18[i] = 0;
188 for (int i=0; i<3; i++) fRec17[i] = 0;
191 for (int i=0; i<2; i++) fRec20[i] = 0;
192 for (int i=0; i<3; i++) fRec19[i] = 0;
189193 fConst52 = (2 * (0 - fConst9));
190 for (int i=0; i<2; i++) fRec24[i] = 0;
191 for (int i=0; i<3; i++) fRec23[i] = 0;
194 for (int i=0; i<2; i++) fRec26[i] = 0;
195 for (int i=0; i<3; i++) fRec25[i] = 0;
192196 fConst53 = (0 - fConst17);
193 for (int i=0; i<2; i++) fRec27[i] = 0;
194 for (int i=0; i<3; i++) fRec26[i] = 0;
197 for (int i=0; i<2; i++) fRec29[i] = 0;
198 for (int i=0; i<3; i++) fRec28[i] = 0;
195199 fConst54 = (2 * (0 - fConst15));
196 for (int i=0; i<3; i++) fRec25[i] = 0;
200 for (int i=0; i<3; i++) fRec27[i] = 0;
197201 for (int i=0; i<2; i++) fVec3[i] = 0;
198202 fConst55 = (1.5848931924611136 / fConst6);
199 for (int i=0; i<2; i++) fRec10[i] = 0;
200 for (int i=0; i<2; i++) fRec28[i] = 0;
203 for (int i=0; i<2; i++) fRec12[i] = 0;
204 for (int i=0; i<2; i++) fRec30[i] = 0;
201205 fConst56 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
202206 fConst57 = (1 + fConst56);
203207 fConst58 = (0 - ((1 - fConst56) / fConst57));
204208 for (int i=0; i<2; i++) fVec4[i] = 0;
205209 fConst59 = (0.027 / fConst57);
206 for (int i=0; i<2; i++) fRec29[i] = 0;
210 for (int i=0; i<2; i++) fRec31[i] = 0;
207211 for (int i=0; i<2; i++) fRec9[i] = 0;
208212 fConst60 = (0.025 / fConst1);
209213 for (int i=0; i<2; i++) fRec8[i] = 0;
214218 fConst64 = (0 - ((1 - fConst62) / fConst63));
215219 for (int i=0; i<2; i++) fVec5[i] = 0;
216220 fConst65 = (0.015 / fConst63);
217 for (int i=0; i<2; i++) fRec30[i] = 0;
221 for (int i=0; i<2; i++) fRec32[i] = 0;
218222 for (int i=0; i<2; i++) fRec6[i] = 0;
219223 for (int i=0; i<2; i++) fRec5[i] = 0;
220224 for (int i=0; i<2; i++) fRec4[i] = 0;
224228 fConst68 = (0 - ((1 - fConst66) / fConst67));
225229 for (int i=0; i<2; i++) fVec6[i] = 0;
226230 fConst69 = (0.0082 / fConst67);
227 for (int i=0; i<2; i++) fRec31[i] = 0;
231 for (int i=0; i<2; i++) fRec33[i] = 0;
228232 for (int i=0; i<2; i++) fRec1[i] = 0;
229233 for (int i=0; i<2; i++) fRec0[i] = 0;
230234 }
233237 {
234238 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
235239 double fSlow1 = fslider1;
236 double fSlow2 = (0.01 * fSlow1);
237 double fSlow3 = (1 - fSlow2);
238 double fSlow4 = fslider2;
239 double fSlow5 = (1.25 * fSlow4);
240 double fSlow6 = (2 * (fSlow4 - 0.5));
241 double fSlow7 = (0.01 * (fSlow1 * (1 - max(0, fSlow6))));
242 double fSlow8 = pow(1e+01,(0.8 * fSlow4));
243 double fSlow9 = (fConst41 * pow(1e+01,(2 * fSlow4)));
244 double fSlow10 = (fConst41 * pow(1e+01,(0.9 * fSlow4)));
245 double fSlow11 = pow(1e+01,(1.2 * fSlow4));
240 double fSlow2 = (0.0010000000000000009 * (1 - (0.01 * fSlow1)));
241 double fSlow3 = fslider2;
242 double fSlow4 = (1.25 * fSlow3);
243 double fSlow5 = (1.000000000000001e-05 * fSlow1);
244 double fSlow6 = (2 * (fSlow3 - 0.5));
245 double fSlow7 = (1 - max(0, fSlow6));
246 double fSlow8 = pow(1e+01,(0.8 * fSlow3));
247 double fSlow9 = (fConst41 * pow(1e+01,(2 * fSlow3)));
248 double fSlow10 = (fConst41 * pow(1e+01,(0.9 * fSlow3)));
249 double fSlow11 = pow(1e+01,(1.2 * fSlow3));
246250 double fSlow12 = (1 - max(0, (0 - fSlow6)));
247251 double fSlow13 = (0.0010000000000000009 * pow(10,(0.05 * fslider3)));
248252 for (int i=0; i<count; i++) {
249253 fRec3[0] = (fSlow0 + (0.999 * fRec3[1]));
254 fRec10[0] = (fSlow2 + (0.999 * fRec10[1]));
250255 double fTemp0 = (double)input0[i];
251 double fTemp1 = (fConst10 * fRec11[1]);
252 double fTemp2 = (fConst16 * fRec12[1]);
253 fRec16[0] = ((fSlow2 * fTemp0) - (fConst34 * ((fConst32 * fRec16[2]) + (fConst30 * fRec16[1]))));
254 double fTemp3 = (fRec16[2] + (fRec16[0] + (2 * fRec16[1])));
256 fRec11[0] = (fSlow5 + (0.999 * fRec11[1]));
257 double fTemp1 = (fConst10 * fRec13[1]);
258 double fTemp2 = (fConst16 * fRec14[1]);
259 fRec18[0] = ((fTemp0 * fRec11[0]) - (fConst34 * ((fConst32 * fRec18[2]) + (fConst30 * fRec18[1]))));
260 double fTemp3 = (fRec18[2] + (fRec18[0] + (2 * fRec18[1])));
255261 fVec0[0] = fTemp3;
256 fRec15[0] = ((fConst36 * ((fConst35 * fVec0[1]) + (fConst0 * fVec0[0]))) + (fConst2 * fRec15[1]));
257 fRec14[0] = ((fConst38 * ((fConst37 * fRec15[1]) + (fConst23 * fRec15[0]))) + (fConst28 * fRec14[1]));
258 fRec13[0] = (fRec14[0] - (fConst26 * ((fConst24 * fRec13[2]) + (fConst22 * fRec13[1]))));
259 fRec12[0] = ((fConst26 * (((fConst21 * fRec13[0]) + (fConst39 * fRec13[1])) + (fConst21 * fRec13[2]))) - (fConst19 * ((fConst18 * fRec12[2]) + fTemp2)));
260 fRec11[0] = ((fRec12[2] + (fConst19 * (fTemp2 + (fConst18 * fRec12[0])))) - (fConst13 * ((fConst12 * fRec11[2]) + fTemp1)));
261 double fTemp4 = max(-1, min(1, (fSlow8 * (fRec11[2] + (fConst13 * (fTemp1 + (fConst12 * fRec11[0])))))));
262 fRec22[0] = ((fConst38 * (fRec15[0] + fRec15[1])) + (fConst28 * fRec22[1]));
263 fRec21[0] = (fRec22[0] - (fConst26 * ((fConst24 * fRec21[2]) + (fConst22 * fRec21[1]))));
264 double fTemp5 = (fRec21[2] + (fRec21[0] + (2 * fRec21[1])));
262 fRec17[0] = ((fConst36 * ((fConst35 * fVec0[1]) + (fConst0 * fVec0[0]))) + (fConst2 * fRec17[1]));
263 fRec16[0] = ((fConst38 * ((fConst37 * fRec17[1]) + (fConst23 * fRec17[0]))) + (fConst28 * fRec16[1]));
264 fRec15[0] = (fRec16[0] - (fConst26 * ((fConst24 * fRec15[2]) + (fConst22 * fRec15[1]))));
265 fRec14[0] = ((fConst26 * (((fConst21 * fRec15[0]) + (fConst39 * fRec15[1])) + (fConst21 * fRec15[2]))) - (fConst19 * ((fConst18 * fRec14[2]) + fTemp2)));
266 fRec13[0] = ((fRec14[2] + (fConst19 * (fTemp2 + (fConst18 * fRec14[0])))) - (fConst13 * ((fConst12 * fRec13[2]) + fTemp1)));
267 double fTemp4 = max(-1, min(1, (fSlow8 * (fRec13[2] + (fConst13 * (fTemp1 + (fConst12 * fRec13[0])))))));
268 fRec24[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst28 * fRec24[1]));
269 fRec23[0] = (fRec24[0] - (fConst26 * ((fConst24 * fRec23[2]) + (fConst22 * fRec23[1]))));
270 double fTemp5 = (fRec23[2] + (fRec23[0] + (2 * fRec23[1])));
265271 fVec1[0] = fTemp5;
266 fRec20[0] = ((fConst49 * (fVec1[0] + fVec1[1])) + (fConst48 * fRec20[1]));
267 fRec19[0] = (fRec20[0] - (fConst46 * ((fConst44 * fRec19[2]) + (fConst16 * fRec19[1]))));
268 double fTemp6 = (fRec19[2] + (fRec19[0] + (2 * fRec19[1])));
272 fRec22[0] = ((fConst49 * (fVec1[0] + fVec1[1])) + (fConst48 * fRec22[1]));
273 fRec21[0] = (fRec22[0] - (fConst46 * ((fConst44 * fRec21[2]) + (fConst16 * fRec21[1]))));
274 double fTemp6 = (fRec21[2] + (fRec21[0] + (2 * fRec21[1])));
269275 fVec2[0] = fTemp6;
270 fRec18[0] = ((fConst51 * ((fConst50 * fVec2[1]) + (fConst11 * fVec2[0]))) + (fConst43 * fRec18[1]));
271 fRec17[0] = (fRec18[0] - (fConst41 * ((fConst40 * fRec17[2]) + (fConst10 * fRec17[1]))));
272 double fTemp7 = max(-1, min(1, (fSlow9 * (((fConst9 * fRec17[0]) + (fConst52 * fRec17[1])) + (fConst9 * fRec17[2])))));
273 fRec24[0] = ((fConst51 * (fVec2[0] + fVec2[1])) + (fConst43 * fRec24[1]));
274 fRec23[0] = (fRec24[0] - (fConst41 * ((fConst40 * fRec23[2]) + (fConst10 * fRec23[1]))));
275 double fTemp8 = max(-1, min(1, (fSlow10 * (fRec23[2] + (fRec23[0] + (2 * fRec23[1]))))));
276 double fTemp9 = (fConst10 * fRec25[1]);
277 fRec27[0] = ((fConst49 * ((fConst53 * fVec1[1]) + (fConst17 * fVec1[0]))) + (fConst48 * fRec27[1]));
278 fRec26[0] = (fRec27[0] - (fConst46 * ((fConst44 * fRec26[2]) + (fConst16 * fRec26[1]))));
279 fRec25[0] = ((fConst46 * (((fConst15 * fRec26[0]) + (fConst54 * fRec26[1])) + (fConst15 * fRec26[2]))) - (fConst13 * ((fConst12 * fRec25[2]) + fTemp9)));
280 double fTemp10 = max(-1, min(1, (fSlow11 * (fRec25[2] + (fConst13 * (fTemp9 + (fConst12 * fRec25[0])))))));
276 fRec20[0] = ((fConst51 * ((fConst50 * fVec2[1]) + (fConst11 * fVec2[0]))) + (fConst43 * fRec20[1]));
277 fRec19[0] = (fRec20[0] - (fConst41 * ((fConst40 * fRec19[2]) + (fConst10 * fRec19[1]))));
278 double fTemp7 = max(-1, min(1, (fSlow9 * (((fConst9 * fRec19[0]) + (fConst52 * fRec19[1])) + (fConst9 * fRec19[2])))));
279 fRec26[0] = ((fConst51 * (fVec2[0] + fVec2[1])) + (fConst43 * fRec26[1]));
280 fRec25[0] = (fRec26[0] - (fConst41 * ((fConst40 * fRec25[2]) + (fConst10 * fRec25[1]))));
281 double fTemp8 = max(-1, min(1, (fSlow10 * (fRec25[2] + (fRec25[0] + (2 * fRec25[1]))))));
282 double fTemp9 = (fConst10 * fRec27[1]);
283 fRec29[0] = ((fConst49 * ((fConst53 * fVec1[1]) + (fConst17 * fVec1[0]))) + (fConst48 * fRec29[1]));
284 fRec28[0] = (fRec29[0] - (fConst46 * ((fConst44 * fRec28[2]) + (fConst16 * fRec28[1]))));
285 fRec27[0] = ((fConst46 * (((fConst15 * fRec28[0]) + (fConst54 * fRec28[1])) + (fConst15 * fRec28[2]))) - (fConst13 * ((fConst12 * fRec27[2]) + fTemp9)));
286 double fTemp10 = max(-1, min(1, (fSlow11 * (fRec27[2] + (fConst13 * (fTemp9 + (fConst12 * fRec27[0])))))));
281287 double fTemp11 = (((fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10)))) + ((fTemp8 * (1 - (0.3333333333333333 * faustpower<2>(fTemp8)))) + (0.841395141645195 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))))) + (0.7943282347242815 * (fTemp4 * (1 - (0.3333333333333333 * faustpower<2>(fTemp4))))));
282288 fVec3[0] = fTemp11;
283 fRec10[0] = ((fConst55 * (fVec3[0] + fVec3[1])) + (fConst7 * fRec10[1]));
284 fRec28[0] = (fSlow13 + (0.999 * fRec28[1]));
289 fRec12[0] = ((fConst55 * (fVec3[0] + fVec3[1])) + (fConst7 * fRec12[1]));
290 fRec30[0] = (fSlow13 + (0.999 * fRec30[1]));
285291 double fTemp12 = (fRec9[1] - 2.5e+02);
286292 fVec4[0] = fTemp12;
287 fRec29[0] = ((fConst59 * (fVec4[0] + fVec4[1])) + (fConst58 * fRec29[1]));
288 fRec9[0] = Ftube2(0, (fRec29[0] + (fRec28[0] * ((fSlow12 * fRec10[0]) + (fTemp0 * (fSlow7 + (fSlow3 * (1 + (fSlow5 * ((4 - (4 * fabs((fSlow3 * fTemp0)))) - 1))))))))));
293 fRec31[0] = ((fConst59 * (fVec4[0] + fVec4[1])) + (fConst58 * fRec31[1]));
294 fRec9[0] = Ftube2(0, (fRec31[0] + (fRec30[0] * ((fSlow12 * fRec12[0]) + (fTemp0 * ((fSlow7 * fRec11[0]) + (fRec10[0] * (1 + (fSlow4 * ((4 - (4 * fabs((fTemp0 * fRec10[0])))) - 1))))))))));
289295 fRec8[0] = ((fConst60 * ((fConst35 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
290296 fRec7[0] = ((fConst61 * (fRec8[0] + fRec8[1])) + (fConst7 * fRec7[1]));
291297 double fTemp13 = (fRec6[1] - 2.5e+02);
292298 fVec5[0] = fTemp13;
293 fRec30[0] = ((fConst65 * (fVec5[0] + fVec5[1])) + (fConst64 * fRec30[1]));
294 fRec6[0] = Ftube2(1, (fRec30[0] + (fRec28[0] * fRec7[0])));
299 fRec32[0] = ((fConst65 * (fVec5[0] + fVec5[1])) + (fConst64 * fRec32[1]));
300 fRec6[0] = Ftube2(1, (fRec32[0] + (fRec30[0] * fRec7[0])));
295301 fRec5[0] = ((fConst60 * ((fConst35 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
296302 fRec4[0] = ((fConst61 * (fRec5[0] + fRec5[1])) + (fConst7 * fRec4[1]));
297303 fRec2[0] = ((fRec4[0] * fRec3[0]) - ((0.8502684100000001 * fRec2[2]) + (fConst4 * fRec2[1])));
298304 double fTemp14 = (fRec1[1] - 2.5e+02);
299305 fVec6[0] = fTemp14;
300 fRec31[0] = ((fConst69 * (fVec6[0] + fVec6[1])) + (fConst68 * fRec31[1]));
301 fRec1[0] = Ftube2(1, ((fRec31[0] + fRec2[0]) - (1.059 * fRec2[1])));
306 fRec33[0] = ((fConst69 * (fVec6[0] + fVec6[1])) + (fConst68 * fRec33[1]));
307 fRec1[0] = Ftube2(1, ((fRec33[0] + fRec2[0]) - (1.059 * fRec2[1])));
302308 fRec0[0] = ((fConst60 * ((fConst35 * fRec1[1]) + (fConst0 * fRec1[0]))) + (fConst2 * fRec0[1]));
303309 output0[i] = (FAUSTFLOAT)(0.77 * fRec0[0]);
304310 // post processing
305311 fRec0[1] = fRec0[0];
306312 fRec1[1] = fRec1[0];
307 fRec31[1] = fRec31[0];
313 fRec33[1] = fRec33[0];
308314 fVec6[1] = fVec6[0];
309315 fRec2[2] = fRec2[1]; fRec2[1] = fRec2[0];
310316 fRec4[1] = fRec4[0];
311317 fRec5[1] = fRec5[0];
312318 fRec6[1] = fRec6[0];
313 fRec30[1] = fRec30[0];
319 fRec32[1] = fRec32[0];
314320 fVec5[1] = fVec5[0];
315321 fRec7[1] = fRec7[0];
316322 fRec8[1] = fRec8[0];
317323 fRec9[1] = fRec9[0];
324 fRec31[1] = fRec31[0];
325 fVec4[1] = fVec4[0];
326 fRec30[1] = fRec30[0];
327 fRec12[1] = fRec12[0];
328 fVec3[1] = fVec3[0];
329 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
330 fRec28[2] = fRec28[1]; fRec28[1] = fRec28[0];
318331 fRec29[1] = fRec29[0];
319 fVec4[1] = fVec4[0];
320 fRec28[1] = fRec28[0];
321 fRec10[1] = fRec10[0];
322 fVec3[1] = fVec3[0];
323332 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
324 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
325 fRec27[1] = fRec27[0];
333 fRec26[1] = fRec26[0];
334 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
335 fRec20[1] = fRec20[0];
336 fVec2[1] = fVec2[0];
337 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
338 fRec22[1] = fRec22[0];
339 fVec1[1] = fVec1[0];
326340 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
327341 fRec24[1] = fRec24[0];
328 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
329 fRec18[1] = fRec18[0];
330 fVec2[1] = fVec2[0];
331 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
332 fRec20[1] = fRec20[0];
333 fVec1[1] = fVec1[0];
334 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
335 fRec22[1] = fRec22[0];
336 fRec11[2] = fRec11[1]; fRec11[1] = fRec11[0];
337 fRec12[2] = fRec12[1]; fRec12[1] = fRec12[0];
338342 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
339 fRec14[1] = fRec14[0];
340 fRec15[1] = fRec15[0];
343 fRec14[2] = fRec14[1]; fRec14[1] = fRec14[0];
344 fRec15[2] = fRec15[1]; fRec15[1] = fRec15[0];
345 fRec16[1] = fRec16[0];
346 fRec17[1] = fRec17[0];
341347 fVec0[1] = fVec0[0];
342 fRec16[2] = fRec16[1]; fRec16[1] = fRec16[0];
348 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
349 fRec11[1] = fRec11[0];
350 fRec10[1] = fRec10[0];
343351 fRec3[1] = fRec3[0];
344352 }
345353 }
3838 double fConst31;
3939 double fConst32;
4040 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
41 double fRec17[2];
4142 double fRec16[3];
4243 double fVec0[2];
4344 double fConst33;
6061 double fConst44;
6162 double fConst45;
6263 double fConst46;
63 double fRec22[2];
64 double fRec21[3];
64 double fRec23[2];
65 double fRec22[3];
6566 double fVec1[2];
6667 double fConst47;
67 double fRec20[2];
68 double fRec19[3];
68 double fRec21[2];
69 double fRec20[3];
6970 double fVec2[2];
7071 double fConst48;
7172 double fConst49;
72 double fRec18[2];
73 double fRec17[3];
73 double fRec19[2];
74 double fRec18[3];
7475 double fConst50;
75 double fRec24[2];
76 double fRec23[3];
76 double fRec25[2];
77 double fRec24[3];
7778 double fConst51;
78 double fRec27[2];
79 double fRec28[2];
80 double fRec27[3];
81 double fConst52;
7982 double fRec26[3];
80 double fConst52;
81 double fRec25[3];
8283 double fVec3[2];
8384 double fConst53;
8485 double fRec10[2];
8788 double fConst56;
8889 double fVec4[2];
8990 double fConst57;
90 double fRec28[2];
91 double fRec29[2];
92 double fRec30[2];
9193 double fRec9[2];
9294 double fConst58;
9395 double fRec8[2];
99101 double fConst62;
100102 double fVec6[2];
101103 double fConst63;
102 double fRec29[2];
104 double fRec31[2];
103105 double fRec5[2];
104106 double fRec4[2];
105107 double fVec7[2];
109111 double fConst66;
110112 double fVec8[2];
111113 double fConst67;
112 double fRec30[2];
114 double fRec32[2];
113115 double fRec2[2];
114116 double fRec1[2];
115117 int fSamplingFreq;
152154 fConst30 = (1 + ((fConst29 - 1.414213562373095) / fConst27));
153155 fConst31 = (1 + ((1.414213562373095 + fConst29) / fConst27));
154156 fConst32 = (1.0 / fConst31);
157 for (int i=0; i<2; i++) fRec17[i] = 0;
155158 for (int i=0; i<3; i++) fRec16[i] = 0;
156159 for (int i=0; i<2; i++) fVec0[i] = 0;
157160 fConst33 = (0 - fConst0);
173176 fConst44 = (1.0 / fConst43);
174177 fConst45 = (1 + fConst15);
175178 fConst46 = (0 - ((1 - fConst15) / fConst45));
176 for (int i=0; i<2; i++) fRec22[i] = 0;
177 for (int i=0; i<3; i++) fRec21[i] = 0;
179 for (int i=0; i<2; i++) fRec23[i] = 0;
180 for (int i=0; i<3; i++) fRec22[i] = 0;
178181 for (int i=0; i<2; i++) fVec1[i] = 0;
179182 fConst47 = (1.0 / (fConst45 * fConst23));
180 for (int i=0; i<2; i++) fRec20[i] = 0;
181 for (int i=0; i<3; i++) fRec19[i] = 0;
183 for (int i=0; i<2; i++) fRec21[i] = 0;
184 for (int i=0; i<3; i++) fRec20[i] = 0;
182185 for (int i=0; i<2; i++) fVec2[i] = 0;
183186 fConst48 = (0 - fConst9);
184187 fConst49 = (1.0 / (fConst40 * fConst43));
185 for (int i=0; i<2; i++) fRec18[i] = 0;
186 for (int i=0; i<3; i++) fRec17[i] = 0;
188 for (int i=0; i<2; i++) fRec19[i] = 0;
189 for (int i=0; i<3; i++) fRec18[i] = 0;
187190 fConst50 = (2 * (0 - fConst7));
188 for (int i=0; i<2; i++) fRec24[i] = 0;
189 for (int i=0; i<3; i++) fRec23[i] = 0;
191 for (int i=0; i<2; i++) fRec25[i] = 0;
192 for (int i=0; i<3; i++) fRec24[i] = 0;
190193 fConst51 = (0 - fConst15);
191 for (int i=0; i<2; i++) fRec27[i] = 0;
194 for (int i=0; i<2; i++) fRec28[i] = 0;
195 for (int i=0; i<3; i++) fRec27[i] = 0;
196 fConst52 = (2 * (0 - fConst13));
192197 for (int i=0; i<3; i++) fRec26[i] = 0;
193 fConst52 = (2 * (0 - fConst13));
194 for (int i=0; i<3; i++) fRec25[i] = 0;
195198 for (int i=0; i<2; i++) fVec3[i] = 0;
196199 fConst53 = (1.5848931924611136 / fConst4);
197200 for (int i=0; i<2; i++) fRec10[i] = 0;
200203 fConst56 = (0 - ((1 - fConst54) / fConst55));
201204 for (int i=0; i<2; i++) fVec4[i] = 0;
202205 fConst57 = (0.027 / fConst55);
203 for (int i=0; i<2; i++) fRec28[i] = 0;
206 for (int i=0; i<2; i++) fRec29[i] = 0;
207 for (int i=0; i<2; i++) fRec30[i] = 0;
204208 for (int i=0; i<2; i++) fRec9[i] = 0;
205209 fConst58 = (0.025 / fConst1);
206210 for (int i=0; i<2; i++) fRec8[i] = 0;
212216 fConst62 = (0 - ((1 - fConst60) / fConst61));
213217 for (int i=0; i<2; i++) fVec6[i] = 0;
214218 fConst63 = (0.015 / fConst61);
215 for (int i=0; i<2; i++) fRec29[i] = 0;
219 for (int i=0; i<2; i++) fRec31[i] = 0;
216220 for (int i=0; i<2; i++) fRec5[i] = 0;
217221 for (int i=0; i<2; i++) fRec4[i] = 0;
218222 for (int i=0; i<2; i++) fVec7[i] = 0;
222226 fConst66 = (0 - ((1 - fConst64) / fConst65));
223227 for (int i=0; i<2; i++) fVec8[i] = 0;
224228 fConst67 = (0.0082 / fConst65);
225 for (int i=0; i<2; i++) fRec30[i] = 0;
229 for (int i=0; i<2; i++) fRec32[i] = 0;
226230 for (int i=0; i<2; i++) fRec2[i] = 0;
227231 for (int i=0; i<2; i++) fRec1[i] = 0;
228232 }
232236 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
233237 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
234238 double fSlow2 = fslider2;
235 double fSlow3 = (0.01 * fSlow2);
239 double fSlow3 = (1.000000000000001e-05 * fSlow2);
236240 double fSlow4 = fslider3;
237241 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
238242 double fSlow6 = (fConst39 * pow(1e+01,(2 * fSlow4)));
240244 double fSlow8 = pow(1e+01,(1.2 * fSlow4));
241245 double fSlow9 = (2 * (fSlow4 - 0.5));
242246 double fSlow10 = (1 - max(0, (0 - fSlow9)));
243 double fSlow11 = (1 - fSlow3);
247 double fSlow11 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
244248 double fSlow12 = (1.25 * fSlow4);
245 double fSlow13 = (0.01 * (fSlow2 * (1 - max(0, fSlow9))));
249 double fSlow13 = (1 - max(0, fSlow9));
246250 for (int i=0; i<count; i++) {
247251 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
248252 fRec7[0] = (fSlow1 + (0.999 * fRec7[1]));
249253 double fTemp0 = (fConst8 * fRec11[1]);
250254 double fTemp1 = (fConst14 * fRec12[1]);
255 fRec17[0] = (fSlow3 + (0.999 * fRec17[1]));
251256 double fTemp2 = (double)input0[i];
252 fRec16[0] = ((fSlow3 * fTemp2) - (fConst32 * ((fConst30 * fRec16[2]) + (fConst28 * fRec16[1]))));
257 fRec16[0] = ((fTemp2 * fRec17[0]) - (fConst32 * ((fConst30 * fRec16[2]) + (fConst28 * fRec16[1]))));
253258 double fTemp3 = (fRec16[2] + (fRec16[0] + (2 * fRec16[1])));
254259 fVec0[0] = fTemp3;
255260 fRec15[0] = ((fConst34 * ((fConst33 * fVec0[1]) + (fConst0 * fVec0[0]))) + (fConst2 * fRec15[1]));
258263 fRec12[0] = ((fConst24 * (((fConst19 * fRec13[0]) + (fConst37 * fRec13[1])) + (fConst19 * fRec13[2]))) - (fConst17 * ((fConst16 * fRec12[2]) + fTemp1)));
259264 fRec11[0] = ((fRec12[2] + (fConst17 * (fTemp1 + (fConst16 * fRec12[0])))) - (fConst11 * ((fConst10 * fRec11[2]) + fTemp0)));
260265 double fTemp4 = max(-1, min(1, (fSlow5 * (fRec11[2] + (fConst11 * (fTemp0 + (fConst10 * fRec11[0])))))));
261 fRec22[0] = ((fConst36 * (fRec15[0] + fRec15[1])) + (fConst26 * fRec22[1]));
262 fRec21[0] = (fRec22[0] - (fConst24 * ((fConst22 * fRec21[2]) + (fConst20 * fRec21[1]))));
263 double fTemp5 = (fRec21[2] + (fRec21[0] + (2 * fRec21[1])));
266 fRec23[0] = ((fConst36 * (fRec15[0] + fRec15[1])) + (fConst26 * fRec23[1]));
267 fRec22[0] = (fRec23[0] - (fConst24 * ((fConst22 * fRec22[2]) + (fConst20 * fRec22[1]))));
268 double fTemp5 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
264269 fVec1[0] = fTemp5;
265 fRec20[0] = ((fConst47 * (fVec1[0] + fVec1[1])) + (fConst46 * fRec20[1]));
266 fRec19[0] = (fRec20[0] - (fConst44 * ((fConst42 * fRec19[2]) + (fConst14 * fRec19[1]))));
267 double fTemp6 = (fRec19[2] + (fRec19[0] + (2 * fRec19[1])));
270 fRec21[0] = ((fConst47 * (fVec1[0] + fVec1[1])) + (fConst46 * fRec21[1]));
271 fRec20[0] = (fRec21[0] - (fConst44 * ((fConst42 * fRec20[2]) + (fConst14 * fRec20[1]))));
272 double fTemp6 = (fRec20[2] + (fRec20[0] + (2 * fRec20[1])));
268273 fVec2[0] = fTemp6;
269 fRec18[0] = ((fConst49 * ((fConst48 * fVec2[1]) + (fConst9 * fVec2[0]))) + (fConst41 * fRec18[1]));
270 fRec17[0] = (fRec18[0] - (fConst39 * ((fConst38 * fRec17[2]) + (fConst8 * fRec17[1]))));
271 double fTemp7 = max(-1, min(1, (fSlow6 * (((fConst7 * fRec17[0]) + (fConst50 * fRec17[1])) + (fConst7 * fRec17[2])))));
272 fRec24[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst41 * fRec24[1]));
273 fRec23[0] = (fRec24[0] - (fConst39 * ((fConst38 * fRec23[2]) + (fConst8 * fRec23[1]))));
274 double fTemp8 = max(-1, min(1, (fSlow7 * (fRec23[2] + (fRec23[0] + (2 * fRec23[1]))))));
275 double fTemp9 = (fConst8 * fRec25[1]);
276 fRec27[0] = ((fConst47 * ((fConst51 * fVec1[1]) + (fConst15 * fVec1[0]))) + (fConst46 * fRec27[1]));
277 fRec26[0] = (fRec27[0] - (fConst44 * ((fConst42 * fRec26[2]) + (fConst14 * fRec26[1]))));
278 fRec25[0] = ((fConst44 * (((fConst13 * fRec26[0]) + (fConst52 * fRec26[1])) + (fConst13 * fRec26[2]))) - (fConst11 * ((fConst10 * fRec25[2]) + fTemp9)));
279 double fTemp10 = max(-1, min(1, (fSlow8 * (fRec25[2] + (fConst11 * (fTemp9 + (fConst10 * fRec25[0])))))));
274 fRec19[0] = ((fConst49 * ((fConst48 * fVec2[1]) + (fConst9 * fVec2[0]))) + (fConst41 * fRec19[1]));
275 fRec18[0] = (fRec19[0] - (fConst39 * ((fConst38 * fRec18[2]) + (fConst8 * fRec18[1]))));
276 double fTemp7 = max(-1, min(1, (fSlow6 * (((fConst7 * fRec18[0]) + (fConst50 * fRec18[1])) + (fConst7 * fRec18[2])))));
277 fRec25[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst41 * fRec25[1]));
278 fRec24[0] = (fRec25[0] - (fConst39 * ((fConst38 * fRec24[2]) + (fConst8 * fRec24[1]))));
279 double fTemp8 = max(-1, min(1, (fSlow7 * (fRec24[2] + (fRec24[0] + (2 * fRec24[1]))))));
280 double fTemp9 = (fConst8 * fRec26[1]);
281 fRec28[0] = ((fConst47 * ((fConst51 * fVec1[1]) + (fConst15 * fVec1[0]))) + (fConst46 * fRec28[1]));
282 fRec27[0] = (fRec28[0] - (fConst44 * ((fConst42 * fRec27[2]) + (fConst14 * fRec27[1]))));
283 fRec26[0] = ((fConst44 * (((fConst13 * fRec27[0]) + (fConst52 * fRec27[1])) + (fConst13 * fRec27[2]))) - (fConst11 * ((fConst10 * fRec26[2]) + fTemp9)));
284 double fTemp10 = max(-1, min(1, (fSlow8 * (fRec26[2] + (fConst11 * (fTemp9 + (fConst10 * fRec26[0])))))));
280285 double fTemp11 = (((fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10)))) + ((fTemp8 * (1 - (0.3333333333333333 * faustpower<2>(fTemp8)))) + (0.841395141645195 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))))) + (0.7943282347242815 * (fTemp4 * (1 - (0.3333333333333333 * faustpower<2>(fTemp4))))));
281286 fVec3[0] = fTemp11;
282287 fRec10[0] = ((fConst53 * (fVec3[0] + fVec3[1])) + (fConst5 * fRec10[1]));
283288 double fTemp12 = (fRec9[1] - 2.5e+02);
284289 fVec4[0] = fTemp12;
285 fRec28[0] = ((fConst57 * (fVec4[0] + fVec4[1])) + (fConst56 * fRec28[1]));
286 fRec9[0] = Ftube3(0, ((fTemp2 * (fSlow13 + (fSlow11 * (1 + (fSlow12 * ((4 - (4 * fabs((fSlow11 * fTemp2)))) - 1)))))) + (fRec28[0] + (fSlow10 * fRec10[0]))));
290 fRec29[0] = ((fConst57 * (fVec4[0] + fVec4[1])) + (fConst56 * fRec29[1]));
291 fRec30[0] = (fSlow11 + (0.999 * fRec30[1]));
292 fRec9[0] = Ftube3(0, ((fTemp2 * ((fSlow13 * fRec17[0]) + (fRec30[0] * (1 + (fSlow12 * ((4 - (4 * fabs((fTemp2 * fRec30[0])))) - 1)))))) + (fRec29[0] + (fSlow10 * fRec10[0]))));
287293 fRec8[0] = ((fConst58 * ((fConst33 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
288294 double fTemp13 = (fRec8[0] * fRec7[0]);
289295 fVec5[0] = fTemp13;
290296 fRec6[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst5 * fRec6[1]));
291297 double fTemp14 = (fRec5[1] - 2.5e+02);
292298 fVec6[0] = fTemp14;
293 fRec29[0] = ((fConst63 * (fVec6[0] + fVec6[1])) + (fConst62 * fRec29[1]));
294 fRec5[0] = Ftube3(1, (fRec29[0] + fRec6[0]));
299 fRec31[0] = ((fConst63 * (fVec6[0] + fVec6[1])) + (fConst62 * fRec31[1]));
300 fRec5[0] = Ftube3(1, (fRec31[0] + fRec6[0]));
295301 fRec4[0] = ((fConst58 * ((fConst33 * fRec5[1]) + (fConst0 * fRec5[0]))) + (fConst2 * fRec4[1]));
296302 double fTemp15 = (fRec7[0] * fRec4[0]);
297303 fVec7[0] = fTemp15;
298304 fRec3[0] = ((fConst59 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec3[1]));
299305 double fTemp16 = (fRec2[1] - 2.5e+02);
300306 fVec8[0] = fTemp16;
301 fRec30[0] = ((fConst67 * (fVec8[0] + fVec8[1])) + (fConst66 * fRec30[1]));
302 fRec2[0] = Ftube3(1, (fRec30[0] + fRec3[0]));
307 fRec32[0] = ((fConst67 * (fVec8[0] + fVec8[1])) + (fConst66 * fRec32[1]));
308 fRec2[0] = Ftube3(1, (fRec32[0] + fRec3[0]));
303309 fRec1[0] = ((fConst58 * ((fConst33 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
304310 output0[i] = (FAUSTFLOAT)(2.0 * (fRec1[0] * fRec0[0]));
305311 // post processing
306312 fRec1[1] = fRec1[0];
307313 fRec2[1] = fRec2[0];
308 fRec30[1] = fRec30[0];
314 fRec32[1] = fRec32[0];
309315 fVec8[1] = fVec8[0];
310316 fRec3[1] = fRec3[0];
311317 fVec7[1] = fVec7[0];
312318 fRec4[1] = fRec4[0];
313319 fRec5[1] = fRec5[0];
314 fRec29[1] = fRec29[0];
320 fRec31[1] = fRec31[0];
315321 fVec6[1] = fVec6[0];
316322 fRec6[1] = fRec6[0];
317323 fVec5[1] = fVec5[0];
318324 fRec8[1] = fRec8[0];
319325 fRec9[1] = fRec9[0];
320 fRec28[1] = fRec28[0];
326 fRec30[1] = fRec30[0];
327 fRec29[1] = fRec29[0];
321328 fVec4[1] = fVec4[0];
322329 fRec10[1] = fRec10[0];
323330 fVec3[1] = fVec3[0];
324 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
325331 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
326 fRec27[1] = fRec27[0];
327 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
328 fRec24[1] = fRec24[0];
329 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
330 fRec18[1] = fRec18[0];
332 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
333 fRec28[1] = fRec28[0];
334 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
335 fRec25[1] = fRec25[0];
336 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
337 fRec19[1] = fRec19[0];
331338 fVec2[1] = fVec2[0];
332 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
333 fRec20[1] = fRec20[0];
339 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
340 fRec21[1] = fRec21[0];
334341 fVec1[1] = fVec1[0];
335 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
336 fRec22[1] = fRec22[0];
342 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
343 fRec23[1] = fRec23[0];
337344 fRec11[2] = fRec11[1]; fRec11[1] = fRec11[0];
338345 fRec12[2] = fRec12[1]; fRec12[1] = fRec12[0];
339346 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
341348 fRec15[1] = fRec15[0];
342349 fVec0[1] = fVec0[0];
343350 fRec16[2] = fRec16[1]; fRec16[1] = fRec16[0];
351 fRec17[1] = fRec17[0];
344352 fRec7[1] = fRec7[0];
345353 fRec0[1] = fRec0[0];
346354 }
1111 double fRec2[2];
1212 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
1313 double fRec3[2];
14 FAUSTFLOAT& fslider1 = get_alias("amp2.stage1.Pregain");
15 double fRec12[2];
14 FAUSTFLOAT& fslider1 = get_alias("gxdistortion.wet_dry");
15 double fRec5[2];
16 FAUSTFLOAT& fslider2 = get_alias("amp2.stage1.Pregain");
17 double fRec13[2];
1618 double fConst7;
1719 double fConst8;
1820 double fConst9;
1921 double fVec1[2];
2022 double fConst10;
21 double fRec13[2];
22 double fRec11[2];
23 double fRec14[2];
24 double fRec12[2];
2325 double fConst11;
2426 double fConst12;
27 double fRec11[2];
28 double fConst13;
2529 double fRec10[2];
26 double fConst13;
27 double fRec9[2];
2830 double fConst14;
2931 double fConst15;
3032 double fConst16;
3133 double fVec2[2];
3234 double fConst17;
33 double fRec14[2];
35 double fRec15[2];
36 double fRec9[2];
3437 double fRec8[2];
35 double fRec7[2];
3638 double fConst18;
3739 double fConst19;
3840 double fConst20;
3941 double fVec3[2];
4042 double fConst21;
41 double fRec15[2];
43 double fRec16[2];
44 double fRec7[2];
4245 double fRec6[2];
43 double fRec5[2];
44 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
4546 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
47 double fRec17[2];
4648 double fConst22;
4749 double fConst23;
4850 double fConst24;
7072 double fConst46;
7173 double fConst47;
7274 double fConst48;
73 double fRec22[3];
75 double fRec24[3];
7476 double fVec4[2];
7577 double fConst49;
76 double fRec21[2];
78 double fRec23[2];
7779 double fConst50;
7880 double fConst51;
79 double fRec20[2];
81 double fRec22[2];
82 double fRec21[3];
83 double fConst52;
84 double fRec20[3];
8085 double fRec19[3];
81 double fConst52;
82 double fRec18[3];
83 double fRec17[3];
8486 double fConst53;
8587 double fConst54;
8688 double fConst55;
9092 double fConst59;
9193 double fConst60;
9294 double fConst61;
95 double fRec30[2];
96 double fRec29[3];
97 double fVec5[2];
98 double fConst62;
9399 double fRec28[2];
94100 double fRec27[3];
95 double fVec5[2];
96 double fConst62;
97 double fRec26[2];
98 double fRec25[3];
99101 double fVec6[2];
100102 double fConst63;
101103 double fConst64;
102 double fRec24[2];
103 double fRec23[3];
104 double fRec26[2];
105 double fRec25[3];
104106 double fConst65;
105 double fRec30[2];
106 double fRec29[3];
107 double fRec32[2];
108 double fRec31[3];
107109 double fConst66;
108 double fRec33[2];
109 double fRec32[3];
110 double fRec35[2];
111 double fRec34[3];
110112 double fConst67;
111 double fRec31[3];
113 double fRec33[3];
112114 double fVec7[2];
113115 double fConst68;
114 double fRec16[2];
116 double fRec18[2];
115117 double fVec8[2];
116118 double fRec4[2];
117119 double fRec1[2];
118120 double fConst69;
119121 double fRec0[2];
120122 double fVec9[2];
123 double fRec38[2];
124 double fRec37[2];
121125 double fRec36[2];
122 double fRec35[2];
123 double fRec34[2];
124126 int fSamplingFreq;
125127
126128 void init(int samplingFreq)
136138 fConst6 = (0.0082 / fConst4);
137139 for (int i=0; i<2; i++) fRec2[i] = 0;
138140 for (int i=0; i<2; i++) fRec3[i] = 0;
139 for (int i=0; i<2; i++) fRec12[i] = 0;
141 for (int i=0; i<2; i++) fRec5[i] = 0;
142 for (int i=0; i<2; i++) fRec13[i] = 0;
140143 fConst7 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
141144 fConst8 = (1 + fConst7);
142145 fConst9 = (0 - ((1 - fConst7) / fConst8));
143146 for (int i=0; i<2; i++) fVec1[i] = 0;
144147 fConst10 = (0.027 / fConst8);
145 for (int i=0; i<2; i++) fRec13[i] = 0;
146 for (int i=0; i<2; i++) fRec11[i] = 0;
148 for (int i=0; i<2; i++) fRec14[i] = 0;
149 for (int i=0; i<2; i++) fRec12[i] = 0;
147150 fConst11 = (0 - fConst0);
148151 fConst12 = (0.1 / fConst1);
152 for (int i=0; i<2; i++) fRec11[i] = 0;
153 fConst13 = (1.0 / fConst4);
149154 for (int i=0; i<2; i++) fRec10[i] = 0;
150 fConst13 = (1.0 / fConst4);
151 for (int i=0; i<2; i++) fRec9[i] = 0;
152155 fConst14 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
153156 fConst15 = (1 + fConst14);
154157 fConst16 = (0 - ((1 - fConst14) / fConst15));
155158 for (int i=0; i<2; i++) fVec2[i] = 0;
156159 fConst17 = (0.015 / fConst15);
157 for (int i=0; i<2; i++) fRec14[i] = 0;
160 for (int i=0; i<2; i++) fRec15[i] = 0;
161 for (int i=0; i<2; i++) fRec9[i] = 0;
158162 for (int i=0; i<2; i++) fRec8[i] = 0;
159 for (int i=0; i<2; i++) fRec7[i] = 0;
160163 fConst18 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
161164 fConst19 = (1 + fConst18);
162165 fConst20 = (0 - ((1 - fConst18) / fConst19));
163166 for (int i=0; i<2; i++) fVec3[i] = 0;
164167 fConst21 = (0.0082 / fConst19);
165 for (int i=0; i<2; i++) fRec15[i] = 0;
168 for (int i=0; i<2; i++) fRec16[i] = 0;
169 for (int i=0; i<2; i++) fRec7[i] = 0;
166170 for (int i=0; i<2; i++) fRec6[i] = 0;
167 for (int i=0; i<2; i++) fRec5[i] = 0;
171 for (int i=0; i<2; i++) fRec17[i] = 0;
168172 fConst22 = tan((942.4777960769379 / fSamplingFreq));
169173 fConst23 = (1.0 / faustpower<2>(fConst22));
170174 fConst24 = (2 * (1 - fConst23));
192196 fConst46 = (1 + ((fConst45 - 1.414213562373095) / fConst43));
193197 fConst47 = (1 + ((1.414213562373095 + fConst45) / fConst43));
194198 fConst48 = (1.0 / fConst47);
195 for (int i=0; i<3; i++) fRec22[i] = 0;
199 for (int i=0; i<3; i++) fRec24[i] = 0;
196200 for (int i=0; i<2; i++) fVec4[i] = 0;
197201 fConst49 = (1.0 / (fConst1 * fConst47));
198 for (int i=0; i<2; i++) fRec21[i] = 0;
202 for (int i=0; i<2; i++) fRec23[i] = 0;
199203 fConst50 = (0 - fConst37);
200204 fConst51 = (1.0 / fConst41);
201 for (int i=0; i<2; i++) fRec20[i] = 0;
205 for (int i=0; i<2; i++) fRec22[i] = 0;
206 for (int i=0; i<3; i++) fRec21[i] = 0;
207 fConst52 = (2 * (0 - fConst35));
208 for (int i=0; i<3; i++) fRec20[i] = 0;
202209 for (int i=0; i<3; i++) fRec19[i] = 0;
203 fConst52 = (2 * (0 - fConst35));
204 for (int i=0; i<3; i++) fRec18[i] = 0;
205 for (int i=0; i<3; i++) fRec17[i] = 0;
206210 fConst53 = (1 + ((fConst25 - 1.0000000000000004) / fConst22));
207211 fConst54 = (1.0 / (1 + ((fConst25 + 1.0000000000000004) / fConst22)));
208212 fConst55 = (1 + fConst25);
212216 fConst59 = (1.0 / fConst58);
213217 fConst60 = (1 + fConst31);
214218 fConst61 = (0 - ((1 - fConst31) / fConst60));
219 for (int i=0; i<2; i++) fRec30[i] = 0;
220 for (int i=0; i<3; i++) fRec29[i] = 0;
221 for (int i=0; i<2; i++) fVec5[i] = 0;
222 fConst62 = (1.0 / (fConst60 * fConst39));
215223 for (int i=0; i<2; i++) fRec28[i] = 0;
216224 for (int i=0; i<3; i++) fRec27[i] = 0;
217 for (int i=0; i<2; i++) fVec5[i] = 0;
218 fConst62 = (1.0 / (fConst60 * fConst39));
219 for (int i=0; i<2; i++) fRec26[i] = 0;
220 for (int i=0; i<3; i++) fRec25[i] = 0;
221225 for (int i=0; i<2; i++) fVec6[i] = 0;
222226 fConst63 = (0 - fConst25);
223227 fConst64 = (1.0 / (fConst55 * fConst58));
224 for (int i=0; i<2; i++) fRec24[i] = 0;
225 for (int i=0; i<3; i++) fRec23[i] = 0;
228 for (int i=0; i<2; i++) fRec26[i] = 0;
229 for (int i=0; i<3; i++) fRec25[i] = 0;
226230 fConst65 = (2 * (0 - fConst23));
227 for (int i=0; i<2; i++) fRec30[i] = 0;
228 for (int i=0; i<3; i++) fRec29[i] = 0;
231 for (int i=0; i<2; i++) fRec32[i] = 0;
232 for (int i=0; i<3; i++) fRec31[i] = 0;
229233 fConst66 = (0 - fConst31);
230 for (int i=0; i<2; i++) fRec33[i] = 0;
231 for (int i=0; i<3; i++) fRec32[i] = 0;
234 for (int i=0; i<2; i++) fRec35[i] = 0;
235 for (int i=0; i<3; i++) fRec34[i] = 0;
232236 fConst67 = (2 * (0 - fConst29));
233 for (int i=0; i<3; i++) fRec31[i] = 0;
237 for (int i=0; i<3; i++) fRec33[i] = 0;
234238 for (int i=0; i<2; i++) fVec7[i] = 0;
235239 fConst68 = (1.5848931924611136 / fConst4);
236 for (int i=0; i<2; i++) fRec16[i] = 0;
240 for (int i=0; i<2; i++) fRec18[i] = 0;
237241 for (int i=0; i<2; i++) fVec8[i] = 0;
238242 for (int i=0; i<2; i++) fRec4[i] = 0;
239243 for (int i=0; i<2; i++) fRec1[i] = 0;
240244 fConst69 = (0.025 / fConst1);
241245 for (int i=0; i<2; i++) fRec0[i] = 0;
242246 for (int i=0; i<2; i++) fVec9[i] = 0;
247 for (int i=0; i<2; i++) fRec38[i] = 0;
248 for (int i=0; i<2; i++) fRec37[i] = 0;
243249 for (int i=0; i<2; i++) fRec36[i] = 0;
244 for (int i=0; i<2; i++) fRec35[i] = 0;
245 for (int i=0; i<2; i++) fRec34[i] = 0;
246250 }
247251
248252 void compute(int count, float *input0, float *output0)
249253 {
250254 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
251 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
252 double fSlow2 = fslider2;
253 double fSlow3 = (0.01 * fSlow2);
254 double fSlow4 = (1 - fSlow3);
255 double fSlow5 = fslider3;
256 double fSlow6 = (1.25 * fSlow5);
257 double fSlow7 = (2 * (fSlow5 - 0.5));
258 double fSlow8 = (0.01 * (fSlow2 * (1 - max(0, fSlow7))));
259 double fSlow9 = pow(1e+01,(0.8 * fSlow5));
260 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow5)));
261 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow5)));
262 double fSlow12 = pow(1e+01,(1.2 * fSlow5));
255 double fSlow1 = fslider1;
256 double fSlow2 = (0.0010000000000000009 * (1 - (0.01 * fSlow1)));
257 double fSlow3 = (0.0010000000000000009 * pow(10,(0.05 * fslider2)));
258 double fSlow4 = fslider3;
259 double fSlow5 = (1.25 * fSlow4);
260 double fSlow6 = (1.000000000000001e-05 * fSlow1);
261 double fSlow7 = (2 * (fSlow4 - 0.5));
262 double fSlow8 = (1 - max(0, fSlow7));
263 double fSlow9 = pow(1e+01,(0.8 * fSlow4));
264 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow4)));
265 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow4)));
266 double fSlow12 = pow(1e+01,(1.2 * fSlow4));
263267 double fSlow13 = (1 - max(0, (0 - fSlow7)));
264268 for (int i=0; i<count; i++) {
265269 double fTemp0 = (fRec1[1] - 2.5e+02);
266270 fVec0[0] = fTemp0;
267271 fRec2[0] = ((fConst6 * (fVec0[0] + fVec0[1])) + (fConst5 * fRec2[1]));
268272 fRec3[0] = (fSlow0 + (0.999 * fRec3[1]));
269 fRec12[0] = (fSlow1 + (0.999 * fRec12[1]));
270 double fTemp1 = (fRec11[1] - 1.3e+02);
273 fRec5[0] = (fSlow2 + (0.999 * fRec5[1]));
274 fRec13[0] = (fSlow3 + (0.999 * fRec13[1]));
275 double fTemp1 = (fRec12[1] - 1.3e+02);
271276 fVec1[0] = fTemp1;
272 fRec13[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec13[1]));
273 fRec11[0] = Ftube3(0, (fRec13[0] + ((double)input0[i] * fRec12[0])));
274 fRec10[0] = ((fConst12 * ((fConst11 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
275 fRec9[0] = ((fConst13 * (fRec10[0] + fRec10[1])) + (fConst5 * fRec9[1]));
276 double fTemp2 = (fRec8[1] - 1.3e+02);
277 fRec14[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec14[1]));
278 fRec12[0] = Ftube3(0, (fRec14[0] + ((double)input0[i] * fRec13[0])));
279 fRec11[0] = ((fConst12 * ((fConst11 * fRec12[1]) + (fConst0 * fRec12[0]))) + (fConst2 * fRec11[1]));
280 fRec10[0] = ((fConst13 * (fRec11[0] + fRec11[1])) + (fConst5 * fRec10[1]));
281 double fTemp2 = (fRec9[1] - 1.3e+02);
277282 fVec2[0] = fTemp2;
278 fRec14[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec14[1]));
279 fRec8[0] = Ftube3(1, (fRec14[0] + fRec9[0]));
280 fRec7[0] = ((fConst12 * ((fConst11 * fRec8[1]) + (fConst0 * fRec8[0]))) + (fConst2 * fRec7[1]));
281 double fTemp3 = (fRec6[1] - 1.3e+02);
283 fRec15[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec15[1]));
284 fRec9[0] = Ftube3(1, (fRec15[0] + fRec10[0]));
285 fRec8[0] = ((fConst12 * ((fConst11 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
286 double fTemp3 = (fRec7[1] - 1.3e+02);
282287 fVec3[0] = fTemp3;
283 fRec15[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec15[1]));
284 fRec6[0] = Ftube3(1, (fRec15[0] + fRec7[0]));
285 fRec5[0] = ((fConst12 * ((fConst11 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
286 double fTemp4 = (fConst24 * fRec17[1]);
287 double fTemp5 = (fConst30 * fRec18[1]);
288 fRec22[0] = ((fSlow3 * fRec5[0]) - (fConst48 * ((fConst46 * fRec22[2]) + (fConst44 * fRec22[1]))));
289 double fTemp6 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
288 fRec16[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec16[1]));
289 fRec7[0] = Ftube3(1, (fRec16[0] + fRec8[0]));
290 fRec6[0] = ((fConst12 * ((fConst11 * fRec7[1]) + (fConst0 * fRec7[0]))) + (fConst2 * fRec6[1]));
291 fRec17[0] = (fSlow6 + (0.999 * fRec17[1]));
292 double fTemp4 = (fConst24 * fRec19[1]);
293 double fTemp5 = (fConst30 * fRec20[1]);
294 fRec24[0] = ((fRec6[0] * fRec17[0]) - (fConst48 * ((fConst46 * fRec24[2]) + (fConst44 * fRec24[1]))));
295 double fTemp6 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
290296 fVec4[0] = fTemp6;
291 fRec21[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec21[1]));
292 fRec20[0] = ((fConst51 * ((fConst50 * fRec21[1]) + (fConst37 * fRec21[0]))) + (fConst42 * fRec20[1]));
293 fRec19[0] = (fRec20[0] - (fConst40 * ((fConst38 * fRec19[2]) + (fConst36 * fRec19[1]))));
294 fRec18[0] = ((fConst40 * (((fConst35 * fRec19[0]) + (fConst52 * fRec19[1])) + (fConst35 * fRec19[2]))) - (fConst33 * ((fConst32 * fRec18[2]) + fTemp5)));
295 fRec17[0] = ((fRec18[2] + (fConst33 * (fTemp5 + (fConst32 * fRec18[0])))) - (fConst27 * ((fConst26 * fRec17[2]) + fTemp4)));
296 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec17[2] + (fConst27 * (fTemp4 + (fConst26 * fRec17[0])))))));
297 fRec28[0] = ((fConst51 * (fRec21[0] + fRec21[1])) + (fConst42 * fRec28[1]));
298 fRec27[0] = (fRec28[0] - (fConst40 * ((fConst38 * fRec27[2]) + (fConst36 * fRec27[1]))));
299 double fTemp8 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
297 fRec23[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec23[1]));
298 fRec22[0] = ((fConst51 * ((fConst50 * fRec23[1]) + (fConst37 * fRec23[0]))) + (fConst42 * fRec22[1]));
299 fRec21[0] = (fRec22[0] - (fConst40 * ((fConst38 * fRec21[2]) + (fConst36 * fRec21[1]))));
300 fRec20[0] = ((fConst40 * (((fConst35 * fRec21[0]) + (fConst52 * fRec21[1])) + (fConst35 * fRec21[2]))) - (fConst33 * ((fConst32 * fRec20[2]) + fTemp5)));
301 fRec19[0] = ((fRec20[2] + (fConst33 * (fTemp5 + (fConst32 * fRec20[0])))) - (fConst27 * ((fConst26 * fRec19[2]) + fTemp4)));
302 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec19[2] + (fConst27 * (fTemp4 + (fConst26 * fRec19[0])))))));
303 fRec30[0] = ((fConst51 * (fRec23[0] + fRec23[1])) + (fConst42 * fRec30[1]));
304 fRec29[0] = (fRec30[0] - (fConst40 * ((fConst38 * fRec29[2]) + (fConst36 * fRec29[1]))));
305 double fTemp8 = (fRec29[2] + (fRec29[0] + (2 * fRec29[1])));
300306 fVec5[0] = fTemp8;
301 fRec26[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec26[1]));
302 fRec25[0] = (fRec26[0] - (fConst59 * ((fConst57 * fRec25[2]) + (fConst30 * fRec25[1]))));
303 double fTemp9 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
307 fRec28[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec28[1]));
308 fRec27[0] = (fRec28[0] - (fConst59 * ((fConst57 * fRec27[2]) + (fConst30 * fRec27[1]))));
309 double fTemp9 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
304310 fVec6[0] = fTemp9;
305 fRec24[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec24[1]));
306 fRec23[0] = (fRec24[0] - (fConst54 * ((fConst53 * fRec23[2]) + (fConst24 * fRec23[1]))));
307 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec23[0]) + (fConst65 * fRec23[1])) + (fConst23 * fRec23[2])))));
308 fRec30[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec30[1]));
309 fRec29[0] = (fRec30[0] - (fConst54 * ((fConst53 * fRec29[2]) + (fConst24 * fRec29[1]))));
310 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
311 double fTemp12 = (fConst24 * fRec31[1]);
312 fRec33[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec33[1]));
313 fRec32[0] = (fRec33[0] - (fConst59 * ((fConst57 * fRec32[2]) + (fConst30 * fRec32[1]))));
314 fRec31[0] = ((fConst59 * (((fConst29 * fRec32[0]) + (fConst67 * fRec32[1])) + (fConst29 * fRec32[2]))) - (fConst27 * ((fConst26 * fRec31[2]) + fTemp12)));
315 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec31[2] + (fConst27 * (fTemp12 + (fConst26 * fRec31[0])))))));
311 fRec26[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec26[1]));
312 fRec25[0] = (fRec26[0] - (fConst54 * ((fConst53 * fRec25[2]) + (fConst24 * fRec25[1]))));
313 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec25[0]) + (fConst65 * fRec25[1])) + (fConst23 * fRec25[2])))));
314 fRec32[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec32[1]));
315 fRec31[0] = (fRec32[0] - (fConst54 * ((fConst53 * fRec31[2]) + (fConst24 * fRec31[1]))));
316 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec31[2] + (fRec31[0] + (2 * fRec31[1]))))));
317 double fTemp12 = (fConst24 * fRec33[1]);
318 fRec35[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec35[1]));
319 fRec34[0] = (fRec35[0] - (fConst59 * ((fConst57 * fRec34[2]) + (fConst30 * fRec34[1]))));
320 fRec33[0] = ((fConst59 * (((fConst29 * fRec34[0]) + (fConst67 * fRec34[1])) + (fConst29 * fRec34[2]))) - (fConst27 * ((fConst26 * fRec33[2]) + fTemp12)));
321 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec33[2] + (fConst27 * (fTemp12 + (fConst26 * fRec33[0])))))));
316322 double fTemp14 = (((fTemp13 * (1 - (0.3333333333333333 * faustpower<2>(fTemp13)))) + ((fTemp11 * (1 - (0.3333333333333333 * faustpower<2>(fTemp11)))) + (0.841395141645195 * (fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10))))))) + (0.7943282347242815 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))));
317323 fVec7[0] = fTemp14;
318 fRec16[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec16[1]));
319 double fTemp15 = ((fSlow13 * fRec16[0]) + (fRec5[0] * (fSlow8 + (fSlow4 * (1 + (fSlow6 * ((4 - (4 * fabs((fSlow4 * fRec5[0])))) - 1)))))));
324 fRec18[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec18[1]));
325 double fTemp15 = ((fSlow13 * fRec18[0]) + (fRec6[0] * ((fSlow8 * fRec17[0]) + (fRec5[0] * (1 + (fSlow5 * ((4 - (4 * fabs((fRec6[0] * fRec5[0])))) - 1)))))));
320326 fVec8[0] = fTemp15;
321327 fRec4[0] = ((fConst13 * (fVec8[0] + fVec8[1])) + (fConst5 * fRec4[1]));
322328 double fTemp16 = (fRec4[0] * fRec3[0]);
323329 fRec1[0] = Ftube2(0, (fTemp16 + fRec2[0]));
324330 fRec0[0] = ((fConst69 * ((fConst11 * fRec1[1]) + (fConst0 * fRec1[0]))) + (fConst2 * fRec0[1]));
325 double fTemp17 = (fRec35[1] - 2.5e+02);
331 double fTemp17 = (fRec37[1] - 2.5e+02);
326332 fVec9[0] = fTemp17;
327 fRec36[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec36[1]));
328 fRec35[0] = Ftube2(1, (fRec36[0] + fTemp16));
329 fRec34[0] = ((fConst69 * ((fConst11 * fRec35[1]) + (fConst0 * fRec35[0]))) + (fConst2 * fRec34[1]));
330 output0[i] = (FAUSTFLOAT)(fRec34[0] + fRec0[0]);
333 fRec38[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec38[1]));
334 fRec37[0] = Ftube2(1, (fRec38[0] + fTemp16));
335 fRec36[0] = ((fConst69 * ((fConst11 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
336 output0[i] = (FAUSTFLOAT)(fRec36[0] + fRec0[0]);
331337 // post processing
332 fRec34[1] = fRec34[0];
333 fRec35[1] = fRec35[0];
334338 fRec36[1] = fRec36[0];
339 fRec37[1] = fRec37[0];
340 fRec38[1] = fRec38[0];
335341 fVec9[1] = fVec9[0];
336342 fRec0[1] = fRec0[0];
337343 fRec1[1] = fRec1[0];
338344 fRec4[1] = fRec4[0];
339345 fVec8[1] = fVec8[0];
340 fRec16[1] = fRec16[0];
346 fRec18[1] = fRec18[0];
341347 fVec7[1] = fVec7[0];
348 fRec33[2] = fRec33[1]; fRec33[1] = fRec33[0];
349 fRec34[2] = fRec34[1]; fRec34[1] = fRec34[0];
350 fRec35[1] = fRec35[0];
342351 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
343 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
344 fRec33[1] = fRec33[0];
352 fRec32[1] = fRec32[0];
353 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
354 fRec26[1] = fRec26[0];
355 fVec6[1] = fVec6[0];
356 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
357 fRec28[1] = fRec28[0];
358 fVec5[1] = fVec5[0];
345359 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
346360 fRec30[1] = fRec30[0];
347 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
348 fRec24[1] = fRec24[0];
349 fVec6[1] = fVec6[0];
350 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
351 fRec26[1] = fRec26[0];
352 fVec5[1] = fVec5[0];
353 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
354 fRec28[1] = fRec28[0];
355 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
356 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
357361 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
358 fRec20[1] = fRec20[0];
359 fRec21[1] = fRec21[0];
362 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
363 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
364 fRec22[1] = fRec22[0];
365 fRec23[1] = fRec23[0];
360366 fVec4[1] = fVec4[0];
361 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
362 fRec5[1] = fRec5[0];
367 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
368 fRec17[1] = fRec17[0];
363369 fRec6[1] = fRec6[0];
370 fRec7[1] = fRec7[0];
371 fRec16[1] = fRec16[0];
372 fVec3[1] = fVec3[0];
373 fRec8[1] = fRec8[0];
374 fRec9[1] = fRec9[0];
364375 fRec15[1] = fRec15[0];
365 fVec3[1] = fVec3[0];
366 fRec7[1] = fRec7[0];
367 fRec8[1] = fRec8[0];
368 fRec14[1] = fRec14[0];
369376 fVec2[1] = fVec2[0];
370 fRec9[1] = fRec9[0];
371377 fRec10[1] = fRec10[0];
372378 fRec11[1] = fRec11[0];
379 fRec12[1] = fRec12[0];
380 fRec14[1] = fRec14[0];
381 fVec1[1] = fVec1[0];
373382 fRec13[1] = fRec13[0];
374 fVec1[1] = fVec1[0];
375 fRec12[1] = fRec12[0];
383 fRec5[1] = fRec5[0];
376384 fRec3[1] = fRec3[0];
377385 fRec2[1] = fRec2[0];
378386 fVec0[1] = fVec0[0];
1111 double fRec2[2];
1212 FAUSTFLOAT& fslider0 = get_alias("amp2.stage2.gain1");
1313 double fRec3[2];
14 FAUSTFLOAT& fslider1 = get_alias("amp2.stage1.Pregain");
15 double fRec12[2];
14 FAUSTFLOAT& fslider1 = get_alias("gxdistortion.wet_dry");
15 double fRec5[2];
16 FAUSTFLOAT& fslider2 = get_alias("amp2.stage1.Pregain");
17 double fRec13[2];
1618 double fConst7;
1719 double fConst8;
1820 double fConst9;
1921 double fVec1[2];
2022 double fConst10;
21 double fRec13[2];
22 double fRec11[2];
23 double fRec14[2];
24 double fRec12[2];
2325 double fConst11;
2426 double fConst12;
27 double fRec11[2];
28 double fConst13;
2529 double fRec10[2];
26 double fConst13;
27 double fRec9[2];
2830 double fConst14;
2931 double fConst15;
3032 double fConst16;
3133 double fVec2[2];
3234 double fConst17;
33 double fRec14[2];
35 double fRec15[2];
36 double fRec9[2];
3437 double fRec8[2];
35 double fRec7[2];
3638 double fConst18;
3739 double fConst19;
3840 double fConst20;
3941 double fVec3[2];
4042 double fConst21;
41 double fRec15[2];
43 double fRec16[2];
44 double fRec7[2];
4245 double fRec6[2];
43 double fRec5[2];
44 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
4546 FAUSTFLOAT& fslider3 = get_alias("gxdistortion.drive");
47 double fRec17[2];
4648 double fConst22;
4749 double fConst23;
4850 double fConst24;
7072 double fConst46;
7173 double fConst47;
7274 double fConst48;
73 double fRec22[3];
75 double fRec24[3];
7476 double fVec4[2];
7577 double fConst49;
76 double fRec21[2];
78 double fRec23[2];
7779 double fConst50;
7880 double fConst51;
79 double fRec20[2];
81 double fRec22[2];
82 double fRec21[3];
83 double fConst52;
84 double fRec20[3];
8085 double fRec19[3];
81 double fConst52;
82 double fRec18[3];
83 double fRec17[3];
8486 double fConst53;
8587 double fConst54;
8688 double fConst55;
9092 double fConst59;
9193 double fConst60;
9294 double fConst61;
95 double fRec30[2];
96 double fRec29[3];
97 double fVec5[2];
98 double fConst62;
9399 double fRec28[2];
94100 double fRec27[3];
95 double fVec5[2];
96 double fConst62;
97 double fRec26[2];
98 double fRec25[3];
99101 double fVec6[2];
100102 double fConst63;
101103 double fConst64;
102 double fRec24[2];
103 double fRec23[3];
104 double fRec26[2];
105 double fRec25[3];
104106 double fConst65;
105 double fRec30[2];
106 double fRec29[3];
107 double fRec32[2];
108 double fRec31[3];
107109 double fConst66;
108 double fRec33[2];
109 double fRec32[3];
110 double fRec35[2];
111 double fRec34[3];
110112 double fConst67;
111 double fRec31[3];
113 double fRec33[3];
112114 double fVec7[2];
113115 double fConst68;
114 double fRec16[2];
116 double fRec18[2];
115117 double fVec8[2];
116118 double fRec4[2];
117119 double fRec1[2];
118120 double fRec0[2];
119121 double fVec9[2];
122 double fRec38[2];
123 double fRec37[2];
120124 double fRec36[2];
121 double fRec35[2];
122 double fRec34[2];
123125 int fSamplingFreq;
124126
125127 void init(int samplingFreq)
135137 fConst6 = (0.0082 / fConst4);
136138 for (int i=0; i<2; i++) fRec2[i] = 0;
137139 for (int i=0; i<2; i++) fRec3[i] = 0;
138 for (int i=0; i<2; i++) fRec12[i] = 0;
140 for (int i=0; i<2; i++) fRec5[i] = 0;
141 for (int i=0; i<2; i++) fRec13[i] = 0;
139142 fConst7 = (1.0 / tan((270.1769682087222 / fSamplingFreq)));
140143 fConst8 = (1 + fConst7);
141144 fConst9 = (0 - ((1 - fConst7) / fConst8));
142145 for (int i=0; i<2; i++) fVec1[i] = 0;
143146 fConst10 = (0.027 / fConst8);
144 for (int i=0; i<2; i++) fRec13[i] = 0;
145 for (int i=0; i<2; i++) fRec11[i] = 0;
147 for (int i=0; i<2; i++) fRec14[i] = 0;
148 for (int i=0; i<2; i++) fRec12[i] = 0;
146149 fConst11 = (0 - fConst0);
147150 fConst12 = (0.025 / fConst1);
151 for (int i=0; i<2; i++) fRec11[i] = 0;
152 fConst13 = (1.0 / fConst4);
148153 for (int i=0; i<2; i++) fRec10[i] = 0;
149 fConst13 = (1.0 / fConst4);
150 for (int i=0; i<2; i++) fRec9[i] = 0;
151154 fConst14 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
152155 fConst15 = (1 + fConst14);
153156 fConst16 = (0 - ((1 - fConst14) / fConst15));
154157 for (int i=0; i<2; i++) fVec2[i] = 0;
155158 fConst17 = (0.015 / fConst15);
156 for (int i=0; i<2; i++) fRec14[i] = 0;
159 for (int i=0; i<2; i++) fRec15[i] = 0;
160 for (int i=0; i<2; i++) fRec9[i] = 0;
157161 for (int i=0; i<2; i++) fRec8[i] = 0;
158 for (int i=0; i<2; i++) fRec7[i] = 0;
159162 fConst18 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
160163 fConst19 = (1 + fConst18);
161164 fConst20 = (0 - ((1 - fConst18) / fConst19));
162165 for (int i=0; i<2; i++) fVec3[i] = 0;
163166 fConst21 = (0.0082 / fConst19);
164 for (int i=0; i<2; i++) fRec15[i] = 0;
167 for (int i=0; i<2; i++) fRec16[i] = 0;
168 for (int i=0; i<2; i++) fRec7[i] = 0;
165169 for (int i=0; i<2; i++) fRec6[i] = 0;
166 for (int i=0; i<2; i++) fRec5[i] = 0;
170 for (int i=0; i<2; i++) fRec17[i] = 0;
167171 fConst22 = tan((942.4777960769379 / fSamplingFreq));
168172 fConst23 = (1.0 / faustpower<2>(fConst22));
169173 fConst24 = (2 * (1 - fConst23));
191195 fConst46 = (1 + ((fConst45 - 1.414213562373095) / fConst43));
192196 fConst47 = (1 + ((1.414213562373095 + fConst45) / fConst43));
193197 fConst48 = (1.0 / fConst47);
194 for (int i=0; i<3; i++) fRec22[i] = 0;
198 for (int i=0; i<3; i++) fRec24[i] = 0;
195199 for (int i=0; i<2; i++) fVec4[i] = 0;
196200 fConst49 = (1.0 / (fConst1 * fConst47));
197 for (int i=0; i<2; i++) fRec21[i] = 0;
201 for (int i=0; i<2; i++) fRec23[i] = 0;
198202 fConst50 = (0 - fConst37);
199203 fConst51 = (1.0 / fConst41);
200 for (int i=0; i<2; i++) fRec20[i] = 0;
204 for (int i=0; i<2; i++) fRec22[i] = 0;
205 for (int i=0; i<3; i++) fRec21[i] = 0;
206 fConst52 = (2 * (0 - fConst35));
207 for (int i=0; i<3; i++) fRec20[i] = 0;
201208 for (int i=0; i<3; i++) fRec19[i] = 0;
202 fConst52 = (2 * (0 - fConst35));
203 for (int i=0; i<3; i++) fRec18[i] = 0;
204 for (int i=0; i<3; i++) fRec17[i] = 0;
205209 fConst53 = (1 + ((fConst25 - 1.0000000000000004) / fConst22));
206210 fConst54 = (1.0 / (1 + ((fConst25 + 1.0000000000000004) / fConst22)));
207211 fConst55 = (1 + fConst25);
211215 fConst59 = (1.0 / fConst58);
212216 fConst60 = (1 + fConst31);
213217 fConst61 = (0 - ((1 - fConst31) / fConst60));
218 for (int i=0; i<2; i++) fRec30[i] = 0;
219 for (int i=0; i<3; i++) fRec29[i] = 0;
220 for (int i=0; i<2; i++) fVec5[i] = 0;
221 fConst62 = (1.0 / (fConst60 * fConst39));
214222 for (int i=0; i<2; i++) fRec28[i] = 0;
215223 for (int i=0; i<3; i++) fRec27[i] = 0;
216 for (int i=0; i<2; i++) fVec5[i] = 0;
217 fConst62 = (1.0 / (fConst60 * fConst39));
218 for (int i=0; i<2; i++) fRec26[i] = 0;
219 for (int i=0; i<3; i++) fRec25[i] = 0;
220224 for (int i=0; i<2; i++) fVec6[i] = 0;
221225 fConst63 = (0 - fConst25);
222226 fConst64 = (1.0 / (fConst55 * fConst58));
223 for (int i=0; i<2; i++) fRec24[i] = 0;
224 for (int i=0; i<3; i++) fRec23[i] = 0;
227 for (int i=0; i<2; i++) fRec26[i] = 0;
228 for (int i=0; i<3; i++) fRec25[i] = 0;
225229 fConst65 = (2 * (0 - fConst23));
226 for (int i=0; i<2; i++) fRec30[i] = 0;
227 for (int i=0; i<3; i++) fRec29[i] = 0;
230 for (int i=0; i<2; i++) fRec32[i] = 0;
231 for (int i=0; i<3; i++) fRec31[i] = 0;
228232 fConst66 = (0 - fConst31);
229 for (int i=0; i<2; i++) fRec33[i] = 0;
230 for (int i=0; i<3; i++) fRec32[i] = 0;
233 for (int i=0; i<2; i++) fRec35[i] = 0;
234 for (int i=0; i<3; i++) fRec34[i] = 0;
231235 fConst67 = (2 * (0 - fConst29));
232 for (int i=0; i<3; i++) fRec31[i] = 0;
236 for (int i=0; i<3; i++) fRec33[i] = 0;
233237 for (int i=0; i<2; i++) fVec7[i] = 0;
234238 fConst68 = (1.5848931924611136 / fConst4);
235 for (int i=0; i<2; i++) fRec16[i] = 0;
239 for (int i=0; i<2; i++) fRec18[i] = 0;
236240 for (int i=0; i<2; i++) fVec8[i] = 0;
237241 for (int i=0; i<2; i++) fRec4[i] = 0;
238242 for (int i=0; i<2; i++) fRec1[i] = 0;
239243 for (int i=0; i<2; i++) fRec0[i] = 0;
240244 for (int i=0; i<2; i++) fVec9[i] = 0;
245 for (int i=0; i<2; i++) fRec38[i] = 0;
246 for (int i=0; i<2; i++) fRec37[i] = 0;
241247 for (int i=0; i<2; i++) fRec36[i] = 0;
242 for (int i=0; i<2; i++) fRec35[i] = 0;
243 for (int i=0; i<2; i++) fRec34[i] = 0;
244248 }
245249
246250 void compute(int count, float *input0, float *output0)
247251 {
248252 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
249 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
250 double fSlow2 = fslider2;
251 double fSlow3 = (0.01 * fSlow2);
252 double fSlow4 = (1 - fSlow3);
253 double fSlow5 = fslider3;
254 double fSlow6 = (1.25 * fSlow5);
255 double fSlow7 = (2 * (fSlow5 - 0.5));
256 double fSlow8 = (0.01 * (fSlow2 * (1 - max(0, fSlow7))));
257 double fSlow9 = pow(1e+01,(0.8 * fSlow5));
258 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow5)));
259 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow5)));
260 double fSlow12 = pow(1e+01,(1.2 * fSlow5));
253 double fSlow1 = fslider1;
254 double fSlow2 = (0.0010000000000000009 * (1 - (0.01 * fSlow1)));
255 double fSlow3 = (0.0010000000000000009 * pow(10,(0.05 * fslider2)));
256 double fSlow4 = fslider3;
257 double fSlow5 = (1.25 * fSlow4);
258 double fSlow6 = (1.000000000000001e-05 * fSlow1);
259 double fSlow7 = (2 * (fSlow4 - 0.5));
260 double fSlow8 = (1 - max(0, fSlow7));
261 double fSlow9 = pow(1e+01,(0.8 * fSlow4));
262 double fSlow10 = (fConst54 * pow(1e+01,(2 * fSlow4)));
263 double fSlow11 = (fConst54 * pow(1e+01,(0.9 * fSlow4)));
264 double fSlow12 = pow(1e+01,(1.2 * fSlow4));
261265 double fSlow13 = (1 - max(0, (0 - fSlow7)));
262266 for (int i=0; i<count; i++) {
263267 double fTemp0 = (fRec1[1] - 2.5e+02);
264268 fVec0[0] = fTemp0;
265269 fRec2[0] = ((fConst6 * (fVec0[0] + fVec0[1])) + (fConst5 * fRec2[1]));
266270 fRec3[0] = (fSlow0 + (0.999 * fRec3[1]));
267 fRec12[0] = (fSlow1 + (0.999 * fRec12[1]));
268 double fTemp1 = (fRec11[1] - 2.5e+02);
271 fRec5[0] = (fSlow2 + (0.999 * fRec5[1]));
272 fRec13[0] = (fSlow3 + (0.999 * fRec13[1]));
273 double fTemp1 = (fRec12[1] - 2.5e+02);
269274 fVec1[0] = fTemp1;
270 fRec13[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec13[1]));
271 fRec11[0] = Ftube(0, (fRec13[0] + ((double)input0[i] * fRec12[0])));
272 fRec10[0] = ((fConst12 * ((fConst11 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
273 fRec9[0] = ((fConst13 * (fRec10[0] + fRec10[1])) + (fConst5 * fRec9[1]));
274 double fTemp2 = (fRec8[1] - 2.5e+02);
275 fRec14[0] = ((fConst10 * (fVec1[0] + fVec1[1])) + (fConst9 * fRec14[1]));
276 fRec12[0] = Ftube(0, (fRec14[0] + ((double)input0[i] * fRec13[0])));
277 fRec11[0] = ((fConst12 * ((fConst11 * fRec12[1]) + (fConst0 * fRec12[0]))) + (fConst2 * fRec11[1]));
278 fRec10[0] = ((fConst13 * (fRec11[0] + fRec11[1])) + (fConst5 * fRec10[1]));
279 double fTemp2 = (fRec9[1] - 2.5e+02);
275280 fVec2[0] = fTemp2;
276 fRec14[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec14[1]));
277 fRec8[0] = Ftube(1, (fRec14[0] + fRec9[0]));
278 fRec7[0] = ((fConst12 * ((fConst11 * fRec8[1]) + (fConst0 * fRec8[0]))) + (fConst2 * fRec7[1]));
279 double fTemp3 = (fRec6[1] - 2.5e+02);
281 fRec15[0] = ((fConst17 * (fVec2[0] + fVec2[1])) + (fConst16 * fRec15[1]));
282 fRec9[0] = Ftube(1, (fRec15[0] + fRec10[0]));
283 fRec8[0] = ((fConst12 * ((fConst11 * fRec9[1]) + (fConst0 * fRec9[0]))) + (fConst2 * fRec8[1]));
284 double fTemp3 = (fRec7[1] - 2.5e+02);
280285 fVec3[0] = fTemp3;
281 fRec15[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec15[1]));
282 fRec6[0] = Ftube(1, (fRec15[0] + fRec7[0]));
283 fRec5[0] = ((fConst12 * ((fConst11 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
284 double fTemp4 = (fConst24 * fRec17[1]);
285 double fTemp5 = (fConst30 * fRec18[1]);
286 fRec22[0] = ((fSlow3 * fRec5[0]) - (fConst48 * ((fConst46 * fRec22[2]) + (fConst44 * fRec22[1]))));
287 double fTemp6 = (fRec22[2] + (fRec22[0] + (2 * fRec22[1])));
286 fRec16[0] = ((fConst21 * (fVec3[0] + fVec3[1])) + (fConst20 * fRec16[1]));
287 fRec7[0] = Ftube(1, (fRec16[0] + fRec8[0]));
288 fRec6[0] = ((fConst12 * ((fConst11 * fRec7[1]) + (fConst0 * fRec7[0]))) + (fConst2 * fRec6[1]));
289 fRec17[0] = (fSlow6 + (0.999 * fRec17[1]));
290 double fTemp4 = (fConst24 * fRec19[1]);
291 double fTemp5 = (fConst30 * fRec20[1]);
292 fRec24[0] = ((fRec6[0] * fRec17[0]) - (fConst48 * ((fConst46 * fRec24[2]) + (fConst44 * fRec24[1]))));
293 double fTemp6 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
288294 fVec4[0] = fTemp6;
289 fRec21[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec21[1]));
290 fRec20[0] = ((fConst51 * ((fConst50 * fRec21[1]) + (fConst37 * fRec21[0]))) + (fConst42 * fRec20[1]));
291 fRec19[0] = (fRec20[0] - (fConst40 * ((fConst38 * fRec19[2]) + (fConst36 * fRec19[1]))));
292 fRec18[0] = ((fConst40 * (((fConst35 * fRec19[0]) + (fConst52 * fRec19[1])) + (fConst35 * fRec19[2]))) - (fConst33 * ((fConst32 * fRec18[2]) + fTemp5)));
293 fRec17[0] = ((fRec18[2] + (fConst33 * (fTemp5 + (fConst32 * fRec18[0])))) - (fConst27 * ((fConst26 * fRec17[2]) + fTemp4)));
294 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec17[2] + (fConst27 * (fTemp4 + (fConst26 * fRec17[0])))))));
295 fRec28[0] = ((fConst51 * (fRec21[0] + fRec21[1])) + (fConst42 * fRec28[1]));
296 fRec27[0] = (fRec28[0] - (fConst40 * ((fConst38 * fRec27[2]) + (fConst36 * fRec27[1]))));
297 double fTemp8 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
295 fRec23[0] = ((fConst49 * ((fConst11 * fVec4[1]) + (fConst0 * fVec4[0]))) + (fConst2 * fRec23[1]));
296 fRec22[0] = ((fConst51 * ((fConst50 * fRec23[1]) + (fConst37 * fRec23[0]))) + (fConst42 * fRec22[1]));
297 fRec21[0] = (fRec22[0] - (fConst40 * ((fConst38 * fRec21[2]) + (fConst36 * fRec21[1]))));
298 fRec20[0] = ((fConst40 * (((fConst35 * fRec21[0]) + (fConst52 * fRec21[1])) + (fConst35 * fRec21[2]))) - (fConst33 * ((fConst32 * fRec20[2]) + fTemp5)));
299 fRec19[0] = ((fRec20[2] + (fConst33 * (fTemp5 + (fConst32 * fRec20[0])))) - (fConst27 * ((fConst26 * fRec19[2]) + fTemp4)));
300 double fTemp7 = max(-1, min(1, (fSlow9 * (fRec19[2] + (fConst27 * (fTemp4 + (fConst26 * fRec19[0])))))));
301 fRec30[0] = ((fConst51 * (fRec23[0] + fRec23[1])) + (fConst42 * fRec30[1]));
302 fRec29[0] = (fRec30[0] - (fConst40 * ((fConst38 * fRec29[2]) + (fConst36 * fRec29[1]))));
303 double fTemp8 = (fRec29[2] + (fRec29[0] + (2 * fRec29[1])));
298304 fVec5[0] = fTemp8;
299 fRec26[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec26[1]));
300 fRec25[0] = (fRec26[0] - (fConst59 * ((fConst57 * fRec25[2]) + (fConst30 * fRec25[1]))));
301 double fTemp9 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
305 fRec28[0] = ((fConst62 * (fVec5[0] + fVec5[1])) + (fConst61 * fRec28[1]));
306 fRec27[0] = (fRec28[0] - (fConst59 * ((fConst57 * fRec27[2]) + (fConst30 * fRec27[1]))));
307 double fTemp9 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
302308 fVec6[0] = fTemp9;
303 fRec24[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec24[1]));
304 fRec23[0] = (fRec24[0] - (fConst54 * ((fConst53 * fRec23[2]) + (fConst24 * fRec23[1]))));
305 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec23[0]) + (fConst65 * fRec23[1])) + (fConst23 * fRec23[2])))));
306 fRec30[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec30[1]));
307 fRec29[0] = (fRec30[0] - (fConst54 * ((fConst53 * fRec29[2]) + (fConst24 * fRec29[1]))));
308 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
309 double fTemp12 = (fConst24 * fRec31[1]);
310 fRec33[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec33[1]));
311 fRec32[0] = (fRec33[0] - (fConst59 * ((fConst57 * fRec32[2]) + (fConst30 * fRec32[1]))));
312 fRec31[0] = ((fConst59 * (((fConst29 * fRec32[0]) + (fConst67 * fRec32[1])) + (fConst29 * fRec32[2]))) - (fConst27 * ((fConst26 * fRec31[2]) + fTemp12)));
313 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec31[2] + (fConst27 * (fTemp12 + (fConst26 * fRec31[0])))))));
309 fRec26[0] = ((fConst64 * ((fConst63 * fVec6[1]) + (fConst25 * fVec6[0]))) + (fConst56 * fRec26[1]));
310 fRec25[0] = (fRec26[0] - (fConst54 * ((fConst53 * fRec25[2]) + (fConst24 * fRec25[1]))));
311 double fTemp10 = max(-1, min(1, (fSlow10 * (((fConst23 * fRec25[0]) + (fConst65 * fRec25[1])) + (fConst23 * fRec25[2])))));
312 fRec32[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst56 * fRec32[1]));
313 fRec31[0] = (fRec32[0] - (fConst54 * ((fConst53 * fRec31[2]) + (fConst24 * fRec31[1]))));
314 double fTemp11 = max(-1, min(1, (fSlow11 * (fRec31[2] + (fRec31[0] + (2 * fRec31[1]))))));
315 double fTemp12 = (fConst24 * fRec33[1]);
316 fRec35[0] = ((fConst62 * ((fConst66 * fVec5[1]) + (fConst31 * fVec5[0]))) + (fConst61 * fRec35[1]));
317 fRec34[0] = (fRec35[0] - (fConst59 * ((fConst57 * fRec34[2]) + (fConst30 * fRec34[1]))));
318 fRec33[0] = ((fConst59 * (((fConst29 * fRec34[0]) + (fConst67 * fRec34[1])) + (fConst29 * fRec34[2]))) - (fConst27 * ((fConst26 * fRec33[2]) + fTemp12)));
319 double fTemp13 = max(-1, min(1, (fSlow12 * (fRec33[2] + (fConst27 * (fTemp12 + (fConst26 * fRec33[0])))))));
314320 double fTemp14 = (((fTemp13 * (1 - (0.3333333333333333 * faustpower<2>(fTemp13)))) + ((fTemp11 * (1 - (0.3333333333333333 * faustpower<2>(fTemp11)))) + (0.841395141645195 * (fTemp10 * (1 - (0.3333333333333333 * faustpower<2>(fTemp10))))))) + (0.7943282347242815 * (fTemp7 * (1 - (0.3333333333333333 * faustpower<2>(fTemp7))))));
315321 fVec7[0] = fTemp14;
316 fRec16[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec16[1]));
317 double fTemp15 = ((fSlow13 * fRec16[0]) + (fRec5[0] * (fSlow8 + (fSlow4 * (1 + (fSlow6 * ((4 - (4 * fabs((fSlow4 * fRec5[0])))) - 1)))))));
322 fRec18[0] = ((fConst68 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec18[1]));
323 double fTemp15 = ((fSlow13 * fRec18[0]) + (fRec6[0] * ((fSlow8 * fRec17[0]) + (fRec5[0] * (1 + (fSlow5 * ((4 - (4 * fabs((fRec6[0] * fRec5[0])))) - 1)))))));
318324 fVec8[0] = fTemp15;
319325 fRec4[0] = ((fConst13 * (fVec8[0] + fVec8[1])) + (fConst5 * fRec4[1]));
320326 double fTemp16 = (fRec4[0] * fRec3[0]);
321327 fRec1[0] = Ftube2(0, (fTemp16 + fRec2[0]));
322328 fRec0[0] = ((fConst12 * ((fConst11 * fRec1[1]) + (fConst0 * fRec1[0]))) + (fConst2 * fRec0[1]));
323 double fTemp17 = (fRec35[1] - 2.5e+02);
329 double fTemp17 = (fRec37[1] - 2.5e+02);
324330 fVec9[0] = fTemp17;
325 fRec36[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec36[1]));
326 fRec35[0] = Ftube2(1, (fRec36[0] + fTemp16));
327 fRec34[0] = ((fConst12 * ((fConst11 * fRec35[1]) + (fConst0 * fRec35[0]))) + (fConst2 * fRec34[1]));
328 output0[i] = (FAUSTFLOAT)(fRec34[0] + fRec0[0]);
331 fRec38[0] = ((fConst6 * (fVec9[0] + fVec9[1])) + (fConst5 * fRec38[1]));
332 fRec37[0] = Ftube2(1, (fRec38[0] + fTemp16));
333 fRec36[0] = ((fConst12 * ((fConst11 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
334 output0[i] = (FAUSTFLOAT)(fRec36[0] + fRec0[0]);
329335 // post processing
330 fRec34[1] = fRec34[0];
331 fRec35[1] = fRec35[0];
332336 fRec36[1] = fRec36[0];
337 fRec37[1] = fRec37[0];
338 fRec38[1] = fRec38[0];
333339 fVec9[1] = fVec9[0];
334340 fRec0[1] = fRec0[0];
335341 fRec1[1] = fRec1[0];
336342 fRec4[1] = fRec4[0];
337343 fVec8[1] = fVec8[0];
338 fRec16[1] = fRec16[0];
344 fRec18[1] = fRec18[0];
339345 fVec7[1] = fVec7[0];
346 fRec33[2] = fRec33[1]; fRec33[1] = fRec33[0];
347 fRec34[2] = fRec34[1]; fRec34[1] = fRec34[0];
348 fRec35[1] = fRec35[0];
340349 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
341 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
342 fRec33[1] = fRec33[0];
350 fRec32[1] = fRec32[0];
351 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
352 fRec26[1] = fRec26[0];
353 fVec6[1] = fVec6[0];
354 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
355 fRec28[1] = fRec28[0];
356 fVec5[1] = fVec5[0];
343357 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
344358 fRec30[1] = fRec30[0];
345 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
346 fRec24[1] = fRec24[0];
347 fVec6[1] = fVec6[0];
348 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
349 fRec26[1] = fRec26[0];
350 fVec5[1] = fVec5[0];
351 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
352 fRec28[1] = fRec28[0];
353 fRec17[2] = fRec17[1]; fRec17[1] = fRec17[0];
354 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
355359 fRec19[2] = fRec19[1]; fRec19[1] = fRec19[0];
356 fRec20[1] = fRec20[0];
357 fRec21[1] = fRec21[0];
360 fRec20[2] = fRec20[1]; fRec20[1] = fRec20[0];
361 fRec21[2] = fRec21[1]; fRec21[1] = fRec21[0];
362 fRec22[1] = fRec22[0];
363 fRec23[1] = fRec23[0];
358364 fVec4[1] = fVec4[0];
359 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
360 fRec5[1] = fRec5[0];
365 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
366 fRec17[1] = fRec17[0];
361367 fRec6[1] = fRec6[0];
368 fRec7[1] = fRec7[0];
369 fRec16[1] = fRec16[0];
370 fVec3[1] = fVec3[0];
371 fRec8[1] = fRec8[0];
372 fRec9[1] = fRec9[0];
362373 fRec15[1] = fRec15[0];
363 fVec3[1] = fVec3[0];
364 fRec7[1] = fRec7[0];
365 fRec8[1] = fRec8[0];
366 fRec14[1] = fRec14[0];
367374 fVec2[1] = fVec2[0];
368 fRec9[1] = fRec9[0];
369375 fRec10[1] = fRec10[0];
370376 fRec11[1] = fRec11[0];
377 fRec12[1] = fRec12[0];
378 fRec14[1] = fRec14[0];
379 fVec1[1] = fVec1[0];
371380 fRec13[1] = fRec13[0];
372 fVec1[1] = fVec1[0];
373 fRec12[1] = fRec12[0];
381 fRec5[1] = fRec5[0];
374382 fRec3[1] = fRec3[0];
375383 fRec2[1] = fRec2[0];
376384 fVec0[1] = fVec0[0];
423423 fVec7[IOTA&65535] = fTemp10;
424424 fRec33[0] = ((fVec7[IOTA&65535] + fRec33[1]) - fVec7[(IOTA-iConst44)&65535]);
425425 fRec32[0] = ((fConst45 * fRec33[0]) + (0.999 * fRec32[1]));
426 double fTemp11 = max(-1, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
426 double fTemp11 = max(-1.0, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
427427 double fTemp12 = (0 - fTemp11);
428428 double fTemp13 = (40.1 * fTemp12);
429429 double fTemp14 = max(-600, fTemp13);
421421 fVec7[IOTA&65535] = fTemp10;
422422 fRec33[0] = ((fVec7[IOTA&65535] + fRec33[1]) - fVec7[(IOTA-iConst44)&65535]);
423423 fRec32[0] = ((fConst45 * fRec33[0]) + (0.999 * fRec32[1]));
424 double fTemp11 = max(-1, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
424 double fTemp11 = max(-1.0, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
425425 double fTemp12 = (0 - fTemp11);
426426 double fTemp13 = (40.1 * fTemp12);
427427 double fTemp14 = max(-600, fTemp13);
163163 double fVec12[2];
164164 double fRec7[2];
165165 double fRec4[2];
166 double fConst95;
166167 double fRec3[2];
167168 double fVec13[2];
168169 double fRec56[2];
169170 double fRec55[2];
170171 double fRec54[2];
171172 double fVec14[3];
172 double fConst95;
173173 double fConst96;
174 double fConst97;
174175 double fRec2[3];
175 double fConst97;
176176 double fConst98;
177 double fConst99;
177178 double fRec1[3];
178 double fConst99;
179179 double fConst100;
180 double fConst101;
180181 double fRec0[3];
181182 int fSamplingFreq;
182183
232233 for (int i=0; i<2; i++) fRec23[i] = 0;
233234 for (int i=0; i<2; i++) fRec17[i] = 0;
234235 fConst35 = (0 - fConst12);
235 fConst36 = (0.025 / fConst13);
236 fConst36 = (0.1 / fConst13);
236237 for (int i=0; i<2; i++) fRec16[i] = 0;
237238 fConst37 = (1.0 / tan((414.6902302738527 / fSamplingFreq)));
238239 fConst38 = (1 + fConst37);
342343 for (int i=0; i<2; i++) fVec12[i] = 0;
343344 for (int i=0; i<2; i++) fRec7[i] = 0;
344345 for (int i=0; i<2; i++) fRec4[i] = 0;
346 fConst95 = (0.025 / fConst13);
345347 for (int i=0; i<2; i++) fRec3[i] = 0;
346348 for (int i=0; i<2; i++) fVec13[i] = 0;
347349 for (int i=0; i<2; i++) fRec56[i] = 0;
348350 for (int i=0; i<2; i++) fRec55[i] = 0;
349351 for (int i=0; i<2; i++) fRec54[i] = 0;
350352 for (int i=0; i<3; i++) fVec14[i] = 0;
351 fConst95 = (0 - fConst9);
352 fConst96 = (1.0 / (1 + fConst10));
353 fConst96 = (0 - fConst9);
354 fConst97 = (1.0 / (1 + fConst10));
353355 for (int i=0; i<3; i++) fRec2[i] = 0;
354 fConst97 = (0 - fConst5);
355 fConst98 = (1.0 / (1 + fConst6));
356 fConst98 = (0 - fConst5);
357 fConst99 = (1.0 / (1 + fConst6));
356358 for (int i=0; i<3; i++) fRec1[i] = 0;
357 fConst99 = (0 - fConst1);
358 fConst100 = (1.0 / (1 + fConst2));
359 fConst100 = (0 - fConst1);
360 fConst101 = (1.0 / (1 + fConst2));
359361 for (int i=0; i<3; i++) fRec0[i] = 0;
360362 }
361363
388390 fRec19[0] = (fRec20[0] - (fConst26 * ((fConst25 * fRec19[2]) + (fConst20 * fRec19[1]))));
389391 fRec18[0] = ((fConst26 * (fRec19[2] + (fRec19[0] + (2 * fRec19[1])))) - (fConst24 * ((fConst22 * fRec18[2]) + (fConst20 * fRec18[1]))));
390392 fRec22[0] = (fSlow3 + (0.999 * fRec22[1]));
391 double fTemp2 = (fRec17[1] - 2.5e+02);
393 double fTemp2 = (fRec17[1] - 1.3e+02);
392394 fVec2[0] = fTemp2;
393395 fRec23[0] = ((fConst34 * (fVec2[0] + fVec2[1])) + (fConst33 * fRec23[1]));
394396 fRec17[0] = Ftube3(0, (fRec23[0] + (fConst30 * (fRec22[0] * (fRec18[2] + (fRec18[0] + (2 * fRec18[1])))))));
395397 fRec16[0] = ((fConst36 * ((fConst35 * fRec17[1]) + (fConst12 * fRec17[0]))) + (fConst14 * fRec16[1]));
396 double fTemp3 = (fRec25[1] - 2.5e+02);
398 double fTemp3 = (fRec25[1] - 1.3e+02);
397399 fVec3[0] = fTemp3;
398400 fRec26[0] = ((fConst40 * (fVec3[0] + fVec3[1])) + (fConst39 * fRec26[1]));
399401 fRec25[0] = Ftube3(1, (fRec26[0] + fRec15[1]));
400402 fRec24[0] = ((fConst36 * ((fConst35 * fRec25[1]) + (fConst12 * fRec25[0]))) + (fConst14 * fRec24[1]));
401403 fRec15[0] = (fRec24[0] + fRec16[0]);
402404 fRec14[0] = ((fConst41 * (fRec15[0] + fRec15[1])) + (fConst17 * fRec14[1]));
403 double fTemp4 = (fRec13[1] - 2.5e+02);
405 double fTemp4 = (fRec13[1] - 1.3e+02);
404406 fVec4[0] = fTemp4;
405407 fRec27[0] = ((fConst40 * (fVec4[0] + fVec4[1])) + (fConst39 * fRec27[1]));
406408 fRec13[0] = Ftube3(1, (fRec27[0] + fRec14[0]));
407409 fRec12[0] = ((fConst36 * ((fConst35 * fRec13[1]) + (fConst12 * fRec13[0]))) + (fConst14 * fRec12[1]));
408 double fTemp5 = (fRec29[1] - 2.5e+02);
410 double fTemp5 = (fRec29[1] - 1.3e+02);
409411 fVec5[0] = fTemp5;
410412 fRec30[0] = ((fConst45 * (fVec5[0] + fVec5[1])) + (fConst44 * fRec30[1]));
411413 fRec29[0] = Ftube3(1, (fRec30[0] + fRec11[1]));
412414 fRec28[0] = ((fConst36 * ((fConst35 * fRec29[1]) + (fConst12 * fRec29[0]))) + (fConst14 * fRec28[1]));
413415 fRec11[0] = (fRec28[0] + fRec12[0]);
414 double fTemp6 = (fRec10[1] - 2.5e+02);
416 double fTemp6 = (fRec10[1] - 1.3e+02);
415417 fVec6[0] = fTemp6;
416418 fRec31[0] = ((fConst45 * (fVec6[0] + fVec6[1])) + (fConst44 * fRec31[1]));
417419 fRec10[0] = Ftube3(1, (fRec31[0] + fRec11[0]));
425427 fVec7[IOTA&65535] = fTemp10;
426428 fRec33[0] = ((fVec7[IOTA&65535] + fRec33[1]) - fVec7[(IOTA-iConst46)&65535]);
427429 fRec32[0] = ((fConst47 * fRec33[0]) + (0.999 * fRec32[1]));
428 double fTemp11 = max(-1, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
430 double fTemp11 = max(-1.0, min(-0.01, (fVec7[IOTA&65535] - (1.0 + (1.02 * fRec32[0])))));
429431 double fTemp12 = (0 - fTemp11);
430432 double fTemp13 = (40.1 * fTemp12);
431433 double fTemp14 = max(-600, fTemp13);
473475 fRec7[0] = ((fConst41 * (fVec12[0] + fVec12[1])) + (fConst17 * fRec7[1]));
474476 double fTemp33 = (fRec7[0] * fRec6[0]);
475477 fRec4[0] = Ftube2(0, (fTemp33 + fRec5[0]));
476 fRec3[0] = ((fConst36 * ((fConst35 * fRec4[1]) + (fConst12 * fRec4[0]))) + (fConst14 * fRec3[1]));
478 fRec3[0] = ((fConst95 * ((fConst35 * fRec4[1]) + (fConst12 * fRec4[0]))) + (fConst14 * fRec3[1]));
477479 double fTemp34 = (fRec55[1] - 2.5e+02);
478480 fVec13[0] = fTemp34;
479481 fRec56[0] = ((fConst18 * (fVec13[0] + fVec13[1])) + (fConst17 * fRec56[1]));
480482 fRec55[0] = Ftube2(1, (fRec56[0] + fTemp33));
481 fRec54[0] = ((fConst36 * ((fConst35 * fRec55[1]) + (fConst12 * fRec55[0]))) + (fConst14 * fRec54[1]));
483 fRec54[0] = ((fConst95 * ((fConst35 * fRec55[1]) + (fConst12 * fRec55[0]))) + (fConst14 * fRec54[1]));
482484 double fTemp35 = (min(0.7, fRec54[0]) + max(-0.75, fRec3[0]));
483485 fVec14[0] = fTemp35;
484 fRec2[0] = (fConst96 * ((fVec14[2] + (fVec14[0] + (fConst95 * fVec14[1]))) + ((fConst11 * fRec2[2]) + (fConst9 * fRec2[1]))));
485 fRec1[0] = (fConst98 * ((fRec2[2] + (fRec2[0] + (fConst97 * fRec2[1]))) + ((fConst7 * fRec1[2]) + (fConst5 * fRec1[1]))));
486 fRec0[0] = (fConst100 * ((fRec1[2] + (fRec1[0] + (fConst99 * fRec1[1]))) + ((fConst3 * fRec0[2]) + (fConst1 * fRec0[1]))));
486 fRec2[0] = (fConst97 * ((fVec14[2] + (fVec14[0] + (fConst96 * fVec14[1]))) + ((fConst11 * fRec2[2]) + (fConst9 * fRec2[1]))));
487 fRec1[0] = (fConst99 * ((fRec2[2] + (fRec2[0] + (fConst98 * fRec2[1]))) + ((fConst7 * fRec1[2]) + (fConst5 * fRec1[1]))));
488 fRec0[0] = (fConst101 * ((fRec1[2] + (fRec1[0] + (fConst100 * fRec1[1]))) + ((fConst3 * fRec0[2]) + (fConst1 * fRec0[1]))));
487489 output0[i] = (FAUSTFLOAT)fRec0[0];
488490 // post processing
489491 fRec0[2] = fRec0[1]; fRec0[1] = fRec0[0];
4545 double fConst34;
4646 double fRec19[2];
4747 FAUSTFLOAT& fslider2 = get_alias("gxdistortion.wet_dry");
48 double fRec22[2];
4849 double fRec18[3];
4950 double fVec1[2];
5051 double fConst35;
6768 double fConst46;
6869 double fConst47;
6970 double fConst48;
70 double fRec27[2];
71 double fRec26[3];
71 double fRec28[2];
72 double fRec27[3];
7273 double fVec2[2];
7374 double fConst49;
74 double fRec25[2];
75 double fRec24[3];
75 double fRec26[2];
76 double fRec25[3];
7677 double fVec3[2];
7778 double fConst50;
7879 double fConst51;
79 double fRec23[2];
80 double fRec22[3];
80 double fRec24[2];
81 double fRec23[3];
8182 double fConst52;
82 double fRec29[2];
83 double fRec28[3];
83 double fRec30[2];
84 double fRec29[3];
8485 double fConst53;
85 double fRec32[2];
86 double fRec33[2];
87 double fRec32[3];
88 double fConst54;
8689 double fRec31[3];
87 double fConst54;
88 double fRec30[3];
8990 double fVec4[2];
9091 double fConst55;
9192 double fRec12[2];
9495 double fConst58;
9596 double fVec5[2];
9697 double fConst59;
97 double fRec33[2];
98 double fRec34[2];
99 double fRec35[2];
98100 double fRec11[2];
99101 double fConst60;
100102 double fRec10[2];
103105 double fConst63;
104106 double fVec6[2];
105107 double fConst64;
108 double fRec38[2];
109 double fRec37[2];
106110 double fRec36[2];
107 double fRec35[2];
108 double fRec34[2];
109111 double fRec9[2];
110112 double fVec7[2];
111113 double fConst65;
112114 double fRec7[2];
113115 double fVec8[2];
114 double fRec37[2];
116 double fRec39[2];
115117 double fRec6[2];
116118 double fRec5[2];
117119 double fConst66;
119121 double fConst68;
120122 double fVec9[2];
121123 double fConst69;
124 double fRec42[2];
125 double fRec41[2];
122126 double fRec40[2];
123 double fRec39[2];
124 double fRec38[2];
125127 double fRec4[2];
126128 double fRec3[2];
127129 double fVec10[2];
128 double fRec41[2];
130 double fRec43[2];
129131 double fRec2[2];
130132 double fRec1[2];
131133 int fSamplingFreq;
175177 for (int i=0; i<2; i++) fRec20[i] = 0;
176178 fConst34 = (0.009000000000000008 / fSamplingFreq);
177179 for (int i=0; i<2; i++) fRec19[i] = 0;
180 for (int i=0; i<2; i++) fRec22[i] = 0;
178181 for (int i=0; i<3; i++) fRec18[i] = 0;
179182 for (int i=0; i<2; i++) fVec1[i] = 0;
180183 fConst35 = (0 - fConst0);
196199 fConst46 = (1.0 / fConst45);
197200 fConst47 = (1 + fConst15);
198201 fConst48 = (0 - ((1 - fConst15) / fConst47));
199 for (int i=0; i<2; i++) fRec27[i] = 0;
200 for (int i=0; i<3; i++) fRec26[i] = 0;
202 for (int i=0; i<2; i++) fRec28[i] = 0;
203 for (int i=0; i<3; i++) fRec27[i] = 0;
201204 for (int i=0; i<2; i++) fVec2[i] = 0;
202205 fConst49 = (1.0 / (fConst47 * fConst23));
203 for (int i=0; i<2; i++) fRec25[i] = 0;
204 for (int i=0; i<3; i++) fRec24[i] = 0;
206 for (int i=0; i<2; i++) fRec26[i] = 0;
207 for (int i=0; i<3; i++) fRec25[i] = 0;
205208 for (int i=0; i<2; i++) fVec3[i] = 0;
206209 fConst50 = (0 - fConst9);
207210 fConst51 = (1.0 / (fConst42 * fConst45));
208 for (int i=0; i<2; i++) fRec23[i] = 0;
209 for (int i=0; i<3; i++) fRec22[i] = 0;
211 for (int i=0; i<2; i++) fRec24[i] = 0;
212 for (int i=0; i<3; i++) fRec23[i] = 0;
210213 fConst52 = (2 * (0 - fConst7));
211 for (int i=0; i<2; i++) fRec29[i] = 0;
212 for (int i=0; i<3; i++) fRec28[i] = 0;
214 for (int i=0; i<2; i++) fRec30[i] = 0;
215 for (int i=0; i<3; i++) fRec29[i] = 0;
213216 fConst53 = (0 - fConst15);
214 for (int i=0; i<2; i++) fRec32[i] = 0;
217 for (int i=0; i<2; i++) fRec33[i] = 0;
218 for (int i=0; i<3; i++) fRec32[i] = 0;
219 fConst54 = (2 * (0 - fConst13));
215220 for (int i=0; i<3; i++) fRec31[i] = 0;
216 fConst54 = (2 * (0 - fConst13));
217 for (int i=0; i<3; i++) fRec30[i] = 0;
218221 for (int i=0; i<2; i++) fVec4[i] = 0;
219222 fConst55 = (1.5848931924611136 / fConst4);
220223 for (int i=0; i<2; i++) fRec12[i] = 0;
223226 fConst58 = (0 - ((1 - fConst56) / fConst57));
224227 for (int i=0; i<2; i++) fVec5[i] = 0;
225228 fConst59 = (0.027 / fConst57);
226 for (int i=0; i<2; i++) fRec33[i] = 0;
229 for (int i=0; i<2; i++) fRec34[i] = 0;
230 for (int i=0; i<2; i++) fRec35[i] = 0;
227231 for (int i=0; i<2; i++) fRec11[i] = 0;
228232 fConst60 = (0.025 / fConst1);
229233 for (int i=0; i<2; i++) fRec10[i] = 0;
232236 fConst63 = (0 - ((1 - fConst61) / fConst62));
233237 for (int i=0; i<2; i++) fVec6[i] = 0;
234238 fConst64 = (0.015 / fConst62);
239 for (int i=0; i<2; i++) fRec38[i] = 0;
240 for (int i=0; i<2; i++) fRec37[i] = 0;
235241 for (int i=0; i<2; i++) fRec36[i] = 0;
236 for (int i=0; i<2; i++) fRec35[i] = 0;
237 for (int i=0; i<2; i++) fRec34[i] = 0;
238242 for (int i=0; i<2; i++) fRec9[i] = 0;
239243 for (int i=0; i<2; i++) fVec7[i] = 0;
240244 fConst65 = (1.0 / fConst4);
241245 for (int i=0; i<2; i++) fRec7[i] = 0;
242246 for (int i=0; i<2; i++) fVec8[i] = 0;
243 for (int i=0; i<2; i++) fRec37[i] = 0;
247 for (int i=0; i<2; i++) fRec39[i] = 0;
244248 for (int i=0; i<2; i++) fRec6[i] = 0;
245249 for (int i=0; i<2; i++) fRec5[i] = 0;
246250 fConst66 = (1.0 / tan((609.4689747964198 / fSamplingFreq)));
248252 fConst68 = (0 - ((1 - fConst66) / fConst67));
249253 for (int i=0; i<2; i++) fVec9[i] = 0;
250254 fConst69 = (0.0082 / fConst67);
255 for (int i=0; i<2; i++) fRec42[i] = 0;
256 for (int i=0; i<2; i++) fRec41[i] = 0;
251257 for (int i=0; i<2; i++) fRec40[i] = 0;
252 for (int i=0; i<2; i++) fRec39[i] = 0;
253 for (int i=0; i<2; i++) fRec38[i] = 0;
254258 for (int i=0; i<2; i++) fRec4[i] = 0;
255259 for (int i=0; i<2; i++) fRec3[i] = 0;
256260 for (int i=0; i<2; i++) fVec10[i] = 0;
257 for (int i=0; i<2; i++) fRec41[i] = 0;
261 for (int i=0; i<2; i++) fRec43[i] = 0;
258262 for (int i=0; i<2; i++) fRec2[i] = 0;
259263 for (int i=0; i<2; i++) fRec1[i] = 0;
260264 }
264268 double fSlow0 = (0.0010000000000000009 * pow(10,(0.05 * fslider0)));
265269 double fSlow1 = (0.0010000000000000009 * pow(10,(0.05 * fslider1)));
266270 double fSlow2 = fslider2;
267 double fSlow3 = (0.00024937655860349125 * fSlow2);
271 double fSlow3 = (1.000000000000001e-05 * fSlow2);
268272 double fSlow4 = fslider3;
269273 double fSlow5 = pow(1e+01,(0.8 * fSlow4));
270274 double fSlow6 = pow(1e+01,(2 * fSlow4));
273277 double fSlow9 = pow(1e+01,(1.2 * fSlow4));
274278 double fSlow10 = (2 * (fSlow4 - 0.5));
275279 double fSlow11 = (1 - max(0, (0 - fSlow10)));
276 double fSlow12 = (1 - (0.01 * fSlow2));
277 double fSlow13 = (0.024937655860349125 * fSlow12);
280 double fSlow12 = (0.024937655860349125 * (1 - max(0, fSlow10)));
281 double fSlow13 = (0.0010000000000000009 * (1 - (0.01 * fSlow2)));
278282 double fSlow14 = (1.25 * fSlow4);
279 double fSlow15 = (0.00024937655860349125 * (fSlow2 * (1 - max(0, fSlow10))));
280283 for (int i=0; i<count; i++) {
281284 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
282285 fRec8[0] = (fSlow1 + (0.999 * fRec8[1]));
299302 double fTemp12 = max(-600, fTemp11);
300303 double fTemp13 = (0 - fTemp12);
301304 double fTemp14 = (((int((fabs(fTemp11) > 0.0001)))?((int((fTemp12 < -50)))?(exp(fTemp12) * fTemp13):(fTemp12 / (1 - exp(fTemp13)))):(1 + (fTemp10 * (20.05 + (134.00083333333336 * fTemp10))))) - ((int((fabs(fTemp7) > 0.0001)))?((int((fTemp8 < -50)))?(exp(fTemp8) * fTemp9):(fTemp8 / (1 - exp(fTemp9)))):(1 + (fTemp6 * (20.05 + (134.00083333333336 * fTemp6))))));
302 double fTemp15 = (fSlow3 * fTemp14);
305 fRec22[0] = (fSlow3 + (0.999 * fRec22[1]));
306 double fTemp15 = (0.024937655860349125 * (fRec22[0] * fTemp14));
303307 fRec18[0] = (fTemp15 - (fConst32 * ((fConst30 * fRec18[2]) + (fConst28 * fRec18[1]))));
304308 double fTemp16 = (fRec18[2] + (fRec18[0] + (2 * fRec18[1])));
305309 fVec1[0] = fTemp16;
309313 fRec14[0] = ((fConst24 * (((fConst19 * fRec15[0]) + (fConst39 * fRec15[1])) + (fConst19 * fRec15[2]))) - (fConst17 * ((fConst16 * fRec14[2]) + fTemp1)));
310314 fRec13[0] = ((fRec14[2] + (fConst17 * (fTemp1 + (fConst16 * fRec14[0])))) - (fConst11 * ((fConst10 * fRec13[2]) + fTemp0)));
311315 double fTemp17 = max(-1, min(1, (fSlow5 * (fRec13[2] + (fConst11 * (fTemp0 + (fConst10 * fRec13[0])))))));
312 fRec27[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec27[1]));
313 fRec26[0] = (fRec27[0] - (fConst24 * ((fConst22 * fRec26[2]) + (fConst20 * fRec26[1]))));
314 double fTemp18 = (fRec26[2] + (fRec26[0] + (2 * fRec26[1])));
316 fRec28[0] = ((fConst38 * (fRec17[0] + fRec17[1])) + (fConst26 * fRec28[1]));
317 fRec27[0] = (fRec28[0] - (fConst24 * ((fConst22 * fRec27[2]) + (fConst20 * fRec27[1]))));
318 double fTemp18 = (fRec27[2] + (fRec27[0] + (2 * fRec27[1])));
315319 fVec2[0] = fTemp18;
316 fRec25[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec25[1]));
317 fRec24[0] = (fRec25[0] - (fConst46 * ((fConst44 * fRec24[2]) + (fConst14 * fRec24[1]))));
318 double fTemp19 = (fRec24[2] + (fRec24[0] + (2 * fRec24[1])));
320 fRec26[0] = ((fConst49 * (fVec2[0] + fVec2[1])) + (fConst48 * fRec26[1]));
321 fRec25[0] = (fRec26[0] - (fConst46 * ((fConst44 * fRec25[2]) + (fConst14 * fRec25[1]))));
322 double fTemp19 = (fRec25[2] + (fRec25[0] + (2 * fRec25[1])));
319323 fVec3[0] = fTemp19;
320 fRec23[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec23[1]));
321 fRec22[0] = (fRec23[0] - (fConst41 * ((fConst40 * fRec22[2]) + (fConst8 * fRec22[1]))));
322 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec22[0]) + (fConst52 * fRec22[1])) + (fConst7 * fRec22[2])))));
323 fRec29[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec29[1]));
324 fRec28[0] = (fRec29[0] - (fConst41 * ((fConst40 * fRec28[2]) + (fConst8 * fRec28[1]))));
325 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec28[2] + (fRec28[0] + (2 * fRec28[1]))))));
326 double fTemp22 = (fConst8 * fRec30[1]);
327 fRec32[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec32[1]));
328 fRec31[0] = (fRec32[0] - (fConst46 * ((fConst44 * fRec31[2]) + (fConst14 * fRec31[1]))));
329 fRec30[0] = ((fConst46 * (((fConst13 * fRec31[0]) + (fConst54 * fRec31[1])) + (fConst13 * fRec31[2]))) - (fConst11 * ((fConst10 * fRec30[2]) + fTemp22)));
330 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec30[2] + (fConst11 * (fTemp22 + (fConst10 * fRec30[0])))))));
324 fRec24[0] = ((fConst51 * ((fConst50 * fVec3[1]) + (fConst9 * fVec3[0]))) + (fConst43 * fRec24[1]));
325 fRec23[0] = (fRec24[0] - (fConst41 * ((fConst40 * fRec23[2]) + (fConst8 * fRec23[1]))));
326 double fTemp20 = max(-1, min(1, (fSlow7 * (((fConst7 * fRec23[0]) + (fConst52 * fRec23[1])) + (fConst7 * fRec23[2])))));
327 fRec30[0] = ((fConst51 * (fVec3[0] + fVec3[1])) + (fConst43 * fRec30[1]));
328 fRec29[0] = (fRec30[0] - (fConst41 * ((fConst40 * fRec29[2]) + (fConst8 * fRec29[1]))));
329 double fTemp21 = max(-1, min(1, (fSlow8 * (fRec29[2] + (fRec29[0] + (2 * fRec29[1]))))));
330 double fTemp22 = (fConst8 * fRec31[1]);
331 fRec33[0] = ((fConst49 * ((fConst53 * fVec2[1]) + (fConst15 * fVec2[0]))) + (fConst48 * fRec33[1]));
332 fRec32[0] = (fRec33[0] - (fConst46 * ((fConst44 * fRec32[2]) + (fConst14 * fRec32[1]))));
333 fRec31[0] = ((fConst46 * (((fConst13 * fRec32[0]) + (fConst54 * fRec32[1])) + (fConst13 * fRec32[2]))) - (fConst11 * ((fConst10 * fRec31[2]) + fTemp22)));
334 double fTemp23 = max(-1, min(1, (fSlow9 * (fRec31[2] + (fConst11 * (fTemp22 + (fConst10 * fRec31[0])))))));
331335 double fTemp24 = (((fTemp23 * (1 - (0.3333333333333333 * faustpower<2>(fTemp23)))) + ((fTemp21 * (1 - (0.3333333333333333 * faustpower<2>(fTemp21)))) + (0.841395141645195 * (fTemp20 * (1 - (0.3333333333333333 * faustpower<2>(fTemp20))))))) + (0.7943282347242815 * (fTemp17 * (1 - (0.3333333333333333 * faustpower<2>(fTemp17))))));
332336 fVec4[0] = fTemp24;
333337 fRec12[0] = ((fConst55 * (fVec4[0] + fVec4[1])) + (fConst5 * fRec12[1]));
334338 double fTemp25 = (fRec11[1] - 2.5e+02);
335339 fVec5[0] = fTemp25;
336 fRec33[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec33[1]));
340 fRec34[0] = ((fConst59 * (fVec5[0] + fVec5[1])) + (fConst58 * fRec34[1]));
337341 double fTemp26 = max(-1, min(1, (fSlow6 * max(-0.7, min(0.7, fTemp15)))));
338 fRec11[0] = Ftube(0, ((fTemp14 * (fSlow15 + (fSlow12 * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((fSlow13 * fTemp14)))) - 0.024937655860349125)))))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec33[0] + (fSlow11 * fRec12[0])))));
342 fRec35[0] = (fSlow13 + (0.999 * fRec35[1]));
343 fRec11[0] = Ftube(0, ((fTemp14 * ((fRec35[0] * (0.024937655860349125 + (fSlow14 * ((0.0997506234413965 - (0.0997506234413965 * fabs((0.024937655860349125 * (fRec35[0] * fTemp14))))) - 0.024937655860349125)))) + (fSlow12 * fRec22[0]))) + ((0.5 * (fTemp26 * (1 - (0.3333333333333333 * faustpower<2>(fTemp26))))) + (fRec34[0] + (fSlow11 * fRec12[0])))));
339344 fRec10[0] = ((fConst60 * ((fConst35 * fRec11[1]) + (fConst0 * fRec11[0]))) + (fConst2 * fRec10[1]));
340 double fTemp27 = (fRec35[1] - 2.5e+02);
345 double fTemp27 = (fRec37[1] - 2.5e+02);
341346 fVec6[0] = fTemp27;
342 fRec36[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec36[1]));
343 fRec35[0] = Ftube(1, (fRec36[0] + fRec9[1]));
344 fRec34[0] = ((fConst60 * ((fConst35 * fRec35[1]) + (fConst0 * fRec35[0]))) + (fConst2 * fRec34[1]));
345 fRec9[0] = (fRec34[0] - fRec10[0]);
347 fRec38[0] = ((fConst64 * (fVec6[0] + fVec6[1])) + (fConst63 * fRec38[1]));
348 fRec37[0] = Ftube(1, (fRec38[0] + fRec9[1]));
349 fRec36[0] = ((fConst60 * ((fConst35 * fRec37[1]) + (fConst0 * fRec37[0]))) + (fConst2 * fRec36[1]));
350 fRec9[0] = (fRec36[0] - fRec10[0]);
346351 double fTemp28 = (fRec9[0] * fRec8[0]);
347352 fVec7[0] = fTemp28;
348353 fRec7[0] = ((fConst65 * (fVec7[0] + fVec7[1])) + (fConst5 * fRec7[1]));
349354 double fTemp29 = (fRec6[1] - 2.5e+02);
350355 fVec8[0] = fTemp29;
351 fRec37[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec37[1]));
352 fRec6[0] = Ftube(1, (fRec37[0] + fRec7[0]));
356 fRec39[0] = ((fConst64 * (fVec8[0] + fVec8[1])) + (fConst63 * fRec39[1]));
357 fRec6[0] = Ftube(1, (fRec39[0] + fRec7[0]));
353358 fRec5[0] = ((fConst60 * ((fConst35 * fRec6[1]) + (fConst0 * fRec6[0]))) + (fConst2 * fRec5[1]));
354 double fTemp30 = (fRec39[1] - 2.5e+02);
359 double fTemp30 = (fRec41[1] - 2.5e+02);
355360 fVec9[0] = fTemp30;
356 fRec40[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec40[1]));
357 fRec39[0] = Ftube(1, (fRec40[0] + fRec4[1]));
358 fRec38[0] = ((fConst60 * ((fConst35 * fRec39[1]) + (fConst0 * fRec39[0]))) + (fConst2 * fRec38[1]));
359 fRec4[0] = (fRec38[0] + fRec5[0]);
361 fRec42[0] = ((fConst69 * (fVec9[0] + fVec9[1])) + (fConst68 * fRec42[1]));
362 fRec41[0] = Ftube(1, (fRec42[0] + fRec4[1]));
363 fRec40[0] = ((fConst60 * ((fConst35 * fRec41[1]) + (fConst0 * fRec41[0]))) + (fConst2 * fRec40[1]));
364 fRec4[0] = (fRec40[0] + fRec5[0]);
360365 fRec3[0] = ((fConst65 * (fRec4[0] + fRec4[1])) + (fConst5 * fRec3[1]));
361366 double fTemp31 = (fRec2[1] - 2.5e+02);
362367 fVec10[0] = fTemp31;
363 fRec41[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec41[1]));
364 fRec2[0] = Ftube(1, (fRec41[0] + fRec3[0]));
368 fRec43[0] = ((fConst69 * (fVec10[0] + fVec10[1])) + (fConst68 * fRec43[1]));
369 fRec2[0] = Ftube(1, (fRec43[0] + fRec3[0]));
365370 fRec1[0] = ((fConst60 * ((fConst35 * fRec2[1]) + (fConst0 * fRec2[0]))) + (fConst2 * fRec1[1]));
366371 output0[i] = (FAUSTFLOAT)(fRec1[0] * fRec0[0]);
367372 // post processing
368373 fRec1[1] = fRec1[0];
369374 fRec2[1] = fRec2[0];
370 fRec41[1] = fRec41[0];
375 fRec43[1] = fRec43[0];
371376 fVec10[1] = fVec10[0];
372377 fRec3[1] = fRec3[0];
373378 fRec4[1] = fRec4[0];
374 fRec38[1] = fRec38[0];
375 fRec39[1] = fRec39[0];
376379 fRec40[1] = fRec40[0];
380 fRec41[1] = fRec41[0];
381 fRec42[1] = fRec42[0];
377382 fVec9[1] = fVec9[0];
378383 fRec5[1] = fRec5[0];
379384 fRec6[1] = fRec6[0];
380 fRec37[1] = fRec37[0];
385 fRec39[1] = fRec39[0];
381386 fVec8[1] = fVec8[0];
382387 fRec7[1] = fRec7[0];
383388 fVec7[1] = fVec7[0];
384389 fRec9[1] = fRec9[0];
385 fRec34[1] = fRec34[0];
386 fRec35[1] = fRec35[0];
387390 fRec36[1] = fRec36[0];
391 fRec37[1] = fRec37[0];
392 fRec38[1] = fRec38[0];
388393 fVec6[1] = fVec6[0];
389394 fRec10[1] = fRec10[0];
390395 fRec11[1] = fRec11[0];
391 fRec33[1] = fRec33[0];
396 fRec35[1] = fRec35[0];
397 fRec34[1] = fRec34[0];
392398 fVec5[1] = fVec5[0];
393399 fRec12[1] = fRec12[0];
394400 fVec4[1] = fVec4[0];
395 fRec30[2] = fRec30[1]; fRec30[1] = fRec30[0];
396401 fRec31[2] = fRec31[1]; fRec31[1] = fRec31[0];
397 fRec32[1] = fRec32[0];
398 fRec28[2] = fRec28[1]; fRec28[1] = fRec28[0];
399 fRec29[1] = fRec29[0];
400 fRec22[2] = fRec22[1]; fRec22[1] = fRec22[0];
401 fRec23[1] = fRec23[0];
402 fRec32[2] = fRec32[1]; fRec32[1] = fRec32[0];
403 fRec33[1] = fRec33[0];
404 fRec29[2] = fRec29[1]; fRec29[1] = fRec29[0];
405 fRec30[1] = fRec30[0];
406 fRec23[2] = fRec23[1]; fRec23[1] = fRec23[0];
407 fRec24[1] = fRec24[0];
402408 fVec3[1] = fVec3[0];
403 fRec24[2] = fRec24[1]; fRec24[1] = fRec24[0];
404 fRec25[1] = fRec25[0];
409 fRec25[2] = fRec25[1]; fRec25[1] = fRec25[0];
410 fRec26[1] = fRec26[0];
405411 fVec2[1] = fVec2[0];
406 fRec26[2] = fRec26[1]; fRec26[1] = fRec26[0];
407 fRec27[1] = fRec27[0];
412 fRec27[2] = fRec27[1]; fRec27[1] = fRec27[0];
413 fRec28[1] = fRec28[0];
408414 fRec13[2] = fRec13[1]; fRec13[1] = fRec13[0];
409415 fRec14[2] = fRec14[1]; fRec14[1] = fRec14[0];
410416 fRec15[2] = fRec15[1]; fRec15[1] = fRec15[0];
412418 fRec17[1] = fRec17[0];
413419 fVec1[1] = fVec1[0];
414420 fRec18[2] = fRec18[1]; fRec18[1] = fRec18[0];
421 fRec22[1] = fRec22[0];
415422 fRec19[1] = fRec19[0];
416423 fRec20[1] = fRec20[0];
417424 IOTA = IOTA+1;
4242 void compute(int count, float *input0, float *output0, float *output1)
4343 {
4444 double fSlow0 = fslider0;
45 double fSlow1 = (1 - (0.01 * fSlow0));
46 double fSlow2 = (0.002 * fSlow0);
45 double fSlow1 = (1 - max(0, fSlow0));
46 double fSlow2 = (1 - max(0, (0 - fSlow0)));
4747 int iSlow3 = int(fcheckbox0);
4848 for (int i=0; i<count; i++) {
4949 double fTemp0 = (double)input0[i];
50 double fTemp1 = (fSlow2 * fTemp0);
50 double fTemp1 = (0.2 * fTemp0);
5151 double fTemp2 = (fTemp1 + (0.805 * fRec6[1]));
5252 fVec0[IOTA&1023] = fTemp2;
5353 fRec6[0] = fVec0[(IOTA-901)&1023];
7676 fVec6[0] = fTemp8;
7777 fRec0[0] = fVec6[11];
7878 double fRec1 = (0 - (0.7 * fVec6[0]));
79 double fTemp9 = ((iSlow3)?((fRec1 + fRec0[1]) + (fSlow1 * fTemp0)):fTemp0);
79 double fTemp9 = ((iSlow3)?((fSlow2 * (fRec1 + fRec0[1])) + (fSlow1 * fTemp0)):fTemp0);
8080 output0[i] = (FAUSTFLOAT)fTemp9;
8181 output1[i] = (FAUSTFLOAT)fTemp9;
8282 // post processing
9696 RegisterParams::RegisterParams()
9797 {
9898 registerVar("amp.feed_on_off","reverb_on_of","B","",&fcheckbox0, 0.0, 0.0, 1.0, 1.0);
99 registerVar("amp.wet_dry","wet/dry","S","",&fslider0, 1e+02, 0.0, 1e+02, 1.0);
99 registerVar("amp.wet_dry","","S","",&fslider0, 0.0, -1.0, 1.0, 0.01);
100100 registerInit("amp", init);
101101 }
102102
0 namespace presence_level {
1 // generated from file '../src/faust/presence_level.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("con.Level");
4 int fSamplingFreq;
5
6 void init(int samplingFreq)
7 {
8 fSamplingFreq = samplingFreq;
9 }
10
11 void compute(int count, float *input0, float *output0)
12 {
13 double fSlow0 = fslider0;
14 for (int i=0; i<count; i++) {
15 output0[i] = (FAUSTFLOAT)(fSlow0 * (double)input0[i]);
16 }
17 }
18
19 static struct RegisterParams { RegisterParams(); } RegisterParams;
20 RegisterParams::RegisterParams()
21 {
22 registerInit("con", init);
23 }
24
25 } // end namespace presence_level
0 namespace tonestack_ampeg_rev {
1 // generated from file '../src/faust/tonestack_ampeg_rev.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (4.7047000000000006e-07 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (5.107200000000001e-06 + ((0.00011849250000000002 * fSlow2) + (fSlow0 * (((1.1761750000000001e-05 * fSlow2) - 4.217780000000001e-06) - fSlow1))));
27 double fSlow4 = ((4.1125e-10 * fSlow2) - (1.645e-11 * fSlow0));
28 double fSlow5 = (2.9375000000000002e-09 * fSlow2);
29 double fSlow6 = (1.175e-10 + (fSlow5 + (fSlow0 * (fSlow4 - 1.0105e-10))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00047000000000000004 * fSlow0);
32 double fSlow9 = (0.025025000000000002 * fSlow2);
33 double fSlow10 = (fConst0 * (0.015726 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (1.645e-11 + fSlow4)) + (fSlow16 * ((1.175e-10 - (1.175e-10 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (3.9700000000000005e-08 + (((3.675000000000001e-07 * fSlow16) + (fSlow0 * (4.8222e-07 - fSlow1))) + (fSlow2 * (9.925e-07 + (1.1761750000000001e-05 * fSlow0)))));
43 double fSlow20 = (0.001001 + (fSlow9 + (fSlow8 + (2.5e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_ampeg_rev
0 namespace tonestack_bogner {
1 // generated from file '../src/faust/tonestack_bogner.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (7.790052600000002e-07 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (1.4106061200000003e-06 + ((3.7475640000000014e-05 * fSlow2) + (fSlow0 * (((2.3606220000000006e-05 * fSlow2) - 3.2220474e-07) - fSlow1))));
27 double fSlow4 = ((1.5406083e-09 * fSlow2) - (5.08400739e-11 * fSlow0));
28 double fSlow5 = (1.9775250000000004e-09 * fSlow2);
29 double fSlow6 = (6.5258325e-11 + (fSlow5 + (fSlow0 * (fSlow4 - 1.4418251099999996e-11))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.001551 * fSlow0);
32 double fSlow9 = (0.015220000000000001 * fSlow2);
33 double fSlow10 = (fConst0 * (0.0037192600000000003 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (5.08400739e-11 + fSlow4)) + (fSlow16 * ((6.5258325e-11 - (6.5258325e-11 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (5.018112e-08 + (((1.7391e-07 * fSlow16) + (fSlow0 * (8.643102600000002e-07 - fSlow1))) + (fSlow2 * (1.5206400000000001e-06 + (2.3606220000000006e-05 * fSlow0)))));
43 double fSlow20 = (0.0005022600000000001 + (fSlow9 + (fSlow8 + (5.4999999999999995e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_bogner
0 namespace tonestack_crunch {
1 // generated from file '../src/faust/tonestack_crunch.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (2.2193400000000003e-07 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (2.7073879999999998e-06 + ((4.9553415999999996e-05 * fSlow2) + (fSlow0 * (((4.882548000000001e-06 * fSlow2) - 1.964318e-06) - fSlow1))));
27 double fSlow4 = ((3.4212992000000004e-10 * fSlow2) - (1.5551360000000004e-11 * fSlow0));
28 double fSlow5 = (2.3521432000000003e-09 * fSlow2);
29 double fSlow6 = (1.0691560000000001e-10 + (fSlow5 + (fSlow0 * (fSlow4 - 9.136424e-11))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00047000000000000004 * fSlow0);
32 double fSlow9 = (0.0103884 * fSlow2);
33 double fSlow10 = (fConst0 * (0.009920600000000002 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (1.5551360000000004e-11 + fSlow4)) + (fSlow16 * ((1.0691560000000001e-10 - (1.0691560000000001e-10 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (4.3428e-08 + (((4.5496e-07 * fSlow16) + (fSlow0 * (2.4468200000000005e-07 - fSlow1))) + (fSlow2 * (9.55416e-07 + (4.882548000000001e-06 * fSlow0)))));
43 double fSlow20 = (0.00047220000000000004 + (fSlow9 + (fSlow8 + (4.84e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_crunch
0 namespace tonestack_fender_blues {
1 // generated from file '../src/faust/tonestack_fender_blues.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (3.059375000000001e-07 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (1.5468750000000003e-06 + ((1.2718750000000003e-05 * fSlow2) + (fSlow0 * (((3.0593750000000007e-06 * fSlow2) - 8.696875000000003e-07) - fSlow1))));
27 double fSlow4 = ((2.646875e-10 * fSlow2) - (2.6468750000000002e-11 * fSlow0));
28 double fSlow5 = (7.5625e-10 * fSlow2);
29 double fSlow6 = (7.562500000000001e-11 + (fSlow5 + (fSlow0 * (fSlow4 - 4.915625000000001e-11))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00055 * fSlow0);
32 double fSlow9 = (0.005562500000000001 * fSlow2);
33 double fSlow10 = (fConst0 * (0.005018750000000001 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (2.6468750000000002e-11 + fSlow4)) + (fSlow16 * ((7.562500000000001e-11 - (7.562500000000001e-11 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (6.1875e-08 + (((2.75e-07 * fSlow16) + (fSlow0 * (3.403125000000001e-07 - fSlow1))) + (fSlow2 * (6.1875e-07 + (3.0593750000000007e-06 * fSlow0)))));
43 double fSlow20 = (0.00055625 + (fSlow9 + (fSlow8 + (6.25e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_fender_blues
0 namespace tonestack_fender_default {
1 // generated from file '../src/faust/tonestack_fender_default.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (4.7117500000000004e-07 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (5.718000000000001e-06 + ((0.00011998125000000002 * fSlow2) + (fSlow0 * (((1.1779375000000001e-05 * fSlow2) - 4.199450000000001e-06) - fSlow1))));
27 double fSlow4 = ((1.0281250000000001e-09 * fSlow2) - (4.1125e-11 * fSlow0));
28 double fSlow5 = (7.343750000000001e-09 * fSlow2);
29 double fSlow6 = (2.9375e-10 + (fSlow5 + (fSlow0 * (fSlow4 - 2.52625e-10))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00047000000000000004 * fSlow0);
32 double fSlow9 = (0.0250625 * fSlow2);
33 double fSlow10 = (fConst0 * (0.015765 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (4.1125e-11 + fSlow4)) + (fSlow16 * ((2.9375e-10 - (2.9375e-10 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (9.925e-08 + (((9.187500000000001e-07 * fSlow16) + (fSlow0 * (5.0055e-07 - fSlow1))) + (fSlow2 * (2.48125e-06 + (1.1779375000000001e-05 * fSlow0)))));
43 double fSlow20 = (0.0010025 + (fSlow9 + (fSlow8 + (6.25e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_fender_default
0 namespace tonestack_fender_deville {
1 // generated from file '../src/faust/tonestack_fender_deville.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (1.3784375e-06 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (8.396625e-06 + ((7.405375e-05 * fSlow2) + (fSlow0 * (((1.3784375000000003e-05 * fSlow2) - 5.7371875e-06) - fSlow1))));
27 double fSlow4 = ((1.3062500000000001e-09 * fSlow2) - (1.30625e-10 * fSlow0));
28 double fSlow5 = (4.468750000000001e-09 * fSlow2);
29 double fSlow6 = (4.46875e-10 + (fSlow5 + (fSlow0 * (fSlow4 - 3.1625e-10))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00055 * fSlow0);
32 double fSlow9 = (0.0250625 * fSlow2);
33 double fSlow10 = (fConst0 * (0.01842875 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (1.30625e-10 + fSlow4)) + (fSlow16 * ((4.46875e-10 - (4.46875e-10 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (2.55375e-07 + (((9.912500000000003e-07 * fSlow16) + (fSlow0 * (1.4128125e-06 - fSlow1))) + (fSlow2 * (2.5537500000000007e-06 + (1.3784375000000003e-05 * fSlow0)))));
43 double fSlow20 = (0.0025062500000000002 + (fSlow9 + (fSlow8 + (6.25e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_fender_deville
0 namespace tonestack_gibsen {
1 // generated from file '../src/faust/tonestack_gibsen.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (1.0607618000000002e-05 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (3.1187760000000004e-05 + ((0.00032604000000000004 * fSlow2) + (fSlow0 * (((0.00011284700000000001 * fSlow2) - 1.9801382e-05) - fSlow1))));
27 double fSlow4 = ((3.5814000000000013e-09 * fSlow2) - (3.3665160000000007e-10 * fSlow0));
28 double fSlow5 = (8.100000000000003e-09 * fSlow2);
29 double fSlow6 = (7.614000000000002e-10 + (fSlow5 + (fSlow0 * (fSlow4 - 4.247484000000001e-10))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00188 * fSlow0);
32 double fSlow9 = (0.060025 * fSlow2);
33 double fSlow10 = (fConst0 * (0.027267350000000003 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (3.3665160000000007e-10 + fSlow4)) + (fSlow16 * ((7.614000000000002e-10 - (7.614000000000002e-10 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (1.9176000000000002e-07 + (((5.400000000000001e-07 * fSlow16) + (fSlow0 * (1.0654618000000002e-05 - fSlow1))) + (fSlow2 * (2.0400000000000004e-06 + (0.00011284700000000001 * fSlow0)))));
43 double fSlow20 = (0.005642350000000001 + (fSlow9 + (fSlow8 + (2.5e-05 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_gibsen
0 namespace tonestack_groove {
1 // generated from file '../src/faust/tonestack_groove.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (2.3926056000000006e-07 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (1.1144196800000003e-06 + ((3.659304000000001e-05 * fSlow2) + (fSlow0 * (((1.0875480000000001e-05 * fSlow2) - 4.347578400000001e-07) - fSlow1))));
27 double fSlow4 = ((1.4413132800000006e-09 * fSlow2) - (3.1708892160000014e-11 * fSlow0));
28 double fSlow5 = (3.403100800000001e-09 * fSlow2);
29 double fSlow6 = (7.486821760000003e-11 + (fSlow5 + (fSlow0 * (fSlow4 - 4.315932544000001e-11))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00048400000000000006 * fSlow0);
32 double fSlow9 = (0.022470000000000004 * fSlow2);
33 double fSlow10 = (fConst0 * (0.00358974 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (3.1708892160000014e-11 + fSlow4)) + (fSlow16 * ((7.486821760000003e-11 - (7.486821760000003e-11 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (8.098288000000002e-08 + (((3.0937280000000007e-07 * fSlow16) + (fSlow0 * (2.893061600000001e-07 - fSlow1))) + (fSlow2 * (3.6810400000000007e-06 + (1.0875480000000001e-05 * fSlow0)))));
43 double fSlow20 = (0.00049434 + (fSlow9 + (fSlow8 + (0.0001034 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_groove
0 namespace tonestack_sovtek {
1 // generated from file '../src/faust/tonestack_sovtek.dsp'
2
3 FAUSTFLOAT& fslider0 = get_alias("amp.tonestack.Middle");
4 FAUSTFLOAT& fslider1 = get_alias("amp.tonestack.Bass");
5 double fConst0;
6 double fConst1;
7 double fConst2;
8 double fRec0[4];
9 FAUSTFLOAT& fslider2 = get_alias("amp.tonestack.Treble");
10 int fSamplingFreq;
11
12 void init(int samplingFreq)
13 {
14 fSamplingFreq = samplingFreq;
15 fConst0 = (2 * double(fSamplingFreq));
16 fConst1 = faustpower<2>(fConst0);
17 fConst2 = (3 * fConst0);
18 for (int i=0; i<4; i++) fRec0[i] = 0;
19 }
20
21 void compute(int count, float *input0, float *output0)
22 {
23 double fSlow0 = fslider0;
24 double fSlow1 = (4.9434000000000004e-08 * fSlow0);
25 double fSlow2 = exp((3.4 * (fslider1 - 1)));
26 double fSlow3 = (7.748796000000001e-07 + ((2.8889960000000004e-05 * fSlow2) + (fSlow0 * (((4.943400000000001e-06 * fSlow2) - 1.2634599999999999e-07) - fSlow1))));
27 double fSlow4 = ((1.2443156000000004e-09 * fSlow2) - (1.2443156000000002e-11 * fSlow0));
28 double fSlow5 = (5.345780000000001e-09 * fSlow2);
29 double fSlow6 = (5.345780000000001e-11 + (fSlow5 + (fSlow0 * (fSlow4 - 4.101464400000001e-11))));
30 double fSlow7 = (fConst0 * fSlow6);
31 double fSlow8 = (0.00022 * fSlow0);
32 double fSlow9 = (0.022470000000000004 * fSlow2);
33 double fSlow10 = (fConst0 * (0.0025277 + (fSlow9 + fSlow8)));
34 double fSlow11 = ((fSlow10 + (fConst1 * (fSlow7 - fSlow3))) - 1);
35 double fSlow12 = (fConst2 * fSlow6);
36 double fSlow13 = ((fConst1 * (fSlow3 + fSlow12)) - (3 + fSlow10));
37 double fSlow14 = ((fSlow10 + (fConst1 * (fSlow3 - fSlow12))) - 3);
38 double fSlow15 = (1.0 / (0 - (1 + (fSlow10 + (fConst1 * (fSlow3 + fSlow7))))));
39 double fSlow16 = fslider2;
40 double fSlow17 = ((fSlow0 * (1.2443156000000002e-11 + fSlow4)) + (fSlow16 * ((5.345780000000001e-11 - (5.345780000000001e-11 * fSlow0)) + fSlow5)));
41 double fSlow18 = (fConst2 * fSlow17);
42 double fSlow19 = (6.141960000000001e-08 + (((4.859800000000001e-07 * fSlow16) + (fSlow0 * (1.0113400000000001e-07 - fSlow1))) + (fSlow2 * (6.141960000000001e-06 + (4.943400000000001e-06 * fSlow0)))));
43 double fSlow20 = (0.00022470000000000001 + (fSlow9 + (fSlow8 + (0.00023500000000000002 * fSlow16))));
44 double fSlow21 = (fConst0 * fSlow20);
45 double fSlow22 = (fSlow21 + (fConst1 * (fSlow19 - fSlow18)));
46 double fSlow23 = (fConst0 * fSlow17);
47 double fSlow24 = (fSlow21 + (fConst1 * (fSlow23 - fSlow19)));
48 double fSlow25 = (fConst0 * (0 - fSlow20));
49 double fSlow26 = (fSlow25 + (fConst1 * (fSlow19 + fSlow18)));
50 double fSlow27 = (fSlow25 - (fConst1 * (fSlow19 + fSlow23)));
51 for (int i=0; i<count; i++) {
52 fRec0[0] = ((double)input0[i] - (fSlow15 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
53 output0[i] = (FAUSTFLOAT)(fSlow15 * ((fSlow27 * fRec0[0]) + ((fSlow26 * fRec0[1]) + ((fSlow24 * fRec0[3]) + (fSlow22 * fRec0[2])))));
54 // post processing
55 for (int i=3; i>0; i--) fRec0[i] = fRec0[i-1];
56 }
57 }
58
59 static struct RegisterParams { RegisterParams(); } RegisterParams;
60 RegisterParams::RegisterParams()
61 {
62 registerInit("amp.tonestack", init);
63 }
64
65 } // end namespace tonestack_sovtek
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * ---------------------------------------------------------------------------
18 *
19 * This is the 12AT7 tube table
20 * This file is part of the Guitarix Audio Engine
21 *
22 * ----------------------------------------------------------------------------
23 */
24
25 struct tabled tubetable6[] = {
26 { // Ri = 68k
27 -5,5,200, {
28 223.484971051,223.38189846,223.278606859,223.175096438,223.071367386,
29 222.967419894,222.863254153,222.758870355,222.654268692,222.549449358,
30 222.444412546,222.339158451,222.233687268,222.127999193,222.022094421,
31 221.915973151,221.809635579,221.703081904,221.596312324,221.489327039,
32 221.382126248,221.274710152,221.167078951,221.059232846,220.951172041,
33 220.842896736,220.734407134,220.62570344,220.516785857,220.407654588,
34 220.298309839,220.188751814,220.078980719,219.96899676,219.858800143,
35 219.748391075,219.637769762,219.526936413,219.415891235,219.304634436,
36 219.193166225,219.081486809,218.9695964,218.857495205,218.745183435,
37 218.6326613,218.519929009,218.406986775,218.293834807,218.180473316,
38 218.066902515,217.953122614,217.839133825,217.724936362,217.610530435,
39 217.495916257,217.381094042,217.266064002,217.150826349,217.035381299,
40 216.919729063,216.803869855,216.68780389,216.571531381,216.455052541,
41 216.338367587,216.22147673,216.104380187,215.987078171,215.869570897,
42 215.75185858,215.633941434,215.515819675,215.397493517,215.278963175,
43 215.160228865,215.041290801,214.922149198,214.802804272,214.683256238,
44 214.563505311,214.443551707,214.32339564,214.203037325,214.082476979,
45 213.961714816,213.840751051,213.719585899,213.598219576,213.476652297,
46 213.354884277,213.232915731,213.110746873,212.988377919,212.865809083,
47 212.74304058,212.620072625,212.496905433,212.373539217,212.249974193,
48 212.126210573,212.002248574,211.878088408,211.75373029,211.629174433,
49 211.504421051,211.379470357,211.254322565,211.128977889,211.003436541,
50 210.877698734,210.751764681,210.625634594,210.499308686,210.37278717,
51 210.246070256,210.119158158,209.992051086,209.864749253,209.737252869,
52 209.609562146,209.481677294,209.353598524,209.225326046,209.096860071,
53 208.968200809,208.839348469,208.710303261,208.581065394,208.451635077,
54 208.322012519,208.192197928,208.062191513,207.931993481,207.801604041,
55 207.671023398,207.540251762,207.409289338,207.278136334,207.146792955,
56 207.015259407,206.883535897,206.75162263,206.61951981,206.487227642,
57 206.354746332,206.222076083,206.089217099,205.956169583,205.82293374,
58 205.689509771,205.555897879,205.422098267,205.288111136,205.153936688,
59 205.019575125,204.885026646,204.750291453,204.615369746,204.480261724,
60 204.344967587,204.209487534,204.073821763,203.937970474,203.801933864,
61 203.66571213,203.52930547,203.392714081,203.255938159,203.1189779,
62 202.9818335,202.844505154,202.706993058,202.569297405,202.43141839,
63 202.293356206,202.155111047,202.016683105,201.878072574,201.739279645,
64 201.60030451,201.46114736,201.321808386,201.182287779,201.042585728,
65 200.902702422,200.762638052,200.622392806,200.481966872,200.341360438,
66 200.200573691,200.059606819,199.918460008,199.777133444,199.635627312,
67 199.493941798,199.352077087,199.210033363,199.067810809,198.92540961,
68 198.782829948,198.640072006,198.497135966,198.354022009,198.210730316,
69 198.067261068,197.923614446,197.779790629,197.635789796,197.491612126,
70 197.347257797,197.202726987,197.058019875,196.913136635,196.768077446,
71 196.622842482,196.477431919,196.331845933,196.186084697,196.040148386,
72 195.894037174,195.747751232,195.601290734,195.454655852,195.307846758,
73 195.160863622,195.013706614,194.866375906,194.718871667,194.571194065,
74 194.423343269,194.275319448,194.127122768,193.978753398,193.830211503,
75 193.681497249,193.532610803,193.383552329,193.234321992,193.084919955,
76 192.935346382,192.785601437,192.635685281,192.485598078,192.335339987,
77 192.18491117,192.034311788,191.883542,191.732601966,191.581491845,
78 191.430211795,191.278761974,191.127142539,190.975353646,190.823395453,
79 190.671268115,190.518971788,190.366506625,190.213872781,190.061070409,
80 189.908099664,189.754960697,189.60165366,189.448178705,189.294535983,
81 189.140725644,188.986747838,188.832602715,188.678290424,188.523811112,
82 188.369164928,188.214352019,188.059372531,187.904226611,187.748914404,
83 187.593436056,187.43779171,187.281981512,187.126005604,186.96986413,
84 186.813557231,186.65708505,186.500447728,186.343645406,186.186678223,
85 186.029546321,185.872249837,185.71478891,185.55716368,185.399374282,
86 185.241420854,185.083303532,184.925022452,184.766577751,184.607969561,
87 184.449198018,184.290263255,184.131165406,183.971904602,183.812480977,
88 183.652894661,183.493145785,183.33323448,183.173160876,183.012925102,
89 182.852527286,182.691967557,182.531246043,182.37036287,182.209318165,
90 182.048112054,181.886744663,181.725216116,181.563526537,181.401676051,
91 181.239664781,181.077492849,180.915160377,180.752667487,180.590014299,
92 180.427200936,180.264227515,180.101094157,179.93780098,179.774348102,
93 179.610735642,179.446963716,179.283032441,179.118941932,178.954692305,
94 178.790283676,178.625716158,178.460989865,178.29610491,178.131061407,
95 177.965859466,177.8004992,177.634980719,177.469304135,177.303469556,
96 177.137477092,176.971326852,176.805018943,176.638553475,176.471930553,
97 176.305150284,176.138212774,175.971118129,175.803866452,175.63645785,
98 175.468892424,175.301170279,175.133291517,174.965256239,174.797064548,
99 174.628716544,174.460212328,174.291551999,174.122735656,173.953763399,
100 173.784635325,173.615351532,173.445912117,173.276317175,173.106566804,
101 172.936661098,172.766600153,172.596384061,172.426012917,172.255486814,
102 172.084805844,171.9139701,171.742979672,171.571834651,171.400535128,
103 171.229081192,171.057472933,170.885710438,170.713793796,170.541723094,
104 170.36949842,170.197119859,170.024587497,169.851901419,169.679061711,
105 169.506068455,169.332921736,169.159621635,168.986168237,168.812561622,
106 168.638801872,168.464889067,168.290823288,168.116604613,167.942233123,
107 167.767708895,167.593032007,167.418202536,167.24322056,167.068086154,
108 166.892799395,166.717360356,166.541769112,166.366025738,166.190130307,
109 166.014082891,165.837883563,165.661532395,165.485029456,165.308374819,
110 165.131568552,164.954610726,164.777501409,164.60024067,164.422828575,
111 164.245265193,164.06755059,163.889684831,163.711667983,163.533500109,
112 163.355181276,163.176711545,162.998090981,162.819319646,162.640397602,
113 162.46132491,162.282101632,162.102727828,161.923203558,161.743528881,
114 161.563703855,161.383728539,161.20360299,161.023327265,160.842901421,
115 160.662325513,160.481599598,160.300723728,160.11969796,159.938522345,
116 159.757196938,159.57572179,159.394096954,159.212322481,159.030398422,
117 158.848324827,158.666101745,158.483729225,158.301207317,158.118536068,
118 157.935715525,157.752745735,157.569626745,157.3863586,157.202941345,
119 157.019375024,156.835659683,156.651795363,156.467782109,156.283619962,
120 156.099308963,155.914849155,155.730240578,155.545483271,155.360577274,
121 155.175522626,154.990319366,154.80496753,154.619467157,154.433818283,
122 154.248020943,154.062075174,153.87598101,153.689738486,153.503347636,
123 153.316808491,153.130121087,152.943285453,152.756301622,152.569169625,
124 152.381889493,152.194461254,152.006884938,151.819160575,151.631288191,
125 151.443267815,151.255099474,151.066783193,150.878318999,150.689706918,
126 150.500946973,150.312039189,150.122983589,149.933780197,149.744429035,
127 149.554930124,149.365283487,149.175489143,148.985547114,148.795457417,
128 148.605220074,148.414835102,148.224302518,148.033622341,147.842794587,
129 147.651819272,147.460696413,147.269426023,147.078008117,146.88644271,
130 146.694729815,146.502869444,146.31086161,146.118706324,145.926403598,
131 145.733953442,145.541355866,145.348610879,145.15571849,144.962678708,
132 144.76949154,144.576156994,144.382675075,144.18904579,143.995269144,
133 143.801345143,143.60727379,143.413055089,143.218689043,143.024175656,
134 142.829514928,142.634706862,142.439751458,142.244648717,142.049398638,
135 141.854001221,141.658456465,141.462764367,141.266924924,141.070938135,
136 140.874803995,140.678522501,140.482093647,140.285517428,140.088793838,
137 139.891922871,139.694904521,139.497738779,139.300425637,139.102965087,
138 138.905357119,138.707601724,138.509698892,138.311648611,138.113450871,
139 137.915105658,137.716612961,137.517972767,137.319185062,137.120249831,
140 136.921167061,136.721936735,136.522558838,136.323033353,136.123360263,
141 135.923539552,135.7235712,135.52345519,135.323191502,135.122780116,
142 134.922221012,134.72151417,134.520659568,134.319657184,134.118506996,
143 133.917208981,133.715763115,133.514169375,133.312427735,133.110538172,
144 132.908500658,132.706315168,132.503981676,132.301500154,132.098870574,
145 131.896092908,131.693167128,131.490093204,131.286871106,131.083500803,
146 130.879982266,130.676315463,130.472500361,130.268536929,130.064425133,
147 129.860164941,129.655756317,129.451199229,129.24649364,129.041639516,
148 128.836636821,128.631485518,128.426185571,128.220736941,128.015139592,
149 127.809393485,127.603498581,127.397454841,127.191262225,126.984920693,
150 126.778430205,126.57179072,126.365002195,126.158064589,125.950977859,
151 125.743741963,125.536356858,125.328822499,125.121138842,124.913305843,
152 124.705323458,124.497191639,124.288910343,124.080479522,123.87189913,
153 123.66316912,123.454289445,123.245260057,123.036080908,122.82675195,
154 122.617273133,122.407644409,122.197865728,121.987937041,121.777858298,
155 121.567629447,121.357250439,121.146721222,120.936041745,120.725211957,
156 120.514231806,120.30310124,120.091820207,119.880388654,119.668806528,
157 119.457073777,119.245190347,119.033156186,118.82097124,118.608635455,
158 118.396148777,118.183511154,117.970722531,117.757782854,117.544692069,
159 117.331450122,117.118056958,116.904512525,116.690816767,116.476969631,
160 116.262971063,116.048821008,115.834519413,115.620066224,115.405461388,
161 115.19070485,114.975796559,114.76073646,114.545524502,114.330160631,
162 114.114644796,113.898976945,113.683157025,113.467184988,113.25106078,
163 113.034784354,112.818355658,112.601774644,112.385041264,112.168155469,
164 111.951117213,111.733926449,111.516583131,111.299087215,111.081438657,
165 110.863637413,110.645683442,110.427576702,110.209317154,109.990904759,
166 109.772339479,109.553621277,109.334750119,109.115725972,108.896548803,
167 108.677218581,108.457735278,108.238098866,108.01830932,107.798366617,
168 107.578270734,107.358021653,107.137619356,106.917063827,106.696355055,
169 106.475493028,106.25447774,106.033309184,105.81198736,105.590512267,
170 105.36888391,105.147102295,104.925167434,104.703079339,104.480838028,
171 104.258443522,104.035895848,103.813195034,103.590341113,103.367334124,
172 103.14417411,102.920861118,102.697395202,102.473776418,102.250004831,
173 102.02608051,101.802003529,101.577773971,101.353391923,101.128857479,
174 100.904170741,100.679331818,100.454340825,100.229197888,100.003903138,
175 99.778456717,99.5528587734,99.3271094667,99.1012089653,98.8751574477,
176 98.6489551024,98.4226021292,98.1960987386,97.969445153,97.7426416069,
177 97.5156883471,97.2885856338,97.0613337405,96.833932955,96.6063835797,
178 96.3786859321,96.1508403457,95.9228471705,95.6947067733,95.4664195391,
179 95.2379858709,95.0094061912,94.7806809423,94.5518105871,94.3227956102,
180 94.0936365183,93.8643338415,93.6348881337,93.405299974,93.1755699676,
181 92.9456987464,92.7156869704,92.4855353287,92.2552445406,92.0248153569,
182 91.7942485605,91.5635449686,91.3327054332,91.1017308426,90.8706221232,
183 90.6393802404,90.4080062002,90.1765010512,89.9448658855,89.7131018408,
184 89.4812101019,89.2491919027,89.0170485276,88.784781314,88.5523916537,
185 88.3198809952,88.0872508458,87.8545027735,87.6216384098,87.3886594513,
186 87.1555676628,86.9223648793,86.6890530085,86.4556340339,86.2221100172,
187 85.9884831011,85.7547555124,85.5209295646,85.2870076616,85.0529923004,
188 84.8188860745,84.5846916773,84.3504119056,84.1160496633,83.8816079647,
189 83.647089939,83.4124988332,83.1778380171,82.9431109867,82.7083213689,
190 82.4734729256,82.2385695581,82.0036153116,81.7686143804,81.5335711119,
191 81.2984900118,81.0633757495,80.8282331624,80.5930672616,80.3578832372,
192 80.1226864634,79.8874825043,79.6522771191,79.417076268,79.1818861179,
193 78.946713048,78.7115636561,78.4764447639,78.2413634234,78.0063269226,
194 77.7713427919,77.5364188098,77.3015630089,77.0667836823,76.832089389,
195 76.5974889606,76.3629915064,76.1286064198,75.8943433838,75.6602123765,
196 75.4262236766,75.1923878688,74.9587158488,74.7252188281,74.4919083386,
197 74.2587962373,74.0258947099,73.7932162747,73.5607737859,73.3285804366,
198 73.0966497613,72.8649956377,72.6336322885,72.4025742822,72.1718365333,
199 71.9414343025,71.7113831952,71.4816991604,71.2523984878,71.0234978052,
200 70.7950140739,70.5669645844,70.3393669505,70.1122391024,69.8855992793,
201 69.659466021,69.4338581579,69.2087948004,68.9842953275,68.7603793738,
202 68.5370668156,68.3143777559,68.0923325085,67.8709515808,67.6502556556,
203 67.4302655713,67.2110023025,66.9924869376,66.7747406569,66.5577847094,
204 66.341640388,66.1263290049,65.9118718655,65.6982902415,65.485605344,
205 65.2738382953,65.0630101007,64.8531416195,64.644253536,64.4363663304,
206 64.2295002488,64.0236752742,63.8189110973,63.6152270868,63.4126422611,
207 63.2111752599,63.0108443162,62.8116672294,62.613661339,62.4168434988,
208 62.2212300529,62.026836812,61.8336790312,61.6417713894,61.4511279693,
209 61.2617622392,61.0736870367,60.8869145531,60.7014563202,60.5173231979,
210 60.3345253642,60.1530723064,59.9729728143,59.7942349746,59.6168661678,
211 59.4408730656,59.2662616311,59.0930371202,58.9212040837,58.7507663728,
212 58.5817271438,58.4140888665,58.2478533317,58.0830216621,57.9195943226,
213 57.757571133,57.5969512811,57.437733337,57.2799152681,57.1234944552,
214 56.9684677091,56.8148312878,56.6625809145,56.5117117958,56.3622186407,
215 56.2140956792,56.0673366819,55.9219349798,55.777883483,55.6351747015,
216 55.4938007636,55.3537534367,55.2150241456,55.0776039925,54.9414837759,
217 54.8066540091,54.6731049389,54.5408265635,54.4098086506,54.2800407545,
218 54.1515122329,54.0242122639,53.8981298612,53.7732538906,53.6495730842,
219 53.5270760555,53.4057513131,53.2855872745,53.166572279,53.0486945999,
220 52.9319424571,52.816304028,52.7017674586,52.5883208741,52.4759523889,
221 52.3646501157,52.2544021747,52.1451967025,52.0370218595,51.9298658379,
222 51.8237168688,51.718563229,51.6143932475,51.5111953109,51.4089578697,
223 51.3076694432,51.2073186239,51.1078940829,51.0093845734,50.9117789348,
224 50.815066096,50.7192350793,50.6242750025,50.5301750825,50.4369246372,
225 50.3445130879,50.2529299611,50.1621648909,50.0722076197,49.9830480004,
226 49.894675997,49.8070816859,49.7202552566,49.6341870125,49.5488673716,
227 49.4642868666,49.3804361451,49.2973059702,49.2148872203,49.1331708887,
228 49.052148084,48.9718100296,48.892148063,48.8131536359,48.7348183134,
229 48.6571337734,48.5800918059,48.5036843125,48.4279033056,48.3527409073,
230 48.2781893488,48.2042409693,48.1308882153,48.0581236393,47.9859398991,
231 47.9143297565,47.8432860762,47.772801825,47.7028700705,47.6334839797,
232 47.5646368183,47.4963219495,47.4285328322,47.3612630208,47.2945061629,
233 47.2282559993,47.1625063616,47.0972511721,47.0324844415,46.9682002687,
234 46.9043928391,46.8410564231,46.7781853756,46.7157741343,46.6538172188,
235 46.5923092291,46.5312448446,46.4706188231,46.4104259995,46.3506612843,
236 46.2913196632,46.2323961953,46.1738860123,46.1157843173,46.0580863839,
237 46.0007875547,45.9438832405,45.8873689195,45.8312401357,45.7754924981,
238 45.7201216798,45.665123417,45.6104935076,45.5562278108,45.5023222456,
239 45.4487727904,45.3955754813,45.3427264119,45.2902217321,45.238057647,
240 45.1862304162,45.1347363532,45.0835718238,45.0327332461,44.982217089,
241 44.9320198716,44.8821381626,44.8325685792,44.7833077865,44.7343524964,
242 44.6856994674,44.6373455033,44.5892874528,44.5415222087,44.4940467071,
243 44.4468579267,44.3999528883,44.3533286537,44.3069823257,44.2609110467,
244 44.2151119985,44.1695824018,44.124319515,44.0793206341,44.034583092,
245 43.9901042576,43.9458815358,43.9019123661,43.8581942231,43.8147246147,
246 43.7715010829,43.728521202,43.6857825789,43.6432828524,43.6010196926,
247 43.5589908004,43.5171939069,43.4756267733,43.4342871901,43.3931729766,
248 43.3522819808,43.3116120784,43.2711611731,43.2309271955,43.1909081027,
249 43.1511018785,43.1115065323,43.0721200993,43.0329406393,42.9939662373,
250 42.9551950023,42.9166250673,42.878254589,42.8400817471,42.8021047443,
251 42.7643218057,42.7267311786,42.6893311322,42.6521199569,42.6150959646,
252 42.5782574877,42.5416028795,42.5051305131,42.4688387817,42.4327260982,
253 42.3967908945,42.3610316219,42.32544675,42.2900347672,42.2547941799,
254 42.2197235125,42.184821307,42.1500861227,42.1155165361,42.0811111406,
255 42.0468685461,42.0127873789,41.9788662816,41.9451039126,41.9114989459,
256 41.8780500709,41.8447559925,41.8116154303,41.7786271187,41.7457898069,
257 41.7131022583,41.6805632504,41.6481715748,41.6159260367,41.5838254549,
258 41.5518686617,41.5200545023,41.4883818353,41.4568495316,41.4254564751,
259 41.394201562,41.3630837008,41.3321018122,41.3012548286,41.2705416944,
260 41.2399613655,41.2095128092,41.1791950042,41.1490069403,41.1189476183,
261 41.0890160496,41.0592112567,41.0295322723,40.9999781396,40.970547912,
262 40.9412406531,40.9120554366,40.8829913457,40.8540474735,40.8252229228,
263 40.7965168056,40.7679282435,40.7394563671,40.7111003161,40.6828592393,
264 40.6547322942,40.626718647,40.5988174728,40.5710279548,40.5433492849,
265 40.5157806631,40.4883212976,40.4609704049,40.433727209,40.4065909422,
266 40.3795608443,40.3526361629,40.3258161531,40.2991000774,40.2724872058,
267 40.2459768155,40.2195681909,40.1932606236,40.1670534118,40.1409458612,
268 40.114937284,40.089026999,40.063214332,40.0374986152,40.0118791874,
269 39.9863553935,39.9609265851,39.9355921199,39.9103513619,39.8852036809,
270 39.8601484532,39.8351850605,39.8103128908,39.7855313379,39.7608398011,
271 39.7362376854,39.7117244017,39.6872993662,39.6629620005,39.6387117317,
272 39.6145479924,39.5904702202,39.5664778582,39.5425703542,39.5187471617,
273 39.4950077387,39.4713515484,39.447778059,39.4242867434,39.4008770793,
274 39.3775485493,39.3543006404,39.3311328446,39.3080446582,39.2850355821,
275 39.2621051218,39.2392527869,39.2164780918,39.193780555,39.1711596991,
276 39.1486150512,39.1261461426,39.1037525085,39.0814336882,39.0591892253,
277 39.0370186672,39.0149215651,38.9928974745,38.9709459543,38.9490665676,
278 38.9272588811,38.9055224652,38.883856894,38.8622617454,38.8407366006,
279 38.8192810448,38.7978946663,38.7765770572,38.7553278128,38.7341465321,
280 38.7130328173,38.6919862739,38.6710065108,38.6500931402,38.6292457774,
281 38.608464041,38.5877475528,38.5670959377,38.5465088236,38.5259858415,
282 38.5055266257,38.485130813,38.4647980436,38.4445279604,38.4243202094,
283 38.4041744393,38.3840903017,38.3640674511,38.3441055447,38.3242042424,
284 38.3043632069,38.2845821037,38.2648606009,38.2451983691,38.2255950817,
285 38.2060504147,38.1865640465,38.1671356581,38.1477649333,38.1284515578,
286 38.1091952204,38.0899956119,38.0708524256,38.0517653574,38.0327341052,
287 38.0137583696,37.9948378534,37.9759722615,37.9571613012,37.9384046823,
288 37.9197021164,37.9010533177,37.8824580021,37.8639158882,37.8454266964,
289 37.8269901493,37.8086059716,37.7902738901,37.7719936336,37.753764933,
290 37.7355875212,37.717461133,37.6993855054,37.6813603772,37.6633854891,
291 37.6454605838,37.6275854059,37.6097597018,37.59198322,37.5742557106,
292 37.5565769256,37.5389466189,37.521364546,37.5038304645,37.4863441334,
293 37.4689053137,37.4515137681,37.4341692609,37.4168715581,37.3996204275,
294 37.3824156386,37.3652569623,37.3481441714,37.3310770401,37.3140553445,
295 37.297078862,37.2801473717,37.2632606542,37.2464184918,37.2296206681,
296 37.2128669684,37.1961571795,37.1794910896,37.1628684884,37.1462891671,
297 37.1297529184,37.1132595362,37.0968088162,37.0804005552,37.0640345515,
298 37.0477106048,37.0314285162,37.0151880881,36.9989891244,36.9828314301,
299 36.9667148116,36.9506390768,36.9346040347,36.9186094956,36.9026552713,
300 36.8867411745,36.8708670195,36.8550326217,36.8392377978,36.8234823655,
301 36.807766144,36.7920889536,36.7764506158,36.7608509532,36.7452897896,
302 36.7297669502,36.714282261,36.6988355493,36.6834266436,36.6680553734,
303 36.6527215694,36.6374250634,36.6221656883,36.606943278,36.5917576675,
304 36.5766086929,36.5614961915,36.5464200014,36.5313799619,36.5163759132,
305 36.5014076967,36.4864751547,36.4715781305,36.4567164685,36.4418900139,
306 36.4270986131,36.4123421134,36.3976203629,36.382933211,36.3682805076,
307 36.353662104,36.3390778522,36.324527605,36.3100112165,36.2955285412,
308 36.2810794351,36.2666637545,36.252281357,36.237932101,36.2236158457,
309 36.2093324512,36.1950817784,36.1808636892,36.1666780462,36.152524713,
310 36.1384035538,36.1243144338,36.1102572191,36.0962317763,36.0822379733,
311 36.0682756782,36.0543447604,36.0404450898,36.0265765373,36.0127389743,
312 35.9989322732,35.9851563071,35.9714109499,35.957696076,35.944011561,
313 35.9303572808,35.9167331123,35.903138933,35.8895746213,35.8760400561,
314 35.862535117,35.8490596847,35.8356136401,35.822196865,35.808809242,
315 35.7954506543,35.7821209857,35.7688201207,35.7555479447,35.7423043434,
316 35.7290892035,35.715902412,35.7027438569,35.6896134267,35.6765110104,
317 35.663436498,35.6503897796,35.6373707465,35.6243792901,35.6114153029,
318 35.5984786777,35.5855693079,35.5726870876,35.5598319116,35.5470036751,
319 35.534202274,35.5214276048,35.5086795644,35.4959580506,35.4832629614,
320 35.4705941957,35.4579516528,35.4453352325,35.4327448353,35.4201803623,
321 35.4076417148,35.3951287951,35.3826415057,35.3701797498,35.3577434311,
322 35.3453324539,35.3329467228,35.3205861432,35.3082506207,35.2959400619,
323 35.2836543733,35.2713934625,35.2591572371,35.2469456055,35.2347584766,
324 35.2225957595,35.2104573643,35.198343201,35.1862531805,35.174187214,
325 35.1621452133,35.1501270905,35.1381327583,35.1261621298,35.1142151186,
326 35.1022916388,35.0903916049,35.0785149317,35.0666615348,35.0548313299,
327 35.0430242334,35.031240162,35.0194790329,35.0077407637,34.9960252724,
328 34.9843324774,34.9726622977,34.9610146526,34.9493894618,34.9377866455,
329 34.9262061242,34.9146478189,34.903111651,34.8915975423,34.880105415,
330 34.8686351915,34.8571867951,34.845760149,34.8343551769,34.8229718032,
331 34.8116099522,34.800269549,34.7889505189,34.7776527876,34.7663762811,
332 34.7551209259,34.7438866488,34.732673377,34.7214810381,34.7103095599,
333 34.6991588708,34.6880288994,34.6769195746,34.665830826,34.654762583,
334 34.6437147759,34.632687335,34.6216801911,34.6106932752,34.5997265188,
335 34.5887798536,34.5778532119,34.5669465259,34.5560597285,34.5451927529,
336 34.5343455323,34.5235180007,34.5127100921,34.5019217408,34.4911528817,
337 34.4804034497,34.4696733802,34.458962609,34.4482710719,34.4375987053,
338 34.4269454458,34.4163112303,34.405695996,34.3950996804,34.3845222213,
339 34.373963557,34.3634236256,34.3529023661,34.3423997173,34.3319156186,
340 34.3214500095,34.3110028299,34.30057402,34.2901635202,34.2797712711,
341 34.2693972139,34.2590412897,34.2487034402,34.2383836071,34.2280817325,
342 34.2177977589,34.2075316288,34.1972832853,34.1870526713,34.1768397305,
343 34.1666444064,34.1564666431,34.1463063848,34.1361635759,34.1260381613,
344 34.1159300859,34.1058392949,34.0957657339,34.0857093486,34.075670085,
345 34.0656478894,34.0556427083,34.0456544884,34.0356831767,34.0257287205,
346 34.0157910671,34.0058701643,33.9959659601,33.9860784026,33.9762074403,
347 33.9663530217,33.9565150959,33.9466936118,33.9368885189,33.9270997666,
348 33.9173273049,33.9075710837,33.8978310533,33.8881071641,33.8783993668,
349 33.8687076124,33.8590318519,33.8493720367,33.8397281184,33.8301000487,
350 33.8204877797,33.8108912635,33.8013104526,33.7917452996,33.7821957572,
351 33.7726617786,33.763143317,33.7536403258,33.7441527588,33.7346805697,
352 33.7252237126,33.7157821418,33.7063558118,33.6969446771,33.6875486927,
353 33.6781678136,33.6688019951,33.6594511925,33.6501153616,33.6407944581,
354 33.631488438,33.6221972577,33.6129208733,33.6036592416,33.5944123194,
355 33.5851800634,33.575962431,33.5667593793,33.5575708659,33.5483968486,
356 33.539237285,33.5300921334,33.5209613518,33.5118448987,33.5027427327,
357 33.4936548125,33.484581097,33.4755215454,33.4664761168,33.4574447707,
358 33.4484274668,33.4394241647,33.4304348245,33.4214594063,33.4124978703,
359 33.403550177,33.3946162869,33.3856961609,33.3767897599,33.367897045,
360 33.3590179775,33.3501525187,33.3413006302,33.3324622739,33.3236374115,
361 33.3148260051,33.3060280169,33.2972434094,33.2884721449,33.2797141863,
362 33.2709694962,33.2622380377,33.2535197739,33.2448146681,33.2361226837,
363 33.2274437842,33.2187779335,33.2101250953,33.2014852337,33.1928583128,
364 33.184244297,33.1756431507,33.1670548384,33.158479325,33.1499165753,
365 33.1413665542,33.1328292271,33.124304559,33.1157925156,33.1072930624,
366 33.098806165,33.0903317894,33.0818699015,33.0734204674,33.0649834534,
367 33.0565588258,33.0481465513,33.0397465963,33.0313589278,33.0229835126,
368 33.0146203178,33.0062693106,32.9979304582,32.989603728,32.9812890877,
369 32.972986505,32.9646959476,32.9564173834,32.9481507806,32.9398961073,
370 32.9316533318,32.9234224226,32.9152033482,32.9069960773,32.8988005787,
371 32.8906168214,32.8824447742,32.8742844065,32.8661356875,32.8579985866,
372 32.8498730732,32.8417591171,32.833656688,32.8255657557,32.8174862902,
373 32.8094182617,32.8013616402,32.7933163962,32.7852825001,32.7772599223,
374 32.7692486337,32.7612486048,32.7532598067,32.7452822103,32.7373157867,
375 32.7293605071,32.7214163428,32.7134832652,32.705561246,32.6976502567,
376 32.689750269,32.6818612548,32.6739831862,32.666116035,32.6582597736,
377 32.6504143741,32.6425798089,32.6347560506,32.6269430716,32.6191408447,
378 32.6113493427,32.6035685384,32.5957984048,32.588038915,32.5802900421,
379 32.5725517595,32.5648240406,32.5571068587,32.5494001875,32.5417040007,
380 32.5340182719,32.5263429752,32.5186780844,32.5110235735,32.5033794168,
381 32.4957455885,32.4881220628,32.4805088143,32.4729058175,32.4653130469,
382 32.4577304774,32.4501580835,32.4425958404,32.4350437229,32.4275017061,
383 32.4199697652,32.4124478754,32.404936012,32.3974341505,32.3899422665,
384 32.3824603354,32.374988333,32.3675262351,32.3600740175,32.3526316561,
385 32.3451991271,32.3377764065,32.3303634705,32.3229602955,32.3155668577,
386 32.3081831337,32.3008090999,32.2934447331,32.2860900099,32.2787449071,
387 32.2714094015,32.2640834702,32.2567670901,32.2494602384,32.2421628922,
388 32.2348750288,32.2275966256,32.22032766,32.2130681096,32.2058179518,
389 32.1985771644,32.1913457251,32.1841236118,32.1769108022,32.1697072745,
390 32.1625130066,32.1553279767,32.148152163,32.1409855437,32.1338280972,
391 32.126679802,32.1195406365,32.1124105793,32.1052896091,32.0981777045,
392 32.0910748445,32.0839810077,32.0768961733,32.0698203201,32.0627534273,
393 32.0556954741,32.0486464396,32.0416063031,32.0345750441,32.0275526419,
394 32.020539076,32.0135343261,32.0065383718,31.9995511928,31.9925727688,
395 31.9856030797,31.9786421055,31.9716898261,31.9647462215,31.957811272,
396 31.9508849576,31.9439672587,31.9370581555,31.9301576284,31.9232656579,
397 31.9163822245,31.9095073088,31.9026408914,31.895782953,31.8889334744,
398 31.8820924364,31.87525982,31.8684356061,31.8616197757,31.8548123099,
399 31.8480131899,31.8412223968,31.834439912,31.8276657168,31.8208997926,
400 31.8141421208,31.8073926829,31.8006514606,31.7939184355,31.7871935893,
401 31.7804769038,31.7737683607,31.7670679419,31.7603756294,31.7536914052,
402 31.7470152514,31.74034715,31.7336870832,31.7270350332,31.7203909824,
403 31.7137549131,31.7071268077,31.7005066486,31.6938944183,31.6872900995,
404 31.6806936748,31.6741051267,31.6675244382,31.6609515919,31.6543865707,
405 31.6478293576,31.6412799354,31.6347382873,31.6282043961,31.6216782452,
406 31.6151598176,31.6086490966,31.6021460655,31.5956507075,31.5891630062,
407 31.5826829449,31.576210507,31.5697456763,31.5632884362,31.5568387704,
408 31.5503966626,31.5439620966,31.5375350561,31.5311155251,31.5247034874,
409 31.5182989269,31.5119018277,31.5055121739,31.4991299494,31.4927551386,
410 31.4863877255,31.4800276945,31.4736750299,31.4673297159,31.4609917371,
411 31.4546610778,31.4483377225,31.4420216558,31.4357128623,31.4294113266,
412 31.4231170334,31.4168299674,31.4105501135,31.4042774564,31.398011981,
413 31.3917536723,31.3855025152,31.3792584947,31.3730215959,31.3667918039,
414 31.3605691038,31.3543534809,31.3481449203,31.3419434074,31.3357489276,
415 31.329561466,31.3233810083,31.3172075399,31.3110410462,31.3048815128,
416 31.2987289254,31.2925832695,31.2864445309,31.2803126952,31.2741877483,
417 31.2680696759,31.261958464,31.2558540983,31.249756565,31.2436658498,
418 31.2375819389,31.2315048184,31.2254344742,31.2193708927,31.2133140599,
419 31.2072639622,31.2012205857,31.1951839169,31.189153942,31.1831306474,
420 31.1771140197,31.1711040452,31.1651007105,31.1591040022,31.1531139068,
421 31.1471304109,31.1411535014,31.1351831648,31.1292193879,31.1232621575,
422 31.1173114605,31.1113672838,31.1054296141,31.0994984385,31.0935737441,
423 31.0876555177,31.0817437464,31.0758384175,31.0699395179,31.0640470349,
424 31.0581609557,31.0522812675,31.0464079577,31.0405410135,31.0346804223,
425 31.0288261716,31.0229782487,31.0171366411,31.0113013363,31.0054723219,
426 30.9996495855,30.9938331146,30.988022897,30.9822189203,30.9764211722,
427 30.9706296405,30.9648443129,30.9590651774,30.9532922218,30.9475254339,
428 30.9417648017
429 }},
430 { // Ri = 250k
431 -5,5,200, {
432 223.484971051,223.38189846,223.278606859,223.175096438,223.071367386,
433 222.967419894,222.863254153,222.758870355,222.654268692,222.549449358,
434 222.444412546,222.339158451,222.233687268,222.127999193,222.022094421,
435 221.915973151,221.809635579,221.703081904,221.596312324,221.489327039,
436 221.382126248,221.274710152,221.167078951,221.059232846,220.951172041,
437 220.842896736,220.734407134,220.62570344,220.516785857,220.407654588,
438 220.298309839,220.188751814,220.078980719,219.96899676,219.858800143,
439 219.748391075,219.637769762,219.526936413,219.415891235,219.304634436,
440 219.193166225,219.081486809,218.9695964,218.857495205,218.745183435,
441 218.6326613,218.519929009,218.406986775,218.293834807,218.180473316,
442 218.066902515,217.953122614,217.839133825,217.724936362,217.610530435,
443 217.495916257,217.381094042,217.266064002,217.150826349,217.035381299,
444 216.919729063,216.803869855,216.68780389,216.571531381,216.455052541,
445 216.338367587,216.22147673,216.104380187,215.987078171,215.869570897,
446 215.75185858,215.633941434,215.515819675,215.397493517,215.278963175,
447 215.160228865,215.041290801,214.922149198,214.802804272,214.683256238,
448 214.563505311,214.443551707,214.32339564,214.203037325,214.082476979,
449 213.961714816,213.840751051,213.719585899,213.598219576,213.476652297,
450 213.354884277,213.232915731,213.110746873,212.988377919,212.865809083,
451 212.74304058,212.620072625,212.496905433,212.373539217,212.249974193,
452 212.126210573,212.002248574,211.878088408,211.75373029,211.629174433,
453 211.504421051,211.379470357,211.254322565,211.128977889,211.003436541,
454 210.877698734,210.751764681,210.625634594,210.499308686,210.37278717,
455 210.246070256,210.119158158,209.992051086,209.864749253,209.737252869,
456 209.609562146,209.481677294,209.353598524,209.225326046,209.096860071,
457 208.968200809,208.839348469,208.710303261,208.581065394,208.451635077,
458 208.322012519,208.192197928,208.062191513,207.931993481,207.801604041,
459 207.671023398,207.540251762,207.409289338,207.278136334,207.146792955,
460 207.015259407,206.883535897,206.75162263,206.61951981,206.487227642,
461 206.354746332,206.222076083,206.089217099,205.956169583,205.82293374,
462 205.689509771,205.555897879,205.422098267,205.288111136,205.153936688,
463 205.019575125,204.885026646,204.750291453,204.615369746,204.480261724,
464 204.344967587,204.209487534,204.073821763,203.937970474,203.801933864,
465 203.66571213,203.52930547,203.392714081,203.255938159,203.1189779,
466 202.9818335,202.844505154,202.706993058,202.569297405,202.43141839,
467 202.293356206,202.155111047,202.016683105,201.878072574,201.739279645,
468 201.60030451,201.46114736,201.321808386,201.182287779,201.042585728,
469 200.902702422,200.762638052,200.622392806,200.481966872,200.341360438,
470 200.200573692,200.059606819,199.918460008,199.777133444,199.635627312,
471 199.493941798,199.352077087,199.210033363,199.067810809,198.92540961,
472 198.782829948,198.640072006,198.497135966,198.354022009,198.210730316,
473 198.067261068,197.923614446,197.779790629,197.635789796,197.491612126,
474 197.347257797,197.202726987,197.058019875,196.913136635,196.768077446,
475 196.622842482,196.477431919,196.331845933,196.186084697,196.040148386,
476 195.894037174,195.747751232,195.601290734,195.454655852,195.307846758,
477 195.160863622,195.013706614,194.866375906,194.718871667,194.571194065,
478 194.423343269,194.275319448,194.127122768,193.978753398,193.830211503,
479 193.681497249,193.532610803,193.383552329,193.234321992,193.084919955,
480 192.935346382,192.785601437,192.635685281,192.485598078,192.335339987,
481 192.18491117,192.034311788,191.883542,191.732601966,191.581491845,
482 191.430211795,191.278761974,191.127142539,190.975353646,190.823395454,
483 190.671268116,190.518971788,190.366506625,190.213872781,190.06107041,
484 189.908099664,189.754960697,189.60165366,189.448178705,189.294535983,
485 189.140725644,188.986747838,188.832602716,188.678290424,188.523811112,
486 188.369164928,188.214352019,188.059372531,187.904226611,187.748914404,
487 187.593436056,187.43779171,187.281981512,187.126005604,186.96986413,
488 186.813557231,186.65708505,186.500447728,186.343645406,186.186678223,
489 186.029546321,185.872249837,185.714788911,185.55716368,185.399374282,
490 185.241420854,185.083303532,184.925022453,184.766577751,184.607969561,
491 184.449198018,184.290263255,184.131165406,183.971904603,183.812480977,
492 183.652894661,183.493145785,183.333234481,183.173160876,183.012925102,
493 182.852527286,182.691967558,182.531246043,182.37036287,182.209318165,
494 182.048112055,181.886744663,181.725216116,181.563526538,181.401676052,
495 181.239664781,181.077492849,180.915160377,180.752667487,180.5900143,
496 180.427200936,180.264227516,180.101094157,179.937800981,179.774348103,
497 179.610735643,179.446963717,179.283032441,179.118941933,178.954692306,
498 178.790283677,178.625716159,178.460989866,178.296104912,178.131061408,
499 177.965859467,177.800499201,177.634980721,177.469304136,177.303469557,
500 177.137477093,176.971326853,176.805018945,176.638553477,176.471930555,
501 176.305150286,176.138212776,175.971118131,175.803866455,175.636457852,
502 175.468892427,175.301170281,175.133291519,174.965256242,174.797064551,
503 174.628716547,174.460212331,174.291552002,174.12273566,173.953763402,
504 173.784635329,173.615351536,173.44591212,173.276317179,173.106566808,
505 172.936661103,172.766600157,172.596384066,172.426012922,172.255486819,
506 172.084805849,171.913970105,171.742979677,171.571834657,171.400535134,
507 171.229081198,171.057472939,170.885710445,170.713793803,170.541723102,
508 170.369498428,170.197119867,170.024587505,169.851901428,169.67906172,
509 169.506068464,169.332921745,169.159621646,168.986168248,168.812561633,
510 168.638801884,168.464889079,168.2908233,168.116604626,167.942233136,
511 167.767708909,167.593032021,167.418202552,167.243220576,167.068086171,
512 166.892799412,166.717360374,166.541769131,166.366025758,166.190130327,
513 166.014082912,165.837883585,165.661532417,165.48502948,165.308374843,
514 165.131568578,164.954610753,164.777501437,164.600240698,164.422828605,
515 164.245265224,164.067550622,163.889684865,163.711668018,163.533500146,
516 163.355181313,163.176711584,162.998091022,162.819319688,162.640397646,
517 162.461324957,162.28210168,162.102727878,161.92320361,161.743528935,
518 161.563703911,161.383728597,161.203603051,161.023327328,160.842901487,
519 160.662325582,160.481599669,160.300723803,160.119698037,159.938522426,
520 159.757197022,159.575721877,159.394097045,159.212322576,159.03039852,
521 158.848324929,158.666101851,158.483729336,158.301207432,158.118536187,
522 157.935715649,157.752745864,157.569626879,157.38635874,157.20294149,
523 157.019375176,156.83565984,156.651795527,156.467782279,156.283620139,
524 156.099309148,155.914849347,155.730240777,155.545483478,155.36057749,
525 155.175522851,154.9903196,154.804967774,154.61946741,154.433818546,
526 154.248021217,154.062075459,153.875981307,153.689738795,153.503347956,
527 153.316808825,153.130121434,152.943285814,152.756301998,152.569170017,
528 152.3818899,152.194461677,152.006885379,151.819161033,151.631288668,
529 151.443268311,151.25509999,151.06678373,150.878319558,150.689707498,
530 150.500947577,150.312039817,150.122984243,149.933780877,149.744429742,
531 149.55493086,149.365284253,149.17548994,148.985547943,148.79545828,
532 148.605220971,148.414836035,148.224303489,148.033623351,147.842795638,
533 147.651820366,147.46069755,147.269427206,147.078009348,146.886443991,
534 146.694731147,146.50287083,146.310863051,146.118707824,145.926405158,
535 145.733955065,145.541357554,145.348612635,145.155720318,144.962680609,
536 144.769493518,144.576159051,144.382677215,144.189048016,143.995271461,
537 143.801347552,143.607276296,143.413057696,143.218691756,143.024178478,
538 142.829517864,142.634709916,142.439754635,142.244652022,142.049402077,
539 141.854004798,141.658460186,141.462768238,141.266928951,141.070942324,
540 140.874808353,140.678527034,140.482098363,140.285522334,140.088798942,
541 139.891928181,139.694910044,139.497744525,139.300431614,139.102971305,
542 138.905363588,138.707608454,138.509705892,138.311655894,138.113458446,
543 137.915113539,137.71662116,137.517981296,137.319193934,137.120259061,
544 136.921176662,136.721946723,136.522569228,136.323044162,136.123371508,
545 135.923551249,135.723583369,135.523467849,135.32320467,135.122793815,
546 134.922235263,134.721528995,134.52067499,134.319673227,134.118523685,
547 133.917226342,133.715781176,133.514188163,133.31244728,133.110558503,
548 132.908521808,132.70633717,132.504004564,132.301523963,132.098895342,
549 131.896118674,131.693193931,131.490121086,131.286900111,131.083530977,
550 130.880013655,130.676348115,130.472534329,130.268572264,130.064461891,
551 129.860203179,129.655796095,129.451240608,129.246536686,129.041684295,
552 128.836683403,128.631533975,128.426235979,128.220789379,128.015194141,
553 127.80945023,127.603557611,127.397516247,127.191326104,126.984987144,
554 126.778499331,126.571862629,126.365076999,126.158142404,125.951058808,
555 125.74382617,125.536444455,125.328913622,125.121233634,124.913404451,
556 124.705426035,124.497298346,124.289021346,124.080594993,123.87201925,
557 123.663294075,123.45441943,123.245395274,123.036221568,122.826898272,
558 122.617425345,122.407802748,122.198030441,121.988108384,121.778036537,
559 121.567814861,121.357443316,121.146921862,120.936250462,120.725429075,
560 120.514457662,120.303336187,120.09206461,119.880642893,119.669071,
561 119.457348893,119.245476537,119.033453894,118.821280929,118.608957608,
562 118.396483896,118.18385976,117.971085166,117.758160083,117.545084479,
563 117.331858324,117.118481589,116.904954244,116.691276262,116.477447617,
564 116.263468283,116.049338237,115.835057456,115.620625918,115.406043603,
565 115.191310494,114.976426573,114.761391825,114.546206237,114.330869797,
566 114.115382497,113.899744328,113.683955284,113.468015365,113.251924567,
567 113.035682894,112.819290349,112.60274694,112.386052677,112.169207573,
568 111.952211643,111.735064908,111.517767389,111.300319114,111.082720112,
569 110.864970417,110.647070067,110.429019104,110.210817576,109.992465532,
570 109.77396303,109.55531013,109.336506899,109.117553408,108.898449735,
571 108.679195963,108.459792182,108.240238489,108.020534985,107.800681781,
572 107.580678994,107.360526749,107.140225178,106.919774422,106.69917463,
573 106.478425962,106.257528585,106.036482676,105.815288423,105.593946025,
574 105.372455689,105.150817638,104.929032102,104.707099327,104.48501957,
575 104.262793102,104.040420207,103.817901185,103.595236351,103.372426033,
576 103.149470578,102.926370349,102.703125726,102.479737108,102.256204914,
577 102.032529581,101.808711566,101.58475135,101.360649435,101.136406344,
578 100.912022628,100.687498859,100.462835637,100.23803359,100.013093371,
579 99.7880156641,99.5628011832,99.3374506734,99.1119649126,98.8863447123,
580 98.6605909195,98.4347044173,98.2086861271,97.9825370096,97.7562580661,
581 97.5298503407,97.3033149214,97.076652942,96.8498655839,96.6229540776,
582 96.3959197048,96.1687638004,95.9414877543,95.7140930135,95.4865810843,
583 95.2589535346,95.0312119958,94.8033581658,94.5753938109,94.3473207683,
584 94.1191409492,93.8908563411,93.6624690106,93.4339811063,93.205394862,
585 92.9767125993,92.7479367311,92.5190697648,92.2901143054,92.0610730592,
586 91.8319488373,91.602744559,91.373463256,91.1441080758,90.9146822859,
587 90.6851892779,90.4556325714,90.2260158187,89.9963428088,89.7666174721,
588 89.536843885,89.3070262745,89.0771690233,88.8472766742,88.6173539356,
589 88.3874056866,88.1574369818,87.9274530572,87.697459335,87.4674614297,
590 87.237465153,87.0074765201,86.7775017551,86.5475472965,86.3176198036,
591 86.087726162,85.8578734896,85.6280691424,85.3983207206,85.1686360744,
592 84.9390233102,84.7094907959,84.4800471675,84.2507013342,84.0214624844,
593 83.7923400915,83.5633439187,83.334484025,83.1057707701,82.8772148192,
594 82.6488271479,82.4206190466,82.1926021248,81.9647883147,81.7371898752,
595 81.5098193947,81.282689794,81.0558143286,80.8292065906,80.6028805099,
596 80.3768503551,80.1511307336,79.9257365914,79.7006832114,79.4759862124,
597 79.2516615459,79.0277254929,78.80419466,78.5810859742,78.3584166771,
598 78.1362043179,77.914466746,77.6932221017,77.4724888073,77.2522855555,
599 77.0326312982,76.8135452334,76.5950467914,76.3771556195,76.1598915665,
600 75.943274665,75.7273251137,75.5120632578,75.297509569,75.0836846242,
601 74.8706090831,74.6583036656,74.4467891271,74.2360862344,74.0262157397,
602 73.8171983546,73.609054723,73.4018053941,73.195470794,72.9900711983,
603 72.7856267028,72.5821571954,72.3796823271,72.1782214839,71.9777937575,
604 71.7784179177,71.5801123841,71.3828951991,71.1867840008,70.9917959968,
605 70.7979479394,70.6052561006,70.413736249,70.2234036275,70.0342729319,
606 69.8463582915,69.6596732499,69.4742307486,69.2900431108,69.1071220272,
607 68.925478544,68.7451230512,68.5660652733,68.3883142621,68.2118783899,
608 68.0367653452,67.8629821298,67.6905350579,67.5194297558,67.349671164,
609 67.1812635406,67.0142104662,66.8485148499,66.6841789368,66.5212043171,
610 66.359591936,66.1993421046,66.0404545127,65.8829282415,65.7267617781,
611 65.5719530301,65.4184993417,65.2663975098,65.1156438011,64.9662339694,
612 64.8181632736,64.6714264963,64.5260179616,64.3819315545,64.2391607398,
613 64.0976985804,63.9575377573,63.8186705879,63.6810890449,63.5447847755,
614 63.4097491195,63.2759731279,63.1434475806,63.0121630047,62.8821096914,
615 62.7532777134,62.6256569412,62.4992370596,62.3740075834,62.2499578725,
616 62.1270771474,62.0053545027,61.8847789218,61.7653392897,61.6470244065,
617 61.5298229991,61.4137237339,61.2987152275,61.1847860581,61.0719247757,
618 60.9601199122,60.8493599906,60.7396335345,60.630929076,60.5232351645,
619 60.4165403737,60.3108333094,60.2061026159,60.1023369826,59.9995251502,
620 59.8976559158,59.7967181389,59.6967007458,59.5975927344,59.4993831786,
621 59.4020612319,59.3056161312,59.2100372005,59.1153138535,59.0214355966,
622 58.9283920315,58.8361728577,58.7447678742,58.6541669817,58.5643601843,
623 58.4753375907,58.3870894158,58.2996059815,58.2128777181,58.1268951645,
624 58.0416489694,57.9571298914,57.8733287998,57.7902366743,57.7078446055,
625 57.6261437948,57.5451255545,57.4647813073,57.3851025863,57.3060810344,
626 57.2277084041,57.1499765569,57.0728774627,56.9964031993,56.9205459515,
627 56.8452980105,56.7706517731,56.6965997408,56.6231345189,56.5502488157,
628 56.4779354416,56.4061873078,56.3349974256,56.2643589053,56.1942649551,
629 56.12470888,56.0556840808,55.9871840529,55.9192023854,55.8517327594,
630 55.7847689478,55.7183048131,55.6523343072,55.5868514695,55.5218504263,
631 55.4573253892,55.3932706543,55.3296806009,55.2665496903,55.2038724646,
632 55.1416435458,55.0798576345,55.0185095087,54.9575940229,54.8971061066,
633 54.8370407637,54.7773930709,54.718158177,54.6593313016,54.6009077341,
634 54.5428828326,54.4852520229,54.4280107972,54.3711547138,54.3146793951,
635 54.2585805273,54.2028538591,54.147495201,54.092500424,54.0378654587,
636 53.9835862945,53.9296589787,53.8760796154,53.8228443647,53.7699494418,
637 53.7173911161,53.6651657104,53.6132695999,53.5616992114,53.5104510228,
638 53.4595215617,53.408907405,53.358605178,53.3086115536,53.2589232516,
639 53.2095370379,53.1604497237,53.1116581648,53.0631592611,53.0149499554,
640 52.9670272332,52.9193881217,52.8720296893,52.8249490449,52.7781433372,
641 52.7316097539,52.6853455215,52.6393479043,52.5936142039,52.5481417587,
642 52.5029279432,52.4579701673,52.4132658761,52.3688125489,52.3246076991,
643 52.2806488732,52.2369336506,52.193459643,52.1502244938,52.1072258777,
644 52.0644615,52.0219290964,51.9796264325,51.9375513029,51.8957015313,
645 51.8540749699,51.8126694984,51.7714830245,51.7305134827,51.6897588342,
646 51.6492170665,51.6088861928,51.568764252,51.5288493078,51.4891394485,
647 51.4496327869,51.4103274594,51.3712216261,51.3323134703,51.2936011979,
648 51.2550830374,51.2167572394,51.1786220761,51.1406758414,51.1029168502,
649 51.065343438,51.0279539611,50.9907467956,50.9537203379,50.9168730035,
650 50.8802032274,50.8437094637,50.8073901849,50.7712438821,50.7352690645,
651 50.6994642591,50.6638280107,50.6283588811,50.5930554497,50.5579163121,
652 50.522940081,50.4881253853,50.4534708698,50.4189751955,50.3846370388,
653 50.3504550916,50.3164280609,50.2825546688,50.2488336522,50.2152637622,
654 50.1818437647,50.1485724393,50.1154485799,50.0824709937,50.0496385019,
655 50.0169499386,49.9844041515,49.9520000008,49.9197363597,49.8876121142,
656 49.8556261623,49.8237774146,49.7920647936,49.7604872338,49.7290436813,
657 49.6977330941,49.6665544412,49.6355067033,49.6045888718,49.5737999493,
658 49.5431389491,49.5126048954,49.4821968226,49.4519137756,49.4217548096,
659 49.3917189898,49.3618053914,49.3320130994,49.3023412085,49.2727888229,
660 49.2433550565,49.2140390322,49.1848398821,49.1557567476,49.1267887789,
661 49.0979351349,49.0691949835,49.040567501,49.0120518721,48.9836472901,
662 48.9553529564,48.9271680807,48.8990918806,48.8711235817,48.8432624174,
663 48.815507629,48.7878584653,48.7603141827,48.732874045,48.7055373233,
664 48.6783032962,48.6511712493,48.6241404752,48.5972102736,48.5703799512,
665 48.5436488213,48.517016204,48.4904814261,48.464043821,48.4377027285,
666 48.4114574948,48.3853074723,48.35925202,48.3332905028,48.3074222917,
667 48.2816467637,48.2559633019,48.2303712951,48.204870138,48.179459231,
668 48.1541379801,48.1289057971,48.103762099,48.0787063085,48.0537378537,
669 48.0288561678,48.0040606896,47.9793508627,47.9547261362,47.9301859641,
670 47.9057298055,47.8813571243,47.8570673896,47.832860075,47.8087346591,
671 47.7846906251,47.7607274611,47.7368446597,47.7130417179,47.6893181375,
672 47.6656734245,47.6421070895,47.6186186475,47.5952076176,47.5718735233,
673 47.5486158923,47.5254342566,47.5023281519,47.4792971185,47.4563407004,
674 47.4334584457,47.4106499063,47.3879146382,47.3652522011,47.3426621586,
675 47.3201440779,47.2976975301,47.27532209,47.2530173358,47.2307828496,
676 47.2086182168,47.1865230265,47.1644968713,47.142539347,47.1206500531,
677 47.0988285923,47.0770745708,47.0553875978,47.033767286,47.0122132513,
678 46.9907251128,46.9693024927,46.9479450163,46.926652312,46.9054240114,
679 46.884259749,46.8631591622,46.8421218916,46.8211475806,46.8002358755,
680 46.7793864255,46.7585988825,46.7378729014,46.7172081399,46.6966042582,
681 46.6760609195,46.6555777895,46.6351545368,46.6147908322,46.5944863497,
682 46.5742407654,46.5540537582,46.5339250095,46.5138542031,46.4938410254,
683 46.4738851652,46.4539863139,46.434144165,46.4143584145,46.394628761,
684 46.374954905,46.3553365498,46.3357734005,46.3162651648,46.2968115526,
685 46.2774122759,46.258067049,46.2387755882,46.2195376123,46.200352842,
686 46.181221,46.1621418113,46.143115003,46.124140304,46.1052174456,
687 46.0863461607,46.0675261845,46.0487572541,46.0300391084,46.0113714885,
688 45.9927541372,45.9741867993,45.9556692215,45.9372011522,45.9187823419,
689 45.9004125427,45.8820915086,45.8638189954,45.8455947607,45.8274185639,
690 45.8092901659,45.7912093296,45.7731758195,45.7551894018,45.7372498443,
691 45.7193569166,45.7015103899,45.683710037,45.6659556324,45.648246952,
692 45.6305837735,45.6129658761,45.5953930405,45.5778650491,45.5603816856,
693 45.5429427354,45.5255479853,45.5081972237,45.4908902404,45.4736268266,
694 45.4564067751,45.4392298799,45.4220959367,45.4050047424,45.3879560955,
695 45.3709497956,45.3539856439,45.3370634429,45.3201829964,45.3033441096,
696 45.286546589,45.2697902423,45.2530748788,45.2364003088,45.2197663439,
697 45.2031727971,45.1866194827,45.170106216,45.1536328136,45.1371990936,
698 45.120804875,45.1044499781,45.0881342244,45.0718574366,45.0556194386,
699 45.0394200553,45.0232591129,45.0071364388,44.9910518613,44.97500521,
700 44.9589963155,44.9430250097,44.9270911254,44.9111944966,44.8953349582,
701 44.8795123463,44.8637264982,44.8479772519,44.8322644468,44.816587923,
702 44.8009475218,44.7853430856,44.7697744577,44.7542414822,44.7387440046,
703 44.7232818711,44.7078549288,44.6924630261,44.677106012,44.6617837367,
704 44.6464960512,44.6312428075,44.6160238584,44.6008390578,44.5856882605,
705 44.570571322,44.5554880988,44.5404384485,44.5254222292,44.5104393001,
706 44.4954895213,44.4805727536,44.4656888589,44.4508376997,44.4360191394,
707 44.4212330422,44.4064792734,44.3917576987,44.3770681849,44.3624105996,
708 44.347784811,44.3331906883,44.3186281014,44.3040969209,44.2895970184,
709 44.2751282661,44.2606905369,44.2462837046,44.2319076438,44.2175622296,
710 44.2032473381,44.188962846,44.1747086307,44.1604845704,44.1462905441,
711 44.1321264312,44.1179921121,44.1038874679,44.0898123802,44.0757667314,
712 44.0617504046,44.0477632835,44.0338052526,44.0198761971,44.0059760025,
713 43.9921045555,43.978261743,43.9644474528,43.9506615732,43.9369039933,
714 43.9231746028,43.9094732918,43.8957999513,43.8821544728,43.8685367485,
715 43.854946671,43.8413841338,43.8278490309,43.8143412567,43.8008607064,
716 43.7874072758,43.7739808611,43.7605813594,43.747208668,43.733862685,
717 43.720543309,43.7072504393,43.6939839756,43.6807438181,43.6675298677,
718 43.6543420258,43.6411801944,43.628044276,43.6149341734,43.6018497904,
719 43.5887910309,43.5757577997,43.5627500017,43.5497675426,43.5368103287,
720 43.5238782665,43.5109712632,43.4980892264,43.4852320645,43.4723996859,
721 43.459592,43.4468089162,43.4340503448,43.4213161963,43.4086063818,
722 43.395920813,43.3832594017,43.3706220606,43.3580087026,43.3454192411,
723 43.33285359,43.3203116637,43.3077933769,43.2952986449,43.2828273833,
724 43.2703795084,43.2579549366,43.2455535849,43.2331753709,43.2208202124,
725 43.2084880276,43.1961787354,43.1838922548,43.1716285054,43.1593874071,
726 43.1471688805,43.1349728462,43.1227992256,43.1106479402,43.0985189119,
727 43.0864120634,43.0743273173,43.0622645969,43.0502238257,43.0382049278,
728 43.0262078276,43.0142324497,43.0022787194,42.9903465622,42.9784359039,
729 42.9665466709,42.9546787897,42.9428321874,42.9310067914,42.9192025293,
730 42.9074193294,42.89565712,42.88391583,42.8721953886,42.8604957252,
731 42.8488167698,42.8371584525,42.825520704,42.8139034551,42.8023066371,
732 42.7907301817,42.7791740206,42.7676380862,42.7561223111,42.7446266282,
733 42.7331509707,42.7216952723,42.7102594667,42.6988434883,42.6874472716,
734 42.6760707514,42.664713863,42.6533765417,42.6420587235,42.6307603444,
735 42.6194813408,42.6082216494,42.5969812073,42.5857599519,42.5745578207,
736 42.5633747516,42.5522106829,42.5410655531,42.529939301,42.5188318657,
737 42.5077431866,42.4966732034,42.485621856,42.4745890847,42.4635748299,
738 42.4525790326,42.4416016337,42.4306425747,42.4197017972,42.4087792431,
739 42.3978748545,42.3869885739,42.3761203441,42.365270108,42.3544378088,
740 42.3436233901,42.3328267957,42.3220479695,42.3112868559,42.3005433995,
741 42.2898175449,42.2791092374,42.2684184221,42.2577450447,42.2470890509,
742 42.2364503869,42.2258289989,42.2152248334,42.2046378373,42.1940679577,
743 42.1835151416,42.1729793368,42.1624604909,42.1519585519,42.1414734681,
744 42.1310051879,42.1205536599,42.1101188331,42.0997006567,42.08929908,
745 42.0789140527,42.0685455244,42.0581934454,42.0478577658,42.0375384362,
746 42.0272354073,42.0169486299,42.0066780553,41.9964236349,41.9861853201,
747 41.9759630629,41.9657568151,41.955566529,41.9453921571,41.935233652,
748 41.9250909665,41.9149640537,41.9048528668,41.8947573593,41.8846774848,
749 41.8746131972,41.8645644507,41.8545311993,41.8445133977,41.8345110004,
750 41.8245239623,41.8145522385,41.8045957842,41.7946545548,41.784728506,
751 41.7748175936,41.7649217736,41.7550410021,41.7451752356,41.7353244307,
752 41.725488544,41.7156675325,41.7058613534,41.696069964,41.6862933217,
753 41.6765313841,41.6667841092,41.657051455,41.6473333796,41.6376298415,
754 41.6279407991,41.6182662112,41.6086060367,41.5989602347,41.5893287644,
755 41.5797115852,41.5701086567,41.5605199386,41.5509453909,41.5413849736,
756 41.531838647,41.5223063714,41.5127881076,41.5032838162,41.493793458,
757 41.4843169943,41.4748543861,41.4654055949,41.4559705822,41.4465493097,
758 41.4371417393,41.427747833,41.4183675529,41.4090008614,41.3996477209,
759 41.3903080941,41.3809819438,41.3716692328,41.3623699242,41.3530839814,
760 41.3438113676,41.3345520464,41.3253059814,41.3160731366,41.3068534757,
761 41.2976469631,41.2884535628,41.2792732394,41.2701059573,41.2609516812,
762 41.251810376,41.2426820066,41.2335665381,41.2244639357,41.2153741649,
763 41.2062971912,41.1972329801,41.1881814975,41.1791427094,41.1701165817,
764 41.1611030807,41.1521021727,41.1431138241,41.1341380016,41.1251746718,
765 41.1162238016,41.1072853581,41.0983593082,41.0894456193,41.0805442586,
766 41.0716551938,41.0627783924,41.0539138221,41.0450614508,41.0362212466,
767 41.0273931776,41.0185772119,41.0097733179,41.0009814642,40.9922016194,
768 40.9834337521,40.9746778312,40.9659338257,40.9572017046,40.9484814373,
769 40.9397729929,40.931076341,40.9223914511,40.9137182928,40.905056836,
770 40.8964070505,40.8877689064,40.8791423738,40.8705274229,40.8619240242,
771 40.853332148,40.8447517649,40.8361828457,40.8276253611,40.8190792821,
772 40.8105445796,40.8020212248,40.7935091889,40.7850084433,40.7765189594,
773 40.7680407088,40.7595736631,40.7511177941,40.7426730737,40.7342394738,
774 40.7258169666,40.7174055242,40.7090051189,40.7006157231,40.6922373093,
775 40.68386985,40.6755133181,40.6671676862,40.6588329272,40.6505090143,
776 40.6421959203,40.6338936187,40.6256020825,40.6173212853,40.6090512004,
777 40.6007918016,40.5925430624,40.5843049567,40.5760774582,40.567860541,
778 40.5596541792,40.5514583468,40.5432730181,40.5350981675,40.5269337693,
779 40.5187797982,40.5106362286,40.5025030354,40.4943801934,40.4862676773,
780 40.4781654622,40.4700735231,40.4619918353,40.4539203738,40.4458591142,
781 40.4378080318,40.429767102,40.4217363005,40.4137156031,40.4057049853,
782 40.3977044232,40.3897138925,40.3817333695,40.37376283,40.3658022505,
783 40.357851607,40.3499108761,40.3419800341,40.3340590575,40.3261479229,
784 40.3182466072,40.3103550869,40.302473339,40.2946013404,40.2867390681,
785 40.2788864992,40.2710436109,40.2632103804,40.2553867851,40.2475728023,
786 40.2397684096,40.2319735845,40.2241883047,40.2164125479,40.2086462918,
787 40.2008895143,40.1931421935,40.1854043073,40.1776758338,40.1699567512,
788 40.1622470377,40.1545466718,40.1468556316,40.1391738959,40.131501443,
789 40.1238382516,40.1161843004,40.1085395682,40.1009040337,40.093277676,
790 40.0856604739,40.0780524066,40.0704534531,40.0628635927,40.0552828046,
791 40.0477110681,40.0401483626,40.0325946677,40.0250499628,40.0175142275,
792 40.0099874416,40.0024695847,39.9949606367,39.9874605775,39.979969387,
793 39.9724870452,39.9650135322,39.9575488282,39.9500929133,39.9426457678,
794 39.9352073722,39.9277777067,39.9203567518,39.9129444882,39.9055408964,
795 39.898145957,39.8907596508,39.8833819586,39.8760128612,39.8686523396,
796 39.8613003748,39.8539569477,39.8466220395,39.8392956313,39.8319777044,
797 39.8246682402,39.8173672198,39.8100746247,39.8027904365,39.7955146366,
798 39.7882472066,39.7809881283,39.7737373832,39.7664949532,39.75926082,
799 39.7520349657,39.7448173721,39.7376080212,39.7304068951,39.7232139759,
800 39.7160292458,39.708852687,39.7016842819,39.6945240127,39.6873718619,
801 39.6802278119,39.6730918453,39.6659639446,39.6588440925,39.6517322716,
802 39.6446284646,39.6375326544,39.6304448239,39.6233649558,39.6162930333,
803 39.6092290392,39.6021729567,39.5951247688,39.5880844588,39.5810520098,
804 39.5740274052,39.5670106282,39.5600016623,39.5530004909,39.5460070974,
805 39.5390214655,39.5320435786,39.5250734205,39.5181109748,39.5111562253,
806 39.5042091557,39.4972697499,39.4903379919,39.4834138654,39.4764973546,
807 39.4695884435,39.4626871162,39.4557933567,39.4489071494,39.4420284784,
808 39.4351573281,39.4282936827,39.4214375266,39.4145888443,39.4077476203,
809 39.4009138391,39.3940874852,39.3872685434,39.3804569982,39.3736528344,
810 39.3668560367,39.3600665899,39.353284479,39.3465096888,39.3397422042,
811 39.3329820103,39.3262290921,39.3194834346,39.3127450231,39.3060138426,
812 39.2992898784,39.2925731158,39.2858635401,39.2791611366,39.2724658907,
813 39.2657777879,39.2590968136,39.2524229534,39.2457561929,39.2390965176,
814 39.2324439132,39.2257983655,39.2191598602,39.212528383,39.2059039198,
815 39.1992864564,39.1926759788,39.186072473,39.1794759249,39.1728863205,
816 39.166303646,39.1597278875,39.153159031,39.1465970629,39.1400419694,
817 39.1334937368,39.1269523513,39.1204177994,39.1138900674,39.1073691419,
818 39.1008550092,39.094347656,39.0878470687,39.081353234,39.0748661385,
819 39.068385769,39.0619121121,39.0554451545,39.0489848832,39.0425312849,
820 39.0360843464,39.0296440548,39.023210397,39.0167833599,39.0103629306,
821 39.0039490962,38.9975418437,38.9911411603,38.9847470331,38.9783594495,
822 38.9719783965,38.9656038616,38.959235832,38.9528742952,38.9465192384,
823 38.9401706492,38.933828515,38.9274928232,38.9211635616,38.9148407175,
824 38.9085242787,38.9022142328,38.8959105674,38.8896132703,38.8833223293,
825 38.877037732,38.8707594664,38.8644875204,38.8582218817,38.8519625383,
826 38.8457094782,38.8394626894,38.8332221598,38.8269878777,38.8207598309,
827 38.8145380078,38.8083223964,38.802112985,38.7959097617,38.7897127148,
828 38.7835218327,38.7773371036,38.7711585159,38.7649860581,38.7588197184,
829 38.7526594855,38.7465053477,38.7403572936,38.7342153118,38.7280793908,
830 38.7219495192,38.7158256858,38.7097078791,38.7035960879,38.697490301,
831 38.691390507,38.6852966949,38.6792088534,38.6731269715,38.667051038,
832 38.6609810418
833 }}
834 };
0 ["gx_head_file_version", [1, 2, "0.15.0svn"],
1 "rhythm-1", {
2 "engine": {
3 "IR.auto_freq": "manual",
4 "IR.bandwidth": 100,
5 "IR.freq": 440,
6 "IR.on_off": 0,
7 "IR.peak": 1,
8 "IR.position": 5,
9 "IR.pp": "post",
10 "amp.balance": 0,
11 "amp.bass_boost.on_off": 1,
12 "amp.feed_on_off": 0,
13 "amp.out_master": -14.31,
14 "amp.tonestack.Bass": 0.838859,
15 "amp.tonestack.Middle": 0.640625,
16 "amp.tonestack.Treble": 0.301766,
17 "amp.tonestack.select": "JCM-800",
18 "amp2.stage1.Pregain": -10.1837,
19 "amp2.stage2.gain1": 8.75211,
20 "ampmodul.amp2.stage1.tube1": 11.25,
21 "ampmodul.amp2.stage2.tube2": 13.5544,
22 "ampmodul.feedback": -0.332063,
23 "ampmodul.level": -0.309276,
24 "ampmodul.on_off": 1,
25 "ampmodul.position": 10,
26 "beat_detector.atack_gain": 5,
27 "beat_detector.beat_gain": 1,
28 "beat_detector.midi_gain": 1,
29 "beat_detector.note_off": 2,
30 "beat_detector.stepper": 1,
31 "biquad.Freq": 1200,
32 "biquad.on_off": 0,
33 "biquad.position": 12,
34 "biquad.pp": "post",
35 "cab.on_off": 0,
36 "chorus.delay": 0.02,
37 "chorus.depth": 0.02,
38 "chorus.freq": 3,
39 "chorus.level": 0.5,
40 "chorus.on_off": 0,
41 "chorus.position": 1,
42 "compressor.attack": 0.002,
43 "compressor.knee": 3,
44 "compressor.on_off": 0,
45 "compressor.position": 6,
46 "compressor.pp": "post",
47 "compressor.ratio": 2,
48 "compressor.release": 0.5,
49 "compressor.threshold": -20,
50 "crybaby.autowah": "manual",
51 "crybaby.level": 0.1,
52 "crybaby.on_off": 0,
53 "crybaby.position": 3,
54 "crybaby.pp": "post",
55 "crybaby.wah": 0,
56 "crybaby.wet_dry": 0,
57 "delay.delay": 0,
58 "delay.gain": 0,
59 "delay.on_off": 0,
60 "delay.position": 9,
61 "delay.pp": "post",
62 "echo.on_off": 0,
63 "echo.percent": 31.1703,
64 "echo.position": 8,
65 "echo.pp": "post",
66 "echo.time": 402.608,
67 "eqs.Qs125": 50,
68 "eqs.Qs16k": 50,
69 "eqs.Qs1k": 50,
70 "eqs.Qs250": 50,
71 "eqs.Qs2k": 50,
72 "eqs.Qs31_25": 50,
73 "eqs.Qs4k": 50,
74 "eqs.Qs500": 50,
75 "eqs.Qs62_5": 50,
76 "eqs.Qs8k": 50,
77 "eqs.freq125": 125,
78 "eqs.freq16k": 16000,
79 "eqs.freq1k": 1000,
80 "eqs.freq250": 250,
81 "eqs.freq2k": 2000,
82 "eqs.freq31_25": 31,
83 "eqs.freq4k": 4000,
84 "eqs.freq500": 500,
85 "eqs.freq62_5": 62,
86 "eqs.freq8k": 8000,
87 "eqs.fs125": 0,
88 "eqs.fs16k": -21.2,
89 "eqs.fs1k": 0,
90 "eqs.fs250": 0,
91 "eqs.fs2k": 0,
92 "eqs.fs31_25": 0,
93 "eqs.fs4k": -9.2,
94 "eqs.fs500": 0,
95 "eqs.fs62_5": 0,
96 "eqs.fs8k": -15.2,
97 "eqs.on_off": 0,
98 "eqs.position": 2,
99 "eqs.pp": "post",
100 "flanger.LFO freq": 0.2,
101 "flanger.depth": 1,
102 "flanger.feedback gain": 0,
103 "flanger.flange delay": 10,
104 "flanger.flange delay offset": 1,
105 "flanger.invert": "linear",
106 "flanger.level": 0,
107 "flanger.on_off": 0,
108 "flanger.position": 2,
109 "freeverb.RoomSize": 0.5,
110 "freeverb.damp": 0.5,
111 "freeverb.on_off": 0,
112 "freeverb.position": 10,
113 "freeverb.pp": "post",
114 "freeverb.wet_dry": 0,
115 "gx_distortion.drive": 0.698234,
116 "gx_distortion.gain": 7.56023,
117 "gx_distortion.high_drive": 0.838859,
118 "gx_distortion.high_gain": 10,
119 "gx_distortion.level": 0.01,
120 "gx_distortion.low_drive": 1,
121 "gx_distortion.low_gain": 10,
122 "gx_distortion.middle_h_drive": 1,
123 "gx_distortion.middle_h_gain": 10,
124 "gx_distortion.middle_l_drive": 1,
125 "gx_distortion.middle_l_gain": 10,
126 "gx_distortion.on_off": 0,
127 "gx_distortion.position": 4,
128 "gx_distortion.pp": "pre",
129 "gx_distortion.resonator.on_off": 0,
130 "gx_distortion.split_high_freq": 6894,
131 "gx_distortion.split_low_freq": 20,
132 "gx_distortion.split_middle_freq": 990,
133 "gx_distortion.trigger": 0.12,
134 "gx_distortion.vibrato": 1,
135 "gxdistortion.drive": 0.803516,
136 "jconv.balance": 0.0996587,
137 "jconv.diff_delay": 5.625,
138 "jconv.gain": -4.44221,
139 "jconv.on_off": 0,
140 "jconv.wet_dry": 41,
141 "low_high_pass.lhc.high_freq": 5000,
142 "low_high_pass.lhc.low_freq": 130,
143 "low_high_pass.lhc.on_off": 0,
144 "low_high_pass.lhp.high_freq": 130,
145 "low_high_pass.lhp.low_freq": 5000,
146 "low_high_pass.lhp.on_off": 0,
147 "low_highpass.on_off": 0,
148 "low_highpass.position": 1,
149 "low_highpass.pp": "post",
150 "midi_out.channel_1.auto_pitch": 0,
151 "midi_out.channel_1.autogain": 0,
152 "midi_out.channel_1.channel": 0,
153 "midi_out.channel_1.oktave": 0,
154 "midi_out.channel_1.program": 0,
155 "midi_out.channel_1.sensity": 20,
156 "midi_out.channel_1.velocity": 64,
157 "midi_out.channel_1.volume": 64,
158 "midi_out.channel_2.auto_pitch": 0,
159 "midi_out.channel_2.autogain": 0,
160 "midi_out.channel_2.channel": 0,
161 "midi_out.channel_2.oktave": 0,
162 "midi_out.channel_2.on_off": 0,
163 "midi_out.channel_2.program": 0,
164 "midi_out.channel_2.sensity": 20,
165 "midi_out.channel_2.velocity": 64,
166 "midi_out.channel_2.volume": 64,
167 "midi_out.channel_3.auto_pitch": 0,
168 "midi_out.channel_3.autogain": 0,
169 "midi_out.channel_3.channel": 0,
170 "midi_out.channel_3.oktave": 0,
171 "midi_out.channel_3.on_off": 0,
172 "midi_out.channel_3.program": 0,
173 "midi_out.channel_3.sensity": 20,
174 "midi_out.channel_3.velocity": 64,
175 "midi_out.channel_3.volume": 64,
176 "midi_out.on_off": 0,
177 "moog.Q": 1.66794,
178 "moog.fr": 4198.39,
179 "moog.on_off": 0,
180 "moog.position": 6,
181 "oscilloscope.on_off": 0,
182 "oscilloscope.position": 11,
183 "oscilloscope.pp": "post",
184 "overdrive.drive": 9.27948,
185 "overdrive.on_off": 1,
186 "overdrive.position": 7,
187 "overdrive.pp": "pre",
188 "phaser.MaxNotch1Freq": 800,
189 "phaser.MinNotch1Freq": 100,
190 "phaser.Notch width": 997,
191 "phaser.NotchFreq": 1.5,
192 "phaser.Speed": 0.5,
193 "phaser.VibratoMode": "direct ",
194 "phaser.depth": 1,
195 "phaser.feedback gain": 0,
196 "phaser.invert": "linear",
197 "phaser.level": 0,
198 "phaser.on_off": 0,
199 "phaser.position": 3,
200 "shaper.on_off": 0,
201 "shaper.sharper": 1,
202 "stereodelay.LFO freq": 0.321895,
203 "stereodelay.invert": "linear",
204 "stereodelay.l_delay": 459.355,
205 "stereodelay.l_gain": -11.25,
206 "stereodelay.on_off": 0,
207 "stereodelay.position": 4,
208 "stereodelay.r_delay": 489.69,
209 "stereodelay.r_gain": -10.0672,
210 "stereoecho.on_off": 0,
211 "stereoecho.percent_l": 32,
212 "stereoecho.percent_r": 31.5512,
213 "stereoecho.position": 5,
214 "stereoecho.time_l": 516.547,
215 "stereoecho.time_r": 516.547,
216 "system.select_tube": 0,
217 "system.select_tube2": 0,
218 "system.select_tube3": 1,
219 "system.select_tube4": 0,
220 "system.select_tube5": 0,
221 "ui.BiQuad Filter": 1,
222 "ui.Chorus": 1,
223 "ui.Compressor": 0,
224 "ui.Crybaby": 1,
225 "ui.Delay": 1,
226 "ui.Echo": 1,
227 "ui.Flanger": 1,
228 "ui.Freeverb": 0,
229 "ui.ImpulseResponse": 1,
230 "ui.Moog Filter": 1,
231 "ui.Multi Band Distortion": 1,
232 "ui.Oscilloscope": 0,
233 "ui.Overdrive": 1,
234 "ui.Phaser": 1,
235 "ui.Postamp": 1,
236 "ui.Scaleable EQ": 1,
237 "ui.Stereo Delay": 1,
238 "ui.Stereo Echo": 1,
239 "ui.low high pass": 0,
240 "ui.main_xorg": 300,
241 "ui.main_yorg": 300
242 },
243 "jconv": {
244 "jconv.IRFile": "",
245 "jconv.IRDir": "~/",
246 "jconv.Gain": 0.284586,
247 "jconv.Offset": 0,
248 "jconv.Length": 159,
249 "jconv.Delay": 0,
250 "jconv.gainline": [[0, 0], [158, 0]]}
251 },
252 "lead-thin", {
253 "engine": {
254 "IR.auto_freq": "manual",
255 "IR.bandwidth": 100,
256 "IR.freq": 440,
257 "IR.on_off": 0,
258 "IR.peak": 1,
259 "IR.position": 5,
260 "IR.pp": "post",
261 "amp.balance": 0,
262 "amp.bass_boost.on_off": 1,
263 "amp.clip.on_off": 0,
264 "amp.feed_on_off": 0,
265 "amp.fuzz": 0,
266 "amp.on_off": 0,
267 "amp.out_amp": 0,
268 "amp.out_master": -9.18,
269 "amp.tonestack.Bass": 0.605281,
270 "amp.tonestack.Middle": 0.640625,
271 "amp.tonestack.Treble": 0.431871,
272 "amp.tonestack.select": "JCM-800",
273 "amp.wet_dry": 100,
274 "amp2.stage1.Pregain": -4.21126,
275 "amp2.stage2.gain1": 2.45673,
276 "ampmodul.amp2.stage1.tube1": 11.25,
277 "ampmodul.amp2.stage2.tube2": 13.5544,
278 "ampmodul.feedbac": 0,
279 "ampmodul.feedback": -0.332063,
280 "ampmodul.level": -0.309276,
281 "ampmodul.on_off": 1,
282 "ampmodul.position": 10,
283 "ampmodul.wet_dry": 0,
284 "beat_detector.atack_gain": 5,
285 "beat_detector.beat_gain": 1,
286 "beat_detector.midi_gain": 1,
287 "beat_detector.note_off": 2,
288 "beat_detector.stepper": 1,
289 "biquad.Freq": 666.482,
290 "biquad.on_off": 1,
291 "biquad.position": 12,
292 "biquad.pp": "pre",
293 "cab.on_off": 0,
294 "cab.select": "Marshall",
295 "chorus.delay": 0,
296 "chorus.depth": 0.02,
297 "chorus.freq": 3,
298 "chorus.level": 0.5,
299 "chorus.on_off": 0,
300 "chorus.position": 1,
301 "chorus_mono.freq": 2,
302 "chorus_mono.level": 0.5,
303 "chorus_mono.on_off": 0,
304 "chorus_mono.position": 15,
305 "chorus_mono.pp": "post",
306 "chorus_mono.wet_dry": 100,
307 "compressor.attack": 0.002,
308 "compressor.knee": 3,
309 "compressor.on_off": 0,
310 "compressor.position": 6,
311 "compressor.pp": "post",
312 "compressor.ratio": 2,
313 "compressor.release": 0.5,
314 "compressor.threshold": -20,
315 "con.on_off": 0,
316 "crybaby.autowah": "manual",
317 "crybaby.level": 0.1,
318 "crybaby.on_off": 0,
319 "crybaby.position": 3,
320 "crybaby.pp": "post",
321 "crybaby.wah": 0,
322 "crybaby.wet_dry": 0,
323 "delay.delay": 1313.07,
324 "delay.gain": 0,
325 "delay.on_off": 0,
326 "delay.position": 9,
327 "delay.pp": "post",
328 "echo.on_off": 1,
329 "echo.percent": 32.1,
330 "echo.position": 8,
331 "echo.pp": "post",
332 "echo.time": 402.608,
333 "eqs.Qs125": 50,
334 "eqs.Qs16k": 45,
335 "eqs.Qs1k": 50,
336 "eqs.Qs250": 50,
337 "eqs.Qs2k": 50,
338 "eqs.Qs31_25": 50,
339 "eqs.Qs4k": 50,
340 "eqs.Qs500": 50,
341 "eqs.Qs62_5": 50,
342 "eqs.Qs8k": 50,
343 "eqs.freq125": 125,
344 "eqs.freq16k": 16000,
345 "eqs.freq1k": 1000,
346 "eqs.freq250": 250,
347 "eqs.freq2k": 2000,
348 "eqs.freq31_25": 31,
349 "eqs.freq4k": 4000,
350 "eqs.freq500": 500,
351 "eqs.freq62_5": 62,
352 "eqs.freq8k": 8000,
353 "eqs.fs125": 2.8,
354 "eqs.fs16k": -11.6,
355 "eqs.fs1k": 8.8,
356 "eqs.fs250": 0,
357 "eqs.fs2k": 5.2,
358 "eqs.fs31_25": -9.2,
359 "eqs.fs4k": 4,
360 "eqs.fs500": 4,
361 "eqs.fs62_5": -3.2,
362 "eqs.fs8k": -6.8,
363 "eqs.on_off": 0,
364 "eqs.position": 2,
365 "eqs.pp": "post",
366 "flanger.LFO freq": 0.2,
367 "flanger.depth": 1,
368 "flanger.feedback gain": 0,
369 "flanger.flange delay": 10,
370 "flanger.flange delay offset": 1,
371 "flanger.invert": "linear",
372 "flanger.level": 0,
373 "flanger.on_off": 0,
374 "flanger.position": 2,
375 "flanger_mono.freq": 0.2,
376 "flanger_mono.level": 0,
377 "flanger_mono.on_off": 0,
378 "flanger_mono.position": 16,
379 "flanger_mono.pp": "post",
380 "flanger_mono.wet_dry": 100,
381 "freeverb.RoomSize": 0.5,
382 "freeverb.damp": 0.5,
383 "freeverb.on_off": 0,
384 "freeverb.position": 10,
385 "freeverb.pp": "post",
386 "freeverb.wet_dry": 0,
387 "gx_distortion.drive": 0.698234,
388 "gx_distortion.gain": 7.56023,
389 "gx_distortion.high_drive": 0.838859,
390 "gx_distortion.high_gain": 10,
391 "gx_distortion.level": 0.01,
392 "gx_distortion.low_drive": 1,
393 "gx_distortion.low_gain": 10,
394 "gx_distortion.middle_h_drive": 1,
395 "gx_distortion.middle_h_gain": 10,
396 "gx_distortion.middle_l_drive": 1,
397 "gx_distortion.middle_l_gain": 10,
398 "gx_distortion.on_off": 0,
399 "gx_distortion.position": 4,
400 "gx_distortion.pp": "pre",
401 "gx_distortion.resonator.on_off": 0,
402 "gx_distortion.split_high_freq": 6894,
403 "gx_distortion.split_low_freq": 20,
404 "gx_distortion.split_middle_freq": 990,
405 "gx_distortion.trigger": 0.12,
406 "gx_distortion.vibrato": 1,
407 "gxdistortion.drive": 0.947282,
408 "jconv.balance": 0.0996587,
409 "jconv.diff_delay": 5.625,
410 "jconv.gain": -4.44221,
411 "jconv.on_off": 0,
412 "jconv.wet_dry": 41,
413 "low_high_pass.lhc.high_freq": 5000,
414 "low_high_pass.lhc.low_freq": 130,
415 "low_high_pass.lhc.on_off": 0,
416 "low_high_pass.lhp.high_freq": 20,
417 "low_high_pass.lhp.low_freq": 12000,
418 "low_high_pass.lhp.on_off": 0,
419 "low_highpass.on_off": 0,
420 "low_highpass.position": 1,
421 "low_highpass.pp": "post",
422 "midi_out.channel_1.auto_pitch": 0,
423 "midi_out.channel_1.autogain": 0,
424 "midi_out.channel_1.channel": 0,
425 "midi_out.channel_1.oktave": 0,
426 "midi_out.channel_1.program": 0,
427 "midi_out.channel_1.sensity": 20,
428 "midi_out.channel_1.velocity": 64,
429 "midi_out.channel_1.volume": 64,
430 "midi_out.channel_2.auto_pitch": 0,
431 "midi_out.channel_2.autogain": 0,
432 "midi_out.channel_2.channel": 0,
433 "midi_out.channel_2.oktave": 0,
434 "midi_out.channel_2.on_off": 0,
435 "midi_out.channel_2.program": 0,
436 "midi_out.channel_2.sensity": 20,
437 "midi_out.channel_2.velocity": 64,
438 "midi_out.channel_2.volume": 64,
439 "midi_out.channel_3.auto_pitch": 0,
440 "midi_out.channel_3.autogain": 0,
441 "midi_out.channel_3.channel": 0,
442 "midi_out.channel_3.oktave": 0,
443 "midi_out.channel_3.on_off": 0,
444 "midi_out.channel_3.program": 0,
445 "midi_out.channel_3.sensity": 20,
446 "midi_out.channel_3.velocity": 64,
447 "midi_out.channel_3.volume": 64,
448 "midi_out.on_off": 0,
449 "moog.Q": 1.66794,
450 "moog.fr": 4198.39,
451 "moog.on_off": 0,
452 "moog.position": 6,
453 "noise_gate.on_off": 0,
454 "noise_gate.threshold": 0.017,
455 "oscilloscope.on_off": 0,
456 "oscilloscope.position": 11,
457 "oscilloscope.pp": "post",
458 "overdrive.drive": 9.27948,
459 "overdrive.on_off": 1,
460 "overdrive.position": 7,
461 "overdrive.pp": "pre",
462 "phaser.MaxNotch1Freq": 800,
463 "phaser.MinNotch1Freq": 100,
464 "phaser.Notch width": 997,
465 "phaser.NotchFreq": 1.5,
466 "phaser.Speed": 0.5,
467 "phaser.VibratoMode": "direct ",
468 "phaser.depth": 1,
469 "phaser.feedback gain": 0,
470 "phaser.invert": "linear",
471 "phaser.level": 0,
472 "phaser.on_off": 0,
473 "phaser.position": 3,
474 "phaser_mono.Speed": 0.5,
475 "phaser_mono.level": 0,
476 "phaser_mono.on_off": 0,
477 "phaser_mono.position": 14,
478 "phaser_mono.pp": "post",
479 "phaser_mono.wet_dry": 100,
480 "shaper.on_off": 0,
481 "shaper.sharper": 1,
482 "stereodelay.LFO freq": 0.321895,
483 "stereodelay.invert": "linear",
484 "stereodelay.l_delay": 459.355,
485 "stereodelay.l_gain": -11.25,
486 "stereodelay.on_off": 0,
487 "stereodelay.position": 4,
488 "stereodelay.r_delay": 489.69,
489 "stereodelay.r_gain": -10.0672,
490 "stereoecho.on_off": 0,
491 "stereoecho.percent_l": 32,
492 "stereoecho.percent_r": 31.5512,
493 "stereoecho.position": 5,
494 "stereoecho.time_l": 516.547,
495 "stereoecho.time_r": 516.547,
496 "system.order_rack_h": 1,
497 "system.order_rack_v": 0,
498 "system.select_tube": 0,
499 "system.select_tube10": 0,
500 "system.select_tube11": 0,
501 "system.select_tube12": 0,
502 "system.select_tube2": 0,
503 "system.select_tube3": 1,
504 "system.select_tube4": 0,
505 "system.select_tube5": 0,
506 "system.select_tube6": 0,
507 "system.select_tube7": 0,
508 "system.select_tube8": 0,
509 "system.select_tube9": 0,
510 "tonemodul.Bass": 0,
511 "tonemodul.Middle": 0,
512 "tonemodul.ON": 0,
513 "tonemodul.Treble": 0,
514 "tonemodul.on_off": 0,
515 "tonemodul.position": 8,
516 "tonemodul.sharper": 1,
517 "tremolo.SINE": "triangle",
518 "tremolo.depth": 0.5,
519 "tremolo.freq": 5,
520 "tremolo.on_off": 0,
521 "tremolo.position": 13,
522 "tremolo.pp": "post",
523 "ui.3 Band EQ": 0,
524 "ui.BiQuad Filter": 1,
525 "ui.Chorus": 1,
526 "ui.Chorus Mono": 0,
527 "ui.Compressor": 0,
528 "ui.Crybaby": 1,
529 "ui.Delay": 1,
530 "ui.Echo": 1,
531 "ui.Flanger": 1,
532 "ui.Flanger Mono": 0,
533 "ui.Freeverb": 0,
534 "ui.ImpulseResponse": 1,
535 "ui.Moog Filter": 1,
536 "ui.Multi Band Distortion": 1,
537 "ui.Oscilloscope": 0,
538 "ui.Overdrive": 1,
539 "ui.Phaser": 1,
540 "ui.Phaser Mono": 0,
541 "ui.Postamp": 1,
542 "ui.Scaleable EQ": 1,
543 "ui.Stereo Delay": 1,
544 "ui.Stereo Echo": 1,
545 "ui.Tremolo": 0,
546 "ui.low high pass": 1,
547 "ui.main_xorg": 300,
548 "ui.main_yorg": 300
549 },
550 "jconv": {
551 "jconv.IRFile": "",
552 "jconv.IRDir": "~/",
553 "jconv.Gain": 0.284586,
554 "jconv.Offset": 0,
555 "jconv.Length": 159,
556 "jconv.Delay": 0,
557 "jconv.gainline": [[0, 0], [158, 0]]}
558 },
559 "lead-main", {
560 "engine": {
561 "IR.auto_freq": "manual",
562 "IR.bandwidth": 100,
563 "IR.freq": 440,
564 "IR.on_off": 0,
565 "IR.peak": 1,
566 "IR.position": 5,
567 "IR.pp": "post",
568 "amp.balance": 0,
569 "amp.bass_boost.on_off": 1,
570 "amp.clip.on_off": 0,
571 "amp.feed_on_off": 0,
572 "amp.fuzz": 0,
573 "amp.on_off": 0,
574 "amp.out_amp": 0,
575 "amp.out_master": -16.47,
576 "amp.tonestack.Bass": 0.605281,
577 "amp.tonestack.Middle": 0.640625,
578 "amp.tonestack.Treble": 0.431871,
579 "amp.tonestack.select": "JCM-800",
580 "amp.wet_dry": 100,
581 "amp2.stage1.Pregain": -4.21126,
582 "amp2.stage2.gain1": 2.45673,
583 "ampmodul.amp2.stage1.tube1": 11.25,
584 "ampmodul.amp2.stage2.tube2": 13.5544,
585 "ampmodul.feedbac": 0,
586 "ampmodul.feedback": -0.332063,
587 "ampmodul.level": -0.309276,
588 "ampmodul.on_off": 1,
589 "ampmodul.position": 10,
590 "ampmodul.wet_dry": 0,
591 "beat_detector.atack_gain": 5,
592 "beat_detector.beat_gain": 1,
593 "beat_detector.midi_gain": 1,
594 "beat_detector.note_off": 2,
595 "beat_detector.stepper": 1,
596 "biquad.Freq": 666.482,
597 "biquad.on_off": 1,
598 "biquad.position": 12,
599 "biquad.pp": "pre",
600 "cab.on_off": 0,
601 "cab.select": "Marshall",
602 "chorus.delay": 0,
603 "chorus.depth": 0.02,
604 "chorus.freq": 3,
605 "chorus.level": 0.5,
606 "chorus.on_off": 0,
607 "chorus.position": 1,
608 "chorus_mono.freq": 2,
609 "chorus_mono.level": 0.5,
610 "chorus_mono.on_off": 0,
611 "chorus_mono.position": 15,
612 "chorus_mono.pp": "post",
613 "chorus_mono.wet_dry": 100,
614 "compressor.attack": 0.002,
615 "compressor.knee": 3,
616 "compressor.on_off": 0,
617 "compressor.position": 6,
618 "compressor.pp": "post",
619 "compressor.ratio": 2,
620 "compressor.release": 0.5,
621 "compressor.threshold": -20,
622 "con.on_off": 0,
623 "crybaby.autowah": "manual",
624 "crybaby.level": 0.1,
625 "crybaby.on_off": 0,
626 "crybaby.position": 3,
627 "crybaby.pp": "post",
628 "crybaby.wah": 0,
629 "crybaby.wet_dry": 0,
630 "delay.delay": 1313.07,
631 "delay.gain": 0,
632 "delay.on_off": 0,
633 "delay.position": 9,
634 "delay.pp": "post",
635 "echo.on_off": 1,
636 "echo.percent": 32.1,
637 "echo.position": 8,
638 "echo.pp": "post",
639 "echo.time": 402.608,
640 "eqs.Qs125": 50,
641 "eqs.Qs16k": 45,
642 "eqs.Qs1k": 50,
643 "eqs.Qs250": 50,
644 "eqs.Qs2k": 50,
645 "eqs.Qs31_25": 50,
646 "eqs.Qs4k": 50,
647 "eqs.Qs500": 50,
648 "eqs.Qs62_5": 50,
649 "eqs.Qs8k": 50,
650 "eqs.freq125": 125,
651 "eqs.freq16k": 16000,
652 "eqs.freq1k": 1000,
653 "eqs.freq250": 250,
654 "eqs.freq2k": 2000,
655 "eqs.freq31_25": 31,
656 "eqs.freq4k": 4000,
657 "eqs.freq500": 500,
658 "eqs.freq62_5": 62,
659 "eqs.freq8k": 8000,
660 "eqs.fs125": 2.8,
661 "eqs.fs16k": -11.6,
662 "eqs.fs1k": 8.8,
663 "eqs.fs250": 0,
664 "eqs.fs2k": 5.2,
665 "eqs.fs31_25": -9.2,
666 "eqs.fs4k": 4,
667 "eqs.fs500": 4,
668 "eqs.fs62_5": -3.2,
669 "eqs.fs8k": -6.8,
670 "eqs.on_off": 0,
671 "eqs.position": 2,
672 "eqs.pp": "post",
673 "feedback.feedback": -0.474773,
674 "feedback.on_off": 1,
675 "feedback.position": 17,
676 "feedback.pp": "post",
677 "feedback.wet_dry": 64.0625,
678 "flanger.LFO freq": 0.2,
679 "flanger.depth": 1,
680 "flanger.feedback gain": 0,
681 "flanger.flange delay": 10,
682 "flanger.flange delay offset": 1,
683 "flanger.invert": "linear",
684 "flanger.level": 0,
685 "flanger.on_off": 0,
686 "flanger.position": 2,
687 "flanger_mono.freq": 0.2,
688 "flanger_mono.level": 0,
689 "flanger_mono.on_off": 0,
690 "flanger_mono.position": 16,
691 "flanger_mono.pp": "post",
692 "flanger_mono.wet_dry": 100,
693 "freeverb.RoomSize": 0.5,
694 "freeverb.damp": 0.5,
695 "freeverb.on_off": 0,
696 "freeverb.position": 10,
697 "freeverb.pp": "post",
698 "freeverb.wet_dry": 0,
699 "gx_distortion.drive": 0.698234,
700 "gx_distortion.gain": 7.56023,
701 "gx_distortion.high_drive": 0.838859,
702 "gx_distortion.high_gain": 10,
703 "gx_distortion.level": 0.01,
704 "gx_distortion.low_drive": 1,
705 "gx_distortion.low_gain": 10,
706 "gx_distortion.middle_h_drive": 1,
707 "gx_distortion.middle_h_gain": 10,
708 "gx_distortion.middle_l_drive": 1,
709 "gx_distortion.middle_l_gain": 10,
710 "gx_distortion.on_off": 0,
711 "gx_distortion.position": 4,
712 "gx_distortion.pp": "pre",
713 "gx_distortion.resonator.on_off": 0,
714 "gx_distortion.split_high_freq": 6894,
715 "gx_distortion.split_low_freq": 20,
716 "gx_distortion.split_middle_freq": 990,
717 "gx_distortion.trigger": 0.12,
718 "gx_distortion.vibrato": 1,
719 "gxdistortion.drive": 0.947282,
720 "jconv.balance": 0.0996587,
721 "jconv.diff_delay": 5.625,
722 "jconv.gain": -4.44221,
723 "jconv.on_off": 0,
724 "jconv.wet_dry": 41,
725 "low_high_pass.lhc.high_freq": 5000,
726 "low_high_pass.lhc.low_freq": 130,
727 "low_high_pass.lhc.on_off": 0,
728 "low_high_pass.lhp.high_freq": 20,
729 "low_high_pass.lhp.low_freq": 12000,
730 "low_high_pass.lhp.on_off": 0,
731 "low_highpass.on_off": 0,
732 "low_highpass.position": 1,
733 "low_highpass.pp": "post",
734 "midi_out.channel_1.auto_pitch": 0,
735 "midi_out.channel_1.autogain": 0,
736 "midi_out.channel_1.channel": 0,
737 "midi_out.channel_1.oktave": 0,
738 "midi_out.channel_1.program": 0,
739 "midi_out.channel_1.sensity": 20,
740 "midi_out.channel_1.velocity": 64,
741 "midi_out.channel_1.volume": 64,
742 "midi_out.channel_2.auto_pitch": 0,
743 "midi_out.channel_2.autogain": 0,
744 "midi_out.channel_2.channel": 0,
745 "midi_out.channel_2.oktave": 0,
746 "midi_out.channel_2.on_off": 0,
747 "midi_out.channel_2.program": 0,
748 "midi_out.channel_2.sensity": 20,
749 "midi_out.channel_2.velocity": 64,
750 "midi_out.channel_2.volume": 64,
751 "midi_out.channel_3.auto_pitch": 0,
752 "midi_out.channel_3.autogain": 0,
753 "midi_out.channel_3.channel": 0,
754 "midi_out.channel_3.oktave": 0,
755 "midi_out.channel_3.on_off": 0,
756 "midi_out.channel_3.program": 0,
757 "midi_out.channel_3.sensity": 20,
758 "midi_out.channel_3.velocity": 64,
759 "midi_out.channel_3.volume": 64,
760 "midi_out.on_off": 0,
761 "moog.Q": 1.66794,
762 "moog.fr": 4198.39,
763 "moog.on_off": 0,
764 "moog.position": 6,
765 "noise_gate.on_off": 0,
766 "noise_gate.threshold": 0.017,
767 "oscilloscope.on_off": 0,
768 "oscilloscope.position": 11,
769 "oscilloscope.pp": "post",
770 "overdrive.drive": 9.27948,
771 "overdrive.on_off": 1,
772 "overdrive.position": 7,
773 "overdrive.pp": "pre",
774 "phaser.MaxNotch1Freq": 800,
775 "phaser.MinNotch1Freq": 100,
776 "phaser.Notch width": 997,
777 "phaser.NotchFreq": 1.5,
778 "phaser.Speed": 0.5,
779 "phaser.VibratoMode": "direct ",
780 "phaser.depth": 1,
781 "phaser.feedback gain": 0,
782 "phaser.invert": "linear",
783 "phaser.level": 0,
784 "phaser.on_off": 0,
785 "phaser.position": 3,
786 "phaser_mono.Speed": 0.5,
787 "phaser_mono.level": 0,
788 "phaser_mono.on_off": 0,
789 "phaser_mono.position": 14,
790 "phaser_mono.pp": "post",
791 "phaser_mono.wet_dry": 100,
792 "shaper.on_off": 0,
793 "shaper.sharper": 1,
794 "stereodelay.LFO freq": 0.321895,
795 "stereodelay.invert": "linear",
796 "stereodelay.l_delay": 459.355,
797 "stereodelay.l_gain": -11.25,
798 "stereodelay.on_off": 0,
799 "stereodelay.position": 4,
800 "stereodelay.r_delay": 489.69,
801 "stereodelay.r_gain": -10.0672,
802 "stereoecho.on_off": 0,
803 "stereoecho.percent_l": 32,
804 "stereoecho.percent_r": 31.5512,
805 "stereoecho.position": 5,
806 "stereoecho.time_l": 516.547,
807 "stereoecho.time_r": 516.547,
808 "system.order_rack_h": 1,
809 "system.order_rack_v": 0,
810 "system.select_tube": 0,
811 "system.select_tube10": 0,
812 "system.select_tube11": 0,
813 "system.select_tube12": 0,
814 "system.select_tube2": 0,
815 "system.select_tube3": 0,
816 "system.select_tube4": 1,
817 "system.select_tube5": 0,
818 "system.select_tube6": 0,
819 "system.select_tube7": 0,
820 "system.select_tube8": 0,
821 "system.select_tube9": 0,
822 "tonemodul.Bass": 0,
823 "tonemodul.Middle": 0,
824 "tonemodul.ON": 0,
825 "tonemodul.Treble": 0,
826 "tonemodul.on_off": 0,
827 "tonemodul.position": 8,
828 "tonemodul.sharper": 1,
829 "tremolo.SINE": "triangle",
830 "tremolo.depth": 0.5,
831 "tremolo.freq": 5,
832 "tremolo.on_off": 0,
833 "tremolo.position": 13,
834 "tremolo.pp": "post",
835 "ui.3 Band EQ": 0,
836 "ui.BiQuad Filter": 1,
837 "ui.Chorus": 1,
838 "ui.Chorus Mono": 0,
839 "ui.Compressor": 0,
840 "ui.Crybaby": 1,
841 "ui.Delay": 1,
842 "ui.Echo": 1,
843 "ui.Feedback": 1,
844 "ui.Flanger": 1,
845 "ui.Flanger Mono": 0,
846 "ui.Freeverb": 0,
847 "ui.ImpulseResponse": 1,
848 "ui.Moog Filter": 1,
849 "ui.Multi Band Distortion": 1,
850 "ui.Oscilloscope": 0,
851 "ui.Overdrive": 1,
852 "ui.Phaser": 1,
853 "ui.Phaser Mono": 0,
854 "ui.Postamp": 1,
855 "ui.Scaleable EQ": 1,
856 "ui.Stereo Delay": 1,
857 "ui.Stereo Echo": 1,
858 "ui.Tremolo": 0,
859 "ui.low high pass": 1,
860 "ui.main_xorg": 300,
861 "ui.main_yorg": 300
862 },
863 "jconv": {
864 "jconv.IRFile": "",
865 "jconv.IRDir": "~/",
866 "jconv.Gain": 0.284586,
867 "jconv.Offset": 0,
868 "jconv.Length": 159,
869 "jconv.Delay": 0,
870 "jconv.gainline": [[0, 0], [158, 0]]}
871 },
872 "lead-fuzzy", {
873 "engine": {
874 "IR.auto_freq": "manual",
875 "IR.bandwidth": 100,
876 "IR.freq": 440,
877 "IR.on_off": 0,
878 "IR.peak": 1,
879 "IR.position": 5,
880 "IR.pp": "post",
881 "amp.balance": 0,
882 "amp.bass_boost.on_off": 1,
883 "amp.clip.on_off": 0,
884 "amp.feed_on_off": 0,
885 "amp.fuzz": 0,
886 "amp.on_off": 0,
887 "amp.out_amp": 0,
888 "amp.out_master": -16.47,
889 "amp.tonestack.Bass": 1,
890 "amp.tonestack.Middle": 0.5,
891 "amp.tonestack.Treble": 0.291246,
892 "amp.tonestack.select": "JCM-800",
893 "amp.wet_dry": 100,
894 "amp2.stage1.Pregain": -4.21126,
895 "amp2.stage2.gain1": 2.45673,
896 "ampmodul.amp2.stage1.tube1": 11.25,
897 "ampmodul.amp2.stage2.tube2": 13.5544,
898 "ampmodul.feedbac": 0,
899 "ampmodul.feedback": -0.332063,
900 "ampmodul.level": -0.309276,
901 "ampmodul.on_off": 1,
902 "ampmodul.position": 10,
903 "ampmodul.wet_dry": 0,
904 "beat_detector.atack_gain": 5,
905 "beat_detector.beat_gain": 1,
906 "beat_detector.midi_gain": 1,
907 "beat_detector.note_off": 2,
908 "beat_detector.stepper": 1,
909 "biquad.Freq": 666.482,
910 "biquad.on_off": 1,
911 "biquad.position": 12,
912 "biquad.pp": "pre",
913 "cab.Level": 1,
914 "cab.bass": 0,
915 "cab.on_off": 0,
916 "cab.select": "Marshall",
917 "cab.treble": 0,
918 "chorus.delay": 0,
919 "chorus.depth": 0.02,
920 "chorus.freq": 3,
921 "chorus.level": 0.5,
922 "chorus.on_off": 0,
923 "chorus.position": 1,
924 "chorus_mono.freq": 2,
925 "chorus_mono.level": 0.5,
926 "chorus_mono.on_off": 0,
927 "chorus_mono.position": 15,
928 "chorus_mono.pp": "post",
929 "chorus_mono.wet_dry": 100,
930 "compressor.attack": 0.002,
931 "compressor.knee": 3,
932 "compressor.on_off": 0,
933 "compressor.position": 6,
934 "compressor.pp": "post",
935 "compressor.ratio": 2,
936 "compressor.release": 0.5,
937 "compressor.threshold": -20,
938 "con.on_off": 0,
939 "crybaby.autowah": "manual",
940 "crybaby.level": 0.1,
941 "crybaby.on_off": 0,
942 "crybaby.position": 3,
943 "crybaby.pp": "post",
944 "crybaby.wah": 0,
945 "crybaby.wet_dry": 0,
946 "delay.delay": 1313.07,
947 "delay.gain": 0,
948 "delay.on_off": 0,
949 "delay.position": 9,
950 "delay.pp": "post",
951 "echo.on_off": 1,
952 "echo.percent": 32.1,
953 "echo.position": 8,
954 "echo.pp": "post",
955 "echo.time": 402.608,
956 "eqs.Qs125": 50,
957 "eqs.Qs16k": 45,
958 "eqs.Qs1k": 50,
959 "eqs.Qs250": 50,
960 "eqs.Qs2k": 50,
961 "eqs.Qs31_25": 50,
962 "eqs.Qs4k": 50,
963 "eqs.Qs500": 50,
964 "eqs.Qs62_5": 50,
965 "eqs.Qs8k": 50,
966 "eqs.freq125": 125,
967 "eqs.freq16k": 16000,
968 "eqs.freq1k": 1000,
969 "eqs.freq250": 250,
970 "eqs.freq2k": 2000,
971 "eqs.freq31_25": 31,
972 "eqs.freq4k": 4000,
973 "eqs.freq500": 500,
974 "eqs.freq62_5": 62,
975 "eqs.freq8k": 8000,
976 "eqs.fs125": 2.8,
977 "eqs.fs16k": -11.6,
978 "eqs.fs1k": 8.8,
979 "eqs.fs250": 0,
980 "eqs.fs2k": 5.2,
981 "eqs.fs31_25": -9.2,
982 "eqs.fs4k": 4,
983 "eqs.fs500": 4,
984 "eqs.fs62_5": -3.2,
985 "eqs.fs8k": -6.8,
986 "eqs.on_off": 0,
987 "eqs.position": 2,
988 "eqs.pp": "post",
989 "feedback.feedback": -0.474773,
990 "feedback.on_off": 1,
991 "feedback.position": 17,
992 "feedback.pp": "pre",
993 "feedback.wet_dry": 64.0625,
994 "flanger.LFO freq": 0.2,
995 "flanger.depth": 1,
996 "flanger.feedback gain": 0,
997 "flanger.flange delay": 10,
998 "flanger.flange delay offset": 1,
999 "flanger.invert": "linear",
1000 "flanger.level": 0,
1001 "flanger.on_off": 0,
1002 "flanger.position": 2,
1003 "flanger_mono.freq": 0.2,
1004 "flanger_mono.level": 0,
1005 "flanger_mono.on_off": 0,
1006 "flanger_mono.position": 16,
1007 "flanger_mono.pp": "post",
1008 "flanger_mono.wet_dry": 100,
1009 "freeverb.RoomSize": 0.5,
1010 "freeverb.damp": 0.5,
1011 "freeverb.on_off": 0,
1012 "freeverb.position": 10,
1013 "freeverb.pp": "post",
1014 "freeverb.wet_dry": 0,
1015 "gx_distortion.drive": 0.698234,
1016 "gx_distortion.gain": 7.56023,
1017 "gx_distortion.high_drive": 0.838859,
1018 "gx_distortion.high_gain": 10,
1019 "gx_distortion.level": 0.01,
1020 "gx_distortion.low_drive": 1,
1021 "gx_distortion.low_gain": 10,
1022 "gx_distortion.middle_h_drive": 1,
1023 "gx_distortion.middle_h_gain": 10,
1024 "gx_distortion.middle_l_drive": 1,
1025 "gx_distortion.middle_l_gain": 10,
1026 "gx_distortion.on_off": 0,
1027 "gx_distortion.position": 4,
1028 "gx_distortion.pp": "pre",
1029 "gx_distortion.resonator.on_off": 0,
1030 "gx_distortion.split_high_freq": 6894,
1031 "gx_distortion.split_low_freq": 20,
1032 "gx_distortion.split_middle_freq": 990,
1033 "gx_distortion.trigger": 0.12,
1034 "gx_distortion.vibrato": 1,
1035 "gxdistortion.drive": 0.947282,
1036 "jconv.balance": 0.0996587,
1037 "jconv.diff_delay": 5.625,
1038 "jconv.gain": -4.44221,
1039 "jconv.on_off": 0,
1040 "jconv.wet_dry": 41,
1041 "low_high_pass.lhc.high_freq": 5000,
1042 "low_high_pass.lhc.low_freq": 130,
1043 "low_high_pass.lhc.on_off": 0,
1044 "low_high_pass.lhp.high_freq": 20,
1045 "low_high_pass.lhp.low_freq": 12000,
1046 "low_high_pass.lhp.on_off": 0,
1047 "low_highpass.on_off": 0,
1048 "low_highpass.position": 1,
1049 "low_highpass.pp": "post",
1050 "midi_out.channel_1.auto_pitch": 0,
1051 "midi_out.channel_1.autogain": 0,
1052 "midi_out.channel_1.channel": 0,
1053 "midi_out.channel_1.oktave": 0,
1054 "midi_out.channel_1.program": 0,
1055 "midi_out.channel_1.sensity": 20,
1056 "midi_out.channel_1.velocity": 64,
1057 "midi_out.channel_1.volume": 64,
1058 "midi_out.channel_2.auto_pitch": 0,
1059 "midi_out.channel_2.autogain": 0,
1060 "midi_out.channel_2.channel": 0,
1061 "midi_out.channel_2.oktave": 0,
1062 "midi_out.channel_2.on_off": 0,
1063 "midi_out.channel_2.program": 0,
1064 "midi_out.channel_2.sensity": 20,
1065 "midi_out.channel_2.velocity": 64,
1066 "midi_out.channel_2.volume": 64,
1067 "midi_out.channel_3.auto_pitch": 0,
1068 "midi_out.channel_3.autogain": 0,
1069 "midi_out.channel_3.channel": 0,
1070 "midi_out.channel_3.oktave": 0,
1071 "midi_out.channel_3.on_off": 0,
1072 "midi_out.channel_3.program": 0,
1073 "midi_out.channel_3.sensity": 20,
1074 "midi_out.channel_3.velocity": 64,
1075 "midi_out.channel_3.volume": 64,
1076 "midi_out.on_off": 0,
1077 "moog.Q": 1.66794,
1078 "moog.fr": 4198.39,
1079 "moog.on_off": 0,
1080 "moog.position": 6,
1081 "noise_gate.on_off": 0,
1082 "noise_gate.threshold": 0.017,
1083 "oscilloscope.on_off": 0,
1084 "oscilloscope.position": 11,
1085 "oscilloscope.pp": "post",
1086 "overdrive.drive": 9.27948,
1087 "overdrive.on_off": 1,
1088 "overdrive.position": 7,
1089 "overdrive.pp": "pre",
1090 "phaser.MaxNotch1Freq": 800,
1091 "phaser.MinNotch1Freq": 100,
1092 "phaser.Notch width": 997,
1093 "phaser.NotchFreq": 1.5,
1094 "phaser.Speed": 0.5,
1095 "phaser.VibratoMode": "direct ",
1096 "phaser.depth": 1,
1097 "phaser.feedback gain": 0,
1098 "phaser.invert": "linear",
1099 "phaser.level": 0,
1100 "phaser.on_off": 0,
1101 "phaser.position": 3,
1102 "phaser_mono.Speed": 0.5,
1103 "phaser_mono.level": 0,
1104 "phaser_mono.on_off": 0,
1105 "phaser_mono.position": 14,
1106 "phaser_mono.pp": "post",
1107 "phaser_mono.wet_dry": 100,
1108 "shaper.on_off": 0,
1109 "shaper.sharper": 1,
1110 "stereodelay.LFO freq": 0.321895,
1111 "stereodelay.invert": "linear",
1112 "stereodelay.l_delay": 459.355,
1113 "stereodelay.l_gain": -11.25,
1114 "stereodelay.on_off": 0,
1115 "stereodelay.position": 4,
1116 "stereodelay.r_delay": 489.69,
1117 "stereodelay.r_gain": -10.0672,
1118 "stereoecho.on_off": 0,
1119 "stereoecho.percent_l": 32,
1120 "stereoecho.percent_r": 31.5512,
1121 "stereoecho.position": 5,
1122 "stereoecho.time_l": 516.547,
1123 "stereoecho.time_r": 516.547,
1124 "system.order_rack_h": 1,
1125 "system.order_rack_v": 0,
1126 "system.select_tube": 0,
1127 "system.select_tube10": 0,
1128 "system.select_tube11": 0,
1129 "system.select_tube12": 1,
1130 "system.select_tube2": 0,
1131 "system.select_tube3": 0,
1132 "system.select_tube4": 0,
1133 "system.select_tube5": 0,
1134 "system.select_tube6": 0,
1135 "system.select_tube7": 0,
1136 "system.select_tube8": 0,
1137 "system.select_tube9": 0,
1138 "tonemodul.Bass": 0,
1139 "tonemodul.Middle": 0,
1140 "tonemodul.ON": 0,
1141 "tonemodul.Treble": 0,
1142 "tonemodul.on_off": 0,
1143 "tonemodul.position": 8,
1144 "tonemodul.sharper": 1,
1145 "tremolo.SINE": "triangle",
1146 "tremolo.depth": 0.5,
1147 "tremolo.freq": 5,
1148 "tremolo.on_off": 0,
1149 "tremolo.position": 13,
1150 "tremolo.pp": "post",
1151 "tremolo.wet_dry": 100,
1152 "ui.3 Band EQ": 0,
1153 "ui.BiQuad Filter": 1,
1154 "ui.Chorus": 1,
1155 "ui.Chorus Mono": 0,
1156 "ui.Compressor": 0,
1157 "ui.Crybaby": 1,
1158 "ui.Delay": 1,
1159 "ui.Echo": 1,
1160 "ui.Feedback": 1,
1161 "ui.Flanger": 1,
1162 "ui.Flanger Mono": 0,
1163 "ui.Freeverb": 0,
1164 "ui.ImpulseResponse": 1,
1165 "ui.Moog Filter": 1,
1166 "ui.Multi Band Distortion": 1,
1167 "ui.Oscilloscope": 0,
1168 "ui.Overdrive": 1,
1169 "ui.Phaser": 1,
1170 "ui.Phaser Mono": 0,
1171 "ui.Postamp": 1,
1172 "ui.Scaleable EQ": 1,
1173 "ui.Stereo Delay": 1,
1174 "ui.Stereo Echo": 1,
1175 "ui.Tremolo": 0,
1176 "ui.low high pass": 1,
1177 "ui.main_xorg": 300,
1178 "ui.main_yorg": 300
1179 },
1180 "jconv": {
1181 "jconv.IRFile": "",
1182 "jconv.IRDir": "~/",
1183 "jconv.Gain": 0.284586,
1184 "jconv.Offset": 0,
1185 "jconv.Length": 159,
1186 "jconv.Delay": 0,
1187 "jconv.gainline": [[0, 0], [158, 0]]}
1188 },
1189 "lead-fuzzy2", {
1190 "engine": {
1191 "IR.auto_freq": "manual",
1192 "IR.bandwidth": 100,
1193 "IR.freq": 440,
1194 "IR.on_off": 0,
1195 "IR.peak": 1,
1196 "IR.position": 5,
1197 "IR.pp": "post",
1198 "amp.balance": 0,
1199 "amp.bass_boost.on_off": 1,
1200 "amp.clip.on_off": 0,
1201 "amp.feed_on_off": 0,
1202 "amp.fuzz": 0,
1203 "amp.on_off": 0,
1204 "amp.out_amp": 0,
1205 "amp.out_master": -16.47,
1206 "amp.tonestack.Bass": 0.78125,
1207 "amp.tonestack.Middle": 0.5,
1208 "amp.tonestack.Treble": 0.620812,
1209 "amp.tonestack.select": "JCM-800",
1210 "amp.wet_dry": 100,
1211 "amp2.stage1.Pregain": -4.21126,
1212 "amp2.stage2.gain1": 2.45673,
1213 "ampmodul.amp2.stage1.tube1": 11.25,
1214 "ampmodul.amp2.stage2.tube2": 13.5544,
1215 "ampmodul.feedbac": 0,
1216 "ampmodul.feedback": -0.332063,
1217 "ampmodul.level": -0.309276,
1218 "ampmodul.on_off": 1,
1219 "ampmodul.position": 10,
1220 "ampmodul.wet_dry": 0,
1221 "beat_detector.atack_gain": 5,
1222 "beat_detector.beat_gain": 1,
1223 "beat_detector.midi_gain": 1,
1224 "beat_detector.note_off": 2,
1225 "beat_detector.stepper": 1,
1226 "biquad.Freq": 666.482,
1227 "biquad.on_off": 1,
1228 "biquad.position": 12,
1229 "biquad.pp": "pre",
1230 "cab.Level": 1,
1231 "cab.bass": 0,
1232 "cab.on_off": 0,
1233 "cab.select": "Marshall",
1234 "cab.treble": 0,
1235 "chorus.delay": 0,
1236 "chorus.depth": 0.02,
1237 "chorus.freq": 3,
1238 "chorus.level": 0.5,
1239 "chorus.on_off": 0,
1240 "chorus.position": 1,
1241 "chorus_mono.freq": 2,
1242 "chorus_mono.level": 0.5,
1243 "chorus_mono.on_off": 0,
1244 "chorus_mono.position": 15,
1245 "chorus_mono.pp": "post",
1246 "chorus_mono.wet_dry": 100,
1247 "compressor.attack": 0.002,
1248 "compressor.knee": 3,
1249 "compressor.on_off": 0,
1250 "compressor.position": 6,
1251 "compressor.pp": "post",
1252 "compressor.ratio": 2,
1253 "compressor.release": 0.5,
1254 "compressor.threshold": -20,
1255 "con.on_off": 0,
1256 "crybaby.autowah": "manual",
1257 "crybaby.level": 0.1,
1258 "crybaby.on_off": 0,
1259 "crybaby.position": 3,
1260 "crybaby.pp": "post",
1261 "crybaby.wah": 0,
1262 "crybaby.wet_dry": 0,
1263 "delay.delay": 1313.07,
1264 "delay.gain": 0,
1265 "delay.on_off": 0,
1266 "delay.position": 9,
1267 "delay.pp": "post",
1268 "echo.on_off": 1,
1269 "echo.percent": 32.1,
1270 "echo.position": 8,
1271 "echo.pp": "post",
1272 "echo.time": 402.608,
1273 "eqs.Qs125": 50,
1274 "eqs.Qs16k": 45,
1275 "eqs.Qs1k": 50,
1276 "eqs.Qs250": 50,
1277 "eqs.Qs2k": 50,
1278 "eqs.Qs31_25": 50,
1279 "eqs.Qs4k": 50,
1280 "eqs.Qs500": 50,
1281 "eqs.Qs62_5": 50,
1282 "eqs.Qs8k": 50,
1283 "eqs.freq125": 125,
1284 "eqs.freq16k": 16000,
1285 "eqs.freq1k": 1000,
1286 "eqs.freq250": 250,
1287 "eqs.freq2k": 2000,
1288 "eqs.freq31_25": 31,
1289 "eqs.freq4k": 4000,
1290 "eqs.freq500": 500,
1291 "eqs.freq62_5": 62,
1292 "eqs.freq8k": 8000,
1293 "eqs.fs125": 2.8,
1294 "eqs.fs16k": -11.6,
1295 "eqs.fs1k": 8.8,
1296 "eqs.fs250": 0,
1297 "eqs.fs2k": 5.2,
1298 "eqs.fs31_25": -9.2,
1299 "eqs.fs4k": 4,
1300 "eqs.fs500": 4,
1301 "eqs.fs62_5": -3.2,
1302 "eqs.fs8k": -6.8,
1303 "eqs.on_off": 0,
1304 "eqs.position": 2,
1305 "eqs.pp": "post",
1306 "feedback.feedback": -0.474773,
1307 "feedback.on_off": 0,
1308 "feedback.position": 17,
1309 "feedback.pp": "pre",
1310 "feedback.wet_dry": 64.0625,
1311 "flanger.LFO freq": 0.2,
1312 "flanger.depth": 1,
1313 "flanger.feedback gain": 0,
1314 "flanger.flange delay": 10,
1315 "flanger.flange delay offset": 1,
1316 "flanger.invert": "linear",
1317 "flanger.level": 0,
1318 "flanger.on_off": 0,
1319 "flanger.position": 2,
1320 "flanger_mono.freq": 0.2,
1321 "flanger_mono.level": 0,
1322 "flanger_mono.on_off": 0,
1323 "flanger_mono.position": 16,
1324 "flanger_mono.pp": "post",
1325 "flanger_mono.wet_dry": 100,
1326 "freeverb.RoomSize": 0.5,
1327 "freeverb.damp": 0.5,
1328 "freeverb.on_off": 0,
1329 "freeverb.position": 10,
1330 "freeverb.pp": "post",
1331 "freeverb.wet_dry": 0,
1332 "gx_distortion.drive": 0.698234,
1333 "gx_distortion.gain": 7.56023,
1334 "gx_distortion.high_drive": 0.838859,
1335 "gx_distortion.high_gain": 10,
1336 "gx_distortion.level": 0.01,
1337 "gx_distortion.low_drive": 1,
1338 "gx_distortion.low_gain": 10,
1339 "gx_distortion.middle_h_drive": 1,
1340 "gx_distortion.middle_h_gain": 10,
1341 "gx_distortion.middle_l_drive": 1,
1342 "gx_distortion.middle_l_gain": 10,
1343 "gx_distortion.on_off": 0,
1344 "gx_distortion.position": 4,
1345 "gx_distortion.pp": "pre",
1346 "gx_distortion.resonator.on_off": 0,
1347 "gx_distortion.split_high_freq": 6894,
1348 "gx_distortion.split_low_freq": 20,
1349 "gx_distortion.split_middle_freq": 990,
1350 "gx_distortion.trigger": 0.12,
1351 "gx_distortion.vibrato": 1,
1352 "gxdistortion.drive": 0.947282,
1353 "jconv.balance": 0.0996587,
1354 "jconv.diff_delay": 5.625,
1355 "jconv.gain": -4.44221,
1356 "jconv.on_off": 0,
1357 "jconv.wet_dry": 41,
1358 "low_high_pass.lhc.high_freq": 5000,
1359 "low_high_pass.lhc.low_freq": 130,
1360 "low_high_pass.lhc.on_off": 0,
1361 "low_high_pass.lhp.high_freq": 20,
1362 "low_high_pass.lhp.low_freq": 12000,
1363 "low_high_pass.lhp.on_off": 0,
1364 "low_highpass.on_off": 0,
1365 "low_highpass.position": 1,
1366 "low_highpass.pp": "post",
1367 "midi_out.channel_1.auto_pitch": 0,
1368 "midi_out.channel_1.autogain": 0,
1369 "midi_out.channel_1.channel": 0,
1370 "midi_out.channel_1.oktave": 0,
1371 "midi_out.channel_1.program": 0,
1372 "midi_out.channel_1.sensity": 20,
1373 "midi_out.channel_1.velocity": 64,
1374 "midi_out.channel_1.volume": 64,
1375 "midi_out.channel_2.auto_pitch": 0,
1376 "midi_out.channel_2.autogain": 0,
1377 "midi_out.channel_2.channel": 0,
1378 "midi_out.channel_2.oktave": 0,
1379 "midi_out.channel_2.on_off": 0,
1380 "midi_out.channel_2.program": 0,
1381 "midi_out.channel_2.sensity": 20,
1382 "midi_out.channel_2.velocity": 64,
1383 "midi_out.channel_2.volume": 64,
1384 "midi_out.channel_3.auto_pitch": 0,
1385 "midi_out.channel_3.autogain": 0,
1386 "midi_out.channel_3.channel": 0,
1387 "midi_out.channel_3.oktave": 0,
1388 "midi_out.channel_3.on_off": 0,
1389 "midi_out.channel_3.program": 0,
1390 "midi_out.channel_3.sensity": 20,
1391 "midi_out.channel_3.velocity": 64,
1392 "midi_out.channel_3.volume": 64,
1393 "midi_out.on_off": 0,
1394 "moog.Q": 1.66794,
1395 "moog.fr": 4198.39,
1396 "moog.on_off": 0,
1397 "moog.position": 6,
1398 "noise_gate.on_off": 0,
1399 "noise_gate.threshold": 0.017,
1400 "oscilloscope.on_off": 0,
1401 "oscilloscope.position": 11,
1402 "oscilloscope.pp": "post",
1403 "overdrive.drive": 9.27948,
1404 "overdrive.on_off": 1,
1405 "overdrive.position": 7,
1406 "overdrive.pp": "pre",
1407 "phaser.MaxNotch1Freq": 800,
1408 "phaser.MinNotch1Freq": 100,
1409 "phaser.Notch width": 997,
1410 "phaser.NotchFreq": 1.5,
1411 "phaser.Speed": 0.5,
1412 "phaser.VibratoMode": "direct ",
1413 "phaser.depth": 1,
1414 "phaser.feedback gain": 0,
1415 "phaser.invert": "linear",
1416 "phaser.level": 0,
1417 "phaser.on_off": 0,
1418 "phaser.position": 3,
1419 "phaser_mono.Speed": 0.5,
1420 "phaser_mono.level": 0,
1421 "phaser_mono.on_off": 0,
1422 "phaser_mono.position": 14,
1423 "phaser_mono.pp": "post",
1424 "phaser_mono.wet_dry": 100,
1425 "shaper.on_off": 0,
1426 "shaper.sharper": 1,
1427 "stereodelay.LFO freq": 0.321895,
1428 "stereodelay.invert": "linear",
1429 "stereodelay.l_delay": 459.355,
1430 "stereodelay.l_gain": -11.25,
1431 "stereodelay.on_off": 0,
1432 "stereodelay.position": 4,
1433 "stereodelay.r_delay": 489.69,
1434 "stereodelay.r_gain": -10.0672,
1435 "stereoecho.on_off": 0,
1436 "stereoecho.percent_l": 32,
1437 "stereoecho.percent_r": 31.5512,
1438 "stereoecho.position": 5,
1439 "stereoecho.time_l": 516.547,
1440 "stereoecho.time_r": 516.547,
1441 "system.order_rack_h": 1,
1442 "system.order_rack_v": 0,
1443 "system.select_tube": 0,
1444 "system.select_tube10": 0,
1445 "system.select_tube11": 0,
1446 "system.select_tube12": 1,
1447 "system.select_tube2": 0,
1448 "system.select_tube3": 0,
1449 "system.select_tube4": 0,
1450 "system.select_tube5": 0,
1451 "system.select_tube6": 0,
1452 "system.select_tube7": 0,
1453 "system.select_tube8": 0,
1454 "system.select_tube9": 0,
1455 "tonemodul.Bass": 0,
1456 "tonemodul.Middle": 0,
1457 "tonemodul.ON": 0,
1458 "tonemodul.Treble": 0,
1459 "tonemodul.on_off": 0,
1460 "tonemodul.position": 8,
1461 "tonemodul.sharper": 1,
1462 "tremolo.SINE": "triangle",
1463 "tremolo.depth": 0.5,
1464 "tremolo.freq": 5,
1465 "tremolo.on_off": 0,
1466 "tremolo.position": 13,
1467 "tremolo.pp": "post",
1468 "tremolo.wet_dry": 100,
1469 "ui.3 Band EQ": 0,
1470 "ui.BiQuad Filter": 1,
1471 "ui.Chorus": 1,
1472 "ui.Chorus Mono": 0,
1473 "ui.Compressor": 0,
1474 "ui.Crybaby": 1,
1475 "ui.Delay": 1,
1476 "ui.Echo": 1,
1477 "ui.Feedback": 1,
1478 "ui.Flanger": 1,
1479 "ui.Flanger Mono": 0,
1480 "ui.Freeverb": 0,
1481 "ui.ImpulseResponse": 1,
1482 "ui.Moog Filter": 1,
1483 "ui.Multi Band Distortion": 1,
1484 "ui.Oscilloscope": 0,
1485 "ui.Overdrive": 1,
1486 "ui.Phaser": 1,
1487 "ui.Phaser Mono": 0,
1488 "ui.Postamp": 1,
1489 "ui.Scaleable EQ": 1,
1490 "ui.Stereo Delay": 1,
1491 "ui.Stereo Echo": 1,
1492 "ui.Tremolo": 0,
1493 "ui.low high pass": 1,
1494 "ui.main_xorg": 300,
1495 "ui.main_yorg": 300
1496 },
1497 "jconv": {
1498 "jconv.IRFile": "",
1499 "jconv.IRDir": "~/",
1500 "jconv.Gain": 0.284586,
1501 "jconv.Offset": 0,
1502 "jconv.Length": 159,
1503 "jconv.Delay": 0,
1504 "jconv.gainline": [[0, 0], [158, 0]]}
1505 }
1506 ]
2222 */
2323
2424
25 #include "guitarix.h" // NOLINT
26
27 #include <iostream> // NOLINT
25 #include "guitarix.h" // NOLINT
26
27 #include <glibmm/i18n.h> // NOLINT
28
29 #include <iostream> // NOLINT
2830
2931 namespace gx_gui
3032 {
552554 //contrast
553555 int contrast_ircount = 192;
554556 int contrast_irsr = 48000;
555 static float contrast_irdata[] = { 0.147081, 0.208808, 0.208996, 0.163228, 0.0858905, -0.0119104, -0.0932825, -0.121011, -0.0999426, -0.071073, -0.0403973, -0.00214844, 0.0287018,
557 static float contrast_ir_data[] = { 0.147081, 0.208808, 0.208996, 0.163228, 0.0858905, -0.0119104, -0.0932825, -0.121011, -0.0999426, -0.071073, -0.0403973, -0.00214844, 0.0287018,
556558 0.0381079, 0.0372284, 0.0330389, 0.0252979, 0.0141394, 0.00118835, -0.00764709, -0.00751953, 0.00262512, 0.0143475, 0.0174762, 0.0168384, 0.0179126,
557559 0.00738525, -0.0114069, -0.0192352, -0.0145825, -0.0179932, -0.0244049, -0.0173956, -0.00357178, 0.00643188, 0.0108966, 0.0132935, 0.0123737, 0.00680786,
558560 -0.000214844, -0.0040686, -0.00533752, -0.00738525, -0.00539124, -0.00171875, 0.00156433, 0.00481384, 0.0038739, -0.00666016, -0.018866, -0.0216522, -0.0171606,
660662
661663
662664 static bool contrast_start() {
665 float *contrast_irdata = contrast_ir_data;
666 float contrast_irdata_c[contrast_ircount];
667 (void)memset(contrast_irdata_c, 0, contrast_ircount*sizeof(float));
668 gx_engine::contrast_conv.stop();
669 gx_engine::presence_processing(contrast_ircount,contrast_irdata,contrast_irdata_c);
663670 while (!gx_engine::contrast_conv.checkstate());
664 if (!gx_engine::contrast_conv.configure(contrast_ircount, contrast_irdata, contrast_irsr)) {
671 if (!gx_engine::contrast_conv.configure(contrast_ircount, contrast_irdata_c, contrast_irsr)) {
665672 return false;
666673 }
667674 return gx_engine::contrast_conv.start();
675682 } // end namespace CabConvolveData
676683
677684 void cab_conv_restart() {
678 if (g_threads[5] == 0 || g_main_context_find_source_by_id(NULL, g_threads[5]) == NULL) {
679 g_threads[5] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 0,
685 if (guivar.g_threads[5] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[5]) == NULL) {
686 guivar.g_threads[5] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 0,
680687 CabConvolveData::conv_restart,NULL,NULL);
681688 gx_engine::set_cab_mode(gx_engine::audio.cab_level + gx_engine::audio.cab_bass +
682689 gx_engine::audio.cab_treble);
683690 } else {
684 std::cout << "cab thread is bussy" << endl;
691 gx_system::gx_print_warning(_("Cabinet Loading"), string(_(" cab thread is bussy")));
685692 }
686693 }
687694
697704
698705
699706 void contrast_conv_restart() {
700 g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 0, CabConvolveData::contrast_restart,NULL,NULL);
707
708 if (guivar.g_threads[9] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[9]) == NULL) {
709 guivar.g_threads[9] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 0, CabConvolveData::contrast_restart,NULL,NULL);
710 gx_engine::audio.con_sum = gx_engine::audio.con_level;
711 } else {
712 gx_system::gx_print_warning(_("Presence Loading"), string(_(" presence thread is bussy")));
713 }
701714 }
702715
703716 void UiContrastSwitch::on_switch_toggled() {
3030 {
3131
3232 // set cairo color related to the used skin
33 void gx_skin_color(cairo_pattern_t *pat)
33 static void gx_skin_color(cairo_pattern_t *pat)
3434 {
3535 int skin_is = int(float(gx_gui::skin.gx_current_skin));
3636
7777
7878 }
7979
80 //----- paint boxes with cairo -----
81 gboolean amp_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
80 gboolean rectangle_skin_color_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
8281 {
8382 cairo_t *cr;
83 /* create a cairo context */
8484 cr = gdk_cairo_create(wi->window);
8585
86 double x0 = wi->allocation.x+2;
87 double y0 = wi->allocation.y+2;
88 double rect_width = wi->allocation.width-4;
89 double rect_height = wi->allocation.height-4;
90 double radius = 25.;
86 double x0 = wi->allocation.x+1;
87 double y0 = wi->allocation.y+1;
88 double rect_width = wi->allocation.width-2;
89 double rect_height = wi->allocation.height-2;
90
91 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
92 cairo_set_source_rgb (cr, 0, 0, 0);
93 cairo_fill (cr);
94
95 cairo_pattern_t*pat =
96 cairo_pattern_create_radial (-50, y0, 5,rect_width-10, rect_height, 20.0);
97 gx_skin_color(pat);
98 cairo_set_source (cr, pat);
99 cairo_rectangle (cr, x0+1,y0+1,rect_width-2,rect_height-1);
100 cairo_fill (cr);
101
102 cairo_pattern_destroy (pat);
103 cairo_destroy(cr);
104
105 return FALSE;
106 }
107
108 gboolean conv_widget_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
109 {
110 cairo_t *cr;
111 cairo_pattern_t *pat;
112
113 /* create a cairo context */
114 cr = gdk_cairo_create(wi->window);
115
116 double x0 = wi->allocation.x+5;
117 double y0 = wi->allocation.y+5;
118 double rect_width = wi->allocation.width-10;
119 double rect_height = wi->allocation.height-10;
120 double radius = 36.;
91121 double x1,y1;
92122 x1=x0+rect_width;
93123 y1=y0+rect_height;
102132 cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
103133 cairo_close_path (cr);
104134
105 cairo_set_source_rgba (cr, 0, 0, 0, 0.6);
106 cairo_set_line_width (cr, 5.0);
135 pat = cairo_pattern_create_linear (0, y0, 0, y1);
136 cairo_pattern_add_color_stop_rgba (pat, 1, 0., 0., 0., 0.8);
137 cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0, 0, 0.4);
138 cairo_set_source (cr, pat);
139 cairo_fill_preserve (cr);
140
141 cairo_set_source_rgba (cr, 0, 0, 0, 0.8);
142 cairo_set_line_width (cr, 9.0);
107143 cairo_stroke (cr);
108144
109145 cairo_move_to (cr, x0, y0 + radius);
116152 cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
117153 cairo_close_path (cr);
118154
119 cairo_set_source_rgb (cr, 0.02, 0.02, 0.02);
120 cairo_set_line_width (cr, 1.0);
121 cairo_stroke (cr);
122
123 cairo_destroy(cr);
124 return FALSE;
125 }
126
127 gboolean conv_widget_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
128 {
129 cairo_t *cr;
130 cairo_pattern_t *pat;
131
132 /* create a cairo context */
133 cr = gdk_cairo_create(wi->window);
134
135 double x0 = wi->allocation.x+5;
136 double y0 = wi->allocation.y+5;
137 double rect_width = wi->allocation.width-10;
138 double rect_height = wi->allocation.height-10;
139 double radius = 36.;
140 double x1,y1;
141 x1=x0+rect_width;
142 y1=y0+rect_height;
143
144 cairo_move_to (cr, x0, y0 + radius);
145 cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
146 cairo_line_to (cr, x1 - radius, y0);
147 cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
148 cairo_line_to (cr, x1 , y1 - radius);
149 cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
150 cairo_line_to (cr, x0 + radius, y1);
151 cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
152 cairo_close_path (cr);
153
154 pat = cairo_pattern_create_linear (0, y0, 0, y1);
155 cairo_pattern_add_color_stop_rgba (pat, 1, 0., 0., 0., 0.8);
156 cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0, 0, 0.4);
157 cairo_set_source (cr, pat);
158 cairo_fill_preserve (cr);
159
160 cairo_set_source_rgba (cr, 0, 0, 0, 0.8);
161 cairo_set_line_width (cr, 9.0);
162 cairo_stroke (cr);
163
164 cairo_move_to (cr, x0, y0 + radius);
165 cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
166 cairo_line_to (cr, x1 - radius, y0);
167 cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
168 cairo_line_to (cr, x1 , y1 - radius);
169 cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
170 cairo_line_to (cr, x0 + radius, y1);
171 cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
172 cairo_close_path (cr);
173
174155 cairo_set_source_rgb (cr, 0.2, 0.2, 0.2);
175156 cairo_set_line_width (cr, 1.0);
176157 cairo_stroke (cr);
177
178 cairo_pattern_destroy (pat);
179 cairo_destroy(cr);
180
181 return FALSE;
182 }
183
184 gboolean upper_widget_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
185 {
186 cairo_t *cr;
187 cairo_pattern_t *pat;
188
189 gint x, y;
190 gint w, h;
191 /* get the dimensions */
192 x = wi->allocation.x+2;
193 y = wi->allocation.y+2;
194 w = wi->allocation.width-4;
195 h = wi->allocation.height-4;
196
197 /* create a cairo context */
198 cr = gdk_cairo_create(wi->window);
199
200 cairo_move_to (cr, x, y);
201 cairo_curve_to (cr, x+w*0.66, y, x+w*0.33, y+h, x+w, y+h);
202 cairo_line_to (cr, x+w , y);
203 cairo_set_line_width (cr, 3.0);
204 cairo_close_path (cr);
205
206 pat = cairo_pattern_create_linear (0, y, 0, y+h);
207 cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 0.8);
208 cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0, 0, 0);
209 cairo_set_source (cr, pat);
210 cairo_fill_preserve (cr);
211 cairo_stroke (cr);
212
213 cairo_pattern_destroy (pat);
214 cairo_destroy(cr);
215
216 return FALSE;
217
218 }
219
220 gboolean rectangle_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
221 {
222 cairo_t *cr;
223 /* create a cairo context */
224 cr = gdk_cairo_create(wi->window);
225
226 double x0 = wi->allocation.x+1;
227 double y0 = wi->allocation.y+1;
228 double rect_width = wi->allocation.width-2;
229 double rect_height = wi->allocation.height-11;
230
231 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
232 cairo_set_source_rgb (cr, 0, 0, 0);
233 cairo_fill (cr);
234
235 cairo_pattern_t*pat =
236 cairo_pattern_create_radial (-50, y0, 5,rect_width+100, rect_height, 0.0);
237 cairo_pattern_add_color_stop_rgb (pat, 0, 0.2, 0.2, 0.3);
238 cairo_pattern_add_color_stop_rgb (pat, 1, 0.05, 0.05, 0.05);
239 gx_skin_color(pat);
240 cairo_set_source (cr, pat);
241 cairo_rectangle (cr, x0+1,y0+1,rect_width-2,rect_height-1);
242 cairo_fill (cr);
243
244 cairo_pattern_destroy (pat);
245 cairo_destroy(cr);
246
247 return FALSE;
248 }
249
250 gboolean rectangle_skin_color_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
251 {
252 cairo_t *cr;
253 /* create a cairo context */
254 cr = gdk_cairo_create(wi->window);
255
256 double x0 = wi->allocation.x+1;
257 double y0 = wi->allocation.y+1;
258 double rect_width = wi->allocation.width-2;
259 double rect_height = wi->allocation.height-2;
260
261 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
262 cairo_set_source_rgb (cr, 0, 0, 0);
263 cairo_fill (cr);
264
265 cairo_pattern_t*pat =
266 cairo_pattern_create_radial (-50, y0, 5,rect_width-10, rect_height, 20.0);
267 gx_skin_color(pat);
268 cairo_set_source (cr, pat);
269 cairo_rectangle (cr, x0+1,y0+1,rect_width-2,rect_height-1);
270 cairo_fill (cr);
271
272 cairo_pattern_destroy (pat);
273 cairo_destroy(cr);
274
275 return FALSE;
276 }
277
278 gboolean convolver_icon_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
279 {
280 cairo_t *cr;
281 /* create a cairo black arc to given widget */
282 cr = gdk_cairo_create(wi->window);
283
284 double x0 = wi->allocation.x+1;
285 double y0 = wi->allocation.y+1;
286 double rect_width = wi->allocation.width-2;
287 double rect_height = wi->allocation.height-2;
288
289 /* create a cairo context */
290 cr = gdk_cairo_create(wi->window);
291
292 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
293 cairo_set_source_rgb (cr, 0, 0, 0);
294 cairo_fill (cr);
295
296 cairo_pattern_t*pat =
297 cairo_pattern_create_radial (-50, y0, 5,rect_width+100, rect_height, 0.0);
298 gx_skin_color(pat);
299 cairo_set_source (cr, pat);
300 cairo_rectangle (cr, x0+1,y0+1,rect_width-2,rect_height-1);
301 cairo_fill (cr);
302
303 cairo_move_to (cr, x0+10, y0 + (rect_height*0.5));
304 cairo_curve_to (cr, x0+30,y0 + (rect_height*0.005), x0+50, y0 + (rect_height*0.995), x0+70, y0 + (rect_height*0.5));
305 cairo_set_source_rgb (cr, 1, 1, 1);
306 cairo_set_line_width (cr, 1.0);
307 cairo_stroke (cr);
308
309 cairo_move_to (cr, x0+10, y0 + (rect_height*0.5));
310 cairo_line_to (cr, x0+75 , y0 + (rect_height*0.5));
311 cairo_move_to (cr, x0+10, y0 + (rect_height*0.2));
312 cairo_line_to (cr, x0+10 , y0 + (rect_height*0.8));
313 cairo_set_source_rgb (cr, 0.2, 0.8, 0.2);
314 cairo_set_line_width (cr, 1.0);
315 cairo_stroke (cr);
316
317 cairo_pattern_destroy (pat);
318 cairo_destroy(cr);
319
320 return FALSE;
321 }
322
323 gboolean zac_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
324 {
325 cairo_t *cr;
326 /* create a cairo context */
327 cr = gdk_cairo_create(wi->window);
328
329 double x0 = wi->allocation.x+1;
330 double y0 = wi->allocation.y+1;
331 double rect_width = wi->allocation.width-2;
332 double rect_height = wi->allocation.height-3;
333
334 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
335 cairo_pattern_t*pat =
336 cairo_pattern_create_radial (200, rect_height*0.5, 5,200, rect_height*0.5, 200.0);
337 cairo_pattern_add_color_stop_rgb (pat, 0, 0.8, 0.8, 0.8);
338 cairo_pattern_add_color_stop_rgb (pat, 1, 0.3, 0.3, 0.3);
339 cairo_set_source (cr, pat);
340 cairo_fill (cr);
341158
342159 cairo_pattern_destroy (pat);
343160 cairo_destroy(cr);
411228 return FALSE;
412229 }
413230
414 gboolean AmpBox_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
231 gboolean info_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
415232 {
416233 cairo_t *cr;
417234 /* create a cairo context */
423240 double rect_height = wi->allocation.height-2;
424241
425242 cairo_rectangle (cr, x0-1,y0-1,rect_width+2,rect_height+2);
426 cairo_set_source_rgb (cr, 0, 0, 0);
427 cairo_fill (cr);
428
429 cairo_pattern_t*pat =
430 cairo_pattern_create_radial (-50, y0, 5,rect_width-10, rect_height, 20.0);
431 gx_skin_color(pat);
243 cairo_set_source_rgb (cr, 0, 0, 0);
244 cairo_set_line_width(cr, 2.0);
245 cairo_stroke(cr);
246
247 cairo_pattern_t*pat = cairo_pattern_create_linear (x0, y0+50,x0, y0);
248 cairo_pattern_set_extend(pat, CAIRO_EXTEND_REFLECT);
249 if(gx_jconv::GxJConvSettings::checkbutton7 == 1) {
250 cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0.8, 0, 0.8);
251 cairo_pattern_add_color_stop_rgba (pat, 0.5, 0.05, 0.8, 0.05, 0.6);
252 cairo_pattern_add_color_stop_rgba (pat, 1, 0.2, 0.8, 0.2, 0.4);
253 } else {
254 gx_skin_color(pat);
255 }
432256 cairo_set_source (cr, pat);
433257 cairo_rectangle (cr, x0+2,y0+2,rect_width-4,rect_height-4);
434258 cairo_fill (cr);
435259
436 cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);
260 cairo_rectangle (cr, x0+8,y0+31,rect_width-16,rect_height-60);
261 cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
437262 cairo_set_line_width(cr, 2.0);
438 cairo_move_to(cr,x0+rect_width-3, y0+3);
439 cairo_line_to(cr, x0+rect_width-3, y0+rect_height-2);
440 cairo_line_to(cr, x0+2, y0+rect_height-2);
441 cairo_stroke(cr);
442
443 cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);
444 cairo_set_line_width(cr, 2.0);
445 cairo_move_to(cr,x0+3, y0+rect_height-1);
446 cairo_line_to(cr, x0+3, y0+3);
447 cairo_line_to(cr, x0+rect_width-3, y0+3);
448 cairo_stroke(cr);
449
450 cairo_pattern_destroy (pat);
451 cairo_destroy(cr);
452
453 return FALSE;
454 }
455
456 gboolean tribal_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
457 {
458 if (int(float(gx_gui::skin.gx_current_skin)!=1) && int(float(gx_gui::skin.gx_current_skin)<7))
459 {
460 GdkPixbuf *_image;
461 cairo_t *cr;
462 /* create a cairo context */
463 cr = gdk_cairo_create(wi->window);
464
465 gint x0 = wi->allocation.x+1;
466 gint y0 = wi->allocation.y+1;
467 gint rect_width = wi->allocation.width-2;
468 gint rect_height = wi->allocation.height-3;
469
470 _image = gdk_pixbuf_scale_simple(tribeimage1,rect_width,rect_height,GDK_INTERP_HYPER);
471
472 cairo_pattern_t*pat;
473
474 double radius = 38.;
475 if (rect_width<38) radius = rect_width;
476 else if (rect_height<38) radius = rect_height;
477 double x1,y1;
478
479 x1=x0+rect_width;
480 y1=y0+rect_height;
481
482 cairo_move_to (cr, x0, y0 + radius);
483 cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
484 cairo_line_to (cr, x1 - radius, y0);
485 cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
486 cairo_line_to (cr, x1 , y1 - radius);
487 cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
488 cairo_line_to (cr, x0 + radius, y1);
489 cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
490 cairo_close_path (cr);
491 pat = cairo_pattern_create_linear (0, y0, 0, y1);
492 cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 0.8);
493 cairo_pattern_add_color_stop_rgba (pat, 0.5, 0.05, 0.05, 0.05, 0.6);
494 cairo_pattern_add_color_stop_rgba (pat, 0, 0.2, 0.2, 0.2, 0.4);
495 cairo_set_source (cr, pat);
496 cairo_fill (cr);
497
498 cairo_pattern_destroy (pat);
499 cairo_destroy(cr);
500
501 gdk_draw_pixbuf(GDK_DRAWABLE(wi->window), gdk_gc_new(GDK_DRAWABLE(wi->window)),
502 _image, 0, 0,
503 x0, y0, rect_width,rect_height,
504 GDK_RGB_DITHER_NORMAL, 0, 0);
505
506 g_object_unref(_image);
507 }
508 return FALSE;
509 }
510
511 gboolean vbox_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
512 {
513 if (int(float(gx_gui::skin.gx_current_skin)==1))
514 {
515 cairo_t *cr;
516 /* create a cairo context */
517 cr = gdk_cairo_create(wi->window);
518
519 double x0 = wi->allocation.x+1;
520 double y0 = wi->allocation.y+1;
521 double rect_width = wi->allocation.width-2;
522 double rect_height = wi->allocation.height-3;
523
524 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
525 cairo_set_source_rgb (cr, 0, 0, 0);
526 cairo_fill (cr);
527
528 cairo_pattern_t*pat =
529 cairo_pattern_create_radial (-50, y0, 5,rect_width+100, rect_height, 0.0);
530 cairo_pattern_add_color_stop_rgb (pat, 0, 0.2, 0.2, 0.3);
531 cairo_pattern_add_color_stop_rgb (pat, 1, 0.05, 0.05, 0.05);
532
533 cairo_set_source (cr, pat);
534 cairo_rectangle (cr, x0+1,y0+1,rect_width-2,rect_height-1);
535 cairo_fill (cr);
536
537 cairo_pattern_destroy (pat);
538 cairo_destroy(cr);
539 }
540 else if (int(float(gx_gui::skin.gx_current_skin)>=7))
541 zac_expose(wi,ev,user_data);
542
543 return FALSE;
544 }
545
546 gboolean filter_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
547 {
548 GdkPixbuf *_image;
549 cairo_t *cr;
550 /* create a cairo context */
551 cr = gdk_cairo_create(wi->window);
552
553 gint x0 = wi->allocation.x+1;
554 gint y0 = wi->allocation.y+1;
555 gint rect_width = wi->allocation.width-2;
556 gint rect_height = wi->allocation.height-3;
557
558 _image = gdk_pixbuf_scale_simple(tribeimage,rect_width,rect_height,GDK_INTERP_HYPER);
559
560 cairo_pattern_t*pat;
561
562 gdk_draw_pixbuf(GDK_DRAWABLE(wi->window), gdk_gc_new(GDK_DRAWABLE(wi->window)),
563 _image, 0, 0,
564 x0, y0, rect_width,rect_height,
565 GDK_RGB_DITHER_NORMAL, 0, 0);
566
567 double radius = 38.;
568 if (rect_width<38) radius = rect_width;
569 else if (rect_height<38) radius = rect_height;
570 double x1,y1;
571
572 x1=x0+rect_width;
573 y1=y0+rect_height;
574
575 cairo_move_to (cr, x0, y0 + radius);
576 cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
577 cairo_line_to (cr, x1 - radius, y0);
578 cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
579 cairo_line_to (cr, x1 , y1 - radius);
580 cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
581 cairo_line_to (cr, x0 + radius, y1);
582 cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
583 cairo_close_path (cr);
584
585 pat = cairo_pattern_create_linear (0, y0, 0, y1);
586 cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 0.8);
587 cairo_pattern_add_color_stop_rgba (pat, 0.5, 0.05, 0.05, 0.05, 0.6);
588 cairo_pattern_add_color_stop_rgba (pat, 0, 0.2, 0.2, 0.2, 0.4);
589 cairo_set_source (cr, pat);
590 cairo_fill (cr);
591
592 cairo_pattern_destroy (pat);
593 cairo_destroy(cr);
594 g_object_unref(_image);
595
596 return FALSE;
597 }
598
599 gboolean boxamp_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
600 {
601 if(!gx_engine::audio.fampexpand) {
602 GdkPixbuf *_image;
603 cairo_t *cr;
604 /* create a cairo context */
605 cr = gdk_cairo_create(wi->window);
606
607 gint x0 = wi->allocation.x+1;
608 gint y0 = wi->allocation.y;
609 gint rect_width = wi->allocation.width-2;
610 gint rect_height = wi->allocation.height;
611
612 _image = gdk_pixbuf_scale_simple(tribeimage2,rect_width,rect_height,GDK_INTERP_HYPER);
613
614 gdk_draw_pixbuf(GDK_DRAWABLE(wi->window), gdk_gc_new(GDK_DRAWABLE(wi->window)),
615 _image, 0, 0,
616 x0, y0, rect_width,rect_height,
617 GDK_RGB_DITHER_NORMAL, 0, 0);
618
619 cairo_destroy(cr);
620 g_object_unref(_image);
621 }
622 return FALSE;
623 }
624
625 gboolean eq_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
626 {
627 //float p = gx_gui::parameter_map["eq.f31_25"].getFloat().value;
628 cairo_t *cr;
629 cairo_text_extents_t extents;
630 /* create a cairo context */
631 cr = gdk_cairo_create(wi->window);
632
633 double x0 = wi->allocation.x+1;
634 double y0 = wi->allocation.y+1;
635 double rect_width = wi->allocation.width-2;
636 double rect_height = wi->allocation.height-3;
637
638 cairo_rectangle (cr, x0,y0,rect_width,rect_height+3);
639 cairo_pattern_t*pat =
640 cairo_pattern_create_radial (x0+200,y0+ rect_height*0.5, 5,x0+800, y0+ rect_height*0.5, 200.0);
641 cairo_pattern_add_color_stop_rgb (pat, 0, 0.3, 0.3, 0.3);
642 cairo_pattern_add_color_stop_rgb (pat, 0.5, 0.15, 0.15, 0.15);
643 cairo_pattern_add_color_stop_rgb (pat, 1, 0.1, 0.1, 0.1);
644 cairo_set_source (cr, pat);
645 cairo_fill (cr);
646
647 cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);
648 cairo_set_line_width(cr, 2.0);
649 cairo_move_to(cr,x0+rect_width-3, y0+3);
650 cairo_line_to(cr, x0+rect_width-3, y0+rect_height-2);
651 cairo_line_to(cr, x0+2, y0+rect_height-2);
652 cairo_stroke(cr);
653
654 cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);
655 cairo_set_line_width(cr, 2.0);
656 cairo_move_to(cr,x0+3, y0+rect_height-1);
657 cairo_line_to(cr, x0+3, y0+3);
658 cairo_line_to(cr, x0+rect_width-3, y0+3);
659 cairo_stroke(cr);
660
661 const gchar * title = "faust";
662 cairo_select_font_face (cr, "sans", CAIRO_FONT_SLANT_NORMAL,
663 CAIRO_FONT_WEIGHT_BOLD);
664 cairo_set_font_size (cr, 10);
665 cairo_text_extents (cr,title , &extents);
666 double x = x0+rect_width-extents.height - 3 ;
667 double y = y0+rect_height*0.9+extents.height/2 - 3;
668 cairo_move_to(cr,x, y);
669 cairo_rotate (cr,270* M_PI/180);
670 cairo_text_path (cr,title);
671 cairo_set_source_rgb (cr, 0.3, 0.3, 0.3);
672 cairo_fill (cr);
673
674 cairo_pattern_destroy (pat);
675 cairo_destroy(cr);
676
677 return FALSE;
678 }
679
680 gboolean plug_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
681 {
682 cairo_t *cr;
683 /* create a cairo context */
684 cr = gdk_cairo_create(wi->window);
685
686 double x0 = wi->allocation.x+1;
687 double y0 = wi->allocation.y+1;
688 double rect_width = wi->allocation.width-2;
689 double rect_height = wi->allocation.height-2;
690
691 cairo_rectangle (cr, x0-1,y0-1,rect_width+2,rect_height+2);
692 cairo_set_source_rgb (cr, 0, 0, 0);
693 cairo_fill (cr);
694
695 cairo_pattern_t*pat =
696 cairo_pattern_create_radial (-50, y0, 5,rect_width-10, rect_height, 20.0);
697 gx_skin_color(pat);
698 cairo_set_source (cr, pat);
699 cairo_rectangle (cr, x0+2,y0+2,rect_width-4,rect_height-4);
263 cairo_stroke_preserve(cr);
264 pat = cairo_pattern_create_linear (x0, y0+50,x0, y0);
265 cairo_pattern_set_extend(pat, CAIRO_EXTEND_REFLECT);
266 gx_skin_color(pat);
267 cairo_set_source (cr, pat);
700268 cairo_fill (cr);
701269
702270 cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);
731299
732300 return FALSE;
733301 }
734
735 gboolean info_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
736 {
737 cairo_t *cr;
738 /* create a cairo context */
739 cr = gdk_cairo_create(wi->window);
740
741 double x0 = wi->allocation.x+1;
742 double y0 = wi->allocation.y+1;
743 double rect_width = wi->allocation.width-2;
744 double rect_height = wi->allocation.height-2;
745
746 cairo_rectangle (cr, x0-1,y0-1,rect_width+2,rect_height+2);
747 cairo_set_source_rgb (cr, 0, 0, 0);
748 cairo_set_line_width(cr, 2.0);
749 cairo_stroke(cr);
750
751 cairo_pattern_t*pat = cairo_pattern_create_linear (x0, y0+50,x0, y0);
752 cairo_pattern_set_extend(pat, CAIRO_EXTEND_REFLECT);
753 if(gx_jconv::GxJConvSettings::checkbutton7 == 1) {
754 cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0.8, 0, 0.8);
755 cairo_pattern_add_color_stop_rgba (pat, 0.5, 0.05, 0.8, 0.05, 0.6);
756 cairo_pattern_add_color_stop_rgba (pat, 1, 0.2, 0.8, 0.2, 0.4);
757 } else {
758 gx_skin_color(pat);
759 }
760 cairo_set_source (cr, pat);
761 cairo_rectangle (cr, x0+2,y0+2,rect_width-4,rect_height-4);
762 cairo_fill (cr);
763
764 cairo_rectangle (cr, x0+8,y0+31,rect_width-16,rect_height-60);
765 cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
766 cairo_set_line_width(cr, 2.0);
767 cairo_stroke_preserve(cr);
768 pat = cairo_pattern_create_linear (x0, y0+50,x0, y0);
769 cairo_pattern_set_extend(pat, CAIRO_EXTEND_REFLECT);
770 gx_skin_color(pat);
771 cairo_set_source (cr, pat);
772 cairo_fill (cr);
773
774 cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);
775 cairo_set_line_width(cr, 2.0);
776 cairo_move_to(cr,x0+rect_width-3, y0+3);
777 cairo_line_to(cr, x0+rect_width-3, y0+rect_height-2);
778 cairo_line_to(cr, x0+2, y0+rect_height-2);
779 cairo_stroke(cr);
780
781 cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);
782 cairo_set_line_width(cr, 2.0);
783 cairo_move_to(cr,x0+3, y0+rect_height-1);
784 cairo_line_to(cr, x0+3, y0+3);
785 cairo_line_to(cr, x0+rect_width-3, y0+3);
786 cairo_stroke(cr);
787
788 cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
789 cairo_set_line_width(cr, 1.5);
790 cairo_arc (cr, x0+7, y0+7, 1.5, 0, 2*M_PI);
791 cairo_move_to(cr,x0+rect_width-8, y0+7);
792 cairo_arc (cr, x0+rect_width-7, y0+7, 1.5, 0, 2*M_PI);
793 cairo_move_to(cr,x0+rect_width-7, y0+rect_height-6);
794 cairo_arc (cr, x0+rect_width-7, y0+rect_height-6, 1.5, 0, 2*M_PI);
795 cairo_move_to(cr,x0+7, y0+rect_height-6);
796 cairo_arc (cr, x0+7, y0+rect_height-6, 1.5, 0, 2*M_PI);
797 cairo_stroke_preserve(cr);
798 cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);
799 cairo_fill (cr);
800
801 cairo_pattern_destroy (pat);
802 cairo_destroy(cr);
803
804 return FALSE;
805 }
806
807 gboolean slooper_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data)
808 {
809 cairo_t *cr;
810 /* create a cairo context */
811 cr = gdk_cairo_create(wi->window);
812
813 double x0 = wi->allocation.x+1;
814 double y0 = wi->allocation.y+1;
815 double rect_width = wi->allocation.width-2;
816 double rect_height = wi->allocation.height-2;
817
818 cairo_rectangle (cr, x0-1,y0-1,rect_width+2,rect_height+2);
819 cairo_set_source_rgb (cr, 0, 0, 0);
820 cairo_fill (cr);
821
822 cairo_pattern_t*pat =
823 cairo_pattern_create_radial (-50, y0, 5,rect_width-10, rect_height, 20.0);
824 gx_skin_color(pat);
825 cairo_set_source (cr, pat);
826 cairo_rectangle (cr, x0+2,y0+2,rect_width-4,rect_height-27);
827 cairo_fill (cr);
828
829 cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);
830 cairo_set_line_width(cr, 2.0);
831 cairo_move_to(cr,x0+rect_width-3, y0+3);
832 cairo_line_to(cr, x0+rect_width-3, y0+rect_height-2);
833 cairo_line_to(cr, x0+2, y0+rect_height-2);
834 cairo_move_to(cr,x0+2, y0+rect_height-25);
835 cairo_line_to(cr, x0+rect_width-3, y0+rect_height-25);
836 cairo_stroke(cr);
837
838 cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);
839 cairo_set_line_width(cr, 2.0);
840 cairo_move_to(cr,x0+3, y0+rect_height-1);
841 cairo_line_to(cr, x0+3, y0+3);
842 cairo_line_to(cr, x0+rect_width-3, y0+3);
843 cairo_move_to(cr,x0+2, y0+rect_height-27);
844 cairo_line_to(cr, x0+rect_width-3, y0+rect_height-27);
845 cairo_stroke(cr);
846
847
848 cairo_pattern_destroy (pat);
849 cairo_destroy(cr);
850
851 return FALSE;
852 }
853
854 void gx_init_pixmaps()
855 {
856 /* XPM */
857 static const char * tribe_xpm[] =
858 {
859 "200 129 3 1",
860 " c None",
861 ". c #194C4C",
862 "+ c #194E4E",
863 " ",
864 " ",
865 " ",
866 " .+ ",
867 " ++ ",
868 " ++ ",
869 " .. ",
870 " +++ ",
871 " +.+ ",
872 " +.+. ",
873 " ++.+ ",
874 " ++ +. ",
875 " + + ",
876 " . ++ ",
877 " +. +. ",
878 " .. +. ",
879 " +. +++ ",
880 " ++ ++ ... ",
881 " + +.+ .+. ",
882 " .+ ... .... + ",
883 " . .++..+.++ .+ ",
884 " ++ .. ..++ . ",
885 " . .. ..++.+ . ",
886 " . ++ . .++ ",
887 " .+ .++ +.+... ",
888 " +. ... . +. ",
889 " .. .++ . .. ",
890 " +. +++ .. ",
891 " .+. .+. ",
892 " +.. ++.. ",
893 " . . .. .++. ",
894 " + + . ++. ",
895 " . +. ++ .. .+ ",
896 " . ++ ++ + + ",
897 " . +.. +. .+ ",
898 " .+ . ++. .. .+ ",
899 " ++ . +.. ++ + ",
900 " +++ . . .+.+ +. .+ ",
901 " .+. .+ + .... ..++ ",
902 " +.+ ++ +. .+.+ ++. ",
903 " .++ .+ .+ ..++. + ",
904 " +... .. ++ .++.++ ",
905 " +.++ +. +. +++.. ",
906 " .++. ++ .. .+++.+ ",
907 " ..+++ .++. + .. .+.+.. ",
908 " .+++. .+++ ++ .. .++ ",
909 " ...++ .++. +.. +.+ .. ",
910 " +... +++. ... +++ .. ",
911 " +.. +++.+ +..+ ... . ",
912 " . +++++ +..+ .+.. ",
913 " + +++.++ .+++ ++.+.+. ",
914 " . +++++. +++.. ++++.. ",
915 " . ++++.++ ++++. +++ +.+.. ",
916 " .. . ++++... +.+.+. +... ..+ ",
917 " +..+ +++++++. +..++ ++++++ ",
918 " ...+++ +.+++++.. +++ +.++++.++ ",
919 " ..+.++ ..++++..+ ++++.+++.+..+ ",
920 " .+. .++ .++++.... +.+..++++..+ ",
921 " .+.+ .+. .+++ +++.... .+ . ++.++++.++..+.. ",
922 " + +...+.. +. ++... + .+... .+++. ....+. .++.+.++..+.+.++++++.+. ",
923 " .+++..++..+ .. .+... + .++++. .+ .+ ..+.. .++++.++++++.++.+.++ ",
924 " +..++ .+.+.. ++++ +++ +.+++.+. ++++. .++..+ ++.+...+ ... ",
925 " +++...+ +.. .... .+ ++++++++. . +..++.+. +++ . ",
926 " +.+..+... +. .+.+. .+ .+++++++ +++++++++++..+ ++ ",
927 " ..+.+..+ ..++.+ + .++++.+. ..+++++++++++.. ",
928 " + .+.+.+++ ++.++++ ..++++.. . +.+.+++......+. ",
929 " ... .+.+ +.++.+..+ +..++.+ .++..+. .++. ..+.+. ++++. ",
930 " ++. +..+ .++ ..+.+ +.+++.+ .+.+. ++++. +++..+ ++ ",
931 " +.. ..... ..+ +..++. +.++... + .++...+ ..++ ....+. ",
932 " ++. .+.++ ..++.+.++. .+++++++ +. ....++... .+. +......+ ",
933 " ++.+ +..+++ ++. .+..+ +.+++.. +...++++++.+.. . .+ +.+..+ ",
934 " ..++ ++.++. +.+..+++.+ +++++.. ..+ +++++.++.+++.+ + ....++.. ",
935 " + .++++ +..+.+ ++.++++++++ .++.+ ..++ +++++. .+++++ .. +.+..+.+.. ",
936 " + +. .+... ..++.+ +.++++++.. ... +.+... .+++.+. .+ ..+++.+.+.. ",
937 " . +. . ++++. +..+ .++++++++ .+ ...+++. +++.+ .+++ ++ .++.++++++. ",
938 " +. .+ . ++..+ .+ +.++++... ++....++++++.+ +++. +..+.. ....+ .+..++++...+.+..++.+ + ",
939 " . .. . ....++ + .++..++. +. .+++++++++++.++ ... +++++.+ ++.+...+ ..+..++.+..... ++ ",
940 " +. ..+ +. +...++ ++ ...++ .... ...++++++++++. .. .++++.+. ..+.++..+++.+++ +.+ ",
941 " +. ..+ + .++ ++ . ..+++. .+++++++++++.. .+.+++.++ +. ++++.... ",
942 " +. + ...+ ++ .+ .. +++.++.++..+.+. ++.++..++.+..+ +.+++++.+ ..++.....+..+... ",
943 " +. + ...+ . + .+ +. ++ .+.+.++.++++.+ ......+ . +..+++.++ ............ ",
944 " .. . .+.. . +. ++ ++ +++. ..+++++++++++. +.+.+ .. +++...+.. ..+.+.+.. ",
945 " . .+ + +.... + +. +. .. ...+ ++++++++++++.. +++. ++++.+ .++.+.++.+ ..++ ",
946 " . +.. +. ..... +. + + .+ ... +..++.. .+++++++++++.. .. .+++.+ + . ..+++++ ",
947 " + .+. ++ ..++++ .. .. +. .+ ..+..++..+++.+ +.++++++++++.+ .+++++. .+++. + ",
948 " + ... .. .+...+ ..+.. .. .. ..+++.++++++. ....+ +...+..+ ++++++. ++...+.+... ",
949 " .. +..+ . +.+++ ...+.... +++ .. +.+ +.++++++++++++ +++++. ... +..+++ ",
950 " + +. .++. .. +++. ++.++++. . ++..++. +..++++.+...++ .++.. ..+ ..+++.. ",
951 " ++ . .+++. ++ . ++...++. .. ++++.+++...++ .+.. ..+.... ...+.+ ",
952 " +..+ +. +.+++ +.++++ ...+++. ..+ +.+.. +.+.. +. ++. ..+ +.++. + ",
953 " ...+.+. .. ++...+ +..+++ +..+ +++ . +++.+...++.+++ .. .. .+++. +. ",
954 " +++... .. ...+... +.+.+ .++++. .+... +.... +.+.+ +++ .. +.+ ++++. .. ",
955 " .++.+ .+ +++++.. +. +.++.+. ... +....+. ... +.+ .. ..+. .. ",
956 " ..+ ++ .+.+.++. +..++++ .. +.+ +. .++ .+ .+ +++. .+ ",
957 " ... +.+ ++.+++.. .... ++++ +++ +. .+ ... .+ ...+ +. ",
958 " +.++ ... .++++.+ .++ +..+. +. +. .+ ++ + +. +.++. ",
959 " +++.+.+ ..+ ..+++. ..+. .+.+.+ +++ +.. +. .++..+++ .. .. ",
960 " ...+++++.. +.+ .+++.+ ...+ ++++. .+++ .++ ++ .+..++. ++ + ",
961 " ...+++++++.+ .. ..+++ +++ .++++ +. .++ ++ .+ +.+++++ .. + ",
962 " ...++++++++++ .+ .++++ ++. . +++. ++ .. +.+ +.+ + .++++. . + ",
963 " ++ ...+.++++++++++ +. +.++.. .. ++ +++. + +. +..++. ++ .++++. .. + . ",
964 " .++ ++..+++.+..++.++ +. +.++++ ++ +.+ ++++ + +. ++.++. .+ ..+++. +. ",
965 " + ++. +++.+..+++. .. +. ..+++.++ . . ++++ + + ++++. +.+ +.+.+. +. + ",
966 " ..++. ++.+..+ .+ .+ .+++.++ + ++ +.+. + +. .+++. +...+ ..+.. +.. ",
967 " ...+. +..++ +..+ +. .+++ +. .. ..+. + . +..++ ++.++ ....+ ... ",
968 " .++++ .... +.+.+ + +.++. . + +.++ . . .... ++++ +..+ .. ",
969 " +.+. ...+ .+.+ +. +..+ +. ++.. + +.+ ++.. +++. +.. ",
970 " .++ .. +.. . .+++ + +.. + +.+ +.+ ..+. +. ",
971 " .... ++ +.+ +. +... . ..+ +++ +.. .+.. .+. ",
972 " +.. ++ ..+ . ...+ + ++. ++. +++ ++. ++ ",
973 " + + ++ ++ +... . .+ +.+ ..+ ... .. ",
974 " +. ++ .. .+.+ .. +. ++ .++ .+ ",
975 " . ++ . ..+. +. ++ .. +. . ",
976 " . + . ++++ +. +. .+ +. . ",
977 " . +.. +. .+ . . ",
978 " +. +. + + + ",
979 " ++. . + ",
980 " . ",
981 " + ",
982 " ",
983 " ",
984 " ",
985 " ",
986 " ",
987 " ",
988 " ",
989 " ",
990 " ",
991 " "};
992
993 /* XPM */
994 static const char * guitar_xpm[] = {
995 "65 20 3 1",
996 " c None",
997 ". c #353535",
998 "+ c #343434",
999 " ",
1000 " ",
1001 " ",
1002 " ",
1003 " . + ",
1004 " .. ++.+++ . ...++ ",
1005 " . ++. + + + +.+ ",
1006 " + ++ .+ .+ +. +. ..+ ++ ",
1007 " +.. .+ . ++ .+. + +.. +. . + ++.+ ",
1008 " + + . . + .+ +. + . .+ .. + ",
1009 " + +. . . . + +.++ .++. +. + +. + . + ",
1010 " ++ .. . +++++. + ++.... . + .++.+ . ....... ++. +. ",
1011 " + ++ +..+++.++. + .. + . + +.++.++ .+. ",
1012 " . .+ . ",
1013 " +.. ++ ",
1014 " +. . ",
1015 " ",
1016 " ",
1017 " ",
1018 " "};
1019
1020 /* XPM */
1021 static const char * skull_xpm[] = {
1022 "240 30 26 1",
1023 " c None",
1024 ". c #562334",
1025 "+ c #4A2B64",
1026 "@ c #4A2E7F",
1027 "# c #4C383C",
1028 "$ c #4A3D68",
1029 "% c #69399B",
1030 "& c #673FAC",
1031 "* c #5A4B9B",
1032 "= c #6A4988",
1033 "- c #4E5297",
1034 "; c #505BC3",
1035 "> c #67618D",
1036 ", c #6D636A",
1037 "' c #59748A",
1038 ") c #5875B8",
1039 "! c #5078D0",
1040 "~ c #5A7AA5",
1041 "{ c #54857C",
1042 "] c #6D8266",
1043 "^ c #8C7C4D",
1044 "/ c #837E69",
1045 "( c #549070",
1046 "_ c #8C7F81",
1047 ": c #788F56",
1048 "< c #5DA961",
1049 " ",
1050 " ",
1051 " ",
1052 " ",
1053 " .+$-- @*%%== ......+$ ",
1054 " ++$*; *%%%% @+....++ =...# ",
1055 " +$$*; %%%%= +@++++++$ *=..# ",
1056 " +++=* %%%== ++++++ >=>.# ",
1057 " ==+++= %%===> +++++ ##,>.. ",
1058 " =>>>>>>'{]]: /:_=.,$= ,>.## +++=* *==** %%%%===>> {]]:::]'', _=.,$=$## #+++++=*****= %===> >>>>'{] ::]'' :_=.,$ ##+++++=*****==******% ==>>>> {]]:: ,]/:_=.,$= ##_,,>.##+ ",
1059 " ->~>>>>']_/], /]]:_=.$%%$ _,.#$ ++*** --*+=; ***@@**->~> ]_/],]]',, :_=.$%%$##, #$++++*****--* @**->~>>>>']_/ ,]]', :_=.$% #$++++*****--*+=;;***** *->~> ]_/], ,,/]]:_=.$%% ##,__,.#$+ ",
1060 " ~''''''{]>//> ,/]^:_=#,=%$$ .##$+ +++*-- --*==; --****---~'''' ]>//>,'',, ]^:_=#,=%$$### #$+++++*------* ---~''''''{]>/ ,'', :_=#, $+++++*------*==;;;--** -~''' ]>//> ,,/]^:_=#,=% $###.##$++ ",
1061 " >''''''{]>_:, /^^^:_=:<,&=+ ##$++ @@**-* *--*=* ;;---->>>>'''' ]>_:,,,,,/ ^^:_=:<,&=+$## $++@@@**-*;*--* >>>>''''''{]>_ ,,,,/ ^:_=:< @@@** --*=*;!;;;-- >>''' ]>_:, ,/^^^:_=:<,& ####$ ",
1062 " >~'''{ ]__/: ::^^^: <,=&+ $++@@ @@@--; *--*=* ;;;;-- ~'''{ ']__/: ^^^:_, &++++ ++@@@@ ;**-- >>>>~'' {']__ ^^^:: ^:_,< @@@@@- ;;;;- >>~''' ']__/: ::^^^:_,< +++$++ ",
1063 " )~~~'' {]__^ ::^^: :<=%& @@@@@@=@@@*;****** ;;;;;;!!))~~~'' {{]__^ ^^::>]<:<=%&+@@ @@@@@ ;**** !!))~~ {{{]_ /^::: ^::>]< @@=@@ *****;;;;;;; ))~~~ {{]__ ::^^::>]<:< +@@@@ ",
1064 " ;;!)) {(:/, ::^^: ::{*% @%@='''>=%****===* ;;;;;;;;;;;!))~ ({(:/ ^^:/,::::{*%&@@ %@='' ***== ;;;;; {({(: ^:::: ^:/,: '''>= *===*&;;;;;;; ;;;!) ({(:/ ::^^:/,:::: &@@@% ",
1065 " ;;;!! ({{:: _:::] :::-% %%$''==> =@*;**** *;;;;;;;;;;;!!) {({{: ::]>]].:::-%*&& %$''= @*;*** ;;;;; '{({{ ,$_:::]>] '==>> ;****;;***;;;; ;;;;! '{({{: :::]>]].:: *&&%% ",
1066 " !!!!! '{{{(: #>__> #:]]-% @=>'-*** >@*);;*- !;;!; ~'{{{( __>/: =>'-* >@*);;* ;;!!!! )~'{{{ ^$#>__>/: -***> );;*-)) -!;;!; !!!!! ~'{{{( >/:/#:] *&*@= ",
1067 " ~~~~~)!!)~'({(( /,,,::^^]:_/* =>'>@=* >@-)))) ~>)!;;!)~~~~~) )~'({ ,,::^^]:_/*&*; >'>@=**=>@-))) ;!)~~~~~)!!)~'( ^_/,,,:: >@=**= ))))~'~>~~>)!; ~~~~~)!!)~'({ _/,,,::^^]:_ *;*=>' ",
1068 " {{{{''~!))'{{( /]:<:^/::/_,% >>'>@-* >@---)~ )~~)!;!~{{{{'' ))'{{ :<:^/::/_,%%&; >'>@-***>@---) ;!~{{{{''~!))'{ :^/]:<:^ >@-** --)~~~))))~~) {{{{''~!))'{{ :^/]:<:^/::/_ &;*>>'>@ ",
1069 " ((]{{'~))!'{{ /,,,////__> >,,>@=- **---~ !)~!!!~((]{{' )!'{{ ,,////__>%%*; ,,>@=-->**---~ !!~((]{{'~))!' ::/,,, >@=-- --~~~)))!!!)~ ((]{{'~))!'{{ <::/,,,////__ *;*>,,>@ ",
1070 " ({'''~~))~{{ //_,___/ ,,,>** @*-->' )~)!!'({'''~ )~{{( _,___/_,*&*; ,>**==*@*-->' !!'({'''~~))~ <<:// >**== >'~)))!!!!)~ ({'''~~))~{{( <<<://_,___ *;-,,,>* ",
1071 " {('~~~ <<<]/ ",
1072 " (<{'~ <<<<<: ",
1073 " <<<(( (<<(<<<: ",
1074 " <<<<< <<<<<<< ",
1075 " ({((< <<<<<< ",
1076 " ",
1077 " ",
1078 " "};
1079
1080
1081 tribeimage = gdk_pixbuf_new_from_xpm_data(tribe_xpm);
1082 tribeimage1 = gdk_pixbuf_new_from_xpm_data(guitar_xpm);
1083 tribeimage2 = gdk_pixbuf_new_from_xpm_data(skull_xpm);
1084 }
1085
1086 }
302 }
303
231231
232232 list<string> JackCapture::capture_command(int& seq) {
233233 // open jack_capture setup file
234 string gfilename = gx_system::gx_user_dir + gx_system::jcapsetup_file;
234 string gfilename = gx_system::sysvar.gx_user_dir + gx_system::sysvar.jcapsetup_file;
235235 ifstream f(gfilename.c_str());
236236
237237 list<string> l;
373373 if (childprocs.find(app_name)) {
374374 return;
375375 }
376 string s = gx_jack::client_instance + "_" + app_name;
376 string s = gx_jack::gxjack.client_instance + "_" + app_name;
377377 const char * const args[] = {
378378 app_name, "-n", s.c_str(), "-t", "sco", "-c", "3",
379 (gx_jack::client_name+":in_0").c_str(),
380 (gx_jack::client_name+":out_0").c_str(),
381 (gx_jack::client_insert_name+":in_0").c_str(),
382 (gx_jack::client_insert_name+":out_0").c_str(),
383 (gx_jack::client_insert_name+":out_1").c_str(),
379 (gx_jack::gxjack.client_name+":in_0").c_str(),
380 (gx_jack::gxjack.client_name+":out_0").c_str(),
381 (gx_jack::gxjack.client_insert_name+":in_0").c_str(),
382 (gx_jack::gxjack.client_insert_name+":out_0").c_str(),
383 (gx_jack::gxjack.client_insert_name+":out_1").c_str(),
384384 0 };
385385 GxChild *meterbridge = childprocs.launch(app_name, args, SIGTERM);
386386 if (meterbridge) {
134134 if (bufsize < count) {
135135 bufsize = count;
136136 }
137 if (bufsize < Convproc::MINPART) {
138 bufsize = Convproc::MINPART;
139 }
137140 if (offset > audio_size) {
138141 offset = audio_size;
139142 }
216219 // keep BSIZE big enough so that resamp.flush() doesn't cause overflow
217220 // (> 100 should be enough, and should be kept bigger anyhow)
218221 const unsigned int BSIZE = 0x8000; // 0x4000;
219 gx_resample::StreamingResampler resamp;
222
220223
221224 if (offset && audio.seek(offset)) {
222225 gx_system::gx_print_error("convolver", "Can't seek to offset");
234237 ostringstream buf;
235238 buf << "resampling from " << audio.rate() << " to " << samplerate;
236239 gx_system::gx_print_info("convolver", buf.str());
237 if (!resamp.setup(audio.rate(), samplerate, nchan)) {
240 if (!gx_resample::_glob_resamp->_stream_resampler.setup(audio.rate(), samplerate, nchan)) {
238241 assert(false);
239242 }
240243 try {
241 rbuff = new float[resamp.get_max_out_size(BSIZE)*nchan];
244 rbuff = new float[gx_resample::_glob_resamp->_stream_resampler.get_max_out_size(BSIZE)*nchan];
242245 } catch(...) {
243246 audio.close();
244247 gx_system::gx_print_error("convolver", "out of memory");
300303 gp += nfram*fct;
301304 cnt = nfram;
302305 if (rbuff) {
303 cnt = resamp.process(nfram, buff, rbuff);
306 cnt = gx_resample::_glob_resamp->_stream_resampler.process(nfram, buff, rbuff);
304307 }
305308 } else {
306309 if (rbuff) {
307 cnt = resamp.flush(rbuff);
310 cnt = gx_resample::_glob_resamp->_stream_resampler.flush(rbuff);
308311 done = true;
309312 } else {
310313 break;
336339 audio.close();
337340 delete[] buff;
338341 delete[] rbuff;
342
339343 return true;
340344 }
341345
366370 << ", ldelay=" << ldelay << ", length=" << length << ", gain" << gain
367371 << ", lgain" << lgain << endl;
368372 */
373
369374 if (Convproc::configure(2, 2, size, count, bufsize, Convproc::MAXPART)) {
370 gx_system::gx_print_error("convolver", "error in Convproc::configure");
371 return false;
372 }
375 gx_system::gx_print_error("convolver", "error in Convproc::configure ");
376 return false;
377 }
378
373379 float gain_a[2] = {gain, lgain};
374380 unsigned int delay_a[2] = {delay, ldelay};
375381 return read_sndfile(audio, 2, samplerate, gain_a, delay_a, offset, length, points);
413419 bool GxSimpleConvolver::configure(int count, float *impresp, unsigned int samplerate) {
414420 bool dyn = false;
415421 if (samplerate != gx_jack::gxjack.jack_sr) {
416 gx_resample::BufferResampler r;
417 impresp = r.process(samplerate, count, impresp, gx_jack::gxjack.jack_sr, count);
422
423 impresp = gx_resample::_glob_resamp->_buffer_resampler.process(samplerate, count, impresp, gx_jack::gxjack.jack_sr, count);
418424 if (!impresp) {
419425 gx_system::gx_print_error("convolver", "failed to resample");
420426 return false;
421427 }
422428 dyn = true;
429
423430 }
424431 cleanup();
425432 bool ret;
433
434 unsigned int bufsize = gx_jack::gxjack.jack_bs;
435 if (bufsize < Convproc::MINPART) {
436 bufsize = Convproc::MINPART;
437 }
426438 if (Convproc::configure(1, 1, count, gx_jack::gxjack.jack_bs,
427 gx_jack::gxjack.jack_bs, Convproc::MAXPART)) {
439 bufsize, Convproc::MAXPART)) {
428440 gx_system::gx_print_error("convolver", "error in Convproc::configure");
429441 ret = false;
430442 } else if (impdata_create(0, 0, 1, impresp, 0, count)) {
2525
2626 #include "guitarix.h" // NOLINT
2727
28 #include <glibmm/i18n.h> // NOLINT
29
2830 #include <cstring> // NOLINT
2931 #include <string> // NOLINT
3032
3436 void gx_engine_init(const string *optvar ) {
3537 // ----- lock the buffer for the oscilloscope
3638 const int frag = (const int)gx_jack::gxjack.jack_bs;
37
38 get_frame = new float[frag];
39 get_frame1 = new float[frag];
40 checkfreq = new float[frag];
41 oversample = new float[frag*MAX_UPSAMPLE];
42 result = new float[frag+46];
39 _modulpointer = new ModulPointer;
40
41 audio.get_frame = new float[frag];
42 audio.get_frame1 = new float[frag];
43 audio.checkfreq = new float[frag];
44 audio.oversample = new float[frag*MAX_UPSAMPLE];
45 audio.result = new float[frag+46];
4346 audio.gxtube = 1;
44
45 (void)memset(get_frame, 0, frag*sizeof(float));
46 (void)memset(get_frame1, 0, frag*sizeof(float));
47 (void)memset(checkfreq, 0, frag*sizeof(float));
48 (void)memset(oversample, 0, frag*MAX_UPSAMPLE*sizeof(float));
49 (void)memset(result, 0, (frag+46)*sizeof(float));
47 audio.cur_tonestack = 0;
48 audio.tube_changed = true;
49 for (int i = 0; i < 9; i++) audio.effect_buffer[i] = 0;
50 audio.rack_change = true;
51
52 (void)memset(audio.get_frame, 0, frag*sizeof(float));
53 (void)memset(audio.get_frame1, 0, frag*sizeof(float));
54 (void)memset(audio.checkfreq, 0, frag*sizeof(float));
55 (void)memset(audio.oversample, 0, frag*MAX_UPSAMPLE*sizeof(float));
56 (void)memset(audio.result, 0, (frag+46)*sizeof(float));
5057
5158 midi.init(gx_jack::gxjack.jack_sr);
5259 faust_init(gx_jack::gxjack.jack_sr);
5360 // resampTube.setup(gx_jack::jack_sr, 2);
5461 // resampDist.setup(gx_jack::jack_sr, 2);
5562 if (!optvar[LOAD_FILE].empty()) {
56 gx_preset::gx_recall_settings_file(&optvar[LOAD_FILE]);
63 gx_preset::gxpreset.gx_recall_settings_file(&optvar[LOAD_FILE]);
5764 } else {
58 gx_preset::gx_recall_settings_file();
65 gx_preset::gxpreset.gx_recall_settings_file();
5966 }
6067 for (int i = 0; i < GX_NUM_OF_FACTORY_PRESET; i++)
61 gx_preset::gx_load_factory_file(i);
62 initialized = true;
68 gx_preset::gxpreset.gx_load_factory_file(i);
69 audio.initialized = true;
6370 }
6471
6572 void gx_engine_reset() {
6673
67 if (checkfreq) delete[] checkfreq;
68 if (get_frame) delete[] get_frame;
69 if (get_frame1) delete[] get_frame1;
70 if (oversample) delete[] oversample;
71 if (result) delete[] result;
72 initialized = false;
73 }
74
74 if (audio.checkfreq) delete[] audio.checkfreq;
75 if (audio.get_frame) delete[] audio.get_frame;
76 if (audio.get_frame1) delete[] audio.get_frame1;
77 if (audio.oversample) delete[] audio.oversample;
78 if (audio.result) delete[] audio.result;
79 delete _modulpointer;
80 audio.initialized = false;
81 }
82
83 /****************************************************************
84 ** registering of audio variables
85 */
86
87 inline void registerNonMidiParam(const char*a, float*c, bool d, float std = 0,
88 float lower = 0, float upper = 1) {
89 gx_gui::parameter_map.insert(new gx_gui::FloatParameter(a, "", gx_gui::Parameter::None,
90 d, *c, std, lower, upper, 0, false));
91 }
92
93 inline void registerNonMidiParam(const char*a, bool*c, bool d, float std = false) {
94 gx_gui::parameter_map.insert(new gx_gui::BoolParameter(a, "", gx_gui::Parameter::None,
95 d, *c, std, 0, false));
96 }
97
98 // should be int
99 inline void registerEnumParam(const char*a, const char*b, const char** vl, float*c,
100 int std = 0, bool exp = false) {
101 gx_gui::parameter_map.insert(new gx_gui::FloatEnumParameter(a, b, vl, true, *c, std,
102 true, exp)); // false == no_midi_var
103 }
104
105 inline void registerEnumParam(const char*a, const char*b, const char** vl, int*c, int std = 0,
106 bool exp = false) {
107 gx_gui::parameter_map.insert(new gx_gui::EnumParameter(a, b, vl, true, *c, std,
108 true, exp)); // false == no_midi_var
109 }
110
111 inline void registerUEnumParam(const char*a, const char*b, const char** vl, unsigned int*c, unsigned int std = 0,
112 bool exp = false) {
113 gx_gui::parameter_map.insert(new gx_gui::UEnumParameter(a, b, vl, true, *c, std,
114 true, exp)); // false == no_midi_var
115 }
116
117 /****************************************************************
118 ** register audio variables to paramtable
119 */
120
121 void AudioVariables::register_parameter() {
122 static const char *on_off = N_("on/off");
123
124 gx_gui::registerParam("jconv.on_off", "Run", &gx_jconv::GxJConvSettings::checkbutton7);
125 gx_gui::registerParam("cab.on_off", "Cabinet", &fcab, 0);
126 gx_gui::registerParam("con.on_off", "Contrast-ImpResp", &fcon, 0);
127
128 gx_gui::registerParam("amp.bass_boost.on_off", on_off, &fboost, 0);
129 gx_gui::registerParam("compressor.on_off", on_off, &fcheckboxcom1, 0);
130 gx_gui::registerParam("crybaby.on_off", on_off, &fcheckbox5, 0);
131 gx_gui::registerParam("overdrive.on_off", on_off, &foverdrive4, 0);
132 gx_gui::registerParam("gx_distortion.on_off", on_off, &fcheckbox4, 0);
133 gx_gui::registerParam("freeverb.on_off", on_off, &fcheckbox6, 0);
134 gx_gui::registerParam("IR.on_off", on_off, &fcheckbox8, 0);
135 gx_gui::registerParam("echo.on_off", on_off, (float*) &fcheckbox7, 0.);
136 gx_gui::registerParam("delay.on_off", on_off, (float*) &fdelay, 0.);
137 gx_gui::registerParam("chorus.on_off", on_off, (float*) &fchorus, 0.);
138 gx_gui::registerParam("eqs.on_off", on_off, &feq, 0);
139 gx_gui::registerParam("moog.on_off", on_off, &fmoog, 0);
140 gx_gui::registerParam("biquad.on_off", on_off, &fbiquad, 0);
141 gx_gui::registerParam("flanger.on_off", on_off, &fflanger, 0);
142 gx_gui::registerParam("phaser.on_off", on_off, (float*) &fphaser, 0.);
143 gx_gui::registerParam("shaper.on_off", on_off, &fng, 0);
144 gx_gui::registerParam("low_highpass.on_off", on_off, &flh, 0);
145 gx_gui::registerParam("stereodelay.on_off", on_off, (float*) &fsd, 0.);
146 gx_gui::registerParam("stereoecho.on_off", on_off, (float*) &fse, 0.);
147 gx_gui::registerParam("midi_out.on_off", on_off, &fmi, 0);
148 gx_gui::registerParam("oscilloscope.on_off", on_off, &fwv, 0);
149 gx_gui::registerParam("ampmodul.on_off", on_off, &famp, 0);
150 gx_gui::registerParam("noise_gate.on_off", on_off, &fnoise_g, 0);
151 gx_gui::registerParam("amp.on_off", on_off, &fampout, 0);
152 gx_gui::registerParam("amp.clip.on_off", on_off, &ftube, 0);
153 gx_gui::registerParam("tonemodul.on_off", on_off, &ftone, 0);
154 gx_gui::registerParam("tremolo.on_off", on_off, &ftremolo, 0);
155 gx_gui::registerParam("phaser_mono.on_off", on_off, &fpm, 0);
156 gx_gui::registerParam("chorus_mono.on_off", on_off, (float*) &fchorus_mono, 0.);
157 gx_gui::registerParam("flanger_mono.on_off", on_off, &fflanger_mono, 0);
158 gx_gui::registerParam("feedback.on_off", on_off, &ffeedback, 0);
159 gx_gui::registerParam("amp.tonestack.on_off", on_off, &ftonestack, 0);
160
161 gx_gui::registerParam("noise_gate.threshold", "Threshold", &fnglevel,
162 0.017f, 0.01f, 0.31f, 0.001f);
163
164 static const char *tonestack_model[] = {N_("default"), N_("Bassman"), N_("Twin Reverb"),
165 N_("Princeton"), N_("JCM-800"), N_("JCM-2000"), N_("M-Lead"), N_("M2199"), N_("AC-30"),
166 N_("Mesa Boogie"), N_("SOL 100"), N_("JTM-45"), N_("AC-15"), N_("Peavey"), N_("Ibanez"),
167 N_("Roland"), N_("Ampeg"), N_("Rev.Rocket"), N_("MIG 100 H"), N_("Triple Giant"),
168 N_("Trio Preamp"), N_("Hughes&Kettner"), N_("Junior"), N_("Fender"),
169 N_("Deville"), N_("Gibsen"), 0};
170 registerEnumParam("amp.tonestack.select", "select", tonestack_model, &tonestack, 0);
171
172 static const char *cabinet_model[] = {N_("4x12"), N_("2x12"), N_("1x12"), N_("4x10"),
173 N_("2x10"), N_("HighGain"), N_("Twin"), N_("Bassman"), N_("Marshall"), N_("AC-30"),
174 N_("Princeton"), N_("A2"), 0};
175 registerEnumParam("cab.select", "select", cabinet_model, &cabinet, 0);
176
177 static const char *post_pre[] = {N_("post"), N_("pre"), 0};
178 registerUEnumParam("compressor.pp", "select", post_pre, &effect_pre_post[0], 0);
179 registerUEnumParam("crybaby.pp", "select", post_pre, &effect_pre_post[1], 0);
180 registerUEnumParam("overdrive.pp", "select", post_pre, &effect_pre_post[2], 0);
181 registerUEnumParam("gx_distortion.pp", "select", post_pre, &effect_pre_post[3], 0);
182 registerUEnumParam("freeverb.pp", "select", post_pre, &effect_pre_post[4], 0);
183 registerUEnumParam("IR.pp", "select", post_pre, &effect_pre_post[5], 0);
184 registerUEnumParam("echo.pp", "select", post_pre, &effect_pre_post[6], 0);
185 registerUEnumParam("delay.pp", "select", post_pre, &effect_pre_post[7], 0);
186 registerUEnumParam("eqs.pp", "select", post_pre, &effect_pre_post[8], 0);
187 registerUEnumParam("low_highpass.pp", "select", post_pre, &effect_pre_post[9], 0);
188 registerUEnumParam("oscilloscope.pp", "select", post_pre, &effect_pre_post[10], 0);
189 registerUEnumParam("biquad.pp", "select", post_pre, &effect_pre_post[11], 0);
190 registerUEnumParam("tremolo.pp", "select", post_pre, &effect_pre_post[12], 0);
191 registerUEnumParam("phaser_mono.pp", "select", post_pre, &effect_pre_post[13], 0);
192 registerUEnumParam("chorus_mono.pp", "select", post_pre, &effect_pre_post[14], 0);
193 registerUEnumParam("flanger_mono.pp", "select", post_pre, &effect_pre_post[15], 0);
194 registerUEnumParam("feedback.pp", "select", post_pre, &effect_pre_post[16], 0);
195 registerUEnumParam("amp.tonestack.pp", "select", post_pre, &effect_pre_post[17], 0);
196 registerUEnumParam("cab.pp", "select", post_pre, &effect_pre_post[18], 0);
197
198 static const char *crybaby_autowah[] = {N_("manual"), N_("auto"), 0};
199 registerEnumParam("crybaby.autowah", "select", crybaby_autowah, &fautowah, 0);
200
201 registerNonMidiParam("compressor.position", &posit[5], true, 6, 1, 22);
202 registerNonMidiParam("crybaby.position", &posit[0], true, 3, 1, 22);
203 registerNonMidiParam("overdrive.position", &posit[1], true, 7, 1, 22);
204 registerNonMidiParam("gx_distortion.position", &posit[2], true, 4, 1, 22);
205 registerNonMidiParam("freeverb.position", &posit[3], true, 10, 1, 22);
206 registerNonMidiParam("IR.position", &posit[4], true, 5, 1, 22);
207 registerNonMidiParam("echo.position", &posit[6], true, 8, 1, 22);
208 registerNonMidiParam("delay.position", &posit[7], true, 9, 1, 22);
209 registerNonMidiParam("eqs.position", &posit[10], true, 2, 1, 22);
210 registerNonMidiParam("chorus.position", &posit[8], true, 1, 1, 10);
211 registerNonMidiParam("flanger.position", &posit[9], true, 2, 1, 10);
212 registerNonMidiParam("moog.position", &posit[11], true, 6, 1, 10);
213 registerNonMidiParam("phaser.position", &posit[12], true, 3, 1, 10);
214 registerNonMidiParam("low_highpass.position", &posit[14], true, 1, 1, 22);
215 registerNonMidiParam("stereodelay.position", &posit[15], true, 4, 1, 10);
216 registerNonMidiParam("stereoecho.position", &posit[16], true, 5, 1, 10);
217 registerNonMidiParam("oscilloscope.position", &posit[17], true, 11, 1, 22);
218 registerNonMidiParam("biquad.position", &posit[18], true, 12, 1, 22);
219 // registerNonMidiParam("midi_out.position", &posit[28], true, 20, 1, 22);
220 registerNonMidiParam("ampmodul.position", &posit[19], true, 7, 1, 10);
221 registerNonMidiParam("tonemodul.position", &posit[20], true, 8, 1, 10);
222 registerNonMidiParam("tremolo.position", &posit[21], true, 13, 1, 22);
223 registerNonMidiParam("phaser_mono.position", &posit[22], true, 14, 1, 22);
224 registerNonMidiParam("chorus_mono.position", &posit[23], true, 15, 1, 22);
225 registerNonMidiParam("flanger_mono.position", &posit[24], true, 16, 1, 22);
226 registerNonMidiParam("feedback.position", &posit[25], true, 17, 1, 22);
227 registerNonMidiParam("amp.tonestack.position", &posit[26], true, 18, 1, 22);
228 registerNonMidiParam("cab.position", &posit[27], true, 19, 1, 22);
229
230 registerNonMidiParam("system.waveview", &viv, false);
231 registerNonMidiParam("midi_out.midistat", &midistat, false);
232 registerNonMidiParam("midi_out.midistat1", &midistat1, false);
233 registerNonMidiParam("midi_out.midistat2", &midistat2, false);
234 registerNonMidiParam("midi_out.midistat3", &midistat3, false);
235
236 // user interface options
237 registerNonMidiParam("ui.latency_nowarn", &fwarn, false, 0);
238 registerNonMidiParam("ui.skin", &fskin, false, 0, 0, 100);
239
240 get_frame = NULL;
241 get_frame1 = NULL;
242 checkfreq = NULL;
243 oversample = NULL;
244 result = NULL;
245 checky = kEngineOn;
246
247 /* engine init state */
248 audio.initialized = false;
249
250 /* pitchtracker init state */
251 pitch_tracker.pt_initialized = false;
252
253 /* buffer ready state */
254 audio.buffers_ready = false;
255 }
75256 } /* end of gx_engine namespace */
2626 #include "guitarix.h" // NOLINT
2727
2828 #include <errno.h> // NOLINT
29 #include <glibmm/i18n.h> // NOLINT
3029
3130 #include <cstring> // NOLINT
3231 #include <string> // NOLINT
33 #include <fstream> // NOLINT
32 #include <list> // NOLINT
3433 #include <iostream> // NOLINT
3534
3635 namespace gx_engine {
3736
38 /****************************************************************
39 ** registering of audio variables
40 */
41
42 inline void registerNonMidiParam(const char*a, float*c, bool d, float std = 0,
43 float lower = 0, float upper = 1) {
44 gx_gui::parameter_map.insert(new gx_gui::FloatParameter(a, "", gx_gui::Parameter::None,
45 d, *c, std, lower, upper, 0, false));
46 }
47
48 inline void registerNonMidiParam(const char*a, bool*c, bool d, float std = false) {
49 gx_gui::parameter_map.insert(new gx_gui::BoolParameter(a, "", gx_gui::Parameter::None,
50 d, *c, std, 0, false));
51 }
52
53 // should be int
54 inline void registerEnumParam(const char*a, const char*b, const char** vl, float*c,
55 int std = 0, bool exp = false) {
56 gx_gui::parameter_map.insert(new gx_gui::FloatEnumParameter(a, b, vl, true, *c, std,
57 true, exp)); // false == no_midi_var
58 }
59
60 inline void registerEnumParam(const char*a, const char*b, const char** vl, int*c, int std = 0,
61 bool exp = false) {
62 gx_gui::parameter_map.insert(new gx_gui::EnumParameter(a, b, vl, true, *c, std,
63 true, exp)); // false == no_midi_var
64 }
65
66 inline void registerUEnumParam(const char*a, const char*b, const char** vl, unsigned int*c, unsigned int std = 0,
67 bool exp = false) {
68 gx_gui::parameter_map.insert(new gx_gui::UEnumParameter(a, b, vl, true, *c, std,
69 true, exp)); // false == no_midi_var
70 }
71
72 /****************************************************************
73 ** definitions for code generated with faust / dsp2cc
74 */
75
76 #include "./gx_faust_includes.cc"
77
78 /****************************************************************
79 ** register audio variables to paramtable
80 */
81
82 void AudioVariables::register_parameter() {
83 static const char *on_off = N_("on/off");
84 gx_gui::registerParam("amp.bass_boost.on_off", on_off, &fboost, 0);
85 gx_gui::registerParam("compressor.on_off", on_off, &fcheckboxcom1, 0);
86 gx_gui::registerParam("jconv.on_off", "Run", &gx_jconv::GxJConvSettings::checkbutton7);
87 gx_gui::registerParam("crybaby.on_off", on_off, &fcheckbox5, 0);
88 gx_gui::registerParam("cab.on_off", "Cabinet", &fcab, 0);
89 gx_gui::registerParam("con.on_off", "Contrast-ImpResp", &fcon, 0);
90 gx_gui::registerParam("overdrive.on_off", on_off, &foverdrive4, 0);
91 gx_gui::registerParam("gx_distortion.on_off", on_off, &fcheckbox4, 0);
92 gx_gui::registerParam("freeverb.on_off", on_off, &fcheckbox6, 0);
93 gx_gui::registerParam("IR.on_off", on_off, &fcheckbox8, 0);
94 gx_gui::registerParam("echo.on_off", on_off, (float*) &fcheckbox7, 0.);
95 gx_gui::registerParam("delay.on_off", on_off, (float*) &fdelay, 0.);
96 gx_gui::registerParam("chorus.on_off", on_off, (float*) &fchorus, 0.);
97 gx_gui::registerParam("eqs.on_off", on_off, &feq, 0);
98 gx_gui::registerParam("moog.on_off", on_off, &fmoog, 0);
99 gx_gui::registerParam("biquad.on_off", "on_off", &fbiquad, 0);
100 gx_gui::registerParam("flanger.on_off", on_off, &fflanger, 0);
101 // gx_gui::registerParam("SampleLooper.on_off", "on_off", (float*) &fsloop, 0.);
102 gx_gui::registerParam("phaser.on_off", on_off, (float*) &fphaser, 0.);
103 gx_gui::registerParam("shaper.on_off", on_off, &fng, 0);
104 gx_gui::registerParam("low_highpass.on_off", on_off, &flh, 0);
105 gx_gui::registerParam("stereodelay.on_off", on_off, (float*) &fsd, 0);
106 gx_gui::registerParam("stereoecho.on_off", on_off, (float*) &fse, 0);
107 gx_gui::registerParam("midi_out.on_off", on_off, &fmi, 0);
108 gx_gui::registerParam("oscilloscope.on_off", on_off, &fwv, 0);
109 gx_gui::registerParam("ampmodul.on_off", on_off, &famp, 0);
110 gx_gui::registerParam("noise_gate.on_off", "on/off", &fnoise_g, 0);
111 gx_gui::registerParam("amp.on_off", on_off, &fampout, 0);
112 gx_gui::registerParam("amp.clip.on_off", on_off, &ftube, 0);
113 gx_gui::registerParam("tonemodul.on_off", on_off, &ftone, 0);
114 gx_gui::registerParam("tremolo.on_off", on_off, &ftremolo, 0);
115 gx_gui::registerParam("phaser_mono.on_off", on_off, &fpm, 0);
116 gx_gui::registerParam("chorus_mono.on_off", on_off, (float*) &fchorus_mono, 0.);
117 gx_gui::registerParam("flanger_mono.on_off", on_off, &fflanger_mono, 0.);
118 gx_gui::registerParam("feedback.on_off", on_off, &ffeedback, 0.);
119 gx_gui::registerParam("amp.tonestack.on_off", on_off, &ftonestack, 0.);
120
121 gx_gui::registerParam("noise_gate.threshold", "Threshold", &fnglevel,
122 0.017f, 0.01f, 0.31f, 0.001f);
123
124 static const char *tonestack_model[] = {N_("default"), N_("Bassman"), N_("Twin Reverb"),
125 N_("Princeton"), N_("JCM-800"), N_("JCM-2000"), N_("M-Lead"), N_("M2199"), N_("AC-30"),
126 N_("Mesa Boogie"), N_("SOL 100"), N_("JTM-45"), N_("AC-15"), N_("Peavey"), N_("Ibanez"),
127 N_("Roland"), N_("Ampeg"), 0};
128 registerEnumParam("amp.tonestack.select", "select", tonestack_model, &tonestack, 0);
129 static const char *cabinet_model[] = {N_("4x12"), N_("2x12"), N_("1x12"), N_("4x10"),
130 N_("2x10"), N_("HighGain"), N_("Twin"), N_("Bassman"), N_("Marshall"), N_("AC-30"),
131 N_("Princeton"), N_("A2"), 0};
132 registerEnumParam("cab.select", "select", cabinet_model, &cabinet, 0);
133
134 static const char *post_pre[] = {N_("post"), N_("pre"), 0};
135 registerUEnumParam("compressor.pp", "select", post_pre, &effect_pre_post[0], 0);
136 registerUEnumParam("crybaby.pp", "select", post_pre, &effect_pre_post[1], 0);
137 registerUEnumParam("overdrive.pp", "select", post_pre, &effect_pre_post[2], 0);
138 registerUEnumParam("gx_distortion.pp", "select", post_pre, &effect_pre_post[3], 0);
139 registerUEnumParam("freeverb.pp", "select", post_pre, &effect_pre_post[4], 0);
140 registerUEnumParam("IR.pp", "select", post_pre, &effect_pre_post[5], 0);
141 registerUEnumParam("echo.pp", "select", post_pre, &effect_pre_post[6], 0);
142 registerUEnumParam("delay.pp", "select", post_pre, &effect_pre_post[7], 0);
143 registerUEnumParam("eqs.pp", "select", post_pre, &effect_pre_post[8], 0);
144 registerUEnumParam("low_highpass.pp", "select", post_pre, &effect_pre_post[9], 0);
145 registerUEnumParam("oscilloscope.pp", "select", post_pre, &effect_pre_post[10], 0);
146 registerUEnumParam("biquad.pp", "select", post_pre, &effect_pre_post[11], 0);
147 registerUEnumParam("tremolo.pp", "select", post_pre, &effect_pre_post[12], 0);
148 registerUEnumParam("phaser_mono.pp", "select", post_pre, &effect_pre_post[13], 0);
149 registerUEnumParam("chorus_mono.pp", "select", post_pre, &effect_pre_post[14], 0);
150 registerUEnumParam("flanger_mono.pp", "select", post_pre, &effect_pre_post[15], 0);
151 registerUEnumParam("feedback.pp", "select", post_pre, &effect_pre_post[16], 0);
152 registerUEnumParam("amp.tonestack.pp", "select", post_pre, &effect_pre_post[17], 0);
153 registerUEnumParam("cab.pp", "select", post_pre, &effect_pre_post[18], 0);
154
155 static const char *crybaby_autowah[] = {N_("manual"), N_("auto"), 0};
156 registerEnumParam("crybaby.autowah", "select", crybaby_autowah, &fautowah, 0);
157
158 // static const char *eqt_onetwo[] = {"fixed","scale",0};
159 // registerEnumParam("eqt.onetwo", "select", eqt_onetwo, &witcheq, 0);
160
161 registerNonMidiParam("compressor.position", &posit[5], true, 6, 1, 22);
162 registerNonMidiParam("crybaby.position", &posit[0], true, 3, 1, 22);
163 registerNonMidiParam("overdrive.position", &posit[1], true, 7, 1, 22);
164 registerNonMidiParam("gx_distortion.position", &posit[2], true, 4, 1, 22);
165 registerNonMidiParam("freeverb.position", &posit[3], true, 10, 1, 22);
166 registerNonMidiParam("IR.position", &posit[4], true, 5, 1, 22);
167 registerNonMidiParam("echo.position", &posit[6], true, 8, 1, 22);
168 registerNonMidiParam("delay.position", &posit[7], true, 9, 1, 22);
169 registerNonMidiParam("eqs.position", &posit[10], true, 2, 1, 22);
170 registerNonMidiParam("chorus.position", &posit[8], true, 1, 1, 10);
171 registerNonMidiParam("flanger.position", &posit[9], true, 2, 1, 10);
172 registerNonMidiParam("moog.position", &posit[11], true, 6, 1, 10);
173 registerNonMidiParam("phaser.position", &posit[12], true, 3, 1, 10);
174 registerNonMidiParam("low_highpass.position", &posit[14], true, 1, 1, 22);
175 registerNonMidiParam("stereodelay.position", &posit[15], true, 4, 1, 10);
176 registerNonMidiParam("stereoecho.position", &posit[16], true, 5, 1, 10);
177 registerNonMidiParam("oscilloscope.position", &posit[17], true, 11, 1, 22);
178 registerNonMidiParam("biquad.position", &posit[18], true, 12, 1, 22);
179 // registerNonMidiParam("midi_out.position", &posit[28], true, 20, 1, 22);
180 registerNonMidiParam("ampmodul.position", &posit[19], true, 7, 1, 10);
181 registerNonMidiParam("tonemodul.position", &posit[20], true, 8, 1, 10);
182 registerNonMidiParam("tremolo.position", &posit[21], true, 13, 1, 22);
183 registerNonMidiParam("phaser_mono.position", &posit[22], true, 14, 1, 22);
184 registerNonMidiParam("chorus_mono.position", &posit[23], true, 15, 1, 22);
185 registerNonMidiParam("flanger_mono.position", &posit[24], true, 16, 1, 22);
186 registerNonMidiParam("feedback.position", &posit[25], true, 17, 1, 22);
187 registerNonMidiParam("amp.tonestack.position", &posit[26], true, 18, 1, 22);
188 registerNonMidiParam("cab.position", &posit[27], true, 19, 1, 22);
189
190
191 registerNonMidiParam("system.waveview", &viv, false);
192 registerNonMidiParam("midi_out.midistat", &midistat, false);
193 registerNonMidiParam("midi_out.midistat1", &midistat1, false);
194 registerNonMidiParam("midi_out.midistat2", &midistat2, false);
195 registerNonMidiParam("midi_out.midistat3", &midistat3, false);
196
197 // user interface options
198 registerNonMidiParam("ui.latency_nowarn", &fwarn, false, 0);
199 registerNonMidiParam("ui.skin", &fskin, false, 0, 0, 100);
200 }
201
20237 AudioVariables audio;
20338
204 inline float noise_gate(int sf, float* input, float ngate) {
205 float sumnoise = 0;
206 for (int i = 0; i < sf; i++) {
207 sumnoise += sqrf(fabs(input[i]));
208 }
209 float noisepulse = sqrtf(sumnoise/sf);
210 if (noisepulse > audio.fnglevel * 0.01) {
211 return 1; // -75db 0.001 = 65db
212 } else if (ngate > 0.01) {
213 return ngate * 0.996;
214 } else {
215 return ngate;
216 }
217 }
218
219 inline void run_tonestack(int count, float *output0) {
220 switch (audio.tonestack) {
221 case 0: // "default"
222 gx_tonestacks::tonestack_default::compute(count, output0, output0);
223 break;
224 case 1: // "Bassman"
225 gx_tonestacks::tonestack_bassman::compute(count, output0, output0);
226 break;
227 case 2: // "Twin Reverb"
228 gx_tonestacks::tonestack_twin::compute(count, output0, output0);
229 break;
230 case 3: // "Princeton"
231 gx_tonestacks::tonestack_princeton::compute(count, output0, output0);
232 break;
233 case 4: // "JCM-800"
234 gx_tonestacks::tonestack_jcm800::compute(count, output0, output0);
235 break;
236 case 5: // "JCM-2000"
237 gx_tonestacks::tonestack_jcm2000::compute(count, output0, output0);
238 break;
239 case 6: // "M-Lead"
240 gx_tonestacks::tonestack_mlead::compute(count, output0, output0);
241 break;
242 case 7: // "M2199"
243 gx_tonestacks::tonestack_m2199::compute(count, output0, output0);
244 break;
245 case 8: // "AC-30"
246 gx_tonestacks::tonestack_ac30::compute(count, output0, output0);
247 break;
248 case 9: // "Mesa"
249 gx_tonestacks::tonestack_mesa::compute(count, output0, output0);
250 break;
251 case 10: // "Soldano"
252 gx_tonestacks::tonestack_soldano::compute(count, output0, output0);
253 break;
254 case 11: // "jtm45"
255 gx_tonestacks::tonestack_jtm45::compute(count, output0, output0);
256 break;
257 case 12: // "ac15"
258 gx_tonestacks::tonestack_ac15::compute(count, output0, output0);
259 break;
260 case 13: // "peavey"
261 gx_tonestacks::tonestack_peavey::compute(count, output0, output0);
262 break;
263 case 14: // "ibanez"
264 gx_tonestacks::tonestack_ibanez::compute(count, output0, output0);
265 break;
266 case 15: // "roland"
267 gx_tonestacks::tonestack_roland::compute(count, output0, output0);
268 break;
269 case 16: // "ampeg"
270 gx_tonestacks::tonestack_ampeg::compute(count, output0, output0);
271 break;
272 case 17: // "Off"
273 break;
274 }
275 }
276
277 inline void compensate_cab(int count, float *input0, float *output0) {
278 double fSlow0 = (0.0010000000000000009 * pow(10, (0.05 * (-audio.cab_level*2.0))));
279 static double fRec0[2] = {0, 0};
280 for (int i = 0; i < count; i++) {
281 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
282 output0[i] = (FAUSTFLOAT)(static_cast<double>(input0[i]) * fRec0[0]);
283 // post processing
284 fRec0[1] = fRec0[0];
285 }
286 }
287
288 void cab_conv_restart() {
289 cab_conv.stop();
290 gx_gui::cab_conv_restart();
291 }
292
39 #include "gx_faust_includes.cpp"
29340 /****************************************************************
29441 ** this is the process callback called from jack
29542 **
29643 ***************************************************************/
297 void compute_insert(int count, float* input1, float* output0, float* output1) {
298 // retrieve engine state
299 const GxEngineState estate = checky;
44
45 // the gx_head_amp client callback
46 void compute(int count, float* input, float* output0) {
47 // retrieve engine state
48 const GxEngineState estate = audio.checky;
30049
30150 // ------------ determine processing type
30251 uint16_t process_type = ZEROIZE_BUFFERS;
30352
304 if (gx_jack::NO_CONNECTION == 0) { // ports connected
53 if (gx_jack::gxjack.NO_CONNECTION == 0) { // ports connected
30554 switch (estate) {
30655 case kEngineOn:
30756 process_type = PROCESS_BUFFERS;
31665 }
31766 }
31867
68 // check midi state
69 if (audio.fmi && !isMidiOn()) turnOnMidi();
70 else if (!audio.fmi && isMidiOn()) turnOffMidi();
71
72 // clear oscilloscope buffer if osc is off
73 if (audio.fwv != audio.fwv_on) {
74 (void)memset(audio.result, 0, count*sizeof(float));
75 audio.fwv_on = audio.fwv;
76 }
77
78 // check for changes in the audio engine
79 if (audio.rack_change) {
80 audio.rack_change = gx_reorder_rack(NULL);
81 }
82
31983 // ------------ main processing routine
32084 switch (process_type) {
32185
86 //---------- run process
32287 case PROCESS_BUFFERS:
323 process_insert_buffers(count, input1, output0, output1);
324 break;
325
326 // --------- just copy input to outputs
88 process_buffers(count, input, output0);
89 break;
90
91 // --------- just copy input to outputs
32792 case JUSTCOPY_BUFFERS:
32893 if (conv.is_runnable()) {
32994 conv.checkstate();
33095 }
331 gx_effects::balance1::compute(count, input1, output0, output1);
332 (void)memcpy(get_frame, output0, sizeof(float)*count);
333 (void)memcpy(get_frame1, output1, sizeof(float)*count);
334 break;
335
336 // ------- zeroize buffers
96 // balance1::compute(count, input, output0);
97 (void)memcpy(output0, input, sizeof(float)*count);
98 break;
99
100 // ------- zeroize buffers
337101 case ZEROIZE_BUFFERS:
338102 default:
339103
340104 if (conv.is_runnable()) {
341105 conv.checkstate();
342106 }
107 if (audio.fwv) (void)memset(audio.result, 0, count*sizeof(float));
343108
344109 // no need of loop.
345
346110 (void)memset(output0, 0, count*sizeof(float));
347 (void)memset(output1, 0, count*sizeof(float));
348 break;
349 }
350 }
351
352 void compute(int count, float* input, float* output0) {
111 break;
112 }
113 }
114
115 // the gx_head_fx client callback
116 void compute_insert(int count, float* input1, float* output0, float* output1) {
353117 // retrieve engine state
354 const GxEngineState estate = checky;
118 const GxEngineState estate = audio.checky;
355119
356120 // ------------ determine processing type
357121 uint16_t process_type = ZEROIZE_BUFFERS;
358122
359 if (gx_jack::NO_CONNECTION == 0) { // ports connected
123 if (gx_jack::gxjack.NO_CONNECTION == 0) { // ports connected
360124 switch (estate) {
361125 case kEngineOn:
362126 process_type = PROCESS_BUFFERS;
370134 break;
371135 }
372136 }
373 if (audio.fmi && !isMidiOn()) turnOnMidi();
374 else if (!audio.fmi && isMidiOn()) turnOffMidi();
375
376 if (audio.fwv != audio.fwv_on) {
377 (void)memset(result, 0, count*sizeof(float));
378 audio.fwv_on = audio.fwv;
379 }
380137
381138 // ------------ main processing routine
382139 switch (process_type) {
383140
141 // --------- run process
384142 case PROCESS_BUFFERS:
385
386 process_buffers(count, input, output0);
387 break;
388
389 // --------- just copy input to outputs
143 process_insert_buffers(count, input1, output0, output1);
144 break;
145
146 // --------- just copy input to outputs
390147 case JUSTCOPY_BUFFERS:
391148 if (conv.is_runnable()) {
392149 conv.checkstate();
393150 }
394 // balance1::compute(count, input, output0);
395 (void)memcpy(output0, input, sizeof(float)*count);
396 break;
397
398
399 // ------- zeroize buffers
151
152 // mono to stereo splitter
153 gx_effects::balance1::compute(count, input1, output0, output1);
154
155 // copy buffer for the levelmeters
156 (void)memcpy(audio.get_frame, output0, sizeof(float)*count);
157 (void)memcpy(audio.get_frame1, output1, sizeof(float)*count);
158 break;
159
160 // ------- zeroize buffers
400161 case ZEROIZE_BUFFERS:
401162 default:
402163
403164 if (conv.is_runnable()) {
404165 conv.checkstate();
405166 }
406 if (audio.fwv) (void)memset(result, 0, count*sizeof(float));
167
407168 // no need of loop.
408
409169 (void)memset(output0, 0, count*sizeof(float));
410 break;
170 (void)memset(output1, 0, count*sizeof(float));
171 break;
411172 }
412173 }
413174
415176 ** this is the gx_head audio engine
416177 */
417178
418
179 // gx_head_amp engine
419180 void process_buffers(int count, float* input, float* output0) {
420181
421 int tuner_on = gx_gui::shownote + static_cast<int>(isMidiOn()) + 1;
422 if (tuner_on > 0) {
423 if (gx_gui::shownote == 0) {
424 gx_gui::shownote = -1;
425 } else {
426 pitch_tracker.add(count, input);
427 // moving_filter(input, checkfreq, count);
428 (void)memcpy(checkfreq, input, sizeof(float)*count);
429 }
430 }
431
182 // move working buffer to the output buffer
432183 memcpy(output0, input, count*sizeof(float));
433184
434 if (audio.fnoise_g) {
435 gx_effects::noisegate::ngate = noise_gate(count, output0, gx_effects::noisegate::ngate);
436 } else {
437 gx_effects::noisegate::ngate = 1;
438 }
439
440 if (audio.fng) {
441 gx_effects::noise_shaper::compute(count, output0, output0);
442 }
443
444 for (int m = 1; m < audio.mono_plug_counter; m++) {
445 if (audio.posit[0] == m && audio.fcheckbox5 && !audio.fautowah
446 && audio.effect_pre_post[1]) {
447 gx_effects::crybaby::compute(count, output0, output0);
448 } else if (audio.posit[0] == m && audio.fcheckbox5 && audio.fautowah
449 && audio.effect_pre_post[1]) {
450 gx_effects::autowah::compute(count, output0, output0);
451 } else if (audio.posit[5] == m && audio.fcheckboxcom1 && audio.effect_pre_post[0]) {
452 gx_effects::compressor::compute(count, output0, output0);
453 } else if (audio.posit[1] == m && audio.foverdrive4 && audio.effect_pre_post[2]) {
454 gx_effects::overdrive::compute(count, output0, output0);
455 } else if (audio.posit[2] == m && audio.fcheckbox4 && audio.effect_pre_post[3]) {
456 gx_effects::gx_distortion::compute(count, output0, output0);
457 } else if (audio.posit[3] == m && audio.fcheckbox6 && audio.effect_pre_post[4]) {
458 gx_effects::freeverb::compute(count, output0, output0);
459 } else if (audio.posit[6] == m && audio.fcheckbox7 && gx_effects::echo::is_inited()
460 && audio.effect_pre_post[6]) {
461 gx_effects::echo::compute(count, output0, output0);
462 } else if (audio.posit[4] == m && audio.fcheckbox8 && audio.effect_pre_post[5]) {
463 gx_effects::impulseresponse::compute(count, output0, output0);
464 } else if (audio.posit[7] == m && audio.fdelay && gx_effects::delay::is_inited()
465 && audio.effect_pre_post[7]) {
466 gx_effects::delay::compute(count, output0, output0);
467 } else if (audio.posit[10] == m && audio.feq && audio.effect_pre_post[8]) {
468 gx_effects::selecteq::compute(count, output0, output0);
469 } else if (audio.posit[14] == m && audio.flh && audio.effect_pre_post[9]) {
470 gx_effects::low_high_pass::compute(count, output0, output0);
471 } else if (audio.posit[17] == m && audio.fwv && audio.effect_pre_post[10]) {
472 (void)memcpy(result, output0, sizeof(float)*count);
473 } else if (audio.posit[18] == m && audio.fbiquad && audio.effect_pre_post[11]) {
474 gx_effects::biquad::compute(count, output0, output0);
475 } else if (audio.posit[21] == m && audio.ftremolo && audio.effect_pre_post[12]) {
476 gx_effects::tremolo::compute(count, output0, output0);
477 } else if (audio.posit[22] == m && audio.fpm && audio.effect_pre_post[13]) {
478 gx_effects::phaser_mono::compute(count, output0, output0);
479 } else if (audio.posit[23] == m && audio.fchorus_mono && audio.effect_pre_post[14]
480 && gx_effects::chorus_mono::is_inited()) {
481 gx_effects::chorus_mono::compute(count, output0, output0);
482 } else if (audio.posit[24] == m && audio.fflanger_mono && audio.effect_pre_post[15]) {
483 gx_effects::flanger_mono::compute(count, output0, output0);
484 } else if (audio.posit[25] == m && audio.ffeedback && audio.effect_pre_post[16]) {
485 gx_effects::gx_feedback::compute(count, output0, output0);
486 } else if (audio.posit[26] == m && audio.ftonestack && audio.effect_pre_post[17]) {
487 run_tonestack(count, output0);
488 } else if (audio.posit[27] == m && audio.fcab && audio.effect_pre_post[18]) {
489 compensate_cab(count, output0, output0);
490 if (!cab_conv.compute(count, output0))
491 std::cout << "overload" << endl;
492 // FIXME error message??
493 }
494 }
495
496 switch (audio.gxtube) {
497 case 0: // "never"
498 gx_amps::gxamp::compute(count, output0, output0);
499 break;
500 case 1: // "default"
501 gx_amps::gxamp::compute(count, output0, output0);
502 break;
503 case 2:
504 gx_amps::gxamp3::compute(count, output0, output0);
505 break;
506 case 3:
507 gx_amps::gxamp2::compute(count, output0, output0);
508 break;
509 case 4:
510 gx_amps::gxamp4::compute(count, output0, output0);
511 break;
512 case 5:
513 gx_amps::gxamp5::compute(count, output0, output0);
514 break;
515 case 6:
516 gx_amps::gxamp10::compute(count, output0, output0);
517 break;
518 case 7:
519 gx_amps::gxamp12::compute(count, output0, output0);
520 break;
521 case 8:
522 gx_amps::gxamp6::compute(count, output0, output0);
523 break;
524 case 9:
525 gx_amps::gxamp7::compute(count, output0, output0);
526 break;
527 case 10:
528 gx_amps::gxamp8::compute(count, output0, output0);
529 break;
530 case 11:
531 gx_amps::gxamp9::compute(count, output0, output0);
532 break;
533 case 12:
534 gx_amps::gxamp11::compute(count, output0, output0);
535 break;
536 case 13:
537 gx_amps::gxamp13::compute(count, output0, output0);
538 break;
539 default:
540 gx_amps::gxamp::compute(count, output0, output0);
541 break;
542 }
543
544 if (audio.ftube) {
545 gx_effects::softclip::compute(count, output0, output0);
546 }
547
548 for (int m = 1; m < audio.mono_plug_counter; m++) {
549 if (audio.posit[0] == m && audio.fcheckbox5 && !audio.fautowah
550 && !audio.effect_pre_post[1]) {
551 gx_effects::crybaby::compute(count, output0, output0);
552 } else if (audio.posit[0] == m && audio.fcheckbox5 && audio.fautowah
553 && !audio.effect_pre_post[1]) {
554 gx_effects::autowah::compute(count, output0, output0);
555 } else if (audio.posit[5] == m && audio.fcheckboxcom1 && !audio.effect_pre_post[0]) {
556 gx_effects::compressor::compute(count, output0, output0);
557 } else if (audio.posit[1] == m && audio.foverdrive4 && !audio.effect_pre_post[2]) {
558 gx_effects::overdrive::compute(count, output0, output0);
559 } else if (audio.posit[2] == m && audio.fcheckbox4 && !audio.effect_pre_post[3]) {
560 gx_effects::gx_distortion::compute(count, output0, output0);
561 } else if (audio.posit[3] == m && audio.fcheckbox6 && !audio.effect_pre_post[4]) {
562 gx_effects::freeverb::compute(count, output0, output0);
563 } else if (audio.posit[6] == m && audio.fcheckbox7 && gx_effects::echo::is_inited()
564 && !audio.effect_pre_post[6]) {
565 gx_effects::echo::compute(count, output0, output0);
566 } else if (audio.posit[4] == m && audio.fcheckbox8 && !audio.effect_pre_post[5]) {
567 gx_effects::impulseresponse::compute(count, output0, output0);
568 } else if (audio.posit[7] == m && audio.fdelay && gx_effects::delay::is_inited()
569 && !audio.effect_pre_post[7]) {
570 gx_effects::delay::compute(count, output0, output0);
571 } else if (audio.posit[10] == m && audio.feq && !audio.effect_pre_post[8]) {
572 gx_effects::selecteq::compute(count, output0, output0);
573 } else if (audio.posit[14] == m && audio.flh && !audio.effect_pre_post[9]) {
574 gx_effects::low_high_pass::compute(count, output0, output0);
575 } else if (audio.posit[17] == m && audio.fwv && !audio.effect_pre_post[10]) {
576 (void)memcpy(result, output0, sizeof(float)*count);
577 } else if (audio.posit[18] == m && audio.fbiquad && !audio.effect_pre_post[11]) {
578 gx_effects::biquad::compute(count, output0, output0);
579 } else if (audio.posit[21] == m && audio.ftremolo && !audio.effect_pre_post[12]) {
580 gx_effects::tremolo::compute(count, output0, output0);
581 } else if (audio.posit[22] == m && audio.fpm && !audio.effect_pre_post[13]) {
582 gx_effects::phaser_mono::compute(count, output0, output0);
583 } else if (audio.posit[23] == m && audio.fchorus_mono && !audio.effect_pre_post[14]
584 && gx_effects::chorus_mono::is_inited()) {
585 gx_effects::chorus_mono::compute(count, output0, output0);
586 } else if (audio.posit[24] == m && audio.fflanger_mono && !audio.effect_pre_post[15]) {
587 gx_effects::flanger_mono::compute(count, output0, output0);
588 } else if (audio.posit[25] == m && audio.ffeedback && !audio.effect_pre_post[16]) {
589 gx_effects::gx_feedback::compute(count, output0, output0);
590 } else if (audio.posit[26] == m && audio.ftonestack && !audio.effect_pre_post[17]) {
591 run_tonestack(count, output0);
592 } else if (audio.posit[27] == m && audio.fcab && !audio.effect_pre_post[18]) {
593 compensate_cab(count, output0 , output0);
594 if (!cab_conv.compute(count, output0))
595 std::cout << "overload" << endl;
596 // FIXME error message??
597 }
598 }
599
600 if (audio.fboost) {
601 gx_effects::bassbooster::compute(count, output0, output0);
602 }
603
604 if (audio.fampout) {
605 gx_effects::gx_ampout::compute(count, output0, output0);
606 }
607
608 if (audio.fnoise_g) {
609 gx_effects::noisegate::compute(count, output0, output0);
610 }
611
612 if (audio.fcon) {
613 if (!contrast_conv.compute(count, output0))
614 std::cout << "overload contrast" << endl;
615 // FIXME error message??
616 }
617 }
618
185 // run mono rack
186 for (int m = 1; m < audio.mono_active_counter+1; m++) {
187 _modulpointer->mono_rack_order_ptr[m](count, output0, output0);
188 }
189 }
190
191 // gx_head_fx engine
619192 void process_insert_buffers(int count, float* input1, float* output0, float* output1) {
620193
194 // move working buffer to the output buffer
621195 memcpy(output0, input1, count*sizeof(float));
622 gx_effects::gxfeed::compute(count, output0, output0, output1);
623
624 for (int m = 1; m < audio.stereo_plug_counter; m++) {
625 if (audio.posit[8] == m && audio.fchorus && gx_effects::chorus::is_inited()) {
626 gx_effects::chorus::compute(count, output0, output1, output0, output1);
627 } else if (audio.posit[9] == m && audio.fflanger) {
628 gx_effects::flanger::compute(count, output0, output1, output0, output1);
629 } else if (audio.posit[11] == m && audio.fmoog) {
630 gx_effects::moog::compute(count, output0, output1, output0, output1);
631 } else if (audio.posit[12] == m && audio.fphaser) {
632 gx_effects::phaser::compute(count, output0, output1, output0, output1);
633 } else if (audio.posit[15] == m && audio.fsd && gx_effects::stereodelay::is_inited()) {
634 gx_effects::stereodelay::compute(count, output0, output1, output0, output1);
635 } else if (audio.posit[16] == m && audio.fse && gx_effects::stereoecho::is_inited()) {
636 gx_effects::stereoecho::compute(count, output0, output1, output0, output1);
637 } else if (audio.posit[19] == m && audio.famp) {
638 gx_amps::gx_ampmodul::compute(count, output0, output1, output0, output1);
639 } else if (audio.posit[20] == m && audio.ftone) {
640 gx_effects::tonecontroll::compute(count, output0, output1, output0, output1);
641 }
642 }
643
644 if (conv.is_runnable()) {
645 // reuse oversampling buffer
646 float *conv_out0 = oversample;
647 float *conv_out1 = oversample+count;
648 if (!conv.compute(count, output0, output1, conv_out0, conv_out1)) {
649 gx_jconv::GxJConvSettings::checkbutton7 = 0;
650 std::cout << "overload" << endl;
651 // FIXME error message??
652 } else {
653 gx_effects::jconv_post::compute(count, output0, output1, conv_out0, conv_out1,
654 output0, output1);
655 }
656 }
657 gx_effects::gx_outputlevel::compute(count, output0, output1, output0, output1);
658 (void)memcpy(get_frame, output0, sizeof(float)*count);
659 (void)memcpy(get_frame1, output1, sizeof(float)*count);
660 }
661
196
197 // run stereo rack
198 for (int m = 1; m < audio.stereo_active_counter+1; m++) {
199 _modulpointer->stereo_rack_order_ptr[m](count, output0, output1, output0, output1);
200 }
201
202 // copy output buffer to the level meter
203 (void)memcpy(audio.get_frame, output0, sizeof(float)*count);
204 (void)memcpy(audio.get_frame1, output1, sizeof(float)*count);
205 }
662206 } // namespace gx_engine
663207
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * --------------------------------------------------------------------------
18 *
19 *
20 * This is part of the Guitarix Audio Engine
21 *
22 *
23 *
24 * --------------------------------------------------------------------------
25 */
26
27
28 /****************************************************************
29 ** engine function pointers
30 */
31
32 // empty mono pointer
33 inline void just_return(int count, float *input0, float *output0) {
34 return;
35 }
36
37 // empty stereo pointer
38 inline void just2_return(int count, float *input0, float *input1, float *output0, float *output1) {
39 return;
40 }
41
42
43 ModulPointer *_modulpointer = 0;
44
45 /****************************************************************
46 ** set the function pointer to the selected tonestack and tube/amp
47 */
48
49 // seletc tonestack, only run when tonestack selection have changed
50 static int gx_check_tonestack_state(gpointer) {
51
52 switch (audio.tonestack) {
53 case 0: // "default"
54 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_default::compute;
55 break;
56 case 1: // "Bassman"
57 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_bassman::compute;
58 break;
59 case 2: // "Twin Reverb"
60 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_twin::compute;
61 break;
62 case 3: // "Princeton"
63 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_princeton::compute;
64 break;
65 case 4: // "JCM-800"
66 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_jcm800::compute;
67 break;
68 case 5: // "JCM-2000"
69 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_jcm2000::compute;
70 break;
71 case 6: // "M-Lead"
72 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_mlead::compute;
73 break;
74 case 7: // "M2199"
75 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_m2199::compute;
76 break;
77 case 8: // "AC-30"
78 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_ac30::compute;
79 break;
80 case 9: // "Mesa"
81 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_mesa::compute;
82 break;
83 case 10: // "Soldano"
84 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_soldano::compute;
85 break;
86 case 11: // "jtm45"
87 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_jtm45::compute;
88 break;
89 case 12: // "ac15"
90 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_ac15::compute;
91 break;
92 case 13: // "peavey"
93 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_peavey::compute;
94 break;
95 case 14: // "ibanez"
96 _modulpointer->tonestack_ptr = gx_tonestacks::tonestack_ibanez::compute;
97 break;
98 case 15: // "roland"
99 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_roland::compute;
100 break;
101 case 16: // "ampeg"
102 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_ampeg::compute;
103 break;
104 case 17: // "ampeg rev"
105 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_ampeg_rev::compute;
106 break;
107 case 18: // "sovtek"
108 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_sovtek::compute;
109 break;
110 case 19: // "bogner"
111 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_bogner::compute;
112 break;
113 case 20: // "groove"
114 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_groove::compute;
115 break;
116 case 21: // "crunch"
117 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_crunch::compute;
118 break;
119 case 22: // "fender_blues"
120 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_fender_blues::compute;
121 break;
122 case 23: // "fender_default"
123 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_fender_default::compute;
124 break;
125 case 24: // "fender_deville"
126 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_fender_deville::compute;
127 break;
128 case 25: // "gibsen"
129 _modulpointer->tonestack_ptr = &gx_tonestacks::tonestack_gibsen::compute;
130 break;
131 case 26: // "Off"
132 _modulpointer->tonestack_ptr = &just_return;
133 break;
134 }
135 audio.cur_tonestack = audio.tonestack;
136 return false;
137 }
138
139 // select amp, only run when tube/amp selection have changed
140 static gboolean gx_check_engine_state(gpointer) {
141
142 switch (audio.gxtube) {
143 case 0: // "never"
144 _modulpointer->amp_ptr = &gx_amps::gxamp::compute;
145 break;
146 case 1: // "default"
147 _modulpointer->amp_ptr = &gx_amps::gxamp::compute;
148 break;
149 case 2:
150 _modulpointer->amp_ptr = &gx_amps::gxamp3::compute;
151 break;
152 case 3:
153 _modulpointer->amp_ptr = &gx_amps::gxamp2::compute;
154 break;
155 case 4:
156 _modulpointer->amp_ptr = &gx_amps::gxamp4::compute;
157 break;
158 case 5:
159 _modulpointer->amp_ptr = &gx_amps::gxamp5::compute;
160 break;
161 case 6:
162 _modulpointer->amp_ptr = &gx_amps::gxamp10::compute;
163 break;
164 case 7:
165 _modulpointer->amp_ptr = &gx_amps::gxamp12::compute;
166 break;
167 case 8:
168 _modulpointer->amp_ptr = &gx_amps::gxamp6::compute;
169 break;
170 case 9:
171 _modulpointer->amp_ptr = &gx_amps::gxamp7::compute;
172 break;
173 case 10:
174 _modulpointer->amp_ptr = &gx_amps::gxamp8::compute;
175 break;
176 case 11:
177 _modulpointer->amp_ptr = &gx_amps::gxamp9::compute;
178 break;
179 case 12:
180 _modulpointer->amp_ptr = &gx_amps::gxamp11::compute;
181 break;
182 case 13:
183 _modulpointer->amp_ptr = &gx_amps::gxamp13::compute;
184 break;
185 case 14:
186 _modulpointer->amp_ptr = &gx_amps::gxamp14::compute;
187 break;
188 case 15:
189 _modulpointer->amp_ptr = &gx_amps::gxamp15::compute;
190 break;
191 case 16:
192 _modulpointer->amp_ptr = &gx_amps::gxamp16::compute;
193 break;
194 case 17:
195 _modulpointer->amp_ptr = &gx_amps::gxamp17::compute;
196 break;
197 default:
198 _modulpointer->amp_ptr = &gx_amps::gxamp::compute;
199 break;
200 }
201 return audio.gxtube;
202 }
203
204 /****************************************************************
205 ** engine functions and wrapers
206 */
207
208 // reduce gain to compensate the increased gain by the cabinet
209 inline void compensate_cab(int count, float *input0, float *output0) {
210 double fSlow0 = (0.0010000000000000009 * pow(10, (0.05 * (-audio.cab_level*2.0))));
211 static double fRec0[2] = {0, 0};
212 for (int i = 0; i < count; i++) {
213 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
214 output0[i] = (FAUSTFLOAT)(static_cast<double>(input0[i]) * fRec0[0]);
215 // post processing
216 fRec0[1] = fRec0[0];
217 }
218 }
219
220 // reduce gain to compensate the increased gain by the cabinet
221 inline void compensate_con(int count, float *input0, float *output0) {
222 double fSlow0 = (0.0010000000000000009 * pow(10, (0.05 * (-audio.con_level*2.0))));
223 static double fRec0[2] = {0, 0};
224 for (int i = 0; i < count; i++) {
225 fRec0[0] = (fSlow0 + (0.999 * fRec0[1]));
226 output0[i] = (FAUSTFLOAT)(static_cast<double>(input0[i]) * fRec0[0]);
227 // post processing
228 fRec0[1] = fRec0[0];
229 }
230 }
231
232 inline void run_tuner(int count, float *input0, float *output0) {
233 if (gx_gui::guivar.shownote == 0) {
234 gx_gui::guivar.shownote = -1;
235 } else {
236 // run tuner
237 pitch_tracker.add(count, input0);
238 // copy buffer to midi thread
239 (void)memcpy(audio.checkfreq, input0, sizeof(float)*count);
240 }
241 }
242
243 // calculate noisgate level
244 inline float noise_gate(int sf, float* input, float ngate) {
245 float sumnoise = 0;
246 for (int i = 0; i < sf; i++) {
247 sumnoise += sqrf(fabs(input[i]));
248 }
249 float noisepulse = sqrtf(sumnoise/sf);
250 if (noisepulse > audio.fnglevel * 0.01) {
251 return 1; // -75db 0.001 = 65db
252 } else if (ngate > 0.01) {
253 return ngate * 0.996;
254 } else {
255 return ngate;
256 }
257 }
258
259 static void convolver(int count, float *input0, float *input1, float *output0, float *output1) {
260 if (conv.is_runnable()) {
261 // reuse oversampling buffer
262 float *conv_out0 = audio.oversample;
263 float *conv_out1 = audio.oversample+count;
264 if (!conv.compute(count, output0, output1, conv_out0, conv_out1)) {
265 gx_jconv::GxJConvSettings::checkbutton7 = 0;
266 cout << "overload" << endl;
267 //FIXME error message??
268 } else {
269 gx_effects::jconv_post::compute(count, output0, output1, conv_out0, conv_out1, output0, output1);
270 }
271 }
272 }
273
274 // wraper for the rack order function pointers
275 static void set_osc_buffer(int count, float *input0, float *output0) {
276 (void)memcpy(audio.result, output0, sizeof(float)*count);
277 }
278
279 // wraper for the rack order function pointers
280 inline void run_cab_conf(int count, float *input0, float *output0) {
281 compensate_cab(count, output0, output0);
282 if (!cab_conv.compute(count, output0))
283 std::cout << "overload" << endl;
284 }
285
286 // wraper for the presence function
287 inline void run_contrast(int count, float *input0, float *output0) {
288 compensate_con(count, output0, output0);
289 if (!contrast_conv.compute(count, output0))
290 std::cout << "overload contrast" << endl;
291 // FIXME error message??
292 }
293
294 // wraper for the noisgate function
295 static void set_noisegate_level(int count, float *input0, float *output0) {
296 gx_effects::noisegate::ngate = noise_gate(count, output0, gx_effects::noisegate::ngate);
297 }
298
299 // wraper for the mono2stereo function
300 static void run_gxfeed(int count, float *input0, float *input1, float *output0, float *output1) {
301 gx_effects::gxfeed::compute(count, output0, output0, output1);
302 }
303
304 /****************************************************************
305 ** working thread to set the order in the all racks
306 */
307
308 static gboolean gx_reorder_rack(gpointer args) {
309
310 for (int m = 0; m < (audio.mono_plug_counter*2) + 10; m++) {
311 _modulpointer->mono_rack_order_ptr[m] = &just_return;
312 }
313
314 for (int m = 0; m < audio.stereo_plug_counter + 4; m++) {
315 _modulpointer->stereo_rack_order_ptr[m] = &just2_return;
316 }
317
318 for (int i = 0; i < 9; i++) audio.effect_buffer[i] = 0;
319
320 // set active plugins counters to sero
321 audio.mono_active_counter = 0;
322 audio.stereo_active_counter = 0;
323
324 // check if amp is changed
325 if (audio.tube_changed) {
326 audio.tube_changed = gx_check_engine_state(NULL);
327 }
328
329 // check if tonestack is changed
330 if (audio.cur_tonestack != audio.tonestack) {
331 audio.cur_tonestack = gx_check_tonestack_state(NULL);
332 }
333
334 // check if tuner is visible or midi is on
335 int tuner_on = gx_gui::guivar.shownote + static_cast<int>(isMidiOn()) + 1;
336
337 if (tuner_on > 0) {
338 audio.mono_active_counter += 1;
339 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &run_tuner;
340 }
341
342 // set noisgate var
343 if (audio.fnoise_g) {
344 audio.mono_active_counter += 1;
345 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &set_noisegate_level;
346 } else {
347 gx_effects::noisegate::ngate = 1;
348 }
349
350 // run noisesharper
351 if (audio.fng) {
352 audio.mono_active_counter += 1;
353 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
354 &gx_effects::noise_shaper::compute;
355 }
356
357 // set order and activate pointer for the pre mono rack
358 for (int m = 1; m < audio.mono_plug_counter; m++) {
359 if (audio.posit[0] == m && audio.fcheckbox5 && !audio.fautowah
360 && audio.effect_pre_post[1]) {
361 audio.mono_active_counter += 1;
362 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
363 &gx_effects::crybaby::compute;
364 } else if (audio.posit[0] == m && audio.fcheckbox5 && audio.fautowah
365 && audio.effect_pre_post[1]) {
366 audio.mono_active_counter += 1;
367 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
368 &gx_effects::autowah::compute;
369 } else if (audio.posit[5] == m && audio.fcheckboxcom1 && audio.effect_pre_post[0]) {
370 audio.mono_active_counter += 1;
371 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
372 &gx_effects::compressor::compute;
373 } else if (audio.posit[1] == m && audio.foverdrive4 && audio.effect_pre_post[2]) {
374 audio.mono_active_counter += 1;
375 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
376 &gx_effects::overdrive::compute;
377 } else if (audio.posit[2] == m && audio.fcheckbox4 && audio.effect_pre_post[3]) {
378 audio.mono_active_counter += 1;
379 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
380 &gx_effects::gx_distortion::compute;
381 } else if (audio.posit[3] == m && audio.fcheckbox6 && audio.effect_pre_post[4]) {
382 audio.mono_active_counter += 1;
383 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
384 &gx_effects::freeverb::compute;
385 } else if (audio.posit[6] == m && audio.fcheckbox7 && gx_effects::echo::is_inited()
386 && audio.effect_pre_post[6]) {
387 audio.mono_active_counter += 1;
388 audio.effect_buffer[0] = audio.mono_active_counter;
389 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
390 &gx_effects::echo::compute;
391 } else if (audio.posit[4] == m && audio.fcheckbox8 && audio.effect_pre_post[5]) {
392 audio.mono_active_counter += 1;
393 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
394 &gx_effects::impulseresponse::compute;
395 } else if (audio.posit[7] == m && audio.fdelay && gx_effects::delay::is_inited()
396 && audio.effect_pre_post[7]) {
397 audio.mono_active_counter += 1;
398 audio.effect_buffer[1] = audio.mono_active_counter;
399 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
400 &gx_effects::delay::compute;
401 } else if (audio.posit[10] == m && audio.feq && audio.effect_pre_post[8]) {
402 audio.mono_active_counter += 1;
403 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
404 &gx_effects::selecteq::compute;
405 } else if (audio.posit[14] == m && audio.flh && audio.effect_pre_post[9]) {
406 audio.mono_active_counter += 1;
407 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
408 &gx_effects::low_high_pass::compute;
409 } else if (audio.posit[17] == m && audio.fwv && audio.effect_pre_post[10]) {
410 audio.mono_active_counter += 1;
411 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &set_osc_buffer;
412 } else if (audio.posit[18] == m && audio.fbiquad && audio.effect_pre_post[11]) {
413 audio.mono_active_counter += 1;
414 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
415 &gx_effects::biquad::compute;
416 } else if (audio.posit[21] == m && audio.ftremolo && audio.effect_pre_post[12]) {
417 audio.mono_active_counter += 1;
418 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
419 &gx_effects::tremolo::compute;
420 } else if (audio.posit[22] == m && audio.fpm && audio.effect_pre_post[13]) {
421 audio.mono_active_counter += 1;
422 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
423 &gx_effects::phaser_mono::compute;
424 } else if (audio.posit[23] == m && audio.fchorus_mono && audio.effect_pre_post[14]
425 && gx_effects::chorus_mono::is_inited()) {
426 audio.mono_active_counter += 1;
427 audio.effect_buffer[2] = audio.mono_active_counter;
428 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
429 &gx_effects::chorus_mono::compute;
430 } else if (audio.posit[24] == m && audio.fflanger_mono && audio.effect_pre_post[15]) {
431 audio.mono_active_counter += 1;
432 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
433 &gx_effects::flanger_mono::compute;
434 } else if (audio.posit[25] == m && audio.ffeedback && audio.effect_pre_post[16]) {
435 audio.mono_active_counter += 1;
436 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
437 &gx_effects::gx_feedback::compute;
438 } else if (audio.posit[26] == m && audio.ftonestack && audio.effect_pre_post[17]) {
439 audio.mono_active_counter += 1;
440 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = _modulpointer->tonestack_ptr;
441 } else if (audio.posit[27] == m && audio.fcab && audio.effect_pre_post[18]) {
442 audio.mono_active_counter += 1;
443 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &run_cab_conf;
444 }
445 }
446
447 audio.mono_active_counter += 1;
448 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = _modulpointer->amp_ptr;
449
450 // clipper
451 if (audio.ftube) {
452 audio.mono_active_counter += 1;
453 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
454 &gx_effects::softclip::compute;
455 }
456
457 // set order and activate pointer for the post mono rack
458 for (int m = 1; m < audio.mono_plug_counter; m++) {
459 if (audio.posit[0] == m && audio.fcheckbox5 && !audio.fautowah
460 && !audio.effect_pre_post[1]) {
461 audio.mono_active_counter += 1;
462 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
463 &gx_effects::crybaby::compute;
464 } else if (audio.posit[0] == m && audio.fcheckbox5 && audio.fautowah
465 && !audio.effect_pre_post[1]) {
466 audio.mono_active_counter += 1;
467 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
468 &gx_effects::autowah::compute;
469 } else if (audio.posit[5] == m && audio.fcheckboxcom1 && !audio.effect_pre_post[0]) {
470 audio.mono_active_counter += 1;
471 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
472 &gx_effects::compressor::compute;
473 } else if (audio.posit[1] == m && audio.foverdrive4 && !audio.effect_pre_post[2]) {
474 audio.mono_active_counter += 1;
475 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
476 &gx_effects::overdrive::compute;
477 } else if (audio.posit[2] == m && audio.fcheckbox4 && !audio.effect_pre_post[3]) {
478 audio.mono_active_counter += 1;
479 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
480 &gx_effects::gx_distortion::compute;
481 } else if (audio.posit[3] == m && audio.fcheckbox6 && !audio.effect_pre_post[4]) {
482 audio.mono_active_counter += 1;
483 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
484 &gx_effects::freeverb::compute;
485 } else if (audio.posit[6] == m && audio.fcheckbox7 && gx_effects::echo::is_inited()
486 && !audio.effect_pre_post[6]) {
487 audio.mono_active_counter += 1;
488 audio.effect_buffer[3] = audio.mono_active_counter;
489 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
490 &gx_effects::echo::compute;
491 } else if (audio.posit[4] == m && audio.fcheckbox8 && !audio.effect_pre_post[5]) {
492 audio.mono_active_counter += 1;
493 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
494 &gx_effects::impulseresponse::compute;
495 } else if (audio.posit[7] == m && audio.fdelay && gx_effects::delay::is_inited()
496 && !audio.effect_pre_post[7]) {
497 audio.mono_active_counter += 1;
498 audio.effect_buffer[4] = audio.mono_active_counter;
499 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
500 &gx_effects::delay::compute;
501 } else if (audio.posit[10] == m && audio.feq && !audio.effect_pre_post[8]) {
502 audio.mono_active_counter += 1;
503 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
504 &gx_effects::selecteq::compute;
505 } else if (audio.posit[14] == m && audio.flh && !audio.effect_pre_post[9]) {
506 audio.mono_active_counter += 1;
507 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
508 &gx_effects::low_high_pass::compute;
509 } else if (audio.posit[17] == m && audio.fwv && !audio.effect_pre_post[10]) {
510 audio.mono_active_counter += 1;
511 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &set_osc_buffer;
512 } else if (audio.posit[18] == m && audio.fbiquad && !audio.effect_pre_post[11]) {
513 audio.mono_active_counter += 1;
514 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
515 &gx_effects::biquad::compute;
516 } else if (audio.posit[21] == m && audio.ftremolo && !audio.effect_pre_post[12]) {
517 audio.mono_active_counter += 1;
518 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
519 &gx_effects::tremolo::compute;
520 } else if (audio.posit[22] == m && audio.fpm && !audio.effect_pre_post[13]) {
521 audio.mono_active_counter += 1;
522 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
523 &gx_effects::phaser_mono::compute;
524 } else if (audio.posit[23] == m && audio.fchorus_mono && !audio.effect_pre_post[14]
525 && gx_effects::chorus_mono::is_inited()) {
526 audio.mono_active_counter += 1;
527 audio.effect_buffer[5] = audio.mono_active_counter;
528 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
529 &gx_effects::chorus_mono::compute;
530 } else if (audio.posit[24] == m && audio.fflanger_mono && !audio.effect_pre_post[15]) {
531 audio.mono_active_counter += 1;
532 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
533 &gx_effects::flanger_mono::compute;
534 } else if (audio.posit[25] == m && audio.ffeedback && !audio.effect_pre_post[16]) {
535 audio.mono_active_counter += 1;
536 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
537 &gx_effects::gx_feedback::compute;
538 } else if (audio.posit[26] == m && audio.ftonestack && !audio.effect_pre_post[17]) {
539 audio.mono_active_counter += 1;
540 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = _modulpointer->tonestack_ptr;
541 } else if (audio.posit[27] == m && audio.fcab && !audio.effect_pre_post[18]) {
542 audio.mono_active_counter += 1;
543 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &run_cab_conf;
544 }
545 }
546
547 // bass boster
548 if (audio.fboost) {
549 audio.mono_active_counter += 1;
550 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
551 &gx_effects::bassbooster::compute;
552 }
553
554 // mono output level
555 if (audio.fampout) {
556 audio.mono_active_counter += 1;
557 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
558 &gx_effects::gx_ampout::compute;
559 }
560
561 // run noisegate
562 if (audio.fnoise_g) {
563 audio.mono_active_counter += 1;
564 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] =
565 &gx_effects::noisegate::compute;
566 }
567
568 // presence
569 if (audio.fcon) {
570 audio.mono_active_counter += 1;
571 _modulpointer->mono_rack_order_ptr[audio.mono_active_counter] = &run_contrast;
572 }
573
574 // split mono input to stereo source
575 audio.stereo_active_counter += 1;
576 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] = &run_gxfeed;
577
578 // set order and activate pointer for the stereo rack
579 for (int m = 1; m < audio.stereo_plug_counter; m++) {
580 if (audio.posit[8] == m && audio.fchorus && gx_effects::chorus::is_inited()) {
581 audio.stereo_active_counter += 1;
582 audio.effect_buffer[6] = audio.stereo_active_counter;
583 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
584 &gx_effects::chorus::compute;
585 } else if (audio.posit[9] == m && audio.fflanger) {
586 audio.stereo_active_counter += 1;
587 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
588 &gx_effects::flanger::compute;
589 } else if (audio.posit[11] == m && audio.fmoog) {
590 audio.stereo_active_counter += 1;
591 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
592 &gx_effects::moog::compute;
593 } else if (audio.posit[12] == m && audio.fphaser) {
594 audio.stereo_active_counter += 1;
595 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
596 &gx_effects::phaser::compute;
597 } else if (audio.posit[15] == m && audio.fsd && gx_effects::stereodelay::is_inited()) {
598 audio.stereo_active_counter += 1;
599 audio.effect_buffer[7] = audio.stereo_active_counter;
600 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
601 &gx_effects::stereodelay::compute;
602 } else if (audio.posit[16] == m && audio.fse && gx_effects::stereoecho::is_inited()) {
603 audio.stereo_active_counter += 1;
604 audio.effect_buffer[8] = audio.stereo_active_counter;
605 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
606 &gx_effects::stereoecho::compute;
607 } else if (audio.posit[19] == m && audio.famp) {
608 audio.stereo_active_counter += 1;
609 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
610 &gx_amps::gx_ampmodul::compute;
611 } else if (audio.posit[20] == m && audio.ftone) {
612 audio.stereo_active_counter += 1;
613 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] =
614 &gx_effects::tonecontroll::compute;
615 }
616 }
617 if (conv.is_runnable()) {
618 audio.stereo_active_counter += 1;
619 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] = &convolver;
620 }
621
622 audio.stereo_active_counter += 1;
623 _modulpointer->stereo_rack_order_ptr[audio.stereo_active_counter] = &gx_effects::gx_outputlevel::compute;
624
625 //audio.rack_change = false;
626 return false;
627 }
628
108108 for (i = 0; i < event_count; i++) {
109109 jack_midi_event_get(&in_event, midi_input_port_buf, i);
110110 if ((in_event.buffer[0] & 0xf0) == 0xc0) { // program change on any midi channel
111 g_atomic_int_set(&gx_gui::program_change, in_event.buffer[1]);
112 sem_post(&gx_gui::program_change_sem);
111 g_atomic_int_set(&gx_gui::guivar.program_change, in_event.buffer[1]);
112 sem_post(&gx_gui::guivar.program_change_sem);
113113 } else if ((in_event.buffer[0] & 0xf0) == 0xb0) { // controller
114114 gx_gui::controller_map.set(in_event.buffer[1], in_event.buffer[2]);
115115 }
119119 void compute_midi(int len) {
120120
121121 // retrieve engine state
122 const GxEngineState estate = checky;
122 const GxEngineState estate = audio.checky;
123123
124124 // ------------ determine processing type
125125 uint16_t process_type = ZEROIZE_BUFFERS;
126126
127 if (gx_jack::NO_CONNECTION == 0) { // ports connected
127 if (gx_jack::gxjack.NO_CONNECTION == 0) { // ports connected
128128 switch (estate) {
129129 case kEngineOn:
130130 process_type = PROCESS_BUFFERS;
169169 float rms = 0.;
170170 float midi_db = 0.;
171171 float sum = 0.;
172 float *audiodata = checkfreq;
172 float *audiodata = audio.checkfreq;
173173
174174 int preNote = 0;
175175 int iTemps31 = static_cast<int>(midi.fslider31);
201201
202202 /**fConsta4 is the frequence value from the actuell frame, here we
203203 calculate the Note from the freq by log2(freq/440)*12
204 the result is the Note (as float) related to the note "A"
204 the audio.result is the Note (as float) related to the note "A"
205205
206206 preNote contains the next posible Note, related by round float to int.
207207 piwe contain the pitchweel value witch show the diff
264264 if (midi.program != iTemps31) {
265265 midi.program = iTemps31;
266266 audio.midistat += 1.0f;
267 midi.midi_send = jack_midi_event_reserve(gx_jack::midi_port_buf, i, 2);
267 midi.midi_send = jack_midi_event_reserve(gx_jack::gxjack.midi_port_buf, i, 2);
268268
269269 if (midi.midi_send) {
270270 // program value
285285 midi.volume = iTemps46;
286286 audio.midistat += 1.0f;
287287 midi.midi_send = jack_midi_event_reserve
288 (gx_jack::midi_port_buf, i, 3);
288 (gx_jack::gxjack.midi_port_buf, i, 3);
289289
290290 if (midi.midi_send) {
291291 // volume value
306306 // pitch wheel clear
307307 if (midi.fpitch == 1.0) {
308308 midi.midi_send = jack_midi_event_reserve
309 (gx_jack::midi_port_buf, i, 3);
309 (gx_jack::gxjack.midi_port_buf, i, 3);
310310 if (midi.midi_send) {
311311 // pitch value
312312 midi.midi_send[2] = 0x40;
317317 }
318318 }
319319 midi.midi_send = jack_midi_event_reserve
320 (gx_jack::midi_port_buf, i, 3);
320 (gx_jack::gxjack.midi_port_buf, i, 3);
321321 if (midi.midi_send) {
322322 // velocity
323323 midi.midi_send[2] = static_cast<int>(iTemps26);
332332 if (piwe < 0) piwe = 0;
333333 if (fConsta2 > 0x3fff) piwe = 0x3fff;
334334 midi.midi_send = jack_midi_event_reserve
335 (gx_jack::midi_port_buf, i, 3);
335 (gx_jack::gxjack.midi_port_buf, i, 3);
336336
337337 if (midi.midi_send) {
338338 // pitch
352352 midi.program1 = iTemps36;
353353 audio.midistat += 1.0f;
354354 midi.midi_send1 = jack_midi_event_reserve
355 (gx_jack::midi_port_buf, i, 2);
355 (gx_jack::gxjack.midi_port_buf, i, 2);
356356
357357 if (midi.midi_send1) {
358358 // program value
375375 midi.volume1 = iTemps47;
376376 audio.midistat += 1.0f;
377377 midi.midi_send1 = jack_midi_event_reserve
378 (gx_jack::midi_port_buf, i, 3);
378 (gx_jack::gxjack.midi_port_buf, i, 3);
379379 if (midi.midi_send1) {
380380 // volume value
381381 midi.midi_send1[2] = static_cast<int>(iTemps47);
394394 // pitch wheel clear
395395 if (midi.fpitch1 == 1.0) {
396396 midi.midi_send1 = jack_midi_event_reserve
397 (gx_jack::midi_port_buf, i, 3);
397 (gx_jack::gxjack.midi_port_buf, i, 3);
398398 if (midi.midi_send1) {
399399 // pitch value
400400 midi.midi_send1[2] = 0x40;
404404 midi.midi_send1[0] = 0xE0 | static_cast<int>(iTemps35);
405405 }
406406 }
407 midi.midi_send1 = jack_midi_event_reserve(gx_jack::midi_port_buf, i, 3);
407 midi.midi_send1 = jack_midi_event_reserve(gx_jack::gxjack.midi_port_buf, i, 3);
408408
409409 if (midi.midi_send1) {
410410 // velocity
420420 if (piwe < 0) piwe = 0;
421421 if (fConsta2 > 0x3fff) piwe = 0x3fff;
422422 midi.midi_send1 = jack_midi_event_reserve
423 (gx_jack::midi_port_buf, i, 3);
423 (gx_jack::gxjack.midi_port_buf, i, 3);
424424
425425 if (midi.midi_send1) {
426426 // pitch
439439 if (midi.program2 != iTemps43) {
440440 midi.program2 = iTemps43;
441441 audio.midistat += 1.0f;
442 midi.midi_send2 = jack_midi_event_reserve(gx_jack::midi_port_buf, i, 2);
442 midi.midi_send2 = jack_midi_event_reserve(gx_jack::gxjack.midi_port_buf, i, 2);
443443
444444 if (midi.midi_send2) {
445445 // program value
461461 midi.volume2 = iTemps48;
462462 audio.midistat += 1.0f;
463463 midi.midi_send2 = jack_midi_event_reserve
464 (gx_jack::midi_port_buf, i, 3);
464 (gx_jack::gxjack.midi_port_buf, i, 3);
465465 if (midi.midi_send2) {
466466 // volume value
467467 midi.midi_send2[2] = static_cast<int>(iTemps48);
475475 // pitch wheel clear
476476 if (midi.fpitch2 == 1.0) {
477477 midi.midi_send2 = jack_midi_event_reserve
478 (gx_jack::midi_port_buf, i, 3);
478 (gx_jack::gxjack.midi_port_buf, i, 3);
479479 if (midi.midi_send2) {
480480 // pitch value
481481 midi.midi_send2[2] = 0x40;
493493
494494 if ((midi.noten2 >= 0)&&(midi.noten2 <= 127)) {
495495 midi.midi_send2 = jack_midi_event_reserve
496 (gx_jack::midi_port_buf, i, 3);
496 (gx_jack::gxjack.midi_port_buf, i, 3);
497497
498498 if (midi.midi_send2) {
499499 // velocity
509509 if (piwe < 0) piwe = 0;
510510 if (fConsta2 > 0x3fff) piwe = 0x3fff;
511511 midi.midi_send2 = jack_midi_event_reserve
512 (gx_jack::midi_port_buf, i, 3);
512 (gx_jack::gxjack.midi_port_buf, i, 3);
513513 if (midi.midi_send2) {
514514 // pitch
515515 midi.midi_send2[2] = (piwe >> 7) & 0x7f;
530530 midi.Beat_is = static_cast<int>(fTemps45);
531531 if (midi.weg < iTemps37a) { // 5.0
532532 audio.midistat += 1.0f;
533 midi.midi_send = jack_midi_event_reserve(gx_jack::midi_port_buf, i, 3);
533 midi.midi_send = jack_midi_event_reserve(gx_jack::gxjack.midi_port_buf, i, 3);
534534
535535 if (midi.midi_send) {
536536 // velocity
543543
544544 if (midi.fcheckbox10) {
545545 audio.midistat += 1.0f;
546 midi.midi_send1 = jack_midi_event_reserve(gx_jack::midi_port_buf, i, 3);
546 midi.midi_send1 = jack_midi_event_reserve(gx_jack::gxjack.midi_port_buf, i, 3);
547547
548548 if (midi.midi_send1) {
549549 // velocity
557557
558558 if (midi.fcheckbox11) {
559559 audio.midistat += 1.0f;
560 midi.midi_send2 = jack_midi_event_reserve(gx_jack::midi_port_buf, i, 3);
560 midi.midi_send2 = jack_midi_event_reserve(gx_jack::gxjack.midi_port_buf, i, 3);
561561
562562 if (midi.midi_send2) {
563563 // velocity
2929
3030 #include "12ax7.cc"
3131 #include "12AU7.cc"
32 #include "12AT7.cc"
3233 #include "6V6.cc"
3334 #include "6DJ8.cc"
34
3535 }
3636
+0
-359
src/gx_head/gx_faust_includes.cc less more
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * --------------------------------------------------------------------------
18 * --------------------------------------------------------------------------
19 */
20
21
22
23 /****************************************************************
24 ** definitions for code generated with faust / dsp2cc
25 */
26
27 typedef void (*inifunc)(int); // NOLINT
28
29 typedef struct {
30 inifunc func;
31 const char *name;
32 } inidef;
33
34
35 static list<inidef>& get_inilist() {
36 static list<inidef> inilist;
37 return inilist;
38 }
39
40 static list<gx_gui::Parameter*>& get_paramlist() {
41 static list<gx_gui::Parameter*> paramlist;
42 return paramlist;
43 }
44
45 void register_faust_parameters() {
46 list<gx_gui::Parameter*>& paramlist = get_paramlist();
47 for (list<gx_gui::Parameter*>::iterator i = paramlist.begin(); i != paramlist.end(); i++) {
48 gx_gui::parameter_map.insert(*i);
49 // fprintf(stderr, "%s \n",(*i)->id().c_str() );
50 }
51 paramlist.clear();
52 }
53
54 static gx_gui::Parameter *find_parameter(const char *id) {
55 list<gx_gui::Parameter*>& paramlist = get_paramlist();
56 for (list<gx_gui::Parameter*>::iterator i = paramlist.begin(); i != paramlist.end(); i++) {
57 if ((*i)->id() == id) {
58 return *i;
59 }
60 }
61 return 0;
62 }
63
64 static float& get_alias(const char *id) {
65 static float dummy;
66 gx_gui::Parameter *p = find_parameter(id);
67 if (!p) {
68 gx_system::gx_print_error("engine", string
69 ("can't define alias for unknown (or not yet defined) parameter id: ") + id);
70 return dummy;
71 } else {
72 return p->getFloat().value;
73 }
74 }
75
76 static void registerVar(const char* id, const char* name, const char* tp,
77 const char* tooltip, float* var, float val = 0,
78 float low = 0, float up = 0, float step = 0, bool exp = false) {
79 if (!name[0]) {
80 assert(strrchr(id, '.'));
81 name = strrchr(id, '.')+1;
82 }
83 gx_gui::Parameter *p = new gx_gui::FloatParameter(
84 id, name, gx_gui::Parameter::Continuous, true, *var, val, low, up, step, true, exp);
85 if (tooltip) {
86 p->set_desc(tooltip);
87 }
88 get_paramlist().push_back(p);
89 }
90
91 static void registerEnumVar(const char *id, const char* name, const char* tp,
92 const char* tooltip, const char** values, float *var, float val,
93 float low = 0, float up = 0, float step = 1, bool exp = false) {
94 if (!name[0]) {
95 assert(strrchr(id, '.'));
96 name = strrchr(id, '.')+1;
97 }
98 assert(low == 0.0 && step == 1.0);
99 gx_gui::FloatEnumParameter *p = new gx_gui::FloatEnumParameter(
100 id, name, values, true, *var,
101 static_cast<int>(round(val)), true, exp); // false == no_midi_var
102 assert(up == p->upper); // calculated by constructor
103 get_paramlist().push_back(p);
104 }
105
106 static inline void registerIntParam(const char*a, const char*b, int*c, int std = 0,
107 int lower = 0, int upper = 1, bool exp = false) {
108 get_paramlist().push_back(
109 new gx_gui::IntParameter(a , b, gx_gui::Parameter::Enum, true, *c, std,
110 lower, upper, true, exp));
111 }
112
113 static void registerInit(const char *name, inifunc f) {
114 inidef i;
115 i.func = f;
116 i.name = name;
117 // fprintf(stderr, "%s \n", i.name);
118 get_inilist().push_back(i);
119 }
120
121 static void jack_sync() {
122 while (sem_wait(&gx_jack::jack_sync_sem) == EINTR);
123 }
124
125 /****************************************************************
126 ** definitions for ffunction(float Ftube(int,float), "valve.h", "");
127 ** in gx_amp.dsp - gx_ampmodul.dsp
128 **/
129
130 inline float Ftube(int table, float Vgk) {
131 struct gx_tubes::tabled& tab = gx_tubes::tubetable[table];
132 float f = (Vgk - tab.low) * tab.istep;
133 int i = static_cast<int>(f);
134 if (i < 0)
135 return tab.data[0];
136 if (i >= TAB_SIZE-1)
137 return tab.data[TAB_SIZE-1];
138 f -= i;
139 return tab.data[i]*(1-f) + tab.data[i+1]*f;
140 }
141
142 inline float Ftube2(int table, float Vgk) {
143 struct gx_tubes::tabled& tab = gx_tubes::tubetable2[table];
144 float f = (Vgk - tab.low) * tab.istep;
145 int i = static_cast<int>(f);
146 if (i < 0)
147 return tab.data[0];
148 if (i >= TAB_SIZE-1)
149 return tab.data[TAB_SIZE-1];
150 f -= i;
151 return tab.data[i]*(1-f) + tab.data[i+1]*f;
152 }
153
154 inline float Ftube3(int table, float Vgk) {
155 struct gx_tubes::tabled& tab = gx_tubes::tubetable3[table];
156 float f = (Vgk - tab.low) * tab.istep;
157 int i = static_cast<int>(f);
158 if (i < 0)
159 return tab.data[0];
160 if (i >= TAB_SIZE-1)
161 return tab.data[TAB_SIZE-1];
162 f -= i;
163 return tab.data[i]*(1-f) + tab.data[i+1]*f;
164 }
165
166 inline float Ftube4(int table, float Vgk) {
167 struct gx_tubes::tabled& tab = gx_tubes::tubetable4[table];
168 float f = (Vgk - tab.low) * tab.istep;
169 int i = static_cast<int>(f);
170 if (i < 0)
171 return tab.data[0];
172 if (i >= TAB_SIZE-1)
173 return tab.data[TAB_SIZE-1];
174 f -= i;
175 return tab.data[i]*(1-f) + tab.data[i+1]*f;
176 }
177
178 /****************************************************************/
179
180 #define max(x, y) (((x) > (y)) ? (x) : (y))
181 #define min(x, y) (((x) < (y)) ? (x) : (y))
182
183 // FIXME (temporary)hack to support older compiler versions
184 inline float pow(float b, float e) {return ::powf(b, e);}
185 inline double pow(double b, double e) {return ::pow(b, e);}
186 inline double pow(double b, int e) {return ::pow(b, static_cast<double>(e));}
187 inline double pow(int b, double e) {return ::pow(static_cast<double>(b), e);}
188 inline double pow(double b, float e) {return ::pow(b, static_cast<double>(e));}
189 inline double pow(float b, double e) {return ::pow(static_cast<double>(b), e);}
190 inline float pow(float b, int e) {return ::powf(b, static_cast<float>(e));}
191 inline float pow(int b, float e) {return ::powf(static_cast<float>(b), e);}
192
193 template <int N> inline float faustpower(float x) {return powf(x, N);}
194 template <int N> inline double faustpower(double x) {return pow(x, N);}
195 template <int N> inline int faustpower(int x) {return faustpower<N/2>(x) * faustpower<N-N/2>(x);}
196 template <> inline int faustpower<0>(int x) {return 1;}
197 template <> inline int faustpower<1>(int x) {return x;}
198
199 #define FAUSTFLOAT float
200
201 /****************************************************************
202 ** include faust/dsp2cc generated files
203 */
204
205 // gxdistortion
206 static struct GxDistortionParams { GxDistortionParams();}
207 GxDistortionParams;
208 GxDistortionParams::GxDistortionParams() {
209 static FAUSTFLOAT v1, v2;
210 registerVar("gxdistortion.drive", "", "S", "", &v1, 0.35, 0.0, 1.0, 0.01);
211 registerVar("gxdistortion.wet_dry", "", "S", "", &v2, 100.0, 0.0, 100.0, 1.0);
212 }
213
214 namespace gx_amps {
215 #include "faust/gxamp.cc"
216 #include "faust/gxamp2.cc"
217 #include "faust/gxamp3.cc"
218 #include "faust/gxamp4.cc"
219 #include "faust/gxamp5.cc"
220 #include "faust/gxamp6.cc"
221 #include "faust/gxamp7.cc"
222 #include "faust/gxamp8.cc"
223 #include "faust/gxamp9.cc"
224 #include "faust/gxamp10.cc"
225 #include "faust/gxamp11.cc"
226 #include "faust/gxamp12.cc"
227 #include "faust/gxamp13.cc"
228 #include "faust/gx_ampmodul.cc"
229 }
230
231 // effects
232 namespace gx_effects {
233 // foreign variable added to faust module feed
234 // it's set in process_buffers()
235 namespace noisegate { float ngate = 1;} // noise-gate, modifies output gain
236
237 static struct CabParams { CabParams();}
238 CabParams;
239 CabParams::CabParams() {
240 registerVar("cab.Level", "", "S", "", &audio.cab_level, 1.0, 0.5, 5.0, 0.5);
241 registerVar("cab.bass", "", "S", "", &audio.cab_bass, 0.0, -10.0, 10.0, 0.5);
242 registerVar("cab.treble", "", "S", "", &audio.cab_treble, 0.0, -10.0, 10.0, 0.5);
243 }
244
245 #include "faust/bassbooster.cc"
246 #include "faust/gxfeed.cc"
247 #include "faust/gx_feedback.cc"
248 #include "faust/balance.cc"
249 #include "faust/jconv_post.cc"
250 #include "faust/balance1.cc"
251 #include "faust/gx_outputlevel.cc"
252 #include "faust/gx_ampout.cc"
253 #include "faust/overdrive.cc"
254 #include "faust/compressor.cc"
255 #include "faust/crybaby.cc"
256 #include "faust/autowah.cc"
257 #include "faust/echo.cc"
258 #include "faust/delay.cc"
259 #include "faust/stereodelay.cc"
260 #include "faust/stereoecho.cc"
261 #include "faust/noise_shaper.cc"
262 #include "faust/gx_distortion.cc"
263 #include "faust/freeverb.cc"
264 #include "faust/impulseresponse.cc"
265 #include "faust/chorus.cc"
266 #include "faust/moog.cc"
267 #include "faust/biquad.cc"
268 #include "faust/flanger.cc"
269 #include "faust/selecteq.cc"
270 #include "faust/phaser.cc"
271 #include "faust/low_high_pass.cc"
272 #include "faust/noisegate.cc"
273 #include "faust/softclip.cc"
274 #include "faust/tonecontroll.cc"
275 #include "faust/tremolo.cc"
276 #include "faust/phaser_mono.cc"
277 #include "faust/chorus_mono.cc"
278 #include "faust/flanger_mono.cc"
279 #include "cabinet_impulse_former.cc"
280 }
281
282 // init cabinet impulse former to 48000 Hz, the buffer will resampled
283 // afterwards whe needed.
284 void init_non_rt_processing() {
285 gx_effects::cabinet_impulse_former::init(48000);
286 }
287
288 void non_rt_processing(int count, float* input, float* output0) {
289 gx_effects::cabinet_impulse_former::compute(count, input, output0);
290 }
291
292 // tone stack
293
294
295 namespace gx_tonestacks {
296
297 static struct ToneStackParams { ToneStackParams(); }
298 ToneStackParams;
299 ToneStackParams::ToneStackParams() {
300 static FAUSTFLOAT v1, v2, v3;
301 registerVar("amp.tonestack.Treble", "", "S", "", &v1, 0.5, 0.0, 1.0, 0.01);
302 registerVar("amp.tonestack.Bass", "", "S", "", &v2, 0.5, 0.0, 1.0, 0.01);
303 registerVar("amp.tonestack.Middle", "", "S", "", &v3, 0.5, 0.0, 1.0, 0.01);
304 }
305
306 #include "faust/tonestack_default.cc"
307 #include "faust/tonestack_bassman.cc"
308 #include "faust/tonestack_twin.cc"
309 #include "faust/tonestack_princeton.cc"
310 #include "faust/tonestack_jcm800.cc"
311 #include "faust/tonestack_jcm2000.cc"
312 #include "faust/tonestack_mlead.cc"
313 #include "faust/tonestack_m2199.cc"
314 #include "faust/tonestack_ac30.cc"
315 #include "faust/tonestack_mesa.cc"
316 #include "faust/tonestack_soldano.cc"
317 #include "faust/tonestack_jtm45.cc"
318 #include "faust/tonestack_ac15.cc"
319 #include "faust/tonestack_peavey.cc"
320 #include "faust/tonestack_ibanez.cc"
321 #include "faust/tonestack_roland.cc"
322 #include "faust/tonestack_ampeg.cc"
323 }
324
325 /****************************************************************
326 ** free memory when effects are unused, load with jack_sync
327 */
328
329 static void activate_callback(float val, void *data) {
330 ((void (*)(bool, int))data)(!(val == 0.0), gx_jack::gxjack.jack_sr);
331 }
332
333 static void faust_add_callback(const char* id, void (*func)(bool, int)) {
334 new gx_ui::GxUiCallbackItemFloat(gx_gui::GxMainInterface::instance(),
335 reinterpret_cast<float*>(gx_gui::parameter_map[id].zone()),
336 activate_callback, reinterpret_cast<void*>(func));
337 }
338
339 void faust_init(int samplingFreq) {
340 // faust_add_callback("SampleLooper.on_off", sloop::activate);
341 faust_add_callback("delay.on_off", gx_effects::delay::activate);
342 faust_add_callback("echo.on_off", gx_effects::echo::activate);
343 faust_add_callback("chorus.on_off", gx_effects::chorus::activate);
344 faust_add_callback("chorus_mono.on_off", gx_effects::chorus::activate);
345 faust_add_callback("stereodelay.on_off", gx_effects::stereodelay::activate);
346 faust_add_callback("stereoecho.on_off", gx_effects::stereoecho::activate);
347 list<inidef>& inilist = get_inilist();
348 for (list<inidef>::iterator i = inilist.begin(); i != inilist.end(); i++) {
349 try {
350 i->func(samplingFreq);
351 } catch(bad_alloc) {
352 string name = gx_gui::param_group(i->name, true);
353 gx_system::gx_print_error("DSP Module", (boost::format
354 ("not enough memory to initialize module %1%") % i->name).str());
355 }
356 }
357 }
358
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * --------------------------------------------------------------------------
18 * --------------------------------------------------------------------------
19 */
20
21
22
23 /****************************************************************
24 ** definitions for code generated with faust / dsp2cc
25 */
26
27
28 typedef void (*inifunc)(int); // NOLINT
29
30 typedef struct {
31 inifunc func;
32 const char *name;
33 } inidef;
34
35
36 static list<inidef>& get_inilist() {
37 static list<inidef> inilist;
38 return inilist;
39 }
40
41 static list<gx_gui::Parameter*>& get_paramlist() {
42 static list<gx_gui::Parameter*> paramlist;
43 return paramlist;
44 }
45
46 void register_faust_parameters() {
47 list<gx_gui::Parameter*>& paramlist = get_paramlist();
48 for (list<gx_gui::Parameter*>::iterator i = paramlist.begin(); i != paramlist.end(); i++) {
49 gx_gui::parameter_map.insert(*i);
50 // fprintf(stderr, "%s \n",(*i)->id().c_str() );
51 }
52 paramlist.clear();
53 }
54
55 static gx_gui::Parameter *find_parameter(const char *id) {
56 list<gx_gui::Parameter*>& paramlist = get_paramlist();
57 for (list<gx_gui::Parameter*>::iterator i = paramlist.begin(); i != paramlist.end(); i++) {
58 if ((*i)->id() == id) {
59 return *i;
60 }
61 }
62 return 0;
63 }
64
65 static float& get_alias(const char *id) {
66 static float dummy;
67 gx_gui::Parameter *p = find_parameter(id);
68 if (!p) {
69 gx_system::gx_print_error("engine", string
70 ("can't define alias for unknown (or not yet defined) parameter id: ") + id);
71 return dummy;
72 } else {
73 return p->getFloat().value;
74 }
75 }
76
77 static void registerVar(const char* id, const char* name, const char* tp,
78 const char* tooltip, float* var, float val = 0,
79 float low = 0, float up = 0, float step = 0, bool exp = false) {
80 if (!name[0]) {
81 assert(strrchr(id, '.'));
82 name = strrchr(id, '.')+1;
83 }
84 gx_gui::Parameter *p = new gx_gui::FloatParameter(
85 id, name, gx_gui::Parameter::Continuous, true, *var, val, low, up, step, true, exp);
86 if (tooltip) {
87 p->set_desc(tooltip);
88 }
89 get_paramlist().push_back(p);
90 }
91
92 static void registerEnumVar(const char *id, const char* name, const char* tp,
93 const char* tooltip, const char** values, float *var, float val,
94 float low = 0, float up = 0, float step = 1, bool exp = false) {
95 if (!name[0]) {
96 assert(strrchr(id, '.'));
97 name = strrchr(id, '.')+1;
98 }
99 assert(low == 0.0 && step == 1.0);
100 gx_gui::FloatEnumParameter *p = new gx_gui::FloatEnumParameter(
101 id, name, values, true, *var,
102 static_cast<int>(round(val)), true, exp); // false == no_midi_var
103 assert(up == p->upper); // calculated by constructor
104 get_paramlist().push_back(p);
105 }
106
107 static inline void registerIntParam(const char*a, const char*b, int*c, int std = 0,
108 int lower = 0, int upper = 1, bool exp = false) {
109 get_paramlist().push_back(
110 new gx_gui::IntParameter(a , b, gx_gui::Parameter::Enum, true, *c, std,
111 lower, upper, true, exp));
112 }
113
114 static void registerInit(const char *name, inifunc f) {
115 inidef i;
116 i.func = f;
117 i.name = name;
118 // fprintf(stderr, "%s \n", i.name);
119 get_inilist().push_back(i);
120 }
121
122 static void jack_sync() {
123 while (sem_wait(&gx_jack::jack_sync_sem) == EINTR);
124 }
125
126
127 /****************************************************************/
128
129 #define max(x, y) (((x) > (y)) ? (x) : (y))
130 #define min(x, y) (((x) < (y)) ? (x) : (y))
131
132 // FIXME (temporary)hack to support older compiler versions
133 inline float pow(float b, float e) {return ::powf(b, e);}
134 inline double pow(double b, double e) {return ::pow(b, e);}
135 inline double pow(double b, int e) {return ::pow(b, static_cast<double>(e));}
136 inline double pow(int b, double e) {return ::pow(static_cast<double>(b), e);}
137 inline double pow(double b, float e) {return ::pow(b, static_cast<double>(e));}
138 inline double pow(float b, double e) {return ::pow(static_cast<double>(b), e);}
139 inline float pow(float b, int e) {return ::powf(b, static_cast<float>(e));}
140 inline float pow(int b, float e) {return ::powf(static_cast<float>(b), e);}
141
142 template <int N> inline float faustpower(float x) {return powf(x, N);}
143 template <int N> inline double faustpower(double x) {return pow(x, N);}
144 template <int N> inline int faustpower(int x) {return faustpower<N/2>(x) * faustpower<N-N/2>(x);}
145 template <> inline int faustpower<0>(int x) {return 1;}
146 template <> inline int faustpower<1>(int x) {return x;}
147
148 #define FAUSTFLOAT float
149
150 /****************************************************************
151 ** include faust/dsp2cc generated files
152 */
153
154 namespace gx_amps {
155
156 // definitions for ffunction(float Ftube(int,float), "valve.h", "");
157 // in gx_amp.dsp - gx_ampmodul.dsp
158 static float Ftube(int table, float Vgk) {
159 struct gx_tubes::tabled& tab = gx_tubes::tubetable[table];
160 float f = (Vgk - tab.low) * tab.istep;
161 int i = static_cast<int>(f);
162 if (i < 0)
163 return tab.data[0];
164 if (i >= TAB_SIZE-1)
165 return tab.data[TAB_SIZE-1];
166 f -= i;
167 return tab.data[i]*(1-f) + tab.data[i+1]*f;
168 }
169
170 static float Ftube2(int table, float Vgk) {
171 struct gx_tubes::tabled& tab = gx_tubes::tubetable2[table];
172 float f = (Vgk - tab.low) * tab.istep;
173 int i = static_cast<int>(f);
174 if (i < 0)
175 return tab.data[0];
176 if (i >= TAB_SIZE-1)
177 return tab.data[TAB_SIZE-1];
178 f -= i;
179 return tab.data[i]*(1-f) + tab.data[i+1]*f;
180 }
181
182 static float Ftube3(int table, float Vgk) {
183 struct gx_tubes::tabled& tab = gx_tubes::tubetable3[table];
184 float f = (Vgk - tab.low) * tab.istep;
185 int i = static_cast<int>(f);
186 if (i < 0)
187 return tab.data[0];
188 if (i >= TAB_SIZE-1)
189 return tab.data[TAB_SIZE-1];
190 f -= i;
191 return tab.data[i]*(1-f) + tab.data[i+1]*f;
192 }
193
194 static float Ftube4(int table, float Vgk) {
195 struct gx_tubes::tabled& tab = gx_tubes::tubetable4[table];
196 float f = (Vgk - tab.low) * tab.istep;
197 int i = static_cast<int>(f);
198 if (i < 0)
199 return tab.data[0];
200 if (i >= TAB_SIZE-1)
201 return tab.data[TAB_SIZE-1];
202 f -= i;
203 return tab.data[i]*(1-f) + tab.data[i+1]*f;
204 }
205
206 /* static float Ftube5(int table, float Vgk) {
207 struct gx_tubes::tabled& tab = gx_tubes::tubetable5[table];
208 float f = (Vgk - tab.low) * tab.istep;
209 int i = static_cast<int>(f);
210 if (i < 0)
211 return tab.data[0];
212 if (i >= TAB_SIZE-1)
213 return tab.data[TAB_SIZE-1];
214 f -= i;
215 return tab.data[i]*(1-f) + tab.data[i+1]*f;
216 } */
217
218 static float Ftube6(int table, float Vgk) {
219 struct gx_tubes::tabled& tab = gx_tubes::tubetable6[table];
220 float f = (Vgk - tab.low) * tab.istep;
221 int i = static_cast<int>(f);
222 if (i < 0)
223 return tab.data[0];
224 if (i >= TAB_SIZE-1)
225 return tab.data[TAB_SIZE-1];
226 f -= i;
227 return tab.data[i]*(1-f) + tab.data[i+1]*f;
228 }
229
230 // gxdistortion
231 static struct GxDistortionParams { GxDistortionParams();}
232 GxDistortionParams;
233 GxDistortionParams::GxDistortionParams() {
234 static FAUSTFLOAT v1, v2;
235 registerVar("gxdistortion.drive", "", "S", "", &v1, 0.35, 0.0, 1.0, 0.01);
236 registerVar("gxdistortion.wet_dry", "", "S", "", &v2, 100.0, 0.0, 100.0, 1.0);
237 }
238
239 #include "faust/gxamp.cc"
240 #include "faust/gxamp2.cc"
241 #include "faust/gxamp3.cc"
242 #include "faust/gxamp4.cc"
243 #include "faust/gxamp5.cc"
244 #include "faust/gxamp6.cc"
245 #include "faust/gxamp7.cc"
246 #include "faust/gxamp8.cc"
247 #include "faust/gxamp9.cc"
248 #include "faust/gxamp10.cc"
249 #include "faust/gxamp11.cc"
250 #include "faust/gxamp12.cc"
251 #include "faust/gxamp13.cc"
252 #include "faust/gxamp14.cc"
253 #include "faust/gxamp15.cc"
254 #include "faust/gxamp16.cc"
255 #include "faust/gxamp17.cc"
256 #include "faust/gx_ampmodul.cc"
257 }
258
259 // effects
260 namespace gx_effects {
261
262 // foreign variable added to faust module feed
263 namespace noisegate { float ngate = 1;} // noise-gate, modifies output gain
264
265 static struct CabParams { CabParams();}
266 CabParams;
267 CabParams::CabParams() {
268 registerVar("cab.Level", "", "S", "", &audio.cab_level, 1.0, 0.5, 5.0, 0.5);
269 registerVar("cab.bass", "", "S", "", &audio.cab_bass, 0.0, -10.0, 10.0, 0.5);
270 registerVar("cab.treble", "", "S", "", &audio.cab_treble, 0.0, -10.0, 10.0, 0.5);
271
272 registerVar("con.Level", "", "S", "", &audio.con_level, 1.0, 0.5, 5.0, 0.5);
273 }
274
275
276 #include "faust/bassbooster.cc"
277 #include "faust/gxfeed.cc"
278 #include "faust/gx_feedback.cc"
279 #include "faust/balance.cc"
280 #include "faust/jconv_post.cc"
281 #include "faust/balance1.cc"
282 #include "faust/gx_outputlevel.cc"
283 #include "faust/gx_ampout.cc"
284 #include "faust/overdrive.cc"
285 #include "faust/compressor.cc"
286 #include "faust/crybaby.cc"
287 #include "faust/autowah.cc"
288 #include "faust/echo.cc"
289 #include "faust/delay.cc"
290 #include "faust/stereodelay.cc"
291 #include "faust/stereoecho.cc"
292 #include "faust/noise_shaper.cc"
293 #include "faust/gx_distortion.cc"
294 #include "faust/freeverb.cc"
295 #include "faust/impulseresponse.cc"
296 #include "faust/chorus.cc"
297 #include "faust/moog.cc"
298 #include "faust/biquad.cc"
299 #include "faust/flanger.cc"
300 #include "faust/selecteq.cc"
301 #include "faust/phaser.cc"
302 #include "faust/low_high_pass.cc"
303 #include "faust/noisegate.cc"
304 #include "faust/softclip.cc"
305 #include "faust/tonecontroll.cc"
306 #include "faust/tremolo.cc"
307 #include "faust/phaser_mono.cc"
308 #include "faust/chorus_mono.cc"
309 #include "faust/flanger_mono.cc"
310 #include "cabinet_impulse_former.cc"
311 #include "faust/presence_level.cc"
312 }
313
314 // init cabinet impulse former to 48000 Hz, the buffer will resampled
315 // afterwards when needed.
316 void init_non_rt_processing() {
317 gx_effects::cabinet_impulse_former::init(48000);
318 }
319
320 void non_rt_processing(int count, float* input, float* output0) {
321 gx_effects::cabinet_impulse_former::compute(count, input, output0);
322 }
323
324 // init presence impulse former to 48000 Hz, the buffer will resampled
325 // afterwards when needed.
326 void init_presence_processing() {
327 gx_effects::presence_level::init(48000);
328 }
329
330 void presence_processing(int count, float* input, float* output0) {
331 gx_effects::presence_level::compute(count, input, output0);
332 }
333 // tone stack
334 namespace gx_tonestacks {
335
336 static struct ToneStackParams { ToneStackParams(); }
337 ToneStackParams;
338 ToneStackParams::ToneStackParams() {
339 static FAUSTFLOAT v1, v2, v3;
340 registerVar("amp.tonestack.Treble", "", "S", "", &v1, 0.5, 0.0, 1.0, 0.01);
341 registerVar("amp.tonestack.Bass", "", "S", "", &v2, 0.5, 0.0, 1.0, 0.01);
342 registerVar("amp.tonestack.Middle", "", "S", "", &v3, 0.5, 0.0, 1.0, 0.01);
343 }
344
345 #include "faust/tonestack_default.cc"
346 #include "faust/tonestack_bassman.cc"
347 #include "faust/tonestack_twin.cc"
348 #include "faust/tonestack_princeton.cc"
349 #include "faust/tonestack_jcm800.cc"
350 #include "faust/tonestack_jcm2000.cc"
351 #include "faust/tonestack_mlead.cc"
352 #include "faust/tonestack_m2199.cc"
353 #include "faust/tonestack_ac30.cc"
354 #include "faust/tonestack_mesa.cc"
355 #include "faust/tonestack_soldano.cc"
356 #include "faust/tonestack_jtm45.cc"
357 #include "faust/tonestack_ac15.cc"
358 #include "faust/tonestack_peavey.cc"
359 #include "faust/tonestack_ibanez.cc"
360 #include "faust/tonestack_roland.cc"
361 #include "faust/tonestack_ampeg.cc"
362 #include "faust/tonestack_ampeg_rev.cc"
363 #include "faust/tonestack_sovtek.cc"
364 #include "faust/tonestack_bogner.cc"
365 #include "faust/tonestack_groove.cc"
366 #include "faust/tonestack_crunch.cc"
367 #include "faust/tonestack_fender_blues.cc"
368 #include "faust/tonestack_fender_default.cc"
369 #include "faust/tonestack_fender_deville.cc"
370 #include "faust/tonestack_gibsen.cc"
371 }
372
373 /****************************************************************
374 ** free memory when effects are unused, load with jack_sync
375 */
376
377 static void activate_callback(float val, void *data) {
378 ((void (*)(bool, int))data)(!(val == 0.0), gx_jack::gxjack.jack_sr);
379 }
380
381 static void faust_add_callback(const char* id, void (*func)(bool, int)) {
382 new gx_ui::GxUiCallbackItemFloat(gx_gui::GxMainInterface::instance(),
383 reinterpret_cast<float*>(gx_gui::parameter_map[id].zone()),
384 activate_callback, reinterpret_cast<void*>(func));
385 }
386
387 void faust_init(int samplingFreq) {
388 // faust_add_callback("SampleLooper.on_off", sloop::activate);
389 faust_add_callback("delay.on_off", gx_effects::delay::activate);
390 faust_add_callback("echo.on_off", gx_effects::echo::activate);
391 faust_add_callback("chorus.on_off", gx_effects::chorus::activate);
392 faust_add_callback("chorus_mono.on_off", gx_effects::chorus::activate);
393 faust_add_callback("stereodelay.on_off", gx_effects::stereodelay::activate);
394 faust_add_callback("stereoecho.on_off", gx_effects::stereoecho::activate);
395 list<inidef>& inilist = get_inilist();
396 for (list<inidef>::iterator i = inilist.begin(); i != inilist.end(); i++) {
397 try {
398 i->func(samplingFreq);
399 } catch(bad_alloc) {
400 string name = gx_gui::param_group(i->name, true);
401 gx_system::gx_print_error("DSP Module", (boost::format
402 ("not enough memory to initialize module %1%") % i->name).str());
403 }
404 }
405 }
406 /****************************************************************
407 ** engine helper work threads to watch for user changes in the
408 * rack amp tonestack selection, create a pointer aray to the
409 * selected functions.
410 */
411 #include "gx_engine_helpers.cc"
412
413
+0
-214
src/gx_head/gx_globals.cpp less more
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * --------------------------------------------------------------------------
18 *
19 * This is the gx_head global variable definitions for all namespaces
20 *
21 * --------------------------------------------------------------------------
22 */
23
24 #include "guitarix.h" // NOLINT
25 #include <glibmm/i18n.h> // NOLINT
26
27 #include <string> // NOLINT
28 #include <vector> // NOLINT
29
30 /* ------------------------------------------------------------------------- */
31
32 /* ----- main engine ----- */
33 namespace gx_engine {
34 GxEngineState checky = kEngineOn;
35 float* get_frame = NULL;
36 float* get_frame1 = NULL;
37 float* checkfreq = NULL;
38 float* oversample = NULL;
39 float* result = NULL;
40
41 /* latency warning switch */
42 float fwarn;
43 float fwarn_swap;
44
45 /* engine init state */
46 bool initialized = false;
47
48 /* engine init state */
49 bool pt_initialized = false;
50
51 /* buffer ready state */
52 bool buffers_ready = false;
53 }
54
55
56 /* ------------------------------------------------------------------------- */
57
58 /* ----- jack namespace ----- */
59 namespace gx_jack {
60
61 int NO_CONNECTION = 1;
62
63 void* midi_input_port_buf;
64 void* midi_port_buf;
65
66 bool jack_is_down = false;
67 bool jack_is_exit = false;
68 GxJackLatencyChange change_latency;
69
70 string client_name = "gx_head_amp";
71 string client_insert_name = "gx_head_fx";
72 string client_instance = "gx_head";
73
74 string client_out_graph = "";
75
76 string gx_port_names[] = {
77 "in_0",
78 "out_0",
79 "out_1",
80 "midi_in_1",
81 "out_3"
82 };
83 }
84
85 /* ------------------------------------------------------------------------- */
86
87 /* ----- system namespace ----- */
88 namespace gx_system {
89 /* variables and constants */
90 const int SYSTEM_OK = 0;
91
92 bool is_session = false;
93
94 string rcpath;
95
96 const char* gx_head_dir = ".gx_head";
97 const char* jcapsetup_file = "ja_ca_ssetrc";
98 const char* jcapfile_wavbase = "gx_head_session";
99
100 const string gx_pixmap_dir = string(GX_PIXMAPS_DIR) + "/";
101 const string gx_user_dir = string(getenv("HOME")) + string("/") + string(gx_head_dir) + "/";
102
103 string gx_style_dir = string(GX_STYLE_DIR1) + "/";
104 string gx_builder_dir = string(GX_BUILDER_DIR1) + "/";
105
106 /* shell variable names */
107 const char* shell_var_name[] = {
108 "GUITARIX2JACK_INPUTS",
109 "GUITARIX2JACK_OUTPUTS1",
110 "GUITARIX2JACK_OUTPUTS2",
111 "GUITARIX2JACK_MIDI",
112 "GUITARIX_RC_STYLE",
113 "GUITARIX2JACK_UUID",
114 "GUITARIX_LOAD_FILE"
115 };
116 }
117
118
119 /* ------------------------------------------------------------------------- */
120
121 /* ----- preset namespace ----- */
122 namespace gx_preset {
123 /* global var declarations */
124
125 gx_gui::FileParameter gx_preset_file("system.current_preset_file");
126 gx_gui::FileParameter gx_factory_preset_file("system.factory_preset_file");
127
128 GdkModifierType list_mod[] = {
129 GDK_NO_MOD_MASK,
130 GDK_CONTROL_MASK,
131 GDK_MOD1_MASK,
132 GdkModifierType(GDK_CONTROL_MASK|GDK_MOD1_MASK)
133 };
134
135 const char* preset_accel_path[] = {
136 "<gx_head>/Load",
137 "<gx_head>/Save",
138 "<gx_head>/Rename",
139 "<gx_head>/Delete"
140 };
141
142 const char* preset_menu_name[] = {
143 N_("_Load Preset..."),
144 N_("_Save Preset..."),
145 N_("_Rename Preset..."),
146 N_("_Delete Preset...")
147 };
148
149 string gx_current_preset;
150 string gx_factory_preset;
151 string old_preset_name;
152
153 GtkWidget* presmenu[GX_NUM_OF_PRESET_LISTS];
154 GtkWidget* presMenu[GX_NUM_OF_PRESET_LISTS];
155
156 vector<string> plist;
157 vector<GtkMenuItem*> pm_list[GX_NUM_OF_PRESET_LISTS];
158
159 GtkWidget* fpresmenu;
160
161 GtkWidget* ffpresmenu[GX_NUM_OF_FACTORY_PRESET];
162 vector<string> fplist[GX_NUM_OF_FACTORY_PRESET];
163 vector<GtkMenuItem*> fpm_list[GX_NUM_OF_FACTORY_PRESET];
164
165
166 bool setting_is_preset = false;
167 bool setting_is_factory = false;
168
169 GCallback preset_action_func[] = {
170 G_CALLBACK(gx_load_preset),
171 G_CALLBACK(gx_save_oldpreset),
172 G_CALLBACK(gx_rename_preset_dialog),
173 G_CALLBACK(gx_delete_preset_dialog)
174 };
175 }
176
177 /* ------------------------------------------------------------------------- */
178
179 /* ----- GUI namespace ----- */
180 namespace gx_gui {
181
182 int showwave = 0;
183 int shownote = -1;
184 float show_patch_info = 0;
185
186 /* rack handlig */
187 int mono_plugs = 1;
188 int stereo_plugs = 1;
189 int refresh_size = 0;
190
191 int g_threads[10]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
192
193 /* for level display */
194 int meter_falloff = 27; // in dB/sec.
195 int meter_display_timeout = 60; // in millisec
196
197 /* midi_in preset switch */
198 volatile gint program_change = -1;
199 sem_t program_change_sem;
200
201 /* widget orientation */
202 float main_xorg;
203 float main_yorg;
204 }
205
206 /* ------------------------------------------------------------------------- */
207
208 /* ----- cairo namespace ----- */
209 namespace gx_cairo {
210 GdkPixbuf *tribeimage;
211 GdkPixbuf *tribeimage1;
212 GdkPixbuf *tribeimage2;
213 }
8080 /* ----- load a top level window from gtk builder file ------ */
8181
8282 GtkWidget *load_toplevel(GtkBuilder *builder, const char* filename, const char* windowname) {
83 string fname = gx_system::gx_builder_dir+filename;
83 string fname = gx_system::sysvar.gx_builder_dir+filename;
8484 GError *err = NULL;
8585 if (!gtk_builder_add_from_file(builder, fname.c_str(), &err)) {
8686 g_object_unref(G_OBJECT(builder));
100100
101101 /* --------- menu function triggering engine on/off/bypass --------- */
102102 void gx_engine_switch(GtkWidget* widget, gpointer arg) {
103 gx_engine::GxEngineState estate = gx_engine::checky;
103 gx_engine::GxEngineState estate = gx_engine::audio.checky;
104104
105105 switch (estate) {
106106 case gx_engine::kEngineOn:
127127 );
128128 }
129129
130 gx_engine::checky = estate;
130 gx_engine::audio.checky = estate;
131131 gx_refresh_engine_status_display();
132132 }
133133
134134 /* -------------- refresh engine status display ---------------- */
135135 void gx_refresh_engine_status_display() {
136 gx_engine::GxEngineState estate = gx_engine::checky;
136 gx_engine::GxEngineState estate = gx_engine::audio.checky;
137137
138138 string state;
139139
197197 }
198198
199199 void gx_jack_report_xrun() {
200 g_threads[2] = 0;
201 if (g_threads[2] == 0 ||g_main_context_find_source_by_id(NULL, g_threads[2]) == NULL)
202 g_threads[2] =g_idle_add(gx_threads::gx_xrun_report, gpointer(NULL));
200 guivar.g_threads[2] = 0;
201 if (guivar.g_threads[2] == 0 ||g_main_context_find_source_by_id(NULL, guivar.g_threads[2]) == NULL)
202 guivar.g_threads[2] =g_idle_add(gx_threads::gx_xrun_report, gpointer(NULL));
203203 }
204204
205205 // ----menu function gx_show_oscilloscope
206206 void GxMainInterface::on_show_oscilloscope() {
207207 if (fShowWaveView.get_active()) {
208 showwave = 1; // FIXME just use is_visible
208 guivar.showwave = 1; // FIXME just use is_visible
209209 Glib::signal_timeout().connect(sigc::mem_fun(*this,
210210 &GxMainInterface::on_refresh_oscilloscope), 60); // FIXME G_PRIORITY_DEFAULT_IDLE??
211211 fWaveView.get_parent()->show(); // FIXME why??
214214 fWaveView.set_multiplicator(20., 60);
215215 fWaveView.show();
216216 } else {
217 showwave = 0;
217 guivar.showwave = 0;
218218 fWaveView.get_parent()->hide();
219219 fWaveView.show(); // FIXME why??
220220 }
311311
312312 GtkWidget* button1 =
313313 gtk_dialog_add_button(GTK_DIALOG(warn_dialog),
314 _("Yes"), gx_jack::kChangeLatency);
314 _("Yes"), gx_jack::gxjack.kChangeLatency);
315315
316316 GtkWidget* button2 =
317317 gtk_dialog_add_button(GTK_DIALOG(warn_dialog),
318 _("No"), gx_jack::kKeepLatency);
318 _("No"), gx_jack::gxjack.kKeepLatency);
319319
320320
321321 GtkWidget* box1 = gtk_hbox_new(0, 4);
358358 // check user's decision to turn off latency change warning
359359 void gx_user_disable_latency_warn(GtkWidget* wd, gpointer arg) {
360360 GtkToggleButton* button = GTK_TOGGLE_BUTTON(wd);
361 gx_engine::fwarn = static_cast<int>(gtk_toggle_button_get_active(button));
361 gx_engine::audio.fwarn = static_cast<int>(gtk_toggle_button_get_active(button));
362362 }
363363
364364 void gx_reset_effects(GtkWidget *widget, gpointer data ) {
437437 gtk_widget_show(GTK_WIDGET(vbox));
438438
439439 gtk_widget_set_size_request(GTK_WIDGET(gui->RBox), -1, 460);
440 if (g_threads[7] == 0 || g_main_context_find_source_by_id
441 (NULL, g_threads[7]) == NULL)
442 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
440 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id
441 (NULL, guivar.g_threads[7]) == NULL)
442 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
443443 gx_gui::gx_set_resizeable, gpointer(gw.fWindow), NULL);
444 if (g_threads[6] == 0 || g_main_context_find_source_by_id
445 (NULL, g_threads[6]) == NULL)
446 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
444 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id
445 (NULL, guivar.g_threads[6]) == NULL)
446 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
447447 gx_gui::gx_set_default, gpointer(gui->RBox), NULL);
448448 }
449449 } else {
464464 gtk_widget_show(GTK_WIDGET(vbox));
465465
466466 gtk_widget_set_size_request(GTK_WIDGET(gui->RBox), -1, 460);
467 if (g_threads[7] == 0 || g_main_context_find_source_by_id
468 (NULL, g_threads[7]) == NULL)
469 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
467 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id
468 (NULL, guivar.g_threads[7]) == NULL)
469 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
470470 gx_gui::gx_set_resizeable, gpointer(gw.fWindow), NULL);
471 if (g_threads[6] == 0 || g_main_context_find_source_by_id
472 (NULL, g_threads[6]) == NULL)
473 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
471 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id
472 (NULL, guivar.g_threads[6]) == NULL)
473 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
474474 gx_gui::gx_set_default, gpointer(gui->RBox), NULL);
475475 }
476476 }
509509 // fShowRack.set_active(false);
510510 // fShowSRack.set_active(false);
511511 }
512 if (g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, g_threads[7]) == NULL)
513 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
512 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[7]) == NULL)
513 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
514514 gx_set_resizeable, gpointer(gw.fWindow), NULL);
515 if (g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, g_threads[6]) == NULL)
516 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
515 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[6]) == NULL)
516 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
517517 gx_set_default, gpointer(RBox), NULL);
518518 }
519519
561561 }
562562
563563 gtk_widget_set_size_request(GTK_WIDGET(RBox), -1, 460 );
564 if (g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, g_threads[7]) == NULL)
565 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
564 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[7]) == NULL)
565 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
566566 gx_set_resizeable, gpointer(gw.fWindow), NULL);
567 if (g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, g_threads[6]) == NULL)
568 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
567 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[6]) == NULL)
568 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
569569 gx_set_default, gpointer(RBox), NULL);
570570 }
571571
582582 gtk_window_set_resizable(GTK_WINDOW(gw.fWindow) , FALSE);
583583 gtk_widget_hide(gw.rack_tool_bar);
584584 }
585 if (g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, g_threads[7]) == NULL)
586 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
585 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[7]) == NULL)
586 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
587587 gx_set_resizeable, gpointer(gw.fWindow), NULL);
588 if (g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, g_threads[6]) == NULL)
589 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
588 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[6]) == NULL)
589 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
590590 gx_set_default, gpointer(RBox), NULL);
591591 }
592592
595595
596596 if (fShowTuner.get_active()) {
597597 gtk_widget_show_all(gw.tuner_widget);
598 shownote = 1;
598 guivar.shownote = 1;
599599 fTuner.show();
600600 } else {
601601 GtkAllocation my_size;
603603 gtk_widget_set_size_request(GTK_WIDGET(RBox), -1, my_size.height);
604604 if (gtk_window_get_resizable(GTK_WINDOW(gw.fWindow)))
605605 gtk_window_set_resizable(GTK_WINDOW(gw.fWindow) , FALSE);
606 shownote = 0;
606 guivar.shownote = 0;
607607 fTuner.hide();
608608 gtk_widget_hide(gw.tuner_widget);
609609 }
610 if (g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, g_threads[7]) == NULL)
611 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
610 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[7]) == NULL)
611 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
612612 gx_set_resizeable, gpointer(gw.fWindow), NULL);
613 if (g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, g_threads[6]) == NULL)
614 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
613 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[6]) == NULL)
614 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
615615 gx_set_default, gpointer(RBox), NULL);
616 gx_engine::audio.rack_change = true;
616617 }
617618
618619 // ---- menu function gx_midi_out
623624 gx_show_extended_settings(GTK_WIDGET(menuitem), (gpointer) child);
624625 static bool first = true;
625626 if (gtk_check_menu_item_get_active(menuitem) == TRUE) {
626 if (first)refresh_size = 0;
627 if (first)guivar.refresh_size = 0;
627628
628629 gx_engine::turnOnMidi();
629630 } else {
632633 parameter_map[group].set_std_value();
633634 }
634635 first =false;
636 gx_engine::audio.rack_change = true;
635637 }
636638
637639 // ----- hide the extendend settings slider
812814 // ------- count the number of available skins
813815 unsigned int gx_fetch_available_skins() {
814816 DIR *d;
815 d = opendir(gx_system::gx_style_dir.c_str());
817 d = opendir(gx_system::sysvar.gx_style_dir.c_str());
816818 if (!d) {
817819 return 0;
818820 }
882884 return false;
883885 }
884886
885 string rcfile = gx_system::gx_style_dir + "gx_head_";
887 string rcfile = gx_system::sysvar.gx_style_dir + "gx_head_";
886888 rcfile += skin.skin_list[idx];
887889 rcfile += ".rc";
888890
191191 closeBox();
192192 openSpaceBox("");
193193 closeBox();
194 openSpaceBox("");
195 closeBox();
194
196195
197196 openVerticalBox("");
198197 {
206205 closeBox();
207206 create_switch(sw_minitoggle, "amp.bass_boost.on_off",
208207 _(" Bass boost "), Gtk::POS_RIGHT);
208 create_wheel("bassbooster.Level");
209209 create_contrast_switch("con.on_off", _(" Presence "),
210210 Gtk::POS_TOP);
211 create_wheel("con.Level");
211212 create_switch(sw_minitoggle, "amp.feed_on_off", _(" Reverb "),
212213 Gtk::POS_RIGHT);
213 create_minislider("amp.wet_dry");
214 openSpaceBox("");
215 closeBox();
216 }
217 closeBox();
218 openSpaceBox("");
219 closeBox();
220 openSpaceBox("");
221 closeBox();
222 openSpaceBox("");
223 closeBox();
224
225 openVerticalBox("");
226 {
214 create_wheel("amp.wet_dry");
215 openSpaceBox("");
216 closeBox();
217 }
218 closeBox();
219 openSpaceBox("");
220 closeBox();
221 openSpaceBox("");
222 closeBox();
223
224
225 openVerticalBox("");
226 {
227 openSpaceBox("");
228 closeBox();
229 openSpaceBox("");
230 closeBox();
227231 openSpaceBox("");
228232 closeBox();
229233 openSpaceBox("");
255259 closeBox();
256260 openSpaceBox("");
257261 closeBox();
258 openSpaceBox("");
259 closeBox();
260262 openVerticalBox("");
261263 {
262264 openSpaceBox("");
265267 closeBox();
266268 openFrameBox("");
267269 closeBox();
268 openFrameBox("");
270 openSpaceBox("");
269271 closeBox();
270272 openHorizontalBox("");
271273 {
335337 }
336338 closeBox();
337339 // add a Patch Info widget
338 openPatchInfoBox(&gx_gui::show_patch_info);
340 openPatchInfoBox(&gx_gui::guivar.show_patch_info);
339341
340342 openTextLoggingBox(_("Logging Window"));
341343
4343 sem_t jack_sync_sem;
4444
4545 GxJack gxjack;
46 JackBuffer *_jackbuffer_ptr;
4647
4748 // ----- pop up a dialog for starting jack
48 bool gx_jack_init(const string *optvar) {
49 bool GxJack::gx_jack_init(const string *optvar) {
4950 jack_status_t jackstat;
50 client_name = "gx_head_amp";
51 client_insert_name = "gx_head_fx";
52 client_instance = "gx_head";
53 int jack_is_fresh = 0;
51 client_name = "gx_head_amp";
52 client_insert_name = "gx_head_fx";
53 client_instance = "gx_head";
54
55 int jack_is_fresh = 0;
56 jack_is_down = false;
57 jack_is_exit = false;
58 NO_CONNECTION = 1;
5459
5560 AVOIDDENORMALS;
5661
5762 sem_init(&jack_sync_sem, 0, 0);
5863
5964 // init the pointer to the jackbuffer
60 for (int i = 0; i < gxjack.nOPorts; i++) gxjack.output_ports[i] = 0;
61 for (int i = 0; i < gxjack.nIPorts; i++) gxjack.input_ports[i] = 0;
65 for (int i = 0; i < nOPorts; i++) output_ports[i] = 0;
66 for (int i = 0; i < nIPorts; i++) input_ports[i] = 0;
6267
6368 #ifdef HAVE_JACK_SESSION
6469 // try to open jack gxjack.client
6570 if (!optvar[JACK_UUID].empty()) {
6671
67 gxjack.client = jack_client_open(client_name.c_str(),
72 client = jack_client_open(client_name.c_str(),
6873 jack_options_t(JackNoStartServer | JackSessionID),
6974 &jackstat, optvar[JACK_UUID].c_str());
7075 } else {
71 gxjack.client = jack_client_open(client_name.c_str(), JackNoStartServer, &jackstat);
76 client = jack_client_open(client_name.c_str(), JackNoStartServer, &jackstat);
7277 }
7378 #else
74 gxjack.client = jack_client_open(client_name.c_str(), JackNoStartServer, &jackstat);
79 client = jack_client_open(client_name.c_str(), JackNoStartServer, &jackstat);
7580 #endif
7681 // ----- only start the insert gxjack.client when the amp gxjack.client is true
77 if (gxjack.client) {
78 gxjack.client_insert = jack_client_open(client_insert_name.c_str(),
82 if (client) {
83 client_insert = jack_client_open(client_insert_name.c_str(),
7984 JackNoStartServer, &jackstat);
8085 }
81 if (gxjack.client == 0) {
86
87 if (client == 0) {
8288 // skip useless message
8389 // gx_print_warning("Jack Init", "not yet a jack gxjack.client");
8490
8591 // if jackd is running, let's call ourselves again
86 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::SYSTEM_OK) {
92 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::sysvar.SYSTEM_OK) {
8793 gx_system::gx_print_warning(_("Jack Init"),
8894 _("jackd OK, trying to be a gxjack.client"));
8995 usleep(500000);
94100 if (gx_start_jack_dialog()) {
95101 usleep(500000);
96102 // so let's try to be a jack gxjack.client again
97 gxjack.client = jack_client_open(client_name.c_str(), JackNoStartServer,
103 client = jack_client_open(client_name.c_str(), JackNoStartServer,
98104 &jackstat);
99 gxjack.client_insert = jack_client_open(client_insert_name.c_str(),
105 client_insert = jack_client_open(client_insert_name.c_str(),
100106 JackNoStartServer, &jackstat);
101107
102 if (!gxjack.client) {
108 if (!client) {
103109 gx_system::gx_print_error(_("main"),
104110 string(_("I really tried to get jack up and running, sorry ... ")));
105111 return false;
114120
115121 // ----------------------------------
116122 jack_is_down = false;
117 gxjack.is_rt = jack_is_realtime(gxjack.client);
123 is_rt = jack_is_realtime(gxjack.client);
118124
119125 // it is maybe not the 1st gx_head instance ?
120126 if (jackstat & JackNameNotUnique) {
121 client_name = jack_get_client_name(gxjack.client);
122 client_insert_name = jack_get_client_name(gxjack.client_insert);
127 client_name = jack_get_client_name(client);
128 client_insert_name = jack_get_client_name(client_insert);
123129 assert(client_name.substr(0, 11) == "gx_head_amp");
124130 client_instance = client_name.substr(0, 8) + client_name.substr(12);
125131 }
126132
127 gxjack.jack_sr = jack_get_sample_rate(gxjack.client); // jack sample rate
133 jack_sr = jack_get_sample_rate(client); // jack sample rate
128134 ostringstream s;
129 s << _("The jack sample rate is ") << gxjack.jack_sr << _("/sec");
135 s << _("The jack sample rate is ") << jack_sr << _("/sec");
130136 gx_system::gx_print_info(_("Jack init"), s.str().c_str());
131137
132 gxjack.jack_bs = jack_get_buffer_size(gxjack.client); // jack buffer size
138 jack_bs = jack_get_buffer_size(client); // jack buffer size
133139 s.str("");
134 s << _("The jack buffer size is ") << gxjack.jack_bs << _("/frames ... ");
140 s << _("The jack buffer size is ") << jack_bs << _("/frames ... ");
135141
136142 gx_system::gx_print_info(_("Jack init"), s.str());
137143
140146 string window_name = "gx_head";
141147 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), window_name.c_str());
142148 }
149 gx_jack::_jackbuffer_ptr = new JackBuffer;
143150 if (jack_is_fresh) sleep(8);
144151 return true;
145152 }
176183 const char** port = jack_port_get_connections(gxjack.input_ports[0]);
177184 if (port) { // might be 0 (e.g. due to race conditions)
178185
179 NO_CONNECTION = 0;
186 gxjack.NO_CONNECTION = 0;
180187 free(port);
181188 } else {
182 NO_CONNECTION = 1;
189 gxjack.NO_CONNECTION = 1;
183190 }
184191 }
185192
186193
187194 // ----- set gxjack.client callbacks and activate gxjack.client
188195 // Note: to be called after gx_engine::gx_engine_init()
189 void gx_jack_callbacks_and_activate() {
196 void GxJack::gx_jack_callbacks_and_activate() {
190197 // ----- set the jack callbacks
191 jack_set_xrun_callback(gxjack.client, gx_jack_xrun_callback, NULL);
192 jack_set_sample_rate_callback(gxjack.client, gx_jack_srate_callback, 0);
193 jack_on_shutdown(gxjack.client, gx_jack_shutdown_callback, NULL);
194 jack_set_buffer_size_callback(gxjack.client, gx_jack_buffersize_callback, 0);
195 jack_set_process_callback(gxjack.client, gx_jack_process, 0);
196 jack_set_process_callback(gxjack.client_insert, gx_jack_insert_process, 0);
197 jack_set_port_registration_callback(gxjack.client, gx_jack_portreg_callback, 0);
198 jack_set_port_connect_callback(gxjack.client, gx_jack_portconn_callback, 0);
198 jack_set_xrun_callback(client, gxjack.gx_jack_xrun_callback, NULL);
199 jack_set_sample_rate_callback(client, gxjack.gx_jack_srate_callback, 0);
200 jack_on_shutdown(client, gxjack.gx_jack_shutdown_callback, NULL);
201 jack_set_buffer_size_callback(client, gxjack.gx_jack_buffersize_callback, 0);
202 jack_set_process_callback(client, gxjack.gx_jack_process, 0);
203 jack_set_process_callback(client_insert, gxjack.gx_jack_insert_process, 0);
204 jack_set_port_registration_callback(client, gxjack.gx_jack_portreg_callback, 0);
205 jack_set_port_connect_callback(client, gx_jack_portconn_callback, 0);
199206 #ifdef HAVE_JACK_SESSION
200207 if (jack_set_session_callback) {
201 jack_set_session_callback(gxjack.client, gx_jack_session_callback, 0);
208 jack_set_session_callback(client, gxjack.gx_jack_session_callback, 0);
202209 }
203210 #endif
204211
205212 // ----- register the midi input channel
206 gxjack.midi_input_port =
207 jack_port_register(gxjack.client, "midi_in_1", JACK_DEFAULT_MIDI_TYPE,
213 midi_input_port =
214 jack_port_register(client, "midi_in_1", JACK_DEFAULT_MIDI_TYPE,
208215 JackPortIsInput, 0);
209216
210217 // ----- register the input channel
211 gxjack.input_ports[0] =
212 jack_port_register(gxjack.client, "in_0", JACK_DEFAULT_AUDIO_TYPE,
218 input_ports[0] =
219 jack_port_register(client, "in_0", JACK_DEFAULT_AUDIO_TYPE,
213220 JackPortIsInput, 0);
214 gxjack.input_ports[1] =
215 jack_port_register(gxjack.client_insert, "in_0", JACK_DEFAULT_AUDIO_TYPE,
221 input_ports[1] =
222 jack_port_register(client_insert, "in_0", JACK_DEFAULT_AUDIO_TYPE,
216223 JackPortIsInput, 0);
217224
218225 // ----- register the midi output channel
219 gxjack.midi_output_ports =
220 jack_port_register(gxjack.client, "midi_out_1", JACK_DEFAULT_MIDI_TYPE,
226 midi_output_ports =
227 jack_port_register(client, "midi_out_1", JACK_DEFAULT_MIDI_TYPE,
221228 JackPortIsOutput, 0);
222229
223230 // ----- register the audio output channels
224231 for (int i = 0; i < 1; i++) {
225232 ostringstream buf;
226233 buf << "out_" << i;
227 gxjack.output_ports[i] =
228 jack_port_register(gxjack.client, buf.str().c_str(),
234 output_ports[i] =
235 jack_port_register(client, buf.str().c_str(),
229236 JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
230237 }
231238 // ----- register the audio fx output channels
232239 for (int i = 2; i < 4; i++) {
233240 ostringstream buf;
234241 buf << "out_" << i-2;
235 gxjack.output_ports[i] =
236 jack_port_register(gxjack.client_insert, buf.str().c_str(),
242 output_ports[i] =
243 jack_port_register(client_insert, buf.str().c_str(),
237244 JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
238245 }
239246
240247 // ----- ready to go
241 if (jack_activate(gxjack.client)) {
248 if (jack_activate(client)) {
242249 gx_system::gx_print_error(_("Jack Activation"),
243250 string(_("Can't activate JACK gxjack.client")));
244251 gx_system::gx_clean_exit(NULL, NULL);
245252 }
246 if (jack_activate(gxjack.client_insert)) {
253 if (jack_activate(client_insert)) {
247254 gx_system::gx_print_error(_("Jack Activation"),
248255 string(_("Can't activate JACK gxjack.client")));
249256 gx_system::gx_clean_exit(NULL, NULL);
252259
253260 static gboolean gx_engine_restart(gpointer data) {
254261 usleep(5);
255 gx_engine::checky = gx_engine::kEngineOn;
262 gx_engine::audio.checky = gx_engine::kEngineOn;
256263 return false;
257264 }
258265
259266 // ----- connect ports if we know them
260 void gx_jack_init_port_connection(const string* optvar) {
267 void GxJack::gx_jack_init_port_connection(const string* optvar) {
261268 // set engine off for one GTK thread cycle to avoid Xrun at startup
262 gx_gui::g_threads[4] = g_idle_add_full(G_PRIORITY_HIGH_IDLE+20, gx_engine_restart,
269 gx_engine::audio.checky = gx_engine::kEngineOff;
270 gx_gui::guivar.g_threads[4] = g_idle_add_full(G_PRIORITY_HIGH_IDLE+20, gx_engine_restart,
263271 NULL, NULL);
264 gx_engine::checky = gx_engine::kEngineOff;
265272
266273 // set autoconnect capture to user capture port
267274 if (!optvar[JACK_INP].empty()) {
268 jack_connect(gxjack.client, optvar[JACK_INP].c_str(),
269 jack_port_name(gxjack.input_ports[0]));
275 jack_connect(client, optvar[JACK_INP].c_str(),
276 jack_port_name(input_ports[0]));
270277 } else {
271278 list<string>& l = gx_system::jack_connection_lists[kAudioInput];
272279 for (list<string>::iterator i = l.begin(); i != l.end(); i++) {
273 jack_connect(gxjack.client, i->c_str(), jack_port_name(gxjack.input_ports[0]));
280 jack_connect(client, i->c_str(), jack_port_name(input_ports[0]));
274281 }
275282 }
276283
277284 // set autoconnect midi to user midi port
278285 if (gxjack.midi_input_port && !optvar[JACK_MIDI].empty()) {
279 jack_connect(gxjack.client, optvar[JACK_MIDI].c_str(),
280 jack_port_name(gxjack.midi_input_port));
286 jack_connect(client, optvar[JACK_MIDI].c_str(),
287 jack_port_name(midi_input_port));
281288 } else {
282289 list<string>& l = gx_system::jack_connection_lists[kMidiInput];
283290 for (list<string>::iterator i = l.begin(); i != l.end(); i++) {
284 jack_connect(gxjack.client, i->c_str(), jack_port_name(gxjack.midi_input_port));
291 jack_connect(client, i->c_str(), jack_port_name(midi_input_port));
285292 }
286293 }
287294
289296 if (optvar[JACK_OUT1].empty() && optvar[JACK_OUT2].empty()) {
290297 list<string>& l1 = gx_system::jack_connection_lists[kAudioOutput1];
291298 for (list<string>::iterator i = l1.begin(); i != l1.end(); i++) {
292 jack_connect(gxjack.client_insert, jack_port_name(gxjack.output_ports[2]), i->c_str());
299 jack_connect(client_insert, jack_port_name(output_ports[2]), i->c_str());
293300 }
294301 list<string>& l2 = gx_system::jack_connection_lists[kAudioOutput2];
295302 for (list<string>::iterator i = l2.begin(); i != l2.end(); i++) {
296 jack_connect(gxjack.client_insert, jack_port_name(gxjack.output_ports[3]), i->c_str());
303 jack_connect(client_insert, jack_port_name(output_ports[3]), i->c_str());
297304 }
298305 } else {
299306 int idx = JACK_OUT1;
300307 for (int i = 2; i < 4; i++) {
301308 if (!optvar[idx].empty()) {
302 jack_connect(gxjack.client_insert,
303 jack_port_name(gxjack.output_ports[i]), optvar[idx].c_str());
309 jack_connect(client_insert,
310 jack_port_name(output_ports[i]), optvar[idx].c_str());
304311 }
305312 idx++;
306313 }
309316 // autoconnect midi output port
310317 list<string>& lmo = gx_system::jack_connection_lists[kMidiOutput];
311318 for (list<string>::iterator i = lmo.begin(); i != lmo.end(); i++) {
312 jack_connect(gxjack.client, jack_port_name(gxjack.midi_output_ports), i->c_str());
319 jack_connect(client, jack_port_name(midi_output_ports), i->c_str());
313320 }
314321
315322 // autoconnect to insert ports
317324 list<string>& lins_out = gx_system::jack_connection_lists[kAudioInsertOut];
318325 bool ifound = false, ofound = false;
319326 for (list<string>::iterator i = lins_in.begin(); i != lins_in.end(); i++) {
320 int rc = jack_connect(gxjack.client_insert, i->c_str(),
321 jack_port_name(gxjack.input_ports[1]));
327 int rc = jack_connect(client_insert, i->c_str(),
328 jack_port_name(input_ports[1]));
322329 if (rc == 0 || rc == EEXIST) {
323330 ifound = true;
324331 }
325332 }
326333 for (list<string>::iterator i = lins_out.begin(); i != lins_out.end(); i++) {
327 int rc = jack_connect(gxjack.client, jack_port_name(gxjack.output_ports[0]), i->c_str());
334 int rc = jack_connect(client, jack_port_name(output_ports[0]), i->c_str());
328335 if (rc == 0 || rc == EEXIST) {
329336 ofound = true;
330337 }
331338 }
332339 if (!ifound || !ofound) {
333 jack_connect(gxjack.client_insert, jack_port_name(gxjack.output_ports[0]),
340 jack_connect(client_insert, jack_port_name(output_ports[0]),
334341 (client_insert_name+":in_0").c_str());
335342 }
336343 }
337344
338345 // ----- pop up a dialog for starting jack
339 bool gx_start_jack_dialog() {
346 bool GxJack::gx_start_jack_dialog() {
340347 // --- run dialog and check response
341348 const guint nchoices = 3;
342349
386393
387394
388395 // ----start jack if possible
389 bool gx_start_jack(void* arg) {
396 bool GxJack::gx_start_jack(void* arg) {
390397 // first, let's try via qjackctl
391 if (gx_system::gx_system_call("which", "qjackctl", true) == gx_system::SYSTEM_OK) {
392 if (gx_system::gx_system_call("qjackctl", "--start", true, true) == gx_system::SYSTEM_OK) {
398 if (gx_system::gx_system_call("which", "qjackctl", true) == gx_system::sysvar.SYSTEM_OK) {
399 if (gx_system::gx_system_call("qjackctl", "--start", true, true) == gx_system::sysvar.SYSTEM_OK) {
393400 sleep(5);
394401
395402 // let's check it is really running
396 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::SYSTEM_OK) {
403 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::sysvar.SYSTEM_OK) {
397404 return true;
398405 }
399406 }
401408
402409 // qjackctl not found or not started, let's try .jackdrc
403410 string jackdrc = "$HOME/.jackdrc";
404 if (gx_system::gx_system_call("ls", jackdrc.c_str(), true, false) == gx_system::SYSTEM_OK) {
411 if (gx_system::gx_system_call("ls", jackdrc.c_str(), true, false) == gx_system::sysvar.SYSTEM_OK) {
405412 // open it
406413 jackdrc = string(getenv("HOME")) + string("/") + ".jackdrc";
407414 string cmdline = "";
416423 // launch jackd
417424 if (!cmdline.empty())
418425 if (gx_system::gx_system_call(cmdline.c_str(), "", true, true) ==
419 gx_system::SYSTEM_OK) {
426 gx_system::sysvar.SYSTEM_OK) {
420427
421428 sleep(2);
422429
423430 // let's check it is really running
424 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::SYSTEM_OK) {
431 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::sysvar.SYSTEM_OK) {
425432 return true;
426433 }
427434 }
439446 }
440447
441448 // ---- Jack server connection / disconnection
442 void gx_jack_connection(GtkCheckMenuItem *menuitem, gpointer arg) {
449 void GxJack::gx_jack_connection(GtkCheckMenuItem *menuitem, gpointer arg) {
443450 if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)) == TRUE) {
444451 if (!gxjack.client) {
445452 string optvar[NUM_SHELL_VAR];
446 gx_system::gx_assign_shell_var(gx_system::shell_var_name[JACK_INP], optvar[JACK_INP]);
447 gx_system::gx_assign_shell_var(gx_system::shell_var_name[JACK_MIDI], optvar[JACK_MIDI]);
448 gx_system::gx_assign_shell_var(gx_system::shell_var_name[JACK_OUT1], optvar[JACK_OUT1]);
449 gx_system::gx_assign_shell_var(gx_system::shell_var_name[JACK_OUT2], optvar[JACK_OUT2]);
450 gx_system::gx_assign_shell_var(gx_system::shell_var_name[JACK_UUID], optvar[JACK_UUID]);
451
452 if (gx_jack_init(optvar)) {
453 gx_system::gx_assign_shell_var(gx_system::sysvar.shell_var_name[JACK_INP], optvar[JACK_INP]);
454 gx_system::gx_assign_shell_var(gx_system::sysvar.shell_var_name[JACK_MIDI], optvar[JACK_MIDI]);
455 gx_system::gx_assign_shell_var(gx_system::sysvar.shell_var_name[JACK_OUT1], optvar[JACK_OUT1]);
456 gx_system::gx_assign_shell_var(gx_system::sysvar.shell_var_name[JACK_OUT2], optvar[JACK_OUT2]);
457 gx_system::gx_assign_shell_var(gx_system::sysvar.shell_var_name[JACK_UUID], optvar[JACK_UUID]);
458
459 if (gxjack.gx_jack_init(optvar)) {
453460
454461 // initialize gx_head engine if necessary
455 if (!gx_engine::initialized) {
462 if (!gx_engine::audio.initialized) {
456463 gx_engine::gx_engine_init(optvar);
457464 }
458 gx_jack_callbacks_and_activate();
459 gx_jack_init_port_connection(optvar);
465 gxjack.gx_jack_callbacks_and_activate();
466 gxjack.gx_jack_init_port_connection(optvar);
460467
461468 // refresh latency check menu
462469 gx_gui::GxMainInterface* gui = gx_gui::GxMainInterface::instance();
464471 if (wd) {
465472 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wd), TRUE);
466473 }
467 if (!gx_engine::pt_initialized) {
474 if (!gx_engine::pitch_tracker.pt_initialized) {
468475 sleep(5);
469476 // -------- pitch tracker (needs jack thread running) -------------
470477 gx_engine::pitch_tracker.init();
477484 gtk_widget_show(gx_gui::gw.gx_jackd_on_image);
478485 gtk_widget_hide(gx_gui::gw.gx_jackd_off_image);
479486 }
480 jack_is_exit = false;
487 gxjack.jack_is_exit = false;
481488
482489 gx_system::gx_print_info(_("Jack Server"), _("Connected to Jack Server"));
483490 }
484491 } else {
485 gx_jack_cleanup();
492 gxjack.gx_jack_cleanup();
486493
487494 // we bring down jack capture and meterbridge
488495 gx_child_process::Meterbridge::stop();
494501 }
495502
496503 // engine buffers no longer ready
497 gx_engine::buffers_ready = false;
504 gx_engine::audio.buffers_ready = false;
498505
499506 gx_system::gx_print_warning(_("Jack Server"), _("Disconnected from Jack Server"));
500507 }
502509 }
503510
504511 // ----jack latency change
505 void gx_set_jack_buffer_size(GtkCheckMenuItem* menuitem, gpointer arg) {
512 void GxJack::gx_set_jack_buffer_size(GtkCheckMenuItem* menuitem, gpointer arg) {
506513 // are we a proper jack gxjack.client ?
507514 if (!gxjack.client) {
508515 gx_system::gx_print_error(
531538 GxJackLatencyChange change_latency = kChangeLatency;
532539
533540 // if user still wants to be given a choice, let's trigger dialog
534 if (gx_engine::fwarn == 0.0)
541 if (gx_engine::audio.fwarn == 0.0)
535542 change_latency = (GxJackLatencyChange)gx_gui::gx_wait_latency_warn();
536543
537544 // let's see
552559 }
553560
554561 // -----Function that cleans the jack stuff on shutdown
555 void gx_jack_cleanup() {
556 if (gxjack.client && !jack_is_down) {
562 void GxJack::gx_jack_cleanup() {
563 if (client && !jack_is_down) {
557564 jack_is_exit = true;
565 jack_deactivate(client);
566 jack_deactivate(client_insert);
558567 // disable input ports
559 jack_port_unregister(gxjack.client, gxjack.input_ports[0]);
560 jack_port_unregister(gxjack.client_insert, gxjack.input_ports[1]);
568 jack_port_unregister(client, input_ports[0]);
569 jack_port_unregister(client_insert, input_ports[1]);
561570 if (gxjack.midi_input_port != NULL) {
562 jack_port_unregister(gxjack.client, gxjack.midi_input_port);
571 jack_port_unregister(client, midi_input_port);
563572 }
564573 for (int i = 0; i < 1; i++) {
565 jack_port_unregister(gxjack.client, gxjack.output_ports[i]);
574 jack_port_unregister(client, output_ports[i]);
566575 }
567576 for (int i = 2; i < 4; i++) {
568 jack_port_unregister(gxjack.client_insert, gxjack.output_ports[i]);
577 jack_port_unregister(client_insert, output_ports[i]);
569578 }
570579 if (gxjack.midi_output_ports != NULL) {
571 jack_port_unregister(gxjack.client, gxjack.midi_output_ports);
572 }
573
574 jack_deactivate(gxjack.client);
575 jack_client_close(gxjack.client);
576 gxjack.client = NULL;
577 jack_deactivate(gxjack.client_insert);
578 jack_client_close(gxjack.client_insert);
579 gxjack.client_insert = NULL;
580 jack_port_unregister(client, midi_output_ports);
581 }
582
583 jack_client_close(client);
584 gxjack.client = 0;
585
586 jack_client_close(client_insert);
587 client_insert = 0;
580588 }
581589 }
582590
583591 // ----jack sample rate change callback
584 int gx_jack_srate_callback(jack_nframes_t frames, void* arg) {
592 int GxJack::gx_jack_srate_callback(jack_nframes_t frames, void* arg) {
585593 /* Note: just reporting log for now */
586594
587595 /* ostringstream s;
592600 }
593601
594602 // ---- jack shutdown callback in case jackd shuts down on us
595 void gx_jack_shutdown_callback(void *arg) {
603 void GxJack::gx_jack_shutdown_callback(void *arg) {
596604 // global var to let all know that jack is down
597 jack_is_down = true;
605 gxjack.jack_is_down = true;
598606 // helper funktion to start gx_survive_jack_shutdown thread
599607 gx_gui::gx_jack_is_down();
600608 }
601609
602610 // ---- jack xrun callback
603 int gx_jack_xrun_callback(void* arg) {
611 int GxJack::gx_jack_xrun_callback(void* arg) {
604612 gxjack.xdel = jack_get_xrun_delayed_usecs(gxjack.client);
605613 gx_gui::gx_jack_report_xrun();
606614 return 0;
607615 }
608616
609617 // ---- jack buffer size change callback
610 int gx_jack_buffersize_callback(jack_nframes_t nframes, void* arg) {
611 gx_engine::GxEngineState estate = gx_engine::checky;
618 int GxJack::gx_jack_buffersize_callback(jack_nframes_t nframes, void* arg) {
619 gx_engine::GxEngineState estate = gx_engine::audio.checky;
612620
613621 // turn off engine
614 // Note: simply changing checky is enough to "stop" processing
622 // Note: simply changing audio.checky is enough to "stop" processing
615623 // incoming jack buffers. The mydsp::compute method is owned by
616624 // the jack audio thread. It always runs as long as jack runs
617625 // independently of the non-RT GUI thread. The value of
618 // checky is checked at each jack cycle in mydsp::compute
626 // audio.checky is checked at each jack cycle in mydsp::compute
619627 // so changing it here affects the behavior of mydsp::compute
620628 // immediately during the jack_processing of jack cycles.
621629
622630 if (estate != gx_engine::kEngineOff)
623 gx_engine::checky = gx_engine::kEngineOff;
631 gx_engine::audio.checky = gx_engine::kEngineOff;
624632
625633 gxjack.jack_bs = nframes;
626634
627635
628 if (gx_engine::checkfreq) delete[] gx_engine::checkfreq;
629 if (gx_engine::get_frame) delete[] gx_engine::get_frame;
630 if (gx_engine::get_frame1) delete[] gx_engine::get_frame1;
631 if (gx_engine::oversample) delete[] gx_engine::oversample;
632 if (gx_engine::result) delete[] gx_engine::result;
633
634 gx_engine::get_frame = new float[gxjack.jack_bs];
635 (void)memset(gx_engine::get_frame, 0, sizeof(float)*gxjack.jack_bs);
636
637 gx_engine::get_frame1 = new float[gxjack.jack_bs];
638 (void)memset(gx_engine::get_frame1, 0, sizeof(float)*gxjack.jack_bs);
639
640 gx_engine::checkfreq = new float[gxjack.jack_bs];
641 (void)memset(gx_engine::checkfreq, 0, sizeof(float)*gxjack.jack_bs);
642
643 gx_engine::oversample = new float[gxjack.jack_bs*MAX_UPSAMPLE];
644 (void)memset(gx_engine::oversample, 0, sizeof(float)*gxjack.jack_bs*MAX_UPSAMPLE);
645
646 gx_engine::result = new float[gxjack.jack_bs+46];
647 (void)memset(gx_engine::result, 0, sizeof(float)*gxjack.jack_bs+46);
636 if (gx_engine::audio.checkfreq) delete[] gx_engine::audio.checkfreq;
637 if (gx_engine::audio.get_frame) delete[] gx_engine::audio.get_frame;
638 if (gx_engine::audio.get_frame1) delete[] gx_engine::audio.get_frame1;
639 if (gx_engine::audio.oversample) delete[] gx_engine::audio.oversample;
640 if (gx_engine::audio.result) delete[] gx_engine::audio.result;
641
642 gx_engine::audio.get_frame = new float[gxjack.jack_bs];
643 (void)memset(gx_engine::audio.get_frame, 0, sizeof(float)*gxjack.jack_bs);
644
645 gx_engine::audio.get_frame1 = new float[gxjack.jack_bs];
646 (void)memset(gx_engine::audio.get_frame1, 0, sizeof(float)*gxjack.jack_bs);
647
648 gx_engine::audio.checkfreq = new float[gxjack.jack_bs];
649 (void)memset(gx_engine::audio.checkfreq, 0, sizeof(float)*gxjack.jack_bs);
650
651 gx_engine::audio.oversample = new float[gxjack.jack_bs*MAX_UPSAMPLE];
652 (void)memset(gx_engine::audio.oversample, 0, sizeof(float)*gxjack.jack_bs*MAX_UPSAMPLE);
653
654 gx_engine::audio.result = new float[gxjack.jack_bs+46];
655 (void)memset(gx_engine::audio.result, 0, sizeof(float)*gxjack.jack_bs+46);
648656
649657 gx_gui::GxMainInterface::instance()->set_waveview_buffer();
650658 if (gx_engine::cab_conv.is_runnable()) {
664672 }
665673
666674 // restore previous state
667 gx_engine::checky = estate;
675 gx_engine::audio.checky = estate;
668676 // return 0 to jack
669677 return 0;
670678 }
671679
672680 // ---- jack midi control input processing
673 int gx_jack_midi_input_process(jack_nframes_t nframes, void *arg) {
681 int GxJack::gx_jack_midi_input_process(jack_nframes_t nframes, void *arg) {
674682 if (gxjack.midi_input_port != NULL) {
675 midi_input_port_buf = jack_port_get_buffer(gxjack.midi_input_port, nframes);
676 gx_engine::compute_midi_in(midi_input_port_buf);
683 gxjack.midi_input_port_buf = jack_port_get_buffer(gxjack.midi_input_port, nframes);
684 gx_engine::compute_midi_in(gxjack.midi_input_port_buf);
677685 }
678686 return 0;
679687 }
680688
681689 // ---- jack midi processing
682690
683 int gx_jack_midi_process(jack_nframes_t nframes, void *arg) {
691 int GxJack::gx_jack_midi_process(jack_nframes_t nframes, void *arg) {
684692 if (gxjack.midi_output_ports != NULL) {
685693 AVOIDDENORMALS;
686694
687 midi_port_buf = jack_port_get_buffer(gxjack.midi_output_ports, nframes);
688 jack_midi_clear_buffer(midi_port_buf);
689
690 if ((gx_engine::isMidiOn() == true) || (gx_gui::showwave == 1))
691 gxjack.jcpu_load = jack_cpu_load(gxjack.client);
695 gxjack.midi_port_buf = jack_port_get_buffer(gxjack.midi_output_ports, nframes);
696 jack_midi_clear_buffer(gxjack.midi_port_buf);
697
698 if ((gx_engine::isMidiOn() == true) || (gx_gui::guivar.showwave == 1))
699 jcpu_load = jack_cpu_load(client);
692700
693701 gx_engine::compute_midi(nframes);
694702 }
696704 }
697705
698706 // ----- main jack process method
699 int gx_jack_process(jack_nframes_t nframes, void *arg) {
707 int GxJack::gx_jack_process(jack_nframes_t nframes, void *arg) {
700708 int val;
701709 gx_system::measure_start();
702710 if (sem_getvalue(&jack_sync_sem, &val) == 0 && val == 0) {
703711 sem_post(&jack_sync_sem);
704712 }
705 if (!jack_is_exit) {
713 if (!gxjack.jack_is_exit) {
706714 AVOIDDENORMALS;
707715
708716 // retrieve buffers at jack ports
709 float *input = static_cast<float *>
717 _jackbuffer_ptr->input = static_cast<float *>
710718 (jack_port_get_buffer(gxjack.input_ports[0], nframes));
711 float *output0 = static_cast<float *>
719 _jackbuffer_ptr->output0 = static_cast<float *>
712720 (jack_port_get_buffer(gxjack.output_ports[0], nframes));
713721
714722 // gx_head DSP computing
715 gx_engine::compute(nframes, input, output0);
723 gx_engine::compute(nframes, _jackbuffer_ptr->input, _jackbuffer_ptr->output0);
716724
717725 // ready to go for e.g. level display
718 gx_engine::buffers_ready = true;
726 gx_engine::audio.buffers_ready = true;
719727
720728 // midi input processing
721 gx_jack_midi_input_process(nframes, 0);
729 gxjack.gx_jack_midi_input_process(nframes, 0);
722730
723731 // midi processing
724732
725 gx_jack_midi_process(nframes, 0);
733 gxjack.gx_jack_midi_process(nframes, 0);
726734
727735
728736 // some info display
729 if (gx_gui::showwave == 1) {
737 if (gx_gui::guivar.showwave == 1) {
730738 gxjack.time_is = jack_frame_time(gxjack.client);
731739 }
732740 } else {
733 gx_engine::buffers_ready = false;
741 gx_engine::audio.buffers_ready = false;
734742 }
735743 // measure_stop();
736744 return 0;
737745 }
738746
739747 // ----- main jack process method
740 int gx_jack_insert_process(jack_nframes_t nframes, void *arg) {
748 int GxJack::gx_jack_insert_process(jack_nframes_t nframes, void *arg) {
741749 // measure_start();
742 if (!jack_is_exit) {
750 if (!gxjack.jack_is_exit) {
743751 AVOIDDENORMALS;
744752
745 float *input1 = static_cast<float *>
753 _jackbuffer_ptr->input1 = static_cast<float *>
746754 (jack_port_get_buffer(gxjack.input_ports[1], nframes));
747 float *output2 = static_cast<float *>
755 _jackbuffer_ptr->output2 = static_cast<float *>
748756 (jack_port_get_buffer(gxjack.output_ports[2], nframes));
749 float *output3 = static_cast<float *>
757 _jackbuffer_ptr->output3 = static_cast<float *>
750758 (jack_port_get_buffer(gxjack.output_ports[3], nframes));
751759 // gx_head DSP computing
752 gx_engine::compute_insert(nframes, input1, output2, output3);
760 gx_engine::compute_insert(nframes, _jackbuffer_ptr->input1, _jackbuffer_ptr->output2, _jackbuffer_ptr->output3);
753761 }
754762 gx_system::measure_stop();
755763 return 0;
773781 }
774782
775783 // ----- fetch available jack ports other than gx_head ports
776 void gx_jack_portreg_callback(jack_port_id_t pid, int reg, void* arg) {
784 void GxJack::gx_jack_portreg_callback(jack_port_id_t pid, int reg, void* arg) {
777785 if (!gxjack.client) {
778786 return;
779787 }
802810 jack_session_reply(gxjack.client, event);
803811
804812 if (event->type == JackSessionSaveAndQuit) {
805 gx_system::is_session = true;
806 gx_system::gx_clean_exit(NULL, NULL);
807 jack_session_event_free(event);
813 gx_system::sysvar.is_session = true;
814 gx_system::gx_clean_exit(NULL, event);
808815 exit(0);
809816 }
810817 jack_session_event_free(event);
811818 return 0;
812819 }
813820
814 void gx_jack_session_callback(jack_session_event_t *event, void *arg) {
821 void GxJack::gx_jack_session_callback(jack_session_event_t *event, void *arg) {
815822 gtk_idle_add(gx_jack_session_callback_helper, reinterpret_cast<void *>(event));
816823 }
817824 #endif
283283 Glib::RefPtr<Gtk::Builder> load_builder(Glib::ustring name) {
284284 Glib::RefPtr<Gtk::Builder> bld = Gtk::Builder::create();
285285 try {
286 bld->add_from_file(gx_system::gx_builder_dir+name);
286 bld->add_from_file(gx_system::sysvar.gx_builder_dir+name);
287287 } catch(const Glib::FileError& ex) {
288288 gx_system::gx_print_error("FileError", ex.what());
289289 } catch(const Gtk::BuilderError& ex) {
661661 &IRWindow::on_combo_changed) );
662662 }
663663
664
664665 // reload the treelist for the combobox
665666 void IRWindow::on_enumerate() {
666667 on_remove_tree();
682683 file_names.push_back(file_info->get_name());
683684 }
684685 }
686 // sort the vector
687 std::sort(file_names.begin(), file_names.end());
685688 // clear the TreeView
686689 model->clear();
687690 // now populate the TreeView
0
1 /*
2 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
3 * Copyright (C) 2011 Pete Shorthose
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 * ---------------------------------------------------------------------------
19 *
20 * This is the gx_head system interface
21 *
22 * ----------------------------------------------------------------------------
23 */
24
25 #include "guitarix.h" // NOLINT
26
27 #include <sys/stat.h> // NOLINT
28 #include <jack/jack.h> // NOLINT
29 #include <glibmm/optioncontext.h> // NOLINT
30 #include <glibmm/i18n.h> // NOLINT
31
32 #include <cstring> // NOLINT
33 #include <string> // NOLINT
34 #include <fstream> // NOLINT
35 #include <iostream> // NOLINT
36 #include <iomanip> // NOLINT
37 #include <list> // NOLINT
38 #include <vector> // NOLINT
39
40 namespace gx_system {
41
42
43
44 /****************************************************************
45 ** JsonWriter
46 */
47
48 JsonWriter::JsonWriter(ostream &o)
49 : os(o),
50 first(true),
51 deferred_nl(false),
52 indent("") {}
53
54 inline void JsonWriter::komma() {
55 if (first)
56 first = false;
57 else if (!deferred_nl)
58 os << ", ";
59 else
60 os << ",";
61 flush();
62 }
63
64 inline void JsonWriter::space() {
65 if (first)
66 first = false;
67 else if (!deferred_nl)
68 os << " ";
69 flush();
70 }
71
72 inline void JsonWriter::iplus() {
73 indent += " ";
74 }
75
76 inline void JsonWriter::iminus() {
77 if (!indent.empty()) {
78 indent = indent.substr(0, indent.size() - 2);
79 }
80 }
81
82 void JsonWriter::write(float v, bool nl) {
83 komma();
84 os << v;
85 snl(nl);
86 }
87
88 void JsonWriter::write(double v, bool nl) {
89 komma();
90 os << v;
91 snl(nl);
92 }
93
94 void JsonWriter::write(int i, bool nl) {
95 komma();
96 os << i;
97 snl(nl);
98 }
99
100 void JsonWriter::write(unsigned int i, bool nl) {
101 komma();
102 os << i;
103 snl(nl);
104 }
105
106 void JsonWriter::write_lit(string s, bool nl) {
107 komma();
108 os << s;
109 snl(nl);
110 }
111
112 void JsonWriter::write(const char* p, bool nl) {
113 komma();
114 os << '"';
115 while (*p) {
116 switch (*p) {
117 case '\\': case '"': os << '\\'; break;
118 case '\b': os << '\\'; os << 'b'; continue; // NOLINT
119 case '\f': os << '\\'; os << 'f'; continue; // NOLINT
120 case '\n': os << '\\'; os << 'n'; continue; // NOLINT
121 case '\r': os << '\\'; os << 'r'; continue; // NOLINT
122 case '\t': os << '\\'; os << 't'; continue; // NOLINT
123 }
124 os << *p++;
125 }
126 os << '"';
127 snl(nl);
128 }
129
130 void JsonWriter::begin_object(bool nl) {
131 komma();
132 os << '{';
133 snl(nl);
134 first = true;
135 iplus();
136 }
137
138 void JsonWriter::end_object(bool nl) {
139 iminus();
140 flush();
141 os << '}';
142 snl(nl);
143 }
144
145 void JsonWriter::begin_array(bool nl) {
146 komma();
147 os << '[';
148 snl(nl);
149 first = true;
150 iplus();
151 }
152
153 void JsonWriter::end_array(bool nl) {
154 iminus();
155 flush();
156 first = false;
157 os << ']';
158 snl(nl);
159 }
160
161 void JsonWriter::write_key(const char* p, bool nl) {
162 write(p, nl);
163 os << ": ";
164 first = true;
165 }
166
167 void JsonWriter::write_key(string p, bool nl) {
168 write(p, nl);
169 os << ": ";
170 first = true;
171 }
172
173 // called before output of next element
174 void JsonWriter::flush() {
175 if (deferred_nl) {
176 os << endl;
177 deferred_nl = false;
178 os << indent;
179 }
180 }
181
182
183 /****************************************************************
184 ** JsonParser
185 */
186
187 const char* JsonParser::token_names[] = {
188 "no_token", "end_token", "begin_object", "end_object",
189 "begin_array", "end_array", "value_string", "value_number",
190 "value_key" };
191
192 JsonException::JsonException(const char* desc) {
193 what_str = string("Json parse error: ") + desc;
194 }
195
196 JsonParser::JsonParser(istream& i)
197 : is(i),
198 depth(0),
199 cur_tok(no_token),
200 nl(false),
201 next_depth(0),
202 next_tok(no_token) {}
203
204 void JsonParser::throw_unexpected(token expect) {
205 ostringstream b;
206 b << "unexpected token: " << token_names[cur_tok]
207 << " (expected: " << token_names[expect] << ")"
208 << endl;
209 throw JsonException(b.str().c_str());
210 }
211
212 const char* unicode2utf8(unsigned int input) {
213 const int maskbits = 0x3F;
214 const int maskbyte = 0x80;
215 const int mask2bytes = 0xC0;
216 const int mask3bytes = 0xE0;
217 static char result[4];
218 int n = 0;
219 // 0xxxxxxx
220 if (input < 0x80) {
221 result[n++] = static_cast<char>(input);
222
223 // 110xxxxx 10xxxxxx
224 } else if (input < 0x800) {
225 result[n++] = (static_cast<char>(mask2bytes | (input >> 6)));
226 result[n++] = (static_cast<char>(maskbyte | (input & maskbits)));
227
228 // 1110xxxx 10xxxxxx 10xxxxxx
229 } else {
230 result[n++] = (static_cast<char>(mask3bytes | (input >> 12)));
231 result[n++] = (static_cast<char>(maskbyte | ((input >> 6) & maskbits)));
232 result[n++] = (static_cast<char>(maskbyte | (input & maskbits)));
233 }
234 result[n++] = '\0';
235 return result;
236 }
237
238 const char* JsonParser::readcode() {
239 int code = 0;
240 for (int i = 0; i < 4; i++) {
241 int n = is.get();
242 if (!is.good())
243 throw JsonException("eof");
244 if ('0' <= n && n <= '9')
245 n = n - '0';
246 else
247 n = 10 + (toupper(n) - 'A');
248 code = code * 16 + n;
249 }
250 return unicode2utf8(code);
251 }
252
253 string JsonParser::readstring() {
254 ostringstream os("");
255 char c;
256 do {
257 is.get(c);
258 if (!is.good())
259 return "";
260 if (c == '\\') {
261 is.get(c);
262 if (!is.good())
263 return "";
264 switch (c) {
265 case 'b': os << '\b'; break;
266 case 'f': os << '\f'; break;
267 case 'n': os << '\n'; break;
268 case 'r': os << '\r'; break;
269 case 't': os << '\t'; break;
270 case 'u': os << readcode(); break;
271 default: is.get(c); os << c; break;
272 }
273 } else if (c == '"') {
274 return os.str();
275 } else {
276 os << c;
277 }
278 } while (true);
279 }
280
281 string JsonParser::readnumber(char c) {
282 ostringstream os("");
283 do {
284 os << c;
285 c = is.peek();
286 switch (c) {
287 case '+': case '-': case '0': case '1': case '2': case '3': case '4':
288 case '5': case '6': case '7': case '8': case '9': case 'e': case 'E':
289 case '.':
290 break;
291 default:
292 return os.str();
293 }
294 is.get(c);
295 } while (is.good());
296 return "";
297 }
298
299 void JsonParser::read_next() {
300 if (next_tok == end_token)
301 return;
302 if (next_tok != no_token and next_depth == 0) {
303 next_tok = end_token;
304 return;
305 }
306 char c;
307 nl = false;
308 while (true) {
309 do {
310 is.get(c);
311 if (!is.good())
312 throw JsonException("eof");
313 if (c == '\n')
314 nl = true;
315 } while (c == ' ' || c == '\t' || c == '\r' || c == '\n');
316 switch (c) {
317 case '[': next_tok = begin_array; next_depth++; break;
318
319 case ']': next_tok = end_array; next_depth--; break;
320
321 case '{': next_tok = begin_object; next_depth++; break;
322
323 case '}': next_tok = end_object; next_depth--; break;
324
325 case ',': continue;
326
327 case '"':
328 next_str = readstring();
329 is >> c;
330 if (!is.good())
331 throw JsonException("eof");
332 if (c == ':') {
333 next_tok = value_key;
334 } else {
335 is.unget();
336 next_tok = value_string;
337 }
338 break;
339
340 case '-': case '0': case '1': case '2': case '3': case '4':
341 case '5': case '6': case '7': case '8': case '9':
342 next_str = readnumber(c);
343 next_tok = value_number;
344 break;
345
346 default:
347 throw JsonException("bad token");
348 }
349 break;
350 }
351 }
352
353 JsonParser::token JsonParser::next(token expect) {
354 if (cur_tok != end_token) {
355 if (next_tok == no_token)
356 read_next();
357 depth = next_depth;
358 cur_tok = next_tok;
359 str = next_str;
360 if (next_tok != end_token)
361 read_next();
362 }
363 if (expect != no_token)
364 check_expect(expect);
365 return cur_tok;
366 }
367
368
369 void JsonParser::copy_object(JsonWriter& jw) {
370 int curdepth = depth;
371 do {
372 switch (next()) {
373 case begin_object:
374 jw.begin_object(nl);
375 break;
376 case end_object:
377 jw.end_object(nl);
378 break;
379 case begin_array:
380 jw.begin_array(nl);
381 break;
382 case end_array:
383 jw.end_array(nl);
384 break;
385 case value_string:
386 jw.write(current_value(), nl);
387 break;
388 case value_number:
389 jw.write_lit(current_value(), nl);
390 break;
391 case value_key:
392 jw.write_key(current_value().c_str(), nl);
393 break;
394 default:
395 throw JsonException("unexpected token");
396 }
397 } while (curdepth != depth);
398 }
399
400 void JsonParser::skip_object() {
401 int curdepth = depth;
402 do {
403 if (next() == end_token) {
404 throw JsonException("unexpected eof");
405 }
406 } while (curdepth != depth);
407 }
408
409
410 /****************************************************************
411 ** loading of saving application data
412 */
413
414 static void write_parameters(JsonWriter &w, bool preset) {
415 w.begin_object(true);
416 for (gx_gui::ParamMap::iterator i = gx_gui::parameter_map.begin();
417 i != gx_gui::parameter_map.end(); i++) {
418 gx_gui::Parameter *param = i->second;
419 if ((preset and param->isInPreset()) or(!preset and !param->isInPreset())) {
420 param->writeJSON(w);
421 w.newline();
422 }
423 }
424 w.end_object(true);
425 }
426
427 static void read_parameters(JsonParser &jp, gx_gui::paramlist& plist, bool preset) {
428 jp.next(JsonParser::begin_object);
429 do {
430 jp.next(JsonParser::value_key);
431 if (!gx_gui::parameter_map.hasId(jp.current_value())) {
432 gx_print_warning(_("recall settings"),
433 _("unknown parameter: ")+jp.current_value());
434 jp.skip_object();
435 continue;
436 }
437 gx_gui::Parameter& param = gx_gui::parameter_map[jp.current_value()];
438 if (!preset and param.isInPreset()) {
439 gx_print_warning(_("recall settings"),
440 _("preset-parameter ")+param.id()+_(" in settings"));
441 jp.skip_object();
442 continue;
443 } else if (preset and !param.isInPreset()) {
444 gx_print_warning(_("recall settings"),
445 _("non preset-parameter ")+param.id()+_(" in preset"));
446 jp.skip_object();
447 continue;
448 }
449 param.readJSON_value(jp);
450 plist.push_back(&param);
451 } while (jp.peek() == JsonParser::value_key);
452 jp.next(JsonParser::end_object);
453 }
454
455 void write_preset(JsonWriter &w, bool write_midi, bool force_midi) {
456 w.begin_object(true);
457 w.write_key("engine");
458 write_parameters(w, true);
459 w.write_key("jconv");
460 gx_jconv::GxJConvSettings::instance()->writeJSON(w);
461 if (force_midi || (write_midi &&
462 gx_gui::parameter_map["system.midi_in_preset"].getSwitch().get())) {
463 w.write_key("midi_controller");
464 gx_gui::controller_map.writeJSON(w);
465 }
466 w.newline();
467 w.end_object(true);
468 }
469
470 void fixup_parameters(int major, int minor) {
471 assert(gx_gui::parameter_map.hasId("jconv.wet_dry"));
472 if (major == majorversion && minor == minorversion) {
473 return;
474 }
475 if (major == 1 && minor < 2) {
476 if (gx_gui::parameter_map.hasId("jconv.wet_dry")) {
477 gx_gui::Parameter& p = gx_gui::parameter_map["jconv.wet_dry"];
478 if (p.isFloat()) {
479 p.getFloat().convert_from_range(-1, 1);
480 }
481 }
482 }
483 }
484
485 void read_preset(JsonParser &jp, bool *has_midi, int major, int minor) {
486 gx_gui::paramlist plist;
487 if (has_midi) {
488 *has_midi = false;
489 }
490 gx_gui::MidiControllerList::controller_array *m = 0;
491 jp.next(JsonParser::begin_object);
492 do {
493 jp.next(JsonParser::value_key);
494 if (jp.current_value() == "engine") {
495 read_parameters(jp, plist, true);
496 } else if (jp.current_value() == "jconv") {
497 *gx_jconv::GxJConvSettings::instance() = gx_jconv::GxJConvSettings(jp);
498 } else if (jp.current_value() == "midi_controller") {
499 if (has_midi || gx_gui::parameter_map["system.midi_in_preset"].getSwitch().get()) {
500 m = new gx_gui::MidiControllerList::controller_array
501 (gx_gui::MidiControllerList::controller_array_size);
502 gx_gui::controller_map.readJSON(jp, *m);
503 if (has_midi) {
504 *has_midi = true;
505 }
506 } else {
507 jp.skip_object();
508 }
509 } else {
510 gx_print_warning(_("recall settings"),
511 _("unknown preset section: ") + jp.current_value());
512 }
513 } while (jp.peek() == JsonParser::value_key);
514 jp.next(JsonParser::end_object);
515 gx_gui::controller_map.remove_controlled_parameters(plist, m);
516 fixup_parameters(major, minor);
517 for (gx_gui::paramlist::iterator i = plist.begin(); i != plist.end(); i++) {
518 (*i)->setJSON_value();
519 }
520 if (m) {
521 gx_gui::controller_map.set_controller_array(*m);
522 delete m;
523 }
524 }
525
526 void writeHeader(JsonWriter& jw) {
527 jw.write("gx_head_file_version");
528 jw.begin_array();
529 jw.write(majorversion); // major format version
530 jw.write(minorversion); // minor format version
531 jw.write(GX_VERSION);
532 jw.end_array(true);
533 }
534
535 bool readHeader(JsonParser& jp, int *major, int *minor) {
536 jp.next(JsonParser::value_string);
537 if (jp.current_value() != "gx_head_file_version") {
538 throw JsonException("invalid gx_head file header");
539 }
540 jp.next(JsonParser::begin_array);
541 jp.next(JsonParser::value_number);
542 int m = jp.current_value_int();
543 if (major) {
544 *major = m;
545 }
546 jp.next(JsonParser::value_number); // minorversion
547 int n = jp.current_value_int();
548 if (minor) {
549 *minor = n;
550 }
551 jp.next(JsonParser::value_string); // gx_head version
552 jp.next(JsonParser::end_array);
553 return m == majorversion && n == minorversion;
554 }
555
556 static void write_jack_port_connections(JsonWriter& w, const char *key, jack_port_t *port) {
557 w.write_key(key);
558 w.begin_array();
559 const char** pl = jack_port_get_connections(port);
560 if (pl) {
561 for (const char **p = pl; *p; p++) {
562 w.write(*p);
563 }
564 free(pl);
565 }
566 w.end_array(true);
567 }
568
569 void write_jack_connections(JsonWriter& w) {
570 w.begin_object(true);
571 write_jack_port_connections(w, "input", gx_jack::gxjack.input_ports[0]);
572 write_jack_port_connections(w, "output1", gx_jack::gxjack.output_ports[2]);
573 write_jack_port_connections(w, "output2", gx_jack::gxjack.output_ports[3]);
574 write_jack_port_connections(w, "midi_input", gx_jack::gxjack.midi_input_port);
575 write_jack_port_connections(w, "midi_output", gx_jack::gxjack.midi_output_ports);
576 write_jack_port_connections(w, "insert_out", gx_jack::gxjack.output_ports[0]);
577 write_jack_port_connections(w, "insert_in", gx_jack::gxjack.input_ports[1]);
578 w.end_object(true);
579 }
580
581 // -- save state including current preset data
582 bool saveStateToFile(const string &filename) {
583 gx_print_info(_("wrinting to "), filename.c_str());
584 string tmpfile = filename + "_tmp";
585 ofstream f(tmpfile.c_str());
586 JsonWriter w(f);
587
588 w.begin_array();
589 writeHeader(w);
590
591 w.write("settings");
592 write_parameters(w, false);
593
594 w.write("midi_controller");
595 gx_gui::controller_map.writeJSON(w);
596
597 w.write("midi_ctrl_names");
598 gx_gui::midi_std_ctr.writeJSON(w);
599
600 w.write("current_preset");
601 write_preset(w, false);
602
603 w.write("jack_connections");
604 write_jack_connections(w);
605
606 w.newline();
607 w.end_array(true);
608 w.close();
609 f.close();
610 if (!f.good()) {
611 return false;
612 }
613 int rc = rename(tmpfile.c_str(), filename.c_str());
614 return rc == 0;
615 }
616
617 list<string> jack_connection_lists[7];
618
619 static void read_jack_connections(JsonParser& jp) {
620 jp.next(JsonParser::begin_object);
621 while (jp.peek() == JsonParser::value_key) {
622 int i;
623 jp.next(JsonParser::value_key);
624 if (jp.current_value() == "input") {
625 i = gx_jack::gxjack.kAudioInput;
626 } else if (jp.current_value() == "output1") {
627 i = gx_jack::gxjack.kAudioOutput1;
628 } else if (jp.current_value() == "output2") {
629 i = gx_jack::gxjack.kAudioOutput2;
630 } else if (jp.current_value() == "midi_input") {
631 i = gx_jack::gxjack.kMidiInput;
632 } else if (jp.current_value() == "midi_output") {
633 i = gx_jack::gxjack.kMidiOutput;
634 } else if (jp.current_value() == "insert_out") {
635 i = gx_jack::gxjack.kAudioInsertOut;
636 } else if (jp.current_value() == "insert_in") {
637 i = gx_jack::gxjack.kAudioInsertIn;
638 } else {
639 gx_print_warning(_("recall state"),
640 _("unknown jack ports sections") + jp.current_value());
641 jp.skip_object();
642 continue;
643 }
644 jp.next(JsonParser::begin_array);
645 while (jp.peek() == JsonParser::value_string) {
646 jp.next();
647 jack_connection_lists[i].push_back(jp.current_value());
648 }
649 jp.next(JsonParser::end_array);
650 }
651 jp.next(JsonParser::end_object);
652 }
653
654 // -- recallState(filename) : load state from file
655 bool recallState(const string &filename) {
656 ifstream f(filename.c_str());
657 if (!f.good()) {
658 return false;
659 }
660 gx_gui::paramlist plist;
661 gx_gui::MidiControllerList::controller_array m
662 (gx_gui::MidiControllerList::controller_array_size);
663 gx_system::JsonParser jp(f);
664 try {
665 jp.next(JsonParser::begin_array);
666
667 int major, minor;
668 readHeader(jp, &major, &minor);
669 if (major != majorversion) {
670 if (major == 0) {
671 gx_print_info(_("recall settings"), _("loading converted state"));
672 } else {
673 stringstream s;
674 s << _("major version mismatch in ")+filename+_(": found ")
675 << major << _(", expected ") << majorversion << endl;
676 gx_print_warning(_("recall settings"), s.str());
677 }
678 }
679
680 // other sections (settings, current_preset)
681 do {
682 jp.next(JsonParser::value_string);
683 if (jp.current_value() == "settings") {
684 read_parameters(jp, plist, false);
685 } else if (jp.current_value() == "current_preset") {
686 read_preset(jp, 0, major, minor);
687 } else if (jp.current_value() == "midi_controller") {
688 gx_gui::controller_map.readJSON(jp, m);
689 } else if (jp.current_value() == "midi_ctrl_names") {
690 gx_gui::midi_std_ctr.readJSON(jp);
691 } else if (jp.current_value() == "jack_connections") {
692 read_jack_connections(jp);
693 } else {
694 gx_print_warning(_("recall settings"),
695 _("unknown section: ") + jp.current_value());
696 jp.skip_object();
697 }
698 } while (jp.peek() == JsonParser::value_string);
699 jp.next(JsonParser::end_array);
700 jp.next(JsonParser::end_token);
701 } catch(JsonException& e) {
702 gx_print_error(_("recall settings"), _("invalid settings file: ") + filename);
703 return false;
704 }
705 for (gx_gui::paramlist::iterator i = plist.begin(); i != plist.end(); i++) {
706 (*i)->setJSON_value();
707 }
708 gx_gui::controller_map.set_controller_array(m);
709 return true;
710 }
711 } /* end of gx_system namespace */
4848 signal(SIGTERM, gx_system::gx_signal_handler);
4949 signal(SIGHUP, gx_system::gx_signal_handler);
5050 signal(SIGINT, gx_system::gx_signal_handler);
51 signal(SIGABRT, gx_system::gx_signal_handler);
5152 // signal(SIGSEGV, gx_signal_handler); // no good, quits application silently
5253 }
5354
7576 gx_engine::audio.register_parameter();
7677 gx_engine::midi.register_parameter();
7778 gx_engine::register_faust_parameters();
78 gx_gui::GuiVariables guivar;
79 guivar.register_gui_parameter();
80 gx_preset::init();
79 gx_gui::guivar.register_gui_parameter();
80 gx_preset::gxpreset.init();
8181 gx_gui::parameter_map.set_init_values();
8282
8383 // ---------------------- user options handling ------------------
84 gx_system::sysvar.sysvar_init();
8485 string optvar[NUM_SHELL_VAR];
8586 gx_system::gx_process_cmdline_options(argc, argv, optvar);
8687 Gtk::Main main(argc, argv);
99100 gx_gui::GxMainInterface* gui = gx_gui::GxMainInterface::instance("gx_head");
100101 gui->setup();
101102
102
103 gx_resample::_glob_resamp->init_resampler_ref();
104 gx_jack::_jackbuffer_ptr = 0;
103105 // ---------------------- initialize jack gxjack.client ------------------
104 if (gx_jack::gx_jack_init(optvar)) {
106 if (gx_jack::gxjack.gx_jack_init(optvar)) {
105107 // -------- initialize gx_head engine --------------------------
106108 gx_engine::gx_engine_init(optvar);
107109
108110 // -------- set jack callbacks and activation -------------------
109 gx_jack::gx_jack_callbacks_and_activate();
111 gx_jack::gxjack.gx_jack_callbacks_and_activate();
110112
111113 // -------- init port connections
112 gx_jack::gx_jack_init_port_connection(optvar);
114 gx_jack::gxjack.gx_jack_init_port_connection(optvar);
113115 }
114116
115117 // ----------------------- run GTK main loop ----------------------
6767
6868 GxTBox::~GxTBox() {}
6969
70 GxTBox::GxTBox(gx_ui::GxUI& ui) {}
70 GxTBox::GxTBox(const gx_ui::GxUI& ui) {}
7171 /****************************************************************/
7272
7373 GxVBox::~GxVBox() {}
7474
75 GxVBox::GxVBox(gx_ui::GxUI& ui) {}
75 GxVBox::GxVBox(const gx_ui::GxUI& ui) {}
7676 /****************************************************************/
7777
7878 GxHBox::~GxHBox() {}
7979
80 GxHBox::GxHBox(gx_ui::GxUI& ui) {}
80 GxHBox::GxHBox(const gx_ui::GxUI& ui) {}
8181 /****************************************************************/
8282
8383 GxFixedBox::~GxFixedBox() {}
8484
85 GxFixedBox::GxFixedBox(gx_ui::GxUI& ui) {
85 GxFixedBox::GxFixedBox(const gx_ui::GxUI& ui) {
8686 m_fixed.put(m_box, 0, 0);
8787 }
8888 /****************************************************************/
9898
9999 GxEventBox::~GxEventBox() {}
100100
101 GxEventBox::GxEventBox(gx_ui::GxUI& ui) {
101 GxEventBox::GxEventBox(const gx_ui::GxUI& ui) {
102102 m_eventbox.add(m_box);
103103 m_fixedbox.add(m_eventbox);
104104 m_hbox.add(m_pbox);
145145
146146 GxNotebookBox::~GxNotebookBox() {}
147147
148 GxNotebookBox::GxNotebookBox(gx_ui::GxUI& ui) {
148 GxNotebookBox::GxNotebookBox(const gx_ui::GxUI& ui) {
149149 m_box.set_name("tab_rack");
150150 }
151151 /****************************************************************/
153153 GxMoveBox::~GxMoveBox() {
154154 }
155155
156 GxMoveBox::GxMoveBox(gx_ui::GxUI& ui) {
156 GxMoveBox::GxMoveBox(const gx_ui::GxUI& ui) {
157157 m_paintbox.property_paint_func() = "rectangle_skin_color_expose";
158158 m_label.set_text("▼");
159159 m_label.set_name("rack_slider");
368368 }
369369
370370 gtk_widget_set_size_request(GTK_WIDGET(gui->RBox), -1, 460 );
371 if (g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, g_threads[7]) == NULL)
372 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
371 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[7]) == NULL)
372 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
373373 gx_gui::gx_set_resizeable, gpointer(gw.fWindow), NULL);
374 if (g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, g_threads[6]) == NULL)
375 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
374 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[6]) == NULL)
375 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
376376 gx_gui::gx_set_default, gpointer(gui->RBox), NULL);
377377 }
378378 }
414414 }
415415
416416 gtk_widget_set_size_request(GTK_WIDGET(gui->RBox), -1, 460 );
417 if (g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, g_threads[7]) == NULL)
418 g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
417 if (guivar.g_threads[7] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[7]) == NULL)
418 guivar.g_threads[7] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 40,
419419 gx_gui::gx_set_resizeable, gpointer(gw.fWindow), NULL);
420 if (g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, g_threads[6]) == NULL)
421 g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
420 if (guivar.g_threads[6] == 0 || g_main_context_find_source_by_id(NULL, guivar.g_threads[6]) == NULL)
421 guivar.g_threads[6] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE + 10, 50,
422422 gx_gui::gx_set_default, gpointer(gui->RBox), NULL);
423423 }
424424 }
459459 gx_gui::GxMainInterface* gui = gx_gui::GxMainInterface::instance();
460460 gtk_menu_shell_append(GTK_MENU_SHELL(gui->getMenu("PluginMenu")),
461461 GTK_WIDGET(fOrdervRack.gobj()));
462 fOrdervRack.set_parameter(new SwitchParameter("system.order_rack_v", true, false));
462 fOrdervRack.set_parameter(new SwitchParameter("system.order_rack_v", false, false));
463463 fOrdervRack.show();
464464
465465 mtitle = "Order Rack Horizontally";
468468 gtk_menu_shell_append(GTK_MENU_SHELL(gui->getMenu("PluginMenu")),
469469 GTK_WIDGET(fOrderhRack.gobj()));
470470 fOrderhRack.set_active(false);
471 fOrderhRack.set_parameter(new SwitchParameter("system.order_rack_h", true, false));
471 fOrderhRack.set_parameter(new SwitchParameter("system.order_rack_h", false, false));
472472 fOrderhRack.show();
473473
474474 paintbox1.show();
3333
3434 namespace gx_gui {
3535
36 GuiVariables guivar;
3637 // Stock Items for Gxw::Switch
3738
38 const char *sw_led = "led";
39 const char *sw_switch = "switch";
40 const char *sw_switchit = "switchit";
41 const char *sw_minitoggle = "minitoggle";
42 const char *sw_button = "button";
43 const char *sw_pbutton = "pbutton";
44 const char *sw_rbutton = "rbutton";
39 const char *sw_led = "led";
40 const char *sw_switch = "switch";
41 const char *sw_switchit = "switchit";
42 const char *sw_minitoggle = "minitoggle";
43 const char *sw_button = "button";
44 const char *sw_pbutton = "pbutton";
45 const char *sw_rbutton = "rbutton";
4546
4647 // Paint Functions for Gxw::PaintBox
4748
8182 }
8283
8384 void GuiVariables::register_gui_parameter() {
84 registerNonMidiParam("ui.main_xorg", &main_xorg, true, 300, 0, 10000);
85 registerNonMidiParam("ui.main_yorg", &main_yorg, true, 300, 0, 10000);
86
87 registerNonMidiParam("compressor.dialog", &dialogbox[0], false);
88 registerNonMidiParam("crybaby.dialog", &dialogbox[1], false);
89 registerNonMidiParam("gx_distortion.dialog", &dialogbox[2], false);
90 registerNonMidiParam("freeverb.dialog", &dialogbox[3], false);
91 registerNonMidiParam("IR.dialog", &dialogbox[4], false);
92 registerNonMidiParam("chorus.dialog", &dialogbox[5], false);
93 registerNonMidiParam("eq.dialog", &dialogbox[6], false);
94 registerNonMidiParam("eqs.dialog", &dialogbox[7], false);
95 registerNonMidiParam("MultiBandFilter.dialog", &dialogbox[8], false);
96 registerNonMidiParam("moog.dialog", &dialogbox[9], false);
97 registerNonMidiParam("biquad.dialog", &dialogbox[10], false);
98 registerNonMidiParam("flanger.dialog", &dialogbox[11], false);
99 registerNonMidiParam("echo.dialog", &dialogbox[12], false);
100 registerNonMidiParam("delay.dialog", &dialogbox[13], false);
101 registerNonMidiParam("overdrive.dialog", &dialogbox[14], false);
102 registerNonMidiParam("phaser.dialog", &dialogbox[15], false);
103 registerNonMidiParam("low_highpass.dialog", &dialogbox[16], false);
104 registerNonMidiParam("stereodelay.dialog", &dialogbox[17], false);
105 registerNonMidiParam("stereoecho.dialog", &dialogbox[18], false);
106 registerNonMidiParam("midi_out.dialog", &dialogbox[19], false);
107 registerNonMidiParam("oscilloscope.dialog", &dialogbox[20], false);
108 registerNonMidiParam("ampmodul.dialog", &dialogbox[21], false);
109 registerNonMidiParam("tonemodul.dialog", &dialogbox[22], false);
110 registerNonMidiParam("tremolo.dialog", &dialogbox[23], false);
111 registerNonMidiParam("phaser_mono.dialog", &dialogbox[24], false);
112 registerNonMidiParam("chorus_mono.dialog", &dialogbox[25], false);
113 registerNonMidiParam("flanger_mono.dialog", &dialogbox[26], false);
114 registerNonMidiParam("feedback.dialog", &dialogbox[27], false);
115 registerNonMidiParam("amp.tonestack.dialog", &dialogbox[28], false);
116 registerNonMidiParam("cab.dialog", &dialogbox[29], false);
85 registerNonMidiParam("ui.main_xorg", &main_xorg, true, 300, 0, 10000);
86 registerNonMidiParam("ui.main_yorg", &main_yorg, true, 300, 0, 10000);
87
88 registerNonMidiParam("compressor.dialog", &dialogbox[0], false);
89 registerNonMidiParam("crybaby.dialog", &dialogbox[1], false);
90 registerNonMidiParam("gx_distortion.dialog", &dialogbox[2], false);
91 registerNonMidiParam("freeverb.dialog", &dialogbox[3], false);
92 registerNonMidiParam("IR.dialog", &dialogbox[4], false);
93 registerNonMidiParam("chorus.dialog", &dialogbox[5], false);
94 registerNonMidiParam("eq.dialog", &dialogbox[6], false);
95 registerNonMidiParam("eqs.dialog", &dialogbox[7], false);
96 registerNonMidiParam("MultiBandFilter.dialog", &dialogbox[8], false);
97 registerNonMidiParam("moog.dialog", &dialogbox[9], false);
98 registerNonMidiParam("biquad.dialog", &dialogbox[10], false);
99 registerNonMidiParam("flanger.dialog", &dialogbox[11], false);
100 registerNonMidiParam("echo.dialog", &dialogbox[12], false);
101 registerNonMidiParam("delay.dialog", &dialogbox[13], false);
102 registerNonMidiParam("overdrive.dialog", &dialogbox[14], false);
103 registerNonMidiParam("phaser.dialog", &dialogbox[15], false);
104 registerNonMidiParam("low_highpass.dialog", &dialogbox[16], false);
105 registerNonMidiParam("stereodelay.dialog", &dialogbox[17], false);
106 registerNonMidiParam("stereoecho.dialog", &dialogbox[18], false);
107 registerNonMidiParam("midi_out.dialog", &dialogbox[19], false);
108 registerNonMidiParam("oscilloscope.dialog", &dialogbox[20], false);
109 registerNonMidiParam("ampmodul.dialog", &dialogbox[21], false);
110 registerNonMidiParam("tonemodul.dialog", &dialogbox[22], false);
111 registerNonMidiParam("tremolo.dialog", &dialogbox[23], false);
112 registerNonMidiParam("phaser_mono.dialog", &dialogbox[24], false);
113 registerNonMidiParam("chorus_mono.dialog", &dialogbox[25], false);
114 registerNonMidiParam("flanger_mono.dialog", &dialogbox[26], false);
115 registerNonMidiParam("feedback.dialog", &dialogbox[27], false);
116 registerNonMidiParam("amp.tonestack.dialog", &dialogbox[28], false);
117 registerNonMidiParam("cab.dialog", &dialogbox[29], false);
118
119 showwave = 0;
120 shownote = -1;
121 show_patch_info = 0;
122
123 /* rack handlig */
124 mono_plugs = 1;
125 stereo_plugs = 1;
126 refresh_size = 0;
127
128 for (unsigned int i = 0; i < sizeof(g_threads)/sizeof(g_threads[0]); i++) g_threads[i] = 0;
129
130 /* for level display */
131 meter_falloff = 27; // in dB/sec.
132 meter_display_timeout = 60; // in millisec
133 /* midi_in preset switch */
134 program_change = -1;
117135 }
118136
119137 /****************************************************************
178196
179197 /* set initial window position*/
180198 int gx_set_mx_oriantation() {
181 return (gint) gx_gui::main_xorg;
199 return (gint) gx_gui::guivar.main_xorg;
182200 }
183201
184202 int gx_set_my_oriantation() {
185 return (gint) gx_gui::main_yorg;
203 return (gint) gx_gui::guivar.main_yorg;
186204 }
187205
188206 /* create main window*/
191209 highest_unseen_msg_level = -1;
192210
193211 /*-- set rc file overwrite it with export--*/
194 gtk_rc_parse(gx_system::rcpath.c_str());
212 gtk_rc_parse(gx_system::sysvar.rcpath.c_str());
195213
196214 /*-- Declare the GTK Widgets --*/
197215 gw.fWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
549567 }
550568 }
551569 g_list_free(child_list);
570 gx_engine::audio.rack_change = true;
552571 }
553572 }
554573 // box move to the left
610629 }
611630 }
612631 g_list_free(child_list);
632 gx_engine::audio.rack_change = true;
613633 }
614634 }
615635 }
10411061 Parameter& param_switch = parameter_map[id_switch];
10421062 GxDialogButtonBox *bbox = new GxDialogButtonBox(*this, param_dialog);
10431063 GList* child_list = gtk_container_get_children(GTK_CONTAINER(rBox));
1044 GtkWidget *child = reinterpret_cast<GtkWidget *>(g_list_nth_data(child_list, mono_plugs));
1045 mono_plugs++;
1064 GtkWidget *child = reinterpret_cast<GtkWidget *>(g_list_nth_data(child_list, guivar.mono_plugs));
1065 guivar.mono_plugs++;
10461066 g_list_free(child_list);
1047 gx_engine::set_mono_plug_counter(mono_plugs);
1067 gx_engine::set_mono_plug_counter(guivar.mono_plugs);
10481068 gtk_box_pack_end(GTK_BOX(child), GTK_WIDGET(bbox->box.gobj()), false, false, 0);
10491069 GxDialogWindowBox *dialog = new GxDialogWindowBox(*this, expose_funk, param_dialog,
10501070 param_switch, bbox->show_dialog, gw.rack_widget);
10551075 string p = "ui.";
10561076 p +=title;
10571077 set_label(dialog->menuitem, _(title));
1058 guint accel_key = GDK_a + mono_plugs;
1078 guint accel_key = GDK_a + guivar.mono_plugs;
10591079 dialog->menuitem.add_accelerator("activate", Glib::wrap(fAccelGroup, true),
10601080 accel_key, Gdk::LOCK_MASK, Gtk::ACCEL_VISIBLE); // FIXME MOD1_MASK
10611081 gtk_menu_shell_append(GTK_MENU_SHELL(fMenuList["PluginsMono"]),
10861106 GxDialogButtonBox *bbox = new GxDialogButtonBox(*this, param_dialog);
10871107
10881108 GList* child_list = gtk_container_get_children(GTK_CONTAINER(sBox));
1089 GtkWidget *child = reinterpret_cast<GtkWidget *>(g_list_nth_data(child_list, stereo_plugs));
1090 stereo_plugs++;
1109 GtkWidget *child = reinterpret_cast<GtkWidget *>(g_list_nth_data(child_list, guivar.stereo_plugs));
1110 guivar.stereo_plugs++;
10911111 g_list_free(child_list);
1092 gx_engine::set_stereo_plug_counter(stereo_plugs);
1112 gx_engine::set_stereo_plug_counter(guivar.stereo_plugs);
10931113 gtk_box_pack_end(GTK_BOX(child), GTK_WIDGET(bbox->box.gobj()), false, false, 0);
10941114 GxDialogWindowBox *bdialog = new GxDialogWindowBox(*this, expose_funk, param_dialog,
10951115 param_switch, bbox->show_dialog, gw.srack_widget);
11021122 p +=title;
11031123 string s;
11041124
1105 guint accel_key = GDK_r + stereo_plugs;
1125 guint accel_key = GDK_r + guivar.stereo_plugs;
11061126 bdialog->menuitem.add_accelerator("activate", Glib::wrap(fAccelGroup, true),
11071127 accel_key, Gdk::LOCK_MASK, Gtk::ACCEL_VISIBLE); // FIXME
11081128 gtk_menu_shell_append(GTK_MENU_SHELL(fMenuList["PluginsStereo"]),
11971217 gx_ui::GxUiItemFloat* c = (gx_ui::GxUiItemFloat*)data;
11981218 c->modifyZone(1.0);
11991219 guint32 tim = gtk_get_current_event_time();
1200 gtk_menu_popup(GTK_MENU(gx_preset::presmenu[0]), NULL, NULL, NULL,
1201 (gpointer) gx_preset::presmenu[0] , 2, tim);
1220 gtk_menu_popup(GTK_MENU(gx_preset::gxpreset.presmenu[0]), NULL, NULL, NULL,
1221 (gpointer) gx_preset::gxpreset.presmenu[0] , 2, tim);
12021222 }
12031223
12041224 static void released(GtkWidget *widget, gpointer data) {
13991419 gx_jconv::GxJConvSettings::checkbutton7 = 0;
14001420 }
14011421 }
1422 gx_engine::audio.rack_change = true;
14021423 }
14031424
14041425 void GxMainInterface::addJToggleButton(const char* label, float* zone) {
16301651 gtk_label_set_text(GTK_LABEL(pchild), s);
16311652 }
16321653
1633 if (gx_preset::setting_is_preset) {
1634 snprintf(s, sizeof(s), " %i%s%s ", static_cast<int>(show_patch_info),
1635 ". ", gx_preset::gx_current_preset.c_str());
1654 if (gx_preset::gxpreset.setting_is_preset) {
1655 snprintf(s, sizeof(s), " %i%s%s ", static_cast<int>(guivar.show_patch_info),
1656 ". ", gx_preset::gxpreset.gx_current_preset.c_str());
16361657 gtk_label_set_text(GTK_LABEL(parent), s);
16371658 } else {
1638 show_patch_info = 0;
1659 guivar.show_patch_info = 0;
16391660 snprintf(s, sizeof(s), _(" %i%sMain Setting "),
1640 static_cast<int>(show_patch_info), ". ");
1661 static_cast<int>(guivar.show_patch_info), ". ");
16411662 gtk_label_set_text(GTK_LABEL(parent), s);
16421663 }
16431664 fCache = *fZone;
17001721
17011722 void uiTuner::reflectZone() {
17021723 fCache = *fZone;
1703 if (shownote == 1) {
1724 if (guivar.shownote == 1) {
17041725 set_freq(gx_engine::midi.fConsta4);
1705 } else if (shownote == 0) {
1706 shownote = -1;
1707 }
1726 } else if (guivar.shownote == 0) {
1727 guivar.shownote = -1;
1728 }
1729 gx_engine::audio.rack_change = true;
17081730 }
17091731
17101732 void GxMainInterface::addNumDisplay() {
18091831 Gtk::CORNER_TOP_RIGHT);
18101832 }
18111833 fWaveView.queue_draw();
1812 if (showwave) {
1834 if (guivar.showwave) {
18131835 return TRUE;
18141836 } else {
18151837 return FALSE;
18721894
18731895 /*-- Engine on/off and status --*/
18741896 // set up ON image: shown by default
1875 string img_path = gx_system::gx_pixmap_dir + "gx_on.png";
1897 string img_path = gx_system::sysvar.gx_pixmap_dir + "gx_on.png";
18761898
18771899 gw.gx_engine_on_image = gtk_image_menu_item_new_with_label("");
18781900 GtkWidget* engineon = gtk_image_new_from_file(img_path.c_str());
18851907 gtk_widget_show(gw.gx_engine_on_image);
18861908
18871909 // set up OFF image: hidden by default
1888 img_path = gx_system::gx_pixmap_dir + "gx_off.png";
1910 img_path = gx_system::sysvar.gx_pixmap_dir + "gx_off.png";
18891911
18901912 gw.gx_engine_off_image = gtk_image_menu_item_new_with_label("");
18911913 GtkWidget* engineoff = gtk_image_new_from_file(img_path.c_str());
18961918 gtk_widget_hide(gw.gx_engine_off_image);
18971919
18981920 // set up BYPASS image: hidden by default
1899 img_path = gx_system::gx_pixmap_dir + "gx_bypass.png";
1921 img_path = gx_system::sysvar.gx_pixmap_dir + "gx_bypass.png";
19001922
19011923 gw.gx_engine_bypass_image = gtk_image_menu_item_new_with_label("");
19021924 GtkWidget* engineby = gtk_image_new_from_file(img_path.c_str());
19091931
19101932 /*-- Jack server status image --*/
19111933 // jackd ON image
1912 img_path = gx_system::gx_pixmap_dir + "jackd_on.png";
1934 img_path = gx_system::sysvar.gx_pixmap_dir + "jackd_on.png";
19131935
19141936 gw.gx_jackd_on_image = gtk_image_menu_item_new_with_label("");
19151937 GtkWidget* jackstateon = gtk_image_new_from_file(img_path.c_str());
19241946 gtk_widget_show(gw.gx_jackd_on_image);
19251947
19261948 // jackd OFF image: hidden by default
1927 img_path = gx_system::gx_pixmap_dir + "jackd_off.png";
1949 img_path = gx_system::sysvar.gx_pixmap_dir + "jackd_off.png";
19281950
19291951 gw.gx_jackd_off_image = gtk_image_menu_item_new_with_label("");
19301952 GtkWidget* jackstateoff = gtk_image_new_from_file(img_path.c_str());
19601982 GtkWidget* menulabel; // menu label
19611983 // GtkWidget* menucont; // menu container use gw.menuh for systray menu here
19621984 GtkWidget* menuitem; // menu item
1963 GSList * group = NULL;
1985 //GSList * group = NULL;
19641986
19651987 /*---------------- Create Engine menu items ------------------*/
19661988 gw.menuh = fMenuList["Top"];
19761998 fMenuList["Engine"] = gw.menuh;
19771999
19782000 /*-- Create Engine start / stop item --*/
1979 group = NULL;
2001 //group = NULL;
19802002
19812003 menuitem = gtk_check_menu_item_new_with_mnemonic(_("Engine _Start / _Stop"));
19822004 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
20592081 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menulabel), menucont);
20602082 gtk_widget_show(menucont);
20612083 fMenuList["Presets"] = menucont;
2084
2085 const char* preset_accel_path[] = {
2086 "<gx_head>/Load",
2087 "<gx_head>/Save",
2088 "<gx_head>/Rename",
2089 "<gx_head>/Delete"
2090 };
2091
2092 const char* preset_menu_name[] = {
2093 N_("_Load Preset..."),
2094 N_("_Save Preset..."),
2095 N_("_Rename Preset..."),
2096 N_("_Delete Preset...")
2097 };
20622098
20632099 /* special treatment of preset lists, from gx_preset namespace */
20642100 for (int i = 0; i < GX_NUM_OF_PRESET_LISTS; i++) {
20652101 GtkWidget* menuItem =
2066 gtk_menu_item_new_with_mnemonic(gettext(gx_preset::preset_menu_name[i]));
2102 gtk_menu_item_new_with_mnemonic(gettext(preset_menu_name[i]));
20672103 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuItem);
20682104
20692105 GtkWidget* menu = gtk_menu_new();
20702106 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuItem), menu);
20712107
2072 gtk_menu_set_accel_path(GTK_MENU(menu), gx_preset::preset_accel_path[i]);
2073
2074 gx_preset::presmenu[i] = menu;
2075 gx_preset::presMenu[i] = menuItem;
2108 gtk_menu_set_accel_path(GTK_MENU(menu), preset_accel_path[i]);
2109
2110 gx_preset::gxpreset.presmenu[i] = menu;
2111 gx_preset::gxpreset.presMenu[i] = menuItem;
20762112 }
20772113
20782114 GtkWidget* menuItem =
20822118 GtkWidget* menu = gtk_menu_new();
20832119 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuItem), menu);
20842120
2085 gx_preset::fpresmenu = menu;
2121 gx_preset::gxpreset.fpresmenu = menu;
20862122
20872123 gtk_widget_show(menuItem);
20882124
20892125 menuitem = gtk_menu_item_new_with_mnemonic("funkmuscle");
20902126 menu = gtk_menu_new();
20912127 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
2092 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::fpresmenu), menuitem, 0);
2093 gx_preset::ffpresmenu[0] = menu;
2128 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::gxpreset.fpresmenu), menuitem, 0);
2129 gx_preset::gxpreset.ffpresmenu[0] = menu;
20942130
20952131 gtk_widget_show(menuitem);
20962132
20972133 menuitem = gtk_menu_item_new_with_mnemonic("zettberlin");
20982134 menu = gtk_menu_new();
20992135 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
2100 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::fpresmenu), menuitem, 0);
2101 gx_preset::ffpresmenu[1] = menu;
2136 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::gxpreset.fpresmenu), menuitem, 0);
2137 gx_preset::gxpreset.ffpresmenu[1] = menu;
21022138
21032139 gtk_widget_show(menuitem);
21042140
2141 menuitem = gtk_menu_item_new_with_mnemonic("autoandimat");
2142 menu = gtk_menu_new();
2143 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
2144 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::gxpreset.fpresmenu), menuitem, 0);
2145 gx_preset::gxpreset.ffpresmenu[3] = menu;
2146
2147 gtk_widget_show(menuitem);
2148
21052149 menuitem = gtk_menu_item_new_with_mnemonic("StudioDave");
21062150 menu = gtk_menu_new();
21072151 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
2108 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::fpresmenu), menuitem, 0);
2109 gx_preset::ffpresmenu[2] = menu;
2152 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::gxpreset.fpresmenu), menuitem, 0);
2153 gx_preset::gxpreset.ffpresmenu[2] = menu;
21102154
21112155 gtk_widget_show(menuitem);
21122156
21132157 /*-- add New Preset saving under Save Presets menu */
21142158 menuitem = gtk_menu_item_new_with_mnemonic(_("New _Preset"));
21152159 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2116 G_CALLBACK(gx_preset::gx_save_newpreset_dialog), NULL);
2160 G_CALLBACK(gx_preset::gxpreset.gx_save_newpreset_dialog), NULL);
21172161 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
21182162 GDK_p, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
2119 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::presmenu[SAVE_PRESET_LIST]), menuitem, 0);
2163 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::gxpreset.presmenu[SAVE_PRESET_LIST]), menuitem, 0);
21202164 gtk_widget_show(menuitem);
21212165
21222166 /*-- add a separator line --*/
21232167 GtkWidget* sep = gtk_separator_menu_item_new();
2124 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::presmenu[SAVE_PRESET_LIST]), sep, 1);
2168 gtk_menu_shell_insert(GTK_MENU_SHELL(gx_preset::gxpreset.presmenu[SAVE_PRESET_LIST]), sep, 1);
21252169 gtk_widget_show(sep);
21262170
21272171 /*-- initial preset list --*/
21282172 // gx_preset::gx_refresh_preset_menus(); //FIXME: will be done in gx_engine_init()?
21292173
21302174 for (int i = 0; i < GX_NUM_OF_PRESET_LISTS; i++)
2131 gtk_widget_show(gx_preset::presMenu[i]);
2175 gtk_widget_show(gx_preset::gxpreset.presMenu[i]);
21322176
21332177 /* ------------------- */
21342178
21562200 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
21572201 GDK_f, GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
21582202 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2159 G_CALLBACK(gx_preset::gx_load_preset_file), NULL);
2203 G_CALLBACK(gx_preset::gxpreset.gx_load_preset_file), NULL);
21602204 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuitem);
21612205 gtk_widget_show(menuitem);
21622206
21652209 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
21662210 GDK_x, GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
21672211 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2168 G_CALLBACK(gx_preset::gx_save_preset_file), NULL);
2212 G_CALLBACK(gx_preset::gxpreset.gx_save_preset_file), NULL);
21692213 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuitem);
21702214 gtk_widget_show(menuitem);
21712215
21772221 /*-- Create Main setting submenu --*/
21782222 menuitem = gtk_menu_item_new_with_mnemonic(_("Recall Main _Setting"));
21792223 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2180 G_CALLBACK(gx_preset::gx_recall_main_setting), NULL);
2224 G_CALLBACK(gx_preset::gxpreset.gx_recall_main_setting), NULL);
21812225 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
21822226 GDK_s, GDK_NO_MOD_MASK, GTK_ACCEL_VISIBLE);
21832227 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuitem);
21852229
21862230 menuitem = gtk_menu_item_new_with_mnemonic(_("_Save As Main _Setting"));
21872231 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2188 G_CALLBACK(gx_preset::gx_save_main_setting), NULL);
2232 G_CALLBACK(gx_preset::gxpreset.gx_save_main_setting), NULL);
21892233 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
21902234 GDK_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
21912235 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuitem);
22222266 /* forward preset */
22232267 menuitem = gtk_menu_item_new_with_mnemonic(_("Next _Preset"));
22242268 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2225 G_CALLBACK(gx_preset::gx_next_preset), NULL);
2269 G_CALLBACK(gx_preset::gxpreset.gx_next_preset), NULL);
22262270 gtk_widget_add_accelerator(menuitem, "activate",
22272271 fAccelGroup, GDK_Page_Down,
22282272 GDK_NO_MOD_MASK, GTK_ACCEL_VISIBLE);
22322276 /* rewind preset */
22332277 menuitem = gtk_menu_item_new_with_mnemonic(_("Previous _Preset"));
22342278 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2235 G_CALLBACK(gx_preset::gx_previous_preset), NULL);
2279 G_CALLBACK(gx_preset::gxpreset.gx_previous_preset), NULL);
22362280 gtk_widget_add_accelerator(menuitem, "activate",
22372281 fAccelGroup, GDK_Page_Up,
22382282 GDK_NO_MOD_MASK, GTK_ACCEL_VISIBLE);
22472291 /*-- Create menu item Delete Active preset --*/
22482292 menuitem = gtk_menu_item_new_with_mnemonic(_("_Save Active Preset"));
22492293 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2250 G_CALLBACK(gx_preset::gx_save_oldpreset), (gpointer)1);
2294 G_CALLBACK(gx_preset::gxpreset.gx_save_oldpreset), (gpointer)1);
22512295 gtk_widget_add_accelerator(menuitem, "activate",
22522296 fAccelGroup, GDK_s,
22532297 GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
22562300
22572301 menuitem = gtk_menu_item_new_with_mnemonic(_("_Rename Active Preset"));
22582302 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2259 G_CALLBACK(gx_preset::gx_rename_active_preset_dialog), NULL);
2303 G_CALLBACK(gx_preset::gxpreset.gx_rename_active_preset_dialog), NULL);
22602304 gtk_widget_add_accelerator(menuitem, "activate",
22612305 fAccelGroup, GDK_r,
22622306 GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
22652309
22662310 menuitem = gtk_menu_item_new_with_mnemonic(_("_Delete Active Preset"));
22672311 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2268 G_CALLBACK(gx_preset::gx_delete_active_preset_dialog), NULL);
2312 G_CALLBACK(gx_preset::gxpreset.gx_delete_active_preset_dialog), NULL);
22692313 gtk_widget_add_accelerator(menuitem, "activate",
22702314 fAccelGroup, GDK_Delete,
22712315 GDK_NO_MOD_MASK, GTK_ACCEL_VISIBLE);
22802324 /*-- Create menu item Delete All presets --*/
22812325 menuitem = gtk_menu_item_new_with_mnemonic(_("_Delete All Presets"));
22822326 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2283 G_CALLBACK(gx_preset::gx_delete_all_presets_dialog), NULL);
2327 G_CALLBACK(gx_preset::gxpreset.gx_delete_all_presets_dialog), NULL);
22842328 gtk_widget_add_accelerator(menuitem, "activate",
22852329 fAccelGroup, GDK_d,
22862330 GdkModifierType(GDK_CONTROL_MASK|GDK_SHIFT_MASK), GTK_ACCEL_VISIBLE);
22892333 }
22902334
22912335 void GxMainInterface::on_tube_activate() {
2292 if (fSelectTubeModel[0].get_active()) {
2293 fSelectTubeModel[1].set_active(false);
2294 fSelectTubeModel[2].set_active(false);
2295 fSelectTubeModel[3].set_active(false);
2296 fSelectTubeModel[4].set_active(false);
2297 fSelectTubeModel[5].set_active(false);
2298 fSelectTubeModel[6].set_active(false);
2299 fSelectTubeModel[7].set_active(false);
2300 fSelectTubeModel[8].set_active(false);
2301 fSelectTubeModel[9].set_active(false);
2302 fSelectTubeModel[10].set_active(false);
2303 fSelectTubeModel[11].set_active(false);
2304 fSelectTubeModel[12].set_active(false);
2305 gx_engine::set_tube_model(1);
2306 } else if (fSelectTubeModel[1].get_active()) {
2307 fSelectTubeModel[0].set_active(false);
2308 fSelectTubeModel[2].set_active(false);
2309 fSelectTubeModel[3].set_active(false);
2310 fSelectTubeModel[4].set_active(false);
2311 fSelectTubeModel[5].set_active(false);
2312 fSelectTubeModel[6].set_active(false);
2313 fSelectTubeModel[7].set_active(false);
2314 fSelectTubeModel[8].set_active(false);
2315 fSelectTubeModel[9].set_active(false);
2316 fSelectTubeModel[10].set_active(false);
2317 fSelectTubeModel[11].set_active(false);
2318 fSelectTubeModel[12].set_active(false);
2319 gx_engine::set_tube_model(2);
2320 } else if (fSelectTubeModel[2].get_active()) {
2321 fSelectTubeModel[0].set_active(false);
2322 fSelectTubeModel[1].set_active(false);
2323 fSelectTubeModel[3].set_active(false);
2324 fSelectTubeModel[4].set_active(false);
2325 fSelectTubeModel[5].set_active(false);
2326 fSelectTubeModel[6].set_active(false);
2327 fSelectTubeModel[7].set_active(false);
2328 fSelectTubeModel[8].set_active(false);
2329 fSelectTubeModel[9].set_active(false);
2330 fSelectTubeModel[10].set_active(false);
2331 fSelectTubeModel[11].set_active(false);
2332 fSelectTubeModel[12].set_active(false);
2333 gx_engine::set_tube_model(3);
2334 } else if (fSelectTubeModel[3].get_active()) {
2335 fSelectTubeModel[0].set_active(false);
2336 fSelectTubeModel[1].set_active(false);
2337 fSelectTubeModel[2].set_active(false);
2338 fSelectTubeModel[4].set_active(false);
2339 fSelectTubeModel[5].set_active(false);
2340 fSelectTubeModel[6].set_active(false);
2341 fSelectTubeModel[7].set_active(false);
2342 fSelectTubeModel[8].set_active(false);
2343 fSelectTubeModel[9].set_active(false);
2344 fSelectTubeModel[10].set_active(false);
2345 fSelectTubeModel[11].set_active(false);
2346 fSelectTubeModel[12].set_active(false);
2347 gx_engine::set_tube_model(4);
2348 } else if (fSelectTubeModel[4].get_active()) {
2349 fSelectTubeModel[0].set_active(false);
2350 fSelectTubeModel[1].set_active(false);
2351 fSelectTubeModel[2].set_active(false);
2352 fSelectTubeModel[3].set_active(false);
2353 fSelectTubeModel[5].set_active(false);
2354 fSelectTubeModel[6].set_active(false);
2355 fSelectTubeModel[7].set_active(false);
2356 fSelectTubeModel[8].set_active(false);
2357 fSelectTubeModel[9].set_active(false);
2358 fSelectTubeModel[10].set_active(false);
2359 fSelectTubeModel[11].set_active(false);
2360 fSelectTubeModel[12].set_active(false);
2361 gx_engine::set_tube_model(5);
2362 } else if (fSelectTubeModel[5].get_active()) {
2363 fSelectTubeModel[0].set_active(false);
2364 fSelectTubeModel[1].set_active(false);
2365 fSelectTubeModel[2].set_active(false);
2366 fSelectTubeModel[3].set_active(false);
2367 fSelectTubeModel[4].set_active(false);
2368 fSelectTubeModel[6].set_active(false);
2369 fSelectTubeModel[7].set_active(false);
2370 fSelectTubeModel[8].set_active(false);
2371 fSelectTubeModel[9].set_active(false);
2372 fSelectTubeModel[10].set_active(false);
2373 fSelectTubeModel[11].set_active(false);
2374 fSelectTubeModel[12].set_active(false);
2375 gx_engine::set_tube_model(6);
2376 } else if (fSelectTubeModel[6].get_active()) {
2377 fSelectTubeModel[0].set_active(false);
2378 fSelectTubeModel[1].set_active(false);
2379 fSelectTubeModel[2].set_active(false);
2380 fSelectTubeModel[3].set_active(false);
2381 fSelectTubeModel[4].set_active(false);
2382 fSelectTubeModel[5].set_active(false);
2383 fSelectTubeModel[7].set_active(false);
2384 fSelectTubeModel[8].set_active(false);
2385 fSelectTubeModel[9].set_active(false);
2386 fSelectTubeModel[10].set_active(false);
2387 fSelectTubeModel[11].set_active(false);
2388 fSelectTubeModel[12].set_active(false);
2389 gx_engine::set_tube_model(7);
2390 } else if (fSelectTubeModel[7].get_active()) {
2391 fSelectTubeModel[0].set_active(false);
2392 fSelectTubeModel[1].set_active(false);
2393 fSelectTubeModel[2].set_active(false);
2394 fSelectTubeModel[3].set_active(false);
2395 fSelectTubeModel[4].set_active(false);
2396 fSelectTubeModel[5].set_active(false);
2397 fSelectTubeModel[6].set_active(false);
2398 fSelectTubeModel[8].set_active(false);
2399 fSelectTubeModel[9].set_active(false);
2400 fSelectTubeModel[10].set_active(false);
2401 fSelectTubeModel[11].set_active(false);
2402 fSelectTubeModel[12].set_active(false);
2403 gx_engine::set_tube_model(8);
2404 } else if (fSelectTubeModel[8].get_active()) {
2405 fSelectTubeModel[0].set_active(false);
2406 fSelectTubeModel[1].set_active(false);
2407 fSelectTubeModel[2].set_active(false);
2408 fSelectTubeModel[3].set_active(false);
2409 fSelectTubeModel[4].set_active(false);
2410 fSelectTubeModel[5].set_active(false);
2411 fSelectTubeModel[6].set_active(false);
2412 fSelectTubeModel[7].set_active(false);
2413 fSelectTubeModel[9].set_active(false);
2414 fSelectTubeModel[10].set_active(false);
2415 fSelectTubeModel[11].set_active(false);
2416 fSelectTubeModel[12].set_active(false);
2417 gx_engine::set_tube_model(9);
2418 } else if (fSelectTubeModel[9].get_active()) {
2419 fSelectTubeModel[0].set_active(false);
2420 fSelectTubeModel[1].set_active(false);
2421 fSelectTubeModel[2].set_active(false);
2422 fSelectTubeModel[3].set_active(false);
2423 fSelectTubeModel[4].set_active(false);
2424 fSelectTubeModel[5].set_active(false);
2425 fSelectTubeModel[6].set_active(false);
2426 fSelectTubeModel[7].set_active(false);
2427 fSelectTubeModel[8].set_active(false);
2428 fSelectTubeModel[10].set_active(false);
2429 fSelectTubeModel[11].set_active(false);
2430 fSelectTubeModel[12].set_active(false);
2431 gx_engine::set_tube_model(10);
2432 } else if (fSelectTubeModel[10].get_active()) {
2433 fSelectTubeModel[0].set_active(false);
2434 fSelectTubeModel[1].set_active(false);
2435 fSelectTubeModel[2].set_active(false);
2436 fSelectTubeModel[3].set_active(false);
2437 fSelectTubeModel[4].set_active(false);
2438 fSelectTubeModel[5].set_active(false);
2439 fSelectTubeModel[6].set_active(false);
2440 fSelectTubeModel[7].set_active(false);
2441 fSelectTubeModel[8].set_active(false);
2442 fSelectTubeModel[9].set_active(false);
2443 fSelectTubeModel[11].set_active(false);
2444 fSelectTubeModel[12].set_active(false);
2445 gx_engine::set_tube_model(11);
2446 } else if (fSelectTubeModel[11].get_active()) {
2447 fSelectTubeModel[0].set_active(false);
2448 fSelectTubeModel[1].set_active(false);
2449 fSelectTubeModel[2].set_active(false);
2450 fSelectTubeModel[3].set_active(false);
2451 fSelectTubeModel[4].set_active(false);
2452 fSelectTubeModel[5].set_active(false);
2453 fSelectTubeModel[6].set_active(false);
2454 fSelectTubeModel[7].set_active(false);
2455 fSelectTubeModel[8].set_active(false);
2456 fSelectTubeModel[9].set_active(false);
2457 fSelectTubeModel[10].set_active(false);
2458 fSelectTubeModel[12].set_active(false);
2459 gx_engine::set_tube_model(12);
2460 } else if (fSelectTubeModel[12].get_active()) {
2461 fSelectTubeModel[0].set_active(false);
2462 fSelectTubeModel[1].set_active(false);
2463 fSelectTubeModel[2].set_active(false);
2464 fSelectTubeModel[3].set_active(false);
2465 fSelectTubeModel[4].set_active(false);
2466 fSelectTubeModel[5].set_active(false);
2467 fSelectTubeModel[6].set_active(false);
2468 fSelectTubeModel[7].set_active(false);
2469 fSelectTubeModel[8].set_active(false);
2470 fSelectTubeModel[9].set_active(false);
2471 fSelectTubeModel[10].set_active(false);
2472 fSelectTubeModel[11].set_active(false);
2473 gx_engine::set_tube_model(13);
2474 }
2475 }
2336 for (int i = 0; i < MAX_TUBES; i++) {
2337 if (fSelectTubeModel[i].get_active()) {
2338 gx_engine::set_tube_model(i + 1);
2339 gx_engine::audio.tube_changed = true;
2340 gx_engine::audio.rack_change = true;
2341 } else {
2342 fSelectTubeModel[i].set_active(false);
2343 }
2344 }
2345 }
2346
24762347 //----------------------------- preset menu ----------------------------
24772348 void GxMainInterface::addAmpMenu() {
24782349 GtkWidget* menulabel; // menu label
25132384 fSelectTubeModel[1].show();
25142385 fSelectTubeModel[1].set_parameter(new SwitchParameter("system.select_tube2", true, false));
25152386 fSelectTubeModel[1].set_active(false);
2387
2388 set_label(fSelectTubeModel[13], _("12AT7"));
2389 fSelectTubeModel[13].set_group(group);
2390
2391 fSelectTubeModel[13].add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2392 GDK_q, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2393 fSelectTubeModel[13].signal_activate().connect(
2394 sigc::mem_fun(*this, &GxMainInterface::on_tube_activate));
2395 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSelectTubeModel[13].gobj()));
2396 fSelectTubeModel[13].show();
2397 fSelectTubeModel[13].set_parameter(new SwitchParameter("system.select_tube14", true, false));
2398 fSelectTubeModel[13].set_active(false);
25162399
25172400 set_label(fSelectTubeModel[5], _("6DJ8"));
25182401 fSelectTubeModel[5].set_group(group);
25252408 fSelectTubeModel[5].show();
25262409 fSelectTubeModel[5].set_parameter(new SwitchParameter("system.select_tube10", true, false));
25272410 fSelectTubeModel[5].set_active(false);
2411
2412 /*-- add a separator line --*/
2413 sep = gtk_separator_menu_item_new();
2414 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), sep);
2415 gtk_widget_show(sep);
25282416
25292417 set_label(fSelectTubeModel[2], _("6V6"));
25302418 fSelectTubeModel[2].set_group(group);
25592447 fSelectTubeModel[11].set_group(group);
25602448
25612449 fSelectTubeModel[11].add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2562 GDK_r, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2450 GDK_d, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
25632451 fSelectTubeModel[11].signal_activate().connect(
25642452 sigc::mem_fun(*this, &GxMainInterface::on_tube_activate));
25652453 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSelectTubeModel[11].gobj()));
25662454 fSelectTubeModel[11].show();
25672455 fSelectTubeModel[11].set_parameter(new SwitchParameter("system.select_tube11", true, false));
25682456 fSelectTubeModel[11].set_active(false);
2457
2458 set_label(fSelectTubeModel[16], _("12AT7 feedback"));
2459 fSelectTubeModel[16].set_group(group);
2460
2461 fSelectTubeModel[16].add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2462 GDK_q, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2463 fSelectTubeModel[16].signal_activate().connect(
2464 sigc::mem_fun(*this, &GxMainInterface::on_tube_activate));
2465 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSelectTubeModel[16].gobj()));
2466 fSelectTubeModel[16].show();
2467 fSelectTubeModel[16].set_parameter(new SwitchParameter("system.select_tube17", true, false));
2468 fSelectTubeModel[16].set_active(false);
25692469
25702470 set_label(fSelectTubeModel[12], _("6DJ8 feedback"));
25712471 fSelectTubeModel[12].set_group(group);
25722472
25732473 fSelectTubeModel[12].add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2574 GDK_q, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2474 GDK_t, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
25752475 fSelectTubeModel[12].signal_activate().connect(
25762476 sigc::mem_fun(*this, &GxMainInterface::on_tube_activate));
25772477 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSelectTubeModel[12].gobj()));
26072507 fSelectTubeModel[3].show();
26082508 fSelectTubeModel[3].set_parameter(new SwitchParameter("system.select_tube4", true, false));
26092509 fSelectTubeModel[3].set_active(false);
2510
2511 set_label(fSelectTubeModel[14], _("pre 12AT7/ master 6V6"));
2512 fSelectTubeModel[14].set_group(group);
2513
2514 fSelectTubeModel[14].add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2515 GDK_k, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2516 fSelectTubeModel[14].signal_activate().connect(
2517 sigc::mem_fun(*this, &GxMainInterface::on_tube_activate));
2518 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSelectTubeModel[14].gobj()));
2519 fSelectTubeModel[14].show();
2520 fSelectTubeModel[14].set_parameter(new SwitchParameter("system.select_tube15", true, false));
2521 fSelectTubeModel[14].set_active(false);
26102522
26112523 set_label(fSelectTubeModel[6], _("pre 6DJ8/ master 6V6"));
26122524 fSelectTubeModel[6].set_group(group);
26482560 fSelectTubeModel[9].show();
26492561 fSelectTubeModel[9].set_parameter(new SwitchParameter("system.select_tube8", true, false));
26502562 fSelectTubeModel[9].set_active(false);
2651
2563
2564 set_label(fSelectTubeModel[15], _("pre 12AT7/ push pull 6V6"));
2565 fSelectTubeModel[15].set_group(group);
2566
2567 fSelectTubeModel[15].add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2568 GDK_l, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2569 fSelectTubeModel[15].signal_activate().connect(
2570 sigc::mem_fun(*this, &GxMainInterface::on_tube_activate));
2571 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSelectTubeModel[15].gobj()));
2572 fSelectTubeModel[15].show();
2573 fSelectTubeModel[15].set_parameter(new SwitchParameter("system.select_tube16", true, false));
2574 fSelectTubeModel[15].set_active(false);
2575
26522576 set_label(fSelectTubeModel[7], _("pre 6DJ8/ push-pull 6V6"));
26532577 fSelectTubeModel[7].set_group(group);
26542578
28172741 /*-- Create tuner check menu item under Options submenu --*/
28182742 set_label(fShowTuner, _("_Tuner"));
28192743 fShowTuner.add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2820 GDK_t, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2744 GDK_t, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
28212745 fShowTuner.signal_activate().connect(
28222746 sigc::mem_fun(*this, &GxMainInterface::on_tuner_activate));
28232747 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fShowTuner.gobj()));
28292753
28302754 set_label(fSetMouse, _("Set _Knobs Linear"));
28312755 fSetMouse.add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2832 GDK_k, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2756 GDK_k, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
28332757 fSetMouse.signal_activate().connect(
28342758 sigc::mem_fun(*this, &GxMainInterface::set_mouse_mode));
28352759 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), GTK_WIDGET(fSetMouse.gobj()));
28392763 /*-- Create logbox check menu item under Options submenu --*/
28402764 set_label(fShowLogger, _("Show _Logging Box"));
28412765 fShowLogger.add_accelerator("activate", Glib::wrap(fAccelGroup, true),
2842 GDK_l, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
2766 GDK_l, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
28432767 fShowLogger.signal_activate().connect(
28442768 sigc::mem_fun(*this, &GxMainInterface::on_log_activate));
28452769 gtk_menu_shell_append(GTK_MENU_SHELL(fMenuList["Options"]), GTK_WIDGET(fShowLogger.gobj()));
29712895 gtk_widget_add_accelerator(menuitem, "activate", fAccelGroup,
29722896 GDK_c, GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
29732897 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2974 G_CALLBACK(gx_jack::gx_jack_connection), NULL);
2898 G_CALLBACK(gx_jack::gxjack.gx_jack_connection), NULL);
29752899 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuitem);
29762900
29772901 gtk_widget_show(menuitem);
29992923 const int min_pow = 5; // 2**5 = 32
30002924 const int max_pow = 13; // 2**13 = 8192
30012925 group = NULL;
2926 int jack_buffer_size = static_cast<int>(16);
2927 (void)snprintf(buf_size, sizeof(buf_size), "%d", jack_buffer_size);
2928 menuitem = gtk_radio_menu_item_new_with_label(group, buf_size);
2929 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
2930 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), FALSE);
2931
2932 g_signal_connect(GTK_OBJECT(menuitem), "activate",
2933 G_CALLBACK(gx_jack::gxjack.gx_set_jack_buffer_size),
2934 GINT_TO_POINTER(jack_buffer_size));
2935
2936 // display actual buffer size as default
2937 gtk_menu_shell_append(GTK_MENU_SHELL(menucont), menuitem);
2938 gtk_widget_show(menuitem);
30022939
30032940 for (int i = min_pow; i <= max_pow; i++) {
30042941 int jack_buffer_size = static_cast<int>(pow(2., i));
30082945 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), FALSE);
30092946
30102947 g_signal_connect(GTK_OBJECT(menuitem), "activate",
3011 G_CALLBACK(gx_jack::gx_set_jack_buffer_size),
2948 G_CALLBACK(gx_jack::gxjack.gx_set_jack_buffer_size),
30122949 GINT_TO_POINTER(jack_buffer_size));
30132950
30142951 // display actual buffer size as default
30212958
30222959
30232960 void GxMainInterface::set_waveview_buffer() {
3024 fWaveView.set_frame(gx_engine::result, gx_jack::gxjack.jack_bs);
2961 fWaveView.set_frame(gx_engine::audio.result, gx_jack::gxjack.jack_bs);
30252962 }
30262963
30272964 // ---- show main GUI
30302967 ui_thread = pthread_self();
30312968 #endif
30322969 assert(fTop == 0);
3033 gx_cairo::gx_init_pixmaps();
30342970 fInitialized = true;
30352971
30362972 if (gx_jack::gxjack.client) {
30693005 gx_update_skin_menu_item(skin_index);
30703006
30713007 /* timeout in milliseconds */
3072 g_threads[0] = g_timeout_add(40, gx_threads::gx_update_all_gui, 0);
3008 guivar.g_threads[0] = g_timeout_add(40, gx_threads::gx_update_all_gui, 0);
30733009 // Note: meter display timeout is a global var in gx_gui namespace
3074 g_threads[1] = g_timeout_add(meter_display_timeout, gx_threads::gx_refresh_meter_level, 0);
3010 guivar.g_threads[1] = g_timeout_add(guivar.meter_display_timeout, gx_threads::gx_refresh_meter_level, 0);
30753011 // watch tread for cabinet switch
3076 g_threads[3] = g_timeout_add(200, gx_threads::gx_check_cab_state, 0);
3012 guivar.g_threads[3] = g_timeout_add(200, gx_threads::gx_check_cab_state, 0);
30773013
30783014 GError* err = NULL;
30793015 // -------------- start helper thread for ladi signal USR1 ------------
30853021 }
30863022 #ifndef IS_MACOSX
30873023 // -------------- start helper thread for midi control ------------
3088 int semaphor = sem_init(&program_change_sem, 0, 0);
3024 int semaphor = sem_init(&guivar.program_change_sem, 0, 0);
30893025 if (semaphor != 0) {
30903026 gx_system::gx_print_error(_("system startup"),
30913027 string(_("create semaphor failed (midi): preset switch disabled")));
158158 param.changed.connect(sigc::mem_fun(*this, &MidiControllerTable::set));
159159 g_signal_connect(GTK_OBJECT(togglebutton), "toggled",
160160 G_CALLBACK(toggleButtonSetSwitch), (gpointer)&param);
161 g_signal_connect(gtk_builder_get_object(builder, "dialog-vbox1"),"expose-event",
162 G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
163 g_signal_connect(gtk_builder_get_object(builder, "dialog-vbox2"),"expose-event",
164 G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
161165 selection = gtk_tree_view_get_selection(
162166 GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview1")));
163167 gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
323327 g_signal_connect(dialog, "response", G_CALLBACK(midi_response_cb), this);
324328 g_signal_connect(dialog, "destroy", G_CALLBACK(midi_destroy_cb), this);
325329 g_signal_connect(entry_new, "changed", G_CALLBACK(changed_text_handler), this);
330 g_signal_connect(gtk_builder_get_object(builder, "dialog-vbox1"),"expose-event",
331 G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
332 g_signal_connect(gtk_builder_get_object(builder, "dialog-vbox2"),"expose-event",
333 G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
326334 if (nctl == -1) {
327335 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), RESPONSE_DELETE, FALSE);
328336 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE);
503503 insert("flanger_mono", N_("Flanger Mono"));
504504 insert("con", N_("Contrast convolver"));
505505 insert("feedback", N_("Feedback"));
506 insert("bassbooster", N_("Bassbooster"));
506507 }
507508
508509 string param_group(string id, bool nowarn) {
5555 busy(false),
5656 tick(0),
5757 m_pthr(0),
58 resamp(new Resampler),
5859 m_buffer(new float[MAX_FFT_SIZE]),
5960 m_bufferIndex(0),
6061 m_audioLevel(false),
8485 fftwf_free(m_fftwBufferTime);
8586 fftwf_free(m_fftwBufferFreq);
8687 delete[] m_buffer;
88
8789 }
8890
8991
9496 return false;
9597 }
9698 m_sampleRate = sampleRate / DOWNSAMPLE;
97 resamp.setup(sampleRate, m_sampleRate, 1, 16); // 16 == least quality
99 resamp->setup(sampleRate, m_sampleRate, 1, 16); // 16 == least quality
98100
99101 if (m_fftSize != fftSize) {
100102 m_fftSize = fftSize;
117119 }
118120 pt_initialized = true;
119121 return !error;
122 }
123
124 void PitchTracker::stop_thread() {
125 pthread_cancel (m_pthr);
126 pthread_join (m_pthr, NULL);
127 sem_post(&m_trig);
128 delete resamp;
129 resamp = 0;
120130 }
121131
122132 void PitchTracker::start_thread() {
133143 if (priority < min) priority = min;
134144 spar.sched_priority = priority;
135145 pthread_attr_init(&attr);
136 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
146 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE );
147 pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL);
137148 pthread_attr_setschedpolicy(&attr, policy);
138149 pthread_attr_setschedparam(&attr, &spar);
139150 pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
190201 if (error) {
191202 return;
192203 }
193 resamp.inp_count = count;
194 resamp.inp_data = input;
204 resamp->inp_count = count;
205 resamp->inp_data = input;
195206 for (;;) {
196 resamp.out_data = &m_buffer[m_bufferIndex];
207 resamp->out_data = &m_buffer[m_bufferIndex];
197208 int n = MAX_FFT_SIZE - m_bufferIndex;
198 resamp.out_count = n;
199 resamp.process();
200 n -= resamp.out_count; // n := number of output samples
209 resamp->out_count = n;
210 resamp->process();
211 n -= resamp->out_count; // n := number of output samples
201212 if (!n) { // all soaked up by filter
202213 return;
203214 }
204215 m_bufferIndex = (m_bufferIndex + n) % MAX_FFT_SIZE;
205 if (resamp.inp_count == 0) {
216 if (resamp->inp_count == 0) {
206217 break;
207218 }
208219 }
232243 for (;;) {
233244 busy = false;
234245 sem_wait(&m_trig);
246 pthread_testcancel();
235247 busy = true;
236248 if (error) {
237249 continue;
373373 PortSection *p = &portsection[i];
374374
375375 string s = (p->port_attr->client_num == 0 ?
376 gx_jack::client_name : gx_jack::client_insert_name)
376 gx_jack::gxjack.client_name : gx_jack::gxjack.client_insert_name)
377377 + ":" + p->port_attr->port_name;
378378 if (s.compare(port1) == 0) {
379379 update_summary(p, &port2, conn);
473473 jack_client_t *gcl;
474474 if (p->port_attr->client_num == 0) {
475475 gcl = gx_jack::gxjack.client;
476 gcln = gx_jack::client_name;
476 gcln = gx_jack::gxjack.client_name;
477477 } else {
478478 gcl = gx_jack::gxjack.client_insert;
479 gcln = gx_jack::client_insert_name;
479 gcln = gx_jack::gxjack.client_insert_name;
480480 }
481481 string s = gcln + ":" + p->port_attr->port_name;
482482 q2 = s.c_str();
558558 const char** conn_ports = jack_port_get_connections(jack_port);
559559 ClientList cl(ports);
560560 // the following loop depends on the first 2 entries being
561 // client_name and client_insert_name
561 // gxjack.client_name and gxjack.client_insert_name
562562 int idx = 0;
563563 for (list<string>::iterator j = excluded_clients.begin(); j !=
564564 excluded_clients.end(); j++, idx++) {
628628 gtk_widget_ref(GTK_WIDGET(item));
629629
630630 // order of first 2 entries is important (check load())
631 excluded_clients.push_back(string(gx_jack::client_insert_name) + ":");
632 excluded_clients.push_back(string(gx_jack::client_name) + ":");
633 excluded_clients.push_back(string(gx_jack::client_instance) + "_meterbridge:");
631 excluded_clients.push_back(string(gx_jack::gxjack.client_insert_name) + ":");
632 excluded_clients.push_back(string(gx_jack::gxjack.client_name) + ":");
633 excluded_clients.push_back(string(gx_jack::gxjack.client_instance) + "_meterbridge:");
634634 excluded_clients.push_back(string("jack_capture:"));
635635
636636 GtkBuilder * builder = gtk_builder_new();
638638 gtk_window_set_icon(GTK_WINDOW(window), GDK_PIXBUF(gx_gui::gw.ib));
639639 GObject *b = gtk_builder_get_object(builder, "button1");
640640 if (b) gtk_widget_set_name(GTK_WIDGET(b), "rack_button");
641 g_signal_connect(gtk_builder_get_object(builder, "dialog-vbox1"),"expose-event",
642 G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
643 g_signal_connect(gtk_builder_get_object(builder, "dialog-vbox2"),"expose-event",
644 G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
641645 memset(portsection, 0, sizeof(portsection));
642646 for (int i = 0; i < number_of_ports; i++) {
643647 portsection[i].port_attr = &gx_head_ports[i];
3939
4040 namespace gx_preset {
4141
42 GxPreset gxpreset;
43
44 gx_gui::FileParameter gx_preset_file("system.current_preset_file");
45 gx_gui::FileParameter gx_factory_preset_file("system.factory_preset_file");
46
47
4248 /* get the accel path to connect the mnemonic key on the fly
4349 this is a replacement for gtk_widget_get_accel_path()
4450 witch is not avaluable in <= Gtk+2.12 */
45 string gx_get_accel_path(int lindex) {
51 string GxPreset::gx_get_accel_path(int lindex) {
4652
4753 // set accel_path
4854 string label;
6975 }
7076
7177 // ----- create a empty preset file
72 void gx_empty_preset_file(const char* filename) {
78 static void gx_empty_preset_file(const char* filename) {
7379 ofstream nfile(filename);
7480 JsonWriter jw(nfile);
7581 jw.begin_array();
8086 }
8187
8288 // ----- modify (add/sub/change) a existing preset file
83 bool gx_modify_preset(const char* presname, const char* newname = 0,
89 static bool gx_modify_preset(const char* presname, const char* newname = 0,
8490 bool remove = false, bool rewrite = false) {
8591 string tmpfile = gx_preset_file.get_path() + "_tmp";
8692 ifstream ofile(gx_preset_file.get_path().c_str());
171177 // ---- parsing preset file to build up a string vector of preset names
172178 static bool gx_build_preset_list() {
173179 // initialize list
174 plist.clear();
180 gxpreset.plist.clear();
175181 // initialize menu pointer list
176182 for (int i = 0; i < GX_NUM_OF_PRESET_LISTS; i++)
177 pm_list[i].clear();
183 gxpreset.pm_list[i].clear();
178184
179185 // parse it if any
180186 ifstream f(gx_preset_file.get_path().c_str());
185191 int samevers = readHeader(jp);
186192 while (jp.peek() == JsonParser::value_string) {
187193 jp.next();
188 plist.push_back(jp.current_value());
194 gxpreset.plist.push_back(jp.current_value());
189195 jp.skip_object();
190196 }
191197 jp.next(JsonParser::end_array);
193199 f.close();
194200 // ---- how many did we get ?
195201 gx_print_info(_("Preset List Building"),
196 gx_i2a(plist.size()) + string(_(" presets found")));
202 gx_i2a(gxpreset.plist.size()) + string(_(" presets found")));
197203 if (!samevers && gx_preset_file.is_standard()) {
198204 gx_modify_preset(0 , 0, false, true);
199 gx_system::recallState(gx_user_dir + gx_jack::client_instance + "_rc"); // FIXME
205 gx_system::recallState(sysvar.gx_user_dir + gx_jack::gxjack.client_instance + "_rc"); // FIXME
200206 }
201207 return true;
202208 } catch(gx_system::JsonException& e) {
218224 }
219225
220226 // ----------- add new preset to menus
221 void gx_add_preset_to_menus(const string& presname) {
227 void GxPreset::gx_add_preset_to_menus(const string& presname) {
228 static GCallback preset_action_func[] = {
229 G_CALLBACK(gxpreset.gx_load_preset),
230 G_CALLBACK(gxpreset.gx_save_oldpreset),
231 G_CALLBACK(gxpreset.gx_rename_preset_dialog),
232 G_CALLBACK(gxpreset.gx_delete_preset_dialog)
233 };
222234 for (int i = 0; i < GX_NUM_OF_PRESET_LISTS; i++)
223235 gx_add_single_preset_menu_item(presname, i, preset_action_func[i]);
224236 }
225237
226238 // ---- add a single preset to a given preset menu
227 void gx_add_single_preset_menu_item(const string& presname,
239 void GxPreset::gx_add_single_preset_menu_item(const string& presname,
228240 const gint lindex,
229241 GCallback func) {
230242 // menu
259271 string acc_path = gx_get_accel_path(lindex);
260272 acc_path += gx_i2a(accel_key);
261273
274 static GdkModifierType list_mod[] = {
275 GDK_NO_MOD_MASK,
276 GDK_CONTROL_MASK,
277 GDK_MOD1_MASK,
278 GdkModifierType(GDK_CONTROL_MASK|GDK_MOD1_MASK)
279 };
280
262281 if (pos < 10) {
263282 if (!gtk_accel_map_lookup_entry(acc_path.c_str(), NULL))
264283 gtk_accel_map_add_entry(acc_path.c_str(), accel_key, list_mod[lindex]);
275294
276295
277296 // ----- get the preset number by name from preset list
278 int gx_get_single_preset_menu_pos(const string& presname, const gint lindex) {
297 static int gx_get_single_preset_menu_pos(const string& presname, const gint lindex) {
279298 vector<string>::iterator its;
280299 int pos = 0;
281 for (its = plist.begin(); its != plist.end(); its++) {
300 for (its = gxpreset.plist.begin(); its != gxpreset.plist.end(); its++) {
282301 pos++;
283302 if (presname == *its)
284303 return pos;
287306 }
288307
289308 // ----- get pointer to the menuitem
290 GtkMenuItem* const gx_get_preset_item_from_name(int lindex, const string& name) {
309 GtkMenuItem* const GxPreset::gx_get_preset_item_from_name(int lindex, const string& name) {
291310 vector<string>::iterator its;
292311 vector<GtkMenuItem*>::iterator it = pm_list[lindex].begin();
293312 int pos = 0;
301320 }
302321
303322 // ----------- update preset numbering in menus
304 void gx_refresh_preset_menus() {
323 void GxPreset::gx_refresh_preset_menus() {
305324 for (int i = 0; i < GX_NUM_OF_PRESET_LISTS; i++) {
306325 vector<GtkMenuItem*>::iterator it = pm_list[i].begin();
307326 for (it = pm_list[i].begin(); it != pm_list[i].end(); it++) {
321340 }
322341
323342 // ---------- load nth preset (return true if successful)
324 bool gx_nth_preset(unsigned char n) {
343 bool GxPreset::gx_nth_preset(unsigned char n) {
325344 // check that we do have presets
326345 if (!pm_list[LOAD_PRESET_LIST].size()) {
327346 gx_print_warning(_("Preset Switching"),
342361 }
343362
344363 // ---------- switch to next preset in queue
345 void gx_next_preset(GtkWidget* item, gpointer arg) {
364 void GxPreset::gx_next_preset(GtkWidget* item, gpointer arg) {
346365 // check that we do have presets
347 if (!pm_list[LOAD_PRESET_LIST].size()) {
366 if (!gxpreset.pm_list[LOAD_PRESET_LIST].size()) {
348367 gx_print_warning(_("Preset Switching"),
349368 _("Preset list is empty, make some :)"));
350369 return;
351370 }
352371
353372 // start from this element
354 vector<GtkMenuItem*>::iterator it = pm_list[LOAD_PRESET_LIST].begin();
355 if (setting_is_preset) {
373 vector<GtkMenuItem*>::iterator it = gxpreset.pm_list[LOAD_PRESET_LIST].begin();
374 if (gxpreset.setting_is_preset) {
356375 GtkMenuItem* const itemi =
357 gx_get_preset_item_from_name(LOAD_PRESET_LIST, gx_current_preset);
358 for (it = pm_list[LOAD_PRESET_LIST].begin();
359 it != pm_list[LOAD_PRESET_LIST].end();it++ ) {
376 gxpreset.gx_get_preset_item_from_name(LOAD_PRESET_LIST, gxpreset.gx_current_preset);
377 for (it = gxpreset.pm_list[LOAD_PRESET_LIST].begin();
378 it != gxpreset.pm_list[LOAD_PRESET_LIST].end();it++ ) {
360379 if (itemi == *it)
361380 break;
362381 }
363382 it++;
364383 }
365384 // check if we are on edge
366 if (it == pm_list[LOAD_PRESET_LIST].end())
367 it = pm_list[LOAD_PRESET_LIST].begin();
385 if (it == gxpreset.pm_list[LOAD_PRESET_LIST].end())
386 it = gxpreset.pm_list[LOAD_PRESET_LIST].begin();
368387
369388 // load the preset
370389 gx_load_preset(*it, NULL);
371390 }
372391
373392 // ---------- switch to next preset in queue
374 void gx_previous_preset(GtkWidget* item, gpointer arg) {
393 void GxPreset::gx_previous_preset(GtkWidget* item, gpointer arg) {
375394 // check that we do have presets
376 if (!pm_list[LOAD_PRESET_LIST].size()) {
395 if (!gxpreset.pm_list[LOAD_PRESET_LIST].size()) {
377396 gx_print_warning(_("Preset Switching"),
378397 _("Preset list is empty, make some :)"));
379398 return;
380399 }
381400
382401 // start from this element
383 vector<GtkMenuItem*>::iterator it = pm_list[LOAD_PRESET_LIST].end();
384 if (setting_is_preset) {
402 vector<GtkMenuItem*>::iterator it = gxpreset.pm_list[LOAD_PRESET_LIST].end();
403 if (gxpreset.setting_is_preset) {
385404 GtkMenuItem* const itemi =
386 gx_get_preset_item_from_name(LOAD_PRESET_LIST, gx_current_preset);
387 for (it = pm_list[LOAD_PRESET_LIST].begin();
388 it != pm_list[LOAD_PRESET_LIST].end(); it++) {
405 gxpreset.gx_get_preset_item_from_name(LOAD_PRESET_LIST, gxpreset.gx_current_preset);
406 for (it = gxpreset.pm_list[LOAD_PRESET_LIST].begin();
407 it != gxpreset.pm_list[LOAD_PRESET_LIST].end(); it++) {
389408 if (itemi == *it)
390409 break;
391410 }
392411 }
393412
394413 // check if we are on edge
395 if (it == pm_list[LOAD_PRESET_LIST].begin())
396 it = pm_list[LOAD_PRESET_LIST].end();
414 if (it == gxpreset.pm_list[LOAD_PRESET_LIST].begin())
415 it = gxpreset.pm_list[LOAD_PRESET_LIST].end();
397416
398417 // decrement iterator and load preset
399418 it--;
400419
401420 // load the preset
402 gx_load_preset(*it, NULL);
421 gxpreset.gx_load_preset(*it, NULL);
403422 }
404423
405424 // ----------
406 void gx_delete_active_preset_dialog(GtkWidget* item, gpointer arg) {
407 if (!setting_is_preset || gx_current_preset.empty()) {
425 void GxPreset::gx_delete_active_preset_dialog(GtkWidget* item, gpointer arg) {
426 if (!gxpreset.setting_is_preset || gxpreset.gx_current_preset.empty()) {
408427 gx_print_warning(_("Deleting Active Preset"),
409428 _("No active preset, this is the main setting"));
410429 return;
411430 }
412431
413432 // tmp store
414 string presname = gx_current_preset;
433 string presname = gxpreset.gx_current_preset;
415434
416435 // call dialog
417 gx_delete_preset_dialog(NULL, NULL);
418
419 if (gx_current_preset.empty() && !setting_is_preset)
436 gxpreset.gx_delete_preset_dialog(NULL, NULL);
437
438 if (gxpreset.gx_current_preset.empty() && !gxpreset.setting_is_preset)
420439 gx_print_info(_("Deleting Active Preset"),
421440 string(_("Deleted preset ")) + presname +
422441 string(_(", recalled main setting")));
424443
425444
426445 // ----preset deletion dialog
427 void gx_delete_preset_dialog(GtkMenuItem *menuitem, gpointer arg) {
428 string presname = gx_current_preset;
446 void GxPreset::gx_delete_preset_dialog(GtkMenuItem *menuitem, gpointer arg) {
447 string presname = gxpreset.gx_current_preset;
429448
430449 string msg = _(" Are you sure you want to delete preset ");
431450 msg += presname;
451470 }
452471
453472 // we want to delete the bugger!
454 gx_delete_preset(menuitem, arg);
473 gxpreset.gx_delete_preset(menuitem, arg);
455474 }
456475
457476 // ----delete all presets dialog
458 void gx_delete_all_presets_dialog(GtkMenuItem *menuitem, gpointer arg) {
477 void GxPreset::gx_delete_all_presets_dialog(GtkMenuItem *menuitem, gpointer arg) {
459478 // --- if no presets, then just pop up some info
460 if (pm_list[LOAD_PRESET_LIST].empty()) {
479 if (gxpreset.pm_list[LOAD_PRESET_LIST].empty()) {
461480 gx_print_warning(_("Delete All Presets Dialog"),
462481 string(_("There is no presets to delete")));
463482 return;
479498 return;
480499 }
481500 // we want to delete all the buggers!
482 gx_delete_all_presets();
501 gxpreset.gx_delete_all_presets();
483502 }
484503
485504 // ----delete all presets
486 void gx_delete_all_presets() {
505 void GxPreset::gx_delete_all_presets() {
487506 // this function will simply delete the preset file,
488507 // clear the preset list and refresh the menus
489508
501520 gx_print_info(_("All Presets Deleting"), string(_("deleted ALL presets!")));
502521 }
503522
504 bool gx_load_preset_from_file(const char* presname) {
523 static bool gx_load_preset_from_file(const char* presname) {
505524 ifstream ofile(gx_preset_file.get_path().c_str());
506525 JsonParser jp(ofile);
507526
510529 int major, minor;
511530 readHeader(jp, &major, &minor);
512531
513 bool found = false;
532 // bool found = false;
514533 while (jp.peek() != JsonParser::end_array) {
515534 jp.next(JsonParser::value_string);
516535 if (jp.current_value() == presname) {
517 found = true;
536 // found = true;
518537 read_preset(jp, 0, major, minor);
519538 return true;
520539 } else {
531550 }
532551
533552 // ----preset deletion
534 void gx_delete_preset(GtkMenuItem* item, gpointer arg) {
553 void GxPreset::gx_delete_preset(GtkMenuItem* item, gpointer arg) {
535554
536555 // delete it via interface
537 const string presname = gx_current_preset;
556 const string presname = gxpreset.gx_current_preset;
538557
539558 (void)gx_modify_preset(presname.c_str(), NULL, true);
540559
541560 // update menu
542 gx_refresh_preset_menus();
561 gxpreset.gx_refresh_preset_menus();
543562
544563 // recalling main setting
545 gx_recall_settings_file(); // FIXME (wrong when loaded with -f ?)
564 gxpreset.gx_recall_settings_file(); // FIXME (wrong when loaded with -f ?)
546565
547566 gx_print_warning(_("Preset Deleting"),
548567 string(_("Deleted preset ")) +
550569 }
551570
552571 // ----------
553 void gx_rename_active_preset_dialog(GtkWidget* item, gpointer arg) {
554 if (!setting_is_preset || gx_current_preset.empty()) {
572 void GxPreset::gx_rename_active_preset_dialog(GtkWidget* item, gpointer arg) {
573 if (!gxpreset.setting_is_preset || gxpreset.gx_current_preset.empty()) {
555574 gx_print_warning(_("Renaming Active Preset"),
556575 _("This is the main setting, "
557576 "load a preset first"));
558577 return;
559578 }
560579
561 string presname = gx_current_preset;
580 string presname = gxpreset.gx_current_preset;
562581
563582 // get current preset menu item
564583 GtkMenuItem* const rnm_item =
565 gx_get_preset_item_from_name(RENAME_PRESET_LIST, presname);
584 gxpreset.gx_get_preset_item_from_name(RENAME_PRESET_LIST, presname);
566585
567586 // call delete dialog
568587 if (rnm_item)
569 gx_rename_preset_dialog(rnm_item, NULL);
570
571 if (presname == gx_current_preset) {
588 gxpreset.gx_rename_preset_dialog(rnm_item, NULL);
589
590 if (presname == gxpreset.gx_current_preset) {
572591 gx_print_warning(_("Renaming Active Preset"),
573592 _("The preset name is unchanged"));
574593 return;
575594 }
576595
577 if (!gx_current_preset.empty() && setting_is_preset)
596 if (!gxpreset.gx_current_preset.empty() && gxpreset.setting_is_preset)
578597 gx_print_info(_("Renaming Active Preset"),
579598 string(_("Renamed preset ")) + presname +
580 string(_(" to ")) + gx_current_preset);
599 string(_(" to ")) + gxpreset.gx_current_preset);
581600 }
582601
583602 static gboolean gx_convolver_restart(gpointer data) {
597616 static gboolean gx_rename_main_widget(gpointer data) {
598617 // refresh main window name
599618 string title = string("gx_head ");
600 if (setting_is_factory) {
601 title += gx_factory_preset;
619 if (gxpreset.setting_is_factory) {
620 title += gxpreset.gx_factory_preset;
602621 } else {
603 title += gx_current_preset;
622 title += gxpreset.gx_current_preset;
604623 }
605624 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), title.c_str());
606625 // reload convolver settings widget
609628 }
610629
611630 // ----menu funktion load
612 void gx_load_preset(GtkMenuItem *menuitem, gpointer load_preset) {
631 void GxPreset::gx_load_preset(GtkMenuItem *menuitem, gpointer load_preset) {
613632 // check that we do have presets
614 if (!pm_list[LOAD_PRESET_LIST].size()) {
633 if (!gxpreset.pm_list[LOAD_PRESET_LIST].size()) {
615634 gx_print_warning(_("Preset Loading"),
616635 _("Preset list is empty, make some :)"));
617636 return;
618637 }
619638
620639 // retrieve preset name
621 vector<GtkMenuItem*>::iterator it = pm_list[LOAD_PRESET_LIST].begin();
622 vector<string>::iterator its = plist.begin();
623 for (it = pm_list[LOAD_PRESET_LIST].begin(); it != pm_list[LOAD_PRESET_LIST].end(); it++) {
640 vector<GtkMenuItem*>::iterator it = gxpreset.pm_list[LOAD_PRESET_LIST].begin();
641 vector<string>::iterator its = gxpreset.plist.begin();
642 for (it = gxpreset.pm_list[LOAD_PRESET_LIST].begin(); it != gxpreset.pm_list[LOAD_PRESET_LIST].end(); it++) {
624643 if (menuitem == *it)
625644 break;
626645 its++;
633652 // Need to pass it on
634653 bool preset_ok = gx_load_preset_from_file(preset_name.c_str());
635654
636 // check result
655 // check audio.result
637656 if (!preset_ok) {
638657 gx_print_error(_("Preset Loading"), string(_("Could not load preset ")) + preset_name);
639658 return;
641660
642661 // print out info
643662 gx_print_info(_("Preset Loading"), string(_("loaded preset ")) + preset_name);
644 setting_is_preset = true;
645 setting_is_factory = false;
646
647 gx_current_preset = preset_name;
663 gxpreset.setting_is_preset = true;
664 gxpreset.setting_is_factory = false;
665
666 gxpreset.gx_current_preset = preset_name;
648667
649668 gx_jconv::gx_reload_jcgui();
650669
654673 /* reset convolver buffer for preset change*/
655674 if (gx_engine::conv.is_runnable() && gx_jconv::GxJConvSettings::checkbutton7 == 1) {
656675 gx_engine::conv.stop();
657 gx_gui::g_threads[3] = g_idle_add_full(G_PRIORITY_HIGH_IDLE+20,
676 gx_gui::guivar.g_threads[8] = g_idle_add_full(G_PRIORITY_HIGH_IDLE+20,
658677 gx_convolver_restart, NULL, NULL);
659678 }
660679
661680 /* collect info for stage info display*/
662 gx_gui::show_patch_info = gx_get_single_preset_menu_pos(gx_current_preset, 0);
681 gx_gui::guivar.show_patch_info = gx_get_single_preset_menu_pos(gxpreset.gx_current_preset, 0);
663682 }
664683
665684 // ---- funktion save
666 void gx_save_preset(const char* presname, bool expand_menu) {
685 void GxPreset::gx_save_preset(const char* presname, bool expand_menu) {
667686 bool found = gx_modify_preset(presname);
668687
669688 // update preset menus if needed
690709
691710 ///------factory presets--------///
692711 // set factory preset file and path
693 void gx_set_factory_file(int i) {
712 static void gx_set_factory_file(int i) {
694713 switch (i) {
695714 case 0:
696 gx_factory_preset_file.set_path(gx_system::gx_style_dir +"funkmuscle_rc");
715 gx_factory_preset_file.set_path(gx_system::sysvar.gx_style_dir +"funkmuscle_rc");
697716 break;
698717 case 1:
699 gx_factory_preset_file.set_path(gx_system::gx_style_dir +"zettberlin_rc");
718 gx_factory_preset_file.set_path(gx_system::sysvar.gx_style_dir +"zettberlin_rc");
700719 break;
701720 case 2:
702 gx_factory_preset_file.set_path(gx_system::gx_style_dir +"dlp_ae_rc");
721 gx_factory_preset_file.set_path(gx_system::sysvar.gx_style_dir +"dlp_ae_rc");
703722 break;
704 }
705 }
706
707 bool gx_load_preset_from_factory(const char* presname, int i) {
723 case 3:
724 gx_factory_preset_file.set_path(gx_system::sysvar.gx_style_dir +"autoandimat_rc");
725 break;
726 }
727 }
728
729 static bool gx_load_preset_from_factory(const char* presname, int i) {
708730 gx_set_factory_file(i);
709731 ifstream ofile(gx_factory_preset_file.get_path().c_str());
710732
715737 int major, minor;
716738 readHeader(jp, &major, &minor);
717739
718 bool found = false;
740 // bool found = false;
719741 while (jp.peek() != JsonParser::end_array) {
720742 jp.next(JsonParser::value_string);
721743 if (jp.current_value() == presname) {
722 found = true;
744 // found = true;
723745 read_preset(jp, 0, major, minor);
724746 return true;
725747 } else {
737759 }
738760
739761 // ----menu funktion load preset from factory
740 void gx_load_factory_preset(GtkMenuItem *menuitem, gpointer load_preset) {
762 static void gx_load_factory_preset(GtkMenuItem *menuitem, gpointer load_preset) {
741763 // retrieve preset name
742764 int i = GPOINTER_TO_INT(load_preset);
743 vector<GtkMenuItem*>::iterator it = fpm_list[i].begin();
744 vector<string>::iterator its = fplist[i].begin();
745 for (it = fpm_list[i].begin(); it != fpm_list[i].end(); it++) {
765 vector<GtkMenuItem*>::iterator it = gxpreset.fpm_list[i].begin();
766 vector<string>::iterator its = gxpreset.fplist[i].begin();
767 for (it = gxpreset.fpm_list[i].begin(); it != gxpreset.fpm_list[i].end(); it++) {
746768 if (menuitem == *it)
747769 break;
748770 its++;
754776 // Need to pass it on
755777 bool preset_ok = gx_load_preset_from_factory(preset_name.c_str(), i);
756778
757 // check result
779 // check audio.result
758780 if (!preset_ok) {
759781 gx_print_error(_("Preset Loading"), string(_("Could not load preset ")) + preset_name);
760782 return;
763785 // print out info
764786 gx_print_info(_("Preset Loading"), string(_("loaded preset ")) + preset_name);
765787
766 gx_factory_preset = preset_name;
767 setting_is_factory = true;
788 gxpreset.gx_factory_preset = preset_name;
789 gxpreset.setting_is_factory = true;
768790 gx_jconv::gx_reload_jcgui();
769791
770792 /* do some GUI stuff*/
773795 /* reset convolver buffer for preset change*/
774796 if (gx_engine::conv.is_runnable() && gx_jconv::GxJConvSettings::checkbutton7 == 1) {
775797 gx_engine::conv.stop();
776 gx_gui::g_threads[3] = g_idle_add_full(G_PRIORITY_HIGH_IDLE+20,
798 gx_gui::guivar.g_threads[8] = g_idle_add_full(G_PRIORITY_HIGH_IDLE+20,
777799 gx_convolver_restart, NULL, NULL);
778800 }
779801 }
780802
781803 // load the factory preset file
782 void gx_load_factory_file(int i) {
804 void GxPreset::gx_load_factory_file(int i) {
783805 // initialize list
784806 fplist[i].clear();
785807 // initialize menu pointer list
824846
825847 ///------ user preset handling------///
826848 // load a preset file
827 void gx_recall_settings_file(const string *filename) {
849 void GxPreset::gx_recall_settings_file(const string *filename) {
828850 if (!filename) {
829 string fname = gx_user_dir + gx_jack::client_instance + "_rc";
851 string fname = sysvar.gx_user_dir + gx_jack::gxjack.client_instance + "_rc";
830852 gx_system::recallState(fname);
831853 gx_jconv::gx_reload_jcgui();
832854 gx_print_info(
838860 _("loading Settings file"),
839861 (boost::format(_("loaded settings file %1%")) % *filename).str());
840862 }
841 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), gx_jack::client_instance.c_str());
863 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), gx_jack::gxjack.client_instance.c_str());
842864 setting_is_preset = false;
843865 setting_is_factory = false;
844866 gx_current_preset = "";
845 gx_gui::show_patch_info = 0;
867 gx_gui::guivar.show_patch_info = 0;
846868 gx_refresh_preset_menus();
847869 }
848870
849871 // ----- select a external preset file
850 void gx_load_preset_file(const char* presname, bool expand_menu) {
872 void GxPreset::gx_load_preset_file(const char* presname, bool expand_menu) {
851873 Gtk::FileChooserDialog file_chooser(
852874 *Glib::wrap(GTK_WINDOW(gx_gui::gw.fWindow)),
853875 _("Select a preset *_rc file"),
868890 file_chooser.set_filter(filter);
869891 if (file_chooser.run() == Gtk::RESPONSE_ACCEPT) {
870892 gx_preset_file.set_path(file_chooser.get_filename());
871 setting_is_preset = false;
872 setting_is_factory = false;
873 gx_current_preset = "";
874 gx_gui::show_patch_info = 0;
875 gx_refresh_preset_menus();
893 gxpreset.setting_is_preset = false;
894 gxpreset.setting_is_factory = false;
895 gxpreset.gx_current_preset = "";
896 gx_gui::guivar.show_patch_info = 0;
897 gxpreset.gx_refresh_preset_menus();
876898 }
877899 }
878900
879901 // ----- export preset file
880 void gx_save_preset_file(const char* presname, bool expand_menu) {
902 void GxPreset::gx_save_preset_file(const char* presname, bool expand_menu) {
881903 Gtk::FileChooserDialog file_chooser(
882904 *Glib::wrap(GTK_WINDOW(gx_gui::gw.fWindow)),
883905 _("Save a preset *_rc File"),
906928 }
907929
908930 // ----menu funktion save
909 void gx_save_oldpreset(GtkMenuItem *menuitem, gpointer arg) {
931 void GxPreset::gx_save_oldpreset(GtkMenuItem *menuitem, gpointer arg) {
910932 guint save_active = GPOINTER_TO_UINT(arg);
911933 string presname;
912 vector<string>::iterator its = plist.begin();
934 vector<string>::iterator its = gxpreset.plist.begin();
913935
914936 // are saving an active preset
915937 if (save_active) {
916 if (gx_current_preset.empty()) {
938 if (gxpreset.gx_current_preset.empty()) {
917939 gx_print_warning(_("Saving Active Preset"),
918940 _("We are in main setting, load a preset first"));
919941 return;
920942 }
921 presname = gx_current_preset;
943 presname = gxpreset.gx_current_preset;
922944
923945 } else { // we are saving another preset from the menu
924946
925947 vector<GtkMenuItem*>::iterator it;
926948
927 for (it = pm_list[SAVE_PRESET_LIST].begin();
928 it != pm_list[SAVE_PRESET_LIST].end(); it++) {
949 for (it = gxpreset.pm_list[SAVE_PRESET_LIST].begin();
950 it != gxpreset.pm_list[SAVE_PRESET_LIST].end(); it++) {
929951 if (menuitem == *it) {
930952 break;
931953 }
933955 }
934956 presname = *its;
935957 }
936 gx_save_preset(presname.c_str(), false);
958 gxpreset.gx_save_preset(presname.c_str(), false);
937959 }
938960
939961 // ----clean up preset name given by user
940 void gx_cleanup_preset_name(string& presname) {
962 void GxPreset::gx_cleanup_preset_name(string& presname) {
941963 gx_nospace_in_name(presname, "-");
942964 }
943965
944966 // ----menu funktion save
945 void gx_save_newpreset(GtkEntry* entry) {
967 void GxPreset::gx_save_newpreset(GtkEntry* entry) {
946968 string presname;
947969 gx_gui::gx_get_text_entry(entry, presname);
948970
953975 }
954976
955977 // replace spaces by -
956 gx_cleanup_preset_name(presname);
978 gxpreset.gx_cleanup_preset_name(presname);
957979
958980 // is the name alrady taken ?
959981 vector<string>::iterator its;
960 vector<GtkMenuItem*>::iterator it = pm_list[SAVE_PRESET_LIST].begin();
961
962 for (its = plist.begin(); its != plist.end(); its++) {
982 vector<GtkMenuItem*>::iterator it = gxpreset.pm_list[SAVE_PRESET_LIST].begin();
983
984 for (its = gxpreset.plist.begin(); its != gxpreset.plist.end(); its++) {
963985 // found a match
964986 if (presname == *its) {
965987 gx_print_error(_("New Preset Saving"),
966988 string(_("preset name ")) +
967989 presname +
968990 string(_(" already in use, choose another one")));
969 gx_save_newpreset_dialog(*it, NULL);
991 gxpreset.gx_save_newpreset_dialog(*it, NULL);
970992 return;
971993 }
972994 it++;
973995 }
974996
975997 // finally save to preset file
976 gx_save_preset(presname.c_str(), true);
998 gxpreset.gx_save_preset(presname.c_str(), true);
977999 gx_jconv::gx_reload_jcgui();
9781000 }
9791001
9801002 // read name for preset
981 void gx_recall_main_setting(GtkMenuItem* item, gpointer) {
982 gx_recall_settings_file(); // FIXME (wrong when loaded with -f ?)
1003 void GxPreset::gx_recall_main_setting(GtkMenuItem* item, gpointer) {
1004 gxpreset.gx_recall_settings_file(); // FIXME (wrong when loaded with -f ?)
9831005 }
9841006
9851007 // ----- save current setting as main setting
986 void gx_save_main_setting(GtkMenuItem* item, gpointer arg) {
987 if (!saveStateToFile(gx_user_dir + gx_jack::client_instance + "_rc")) {
1008 void GxPreset::gx_save_main_setting(GtkMenuItem* item, gpointer arg) {
1009 if (!saveStateToFile(sysvar.gx_user_dir + gx_jack::gxjack.client_instance + "_rc")) {
9881010 gx_print_error(_("Main Setting"), _("can't save main setting"));
989 } else if (setting_is_preset) {
1011 } else if (gxpreset.setting_is_preset) {
9901012 gx_print_info(_("Main Setting"),
9911013 _("Saved current preset into main setting"));
9921014 } else {
9931015 gx_print_info(_("Main Setting"), _("Saved main setting"));
9941016 }
995 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), gx_jack::client_instance.c_str());
996 setting_is_preset = false;
997 setting_is_factory = false;
1017 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), gx_jack::gxjack.client_instance.c_str());
1018 gxpreset.setting_is_preset = false;
1019 gxpreset.setting_is_factory = false;
9981020 gx_jconv::gx_reload_jcgui();
9991021 }
10001022
10011023 // ----menu function save new preset
1002 void gx_save_newpreset_dialog(GtkMenuItem *menuitem, gpointer save_preset) {
1024 void GxPreset::gx_save_newpreset_dialog(GtkMenuItem *menuitem, gpointer save_preset) {
10031025 // preset name to save
10041026 string presname;
10051027
10231045
10241046
10251047 // ----preset renaming
1026 void gx_rename_preset(GtkEntry* entry) {
1048 void GxPreset::gx_rename_preset(GtkEntry* entry) {
10271049 // rename preset
10281050 string newname;
10291051 gx_gui::gx_get_text_entry(entry, newname);
10301052
10311053 if (newname.empty()) {
10321054 gx_print_error(_("Preset Renaming"), _("no preset name given"));
1033 old_preset_name = "";
1055 gxpreset.old_preset_name = "";
10341056 return;
10351057 }
10361058
10371059 // replace spaces by -
1038 gx_cleanup_preset_name(newname);
1060 gxpreset.gx_cleanup_preset_name(newname);
10391061
10401062 // get the UI to manipulate the preset file
1041 if (!gx_modify_preset(old_preset_name.c_str(), newname.c_str())) {
1063 if (!gx_modify_preset(gxpreset.old_preset_name.c_str(), newname.c_str())) {
10421064 gx_print_error(_("Preset Renaming"),
1043 string(_("Could not rename preset ")) + old_preset_name);
1044 old_preset_name = "";
1065 string(_("Could not rename preset ")) + gxpreset.old_preset_name);
1066 gxpreset.old_preset_name = "";
10451067 return;
10461068 }
10471069
10481070 // if jconv file
1049 string jc_preset = gx_user_dir + string("jconv_") + old_preset_name + ".conf ";
1050 string jc_file = gx_user_dir + string("jconv_") + newname + ".conf ";
1071 string jc_preset = sysvar.gx_user_dir + string("jconv_") + gxpreset.old_preset_name + ".conf ";
1072 string jc_file = sysvar.gx_user_dir + string("jconv_") + newname + ".conf ";
10511073 string file_move = jc_preset + jc_file;
10521074 (void)gx_system_call("mv", file_move.c_str(), true);
10531075
10541076 // refresh the menus
1055 gx_refresh_preset_menus();
1056
1057 if (setting_is_preset) {
1077 gxpreset.gx_refresh_preset_menus();
1078
1079 if (gxpreset.setting_is_preset) {
10581080 string jname = "gx_head ";
10591081 string title = jname + newname;
10601082 gtk_window_set_title(GTK_WINDOW(gx_gui::gw.fWindow), title.c_str());
10611083
1062 gx_current_preset = newname;
1084 gxpreset.gx_current_preset = newname;
10631085 }
10641086 gx_jconv::gx_reload_jcgui();
10651087 }
10661088
10671089 // ----preset renaming dialog
1068 void gx_rename_preset_dialog(GtkMenuItem *menuitem, gpointer arg) {
1069 vector<string>::iterator its = plist.begin();
1070 vector<GtkMenuItem*>::iterator it = pm_list[RENAME_PRESET_LIST].begin();
1071 for (it = pm_list[RENAME_PRESET_LIST].begin(); it != pm_list[RENAME_PRESET_LIST].end(); it++) {
1090 void GxPreset::gx_rename_preset_dialog(GtkMenuItem *menuitem, gpointer arg) {
1091 vector<string>::iterator its = gxpreset.plist.begin();
1092 vector<GtkMenuItem*>::iterator it = gxpreset.pm_list[RENAME_PRESET_LIST].begin();
1093 for (it = gxpreset.pm_list[RENAME_PRESET_LIST].begin(); it != gxpreset.pm_list[RENAME_PRESET_LIST].end(); it++) {
10721094 if ( menuitem == *it)
10731095 break;
10741096 its++;
10801102 title += *its;
10811103 }
10821104
1083 old_preset_name = *its;
1105 gxpreset.old_preset_name = *its;
10841106 // running dialog and get response
10851107 gint response = gx_gui::gx_choice_dialog_with_text_entry(
10861108 title.c_str(),
10871109 _(" Please enter a valid preset name: "),
10881110 _("Validate"), _("Cancel"),
10891111 GTK_RESPONSE_YES, GTK_RESPONSE_CANCEL, GTK_RESPONSE_YES,
1090 G_CALLBACK(gx_rename_preset)
1112 G_CALLBACK(gxpreset.gx_rename_preset)
10911113 );
10921114
10931115 if (response == GTK_RESPONSE_CANCEL) {
10941116 gx_print_warning(_("Rename Preset Dialog"),
10951117 _(" Preset renaming has been cancelled"));
1096 old_preset_name = "";
1097 return;
1098 }
1099 }
1100
1101 void init() {
1102 gx_preset_file.set_standard(gx_system::gx_user_dir + "gx_headpre_rc");
1103 // gx_factory_preset_file.set_standard(gx_system::gx_style_dir +"funkmuscle_rc");
1118 gxpreset.old_preset_name = "";
1119 return;
1120 }
1121 }
1122
1123 void GxPreset::init() {
1124 gx_preset_file.set_standard(gx_system::sysvar.gx_user_dir + "gx_headpre_rc");
1125 // gx_factory_preset_file.set_standard(gx_system::sysvar.gx_style_dir +"funkmuscle_rc");
11041126
11051127 gx_gui::parameter_map.insert(&gx_preset_file);
11061128 // gx_gui::parameter_map.insert(&gx_factory_preset_file);
1129 setting_is_preset = false;
1130 setting_is_factory = false;
11071131 }
11081132 /* ----------------------------------------------------------------*/
11091133 } /* end of gx_preset namespace */
7171 assert(r_down.inp_count == 0);
7272 assert(r_down.out_count == 1);
7373 }
74
75 SimpleResampler resampTube, resampDist;
76
7774
7875 float *BufferResampler::process(int fs_inp, int ilen, float *input, int fs_outp, int& olen)
7976 {
157154 return olen - out_count;
158155 }
159156
160 } // namespace gx_engine
157 GlobalResampler *_glob_resamp = 0;
158
159 void GlobalResampler::init_resampler_ref() {
160 _glob_resamp = new GlobalResampler;
161 }
162
163 void GlobalResampler::delete_resampler_ref() {
164 delete _glob_resamp;
165 _glob_resamp = 0;
166 }
167
168 } // namespace gx_resample
3838
3939 namespace gx_system {
4040
41 /****************************************************************
42 ** JsonWriter
43 */
44
45 JsonWriter::JsonWriter(ostream &o)
46 : os(o),
47 first(true),
48 deferred_nl(false),
49 indent("") {}
50
51 inline void JsonWriter::komma() {
52 if (first)
53 first = false;
54 else if (!deferred_nl)
55 os << ", ";
56 else
57 os << ",";
58 flush();
59 }
60
61 inline void JsonWriter::space() {
62 if (first)
63 first = false;
64 else if (!deferred_nl)
65 os << " ";
66 flush();
67 }
68
69 inline void JsonWriter::iplus() {
70 indent += " ";
71 }
72
73 inline void JsonWriter::iminus() {
74 if (!indent.empty()) {
75 indent = indent.substr(0, indent.size() - 2);
76 }
77 }
78
79 void JsonWriter::write(float v, bool nl) {
80 komma();
81 os << v;
82 snl(nl);
83 }
84
85 void JsonWriter::write(double v, bool nl) {
86 komma();
87 os << v;
88 snl(nl);
89 }
90
91 void JsonWriter::write(int i, bool nl) {
92 komma();
93 os << i;
94 snl(nl);
95 }
96
97 void JsonWriter::write(unsigned int i, bool nl) {
98 komma();
99 os << i;
100 snl(nl);
101 }
102
103 void JsonWriter::write_lit(string s, bool nl) {
104 komma();
105 os << s;
106 snl(nl);
107 }
108
109 void JsonWriter::write(const char* p, bool nl) {
110 komma();
111 os << '"';
112 while (*p) {
113 switch (*p) {
114 case '\\': case '"': os << '\\'; break;
115 case '\b': os << '\\'; os << 'b'; continue; // NOLINT
116 case '\f': os << '\\'; os << 'f'; continue; // NOLINT
117 case '\n': os << '\\'; os << 'n'; continue; // NOLINT
118 case '\r': os << '\\'; os << 'r'; continue; // NOLINT
119 case '\t': os << '\\'; os << 't'; continue; // NOLINT
120 }
121 os << *p++;
122 }
123 os << '"';
124 snl(nl);
125 }
126
127 void JsonWriter::begin_object(bool nl) {
128 komma();
129 os << '{';
130 snl(nl);
131 first = true;
132 iplus();
133 }
134
135 void JsonWriter::end_object(bool nl) {
136 iminus();
137 flush();
138 os << '}';
139 snl(nl);
140 }
141
142 void JsonWriter::begin_array(bool nl) {
143 komma();
144 os << '[';
145 snl(nl);
146 first = true;
147 iplus();
148 }
149
150 void JsonWriter::end_array(bool nl) {
151 iminus();
152 flush();
153 first = false;
154 os << ']';
155 snl(nl);
156 }
157
158 void JsonWriter::write_key(const char* p, bool nl) {
159 write(p, nl);
160 os << ": ";
161 first = true;
162 }
163
164 void JsonWriter::write_key(string p, bool nl) {
165 write(p, nl);
166 os << ": ";
167 first = true;
168 }
169
170 // called before output of next element
171 void JsonWriter::flush() {
172 if (deferred_nl) {
173 os << endl;
174 deferred_nl = false;
175 os << indent;
176 }
177 }
178
179
180 /****************************************************************
181 ** JsonParser
182 */
183
184 const char* JsonParser::token_names[] = {
185 "no_token", "end_token", "begin_object", "end_object",
186 "begin_array", "end_array", "value_string", "value_number",
187 "value_key" };
188
189 JsonException::JsonException(const char* desc) {
190 what_str = string("Json parse error: ") + desc;
191 }
192
193 JsonParser::JsonParser(istream& i)
194 : is(i),
195 depth(0),
196 cur_tok(no_token),
197 nl(false),
198 next_depth(0),
199 next_tok(no_token) {}
200
201 void JsonParser::throw_unexpected(token expect) {
202 ostringstream b;
203 b << "unexpected token: " << token_names[cur_tok]
204 << " (expected: " << token_names[expect] << ")"
205 << endl;
206 throw JsonException(b.str().c_str());
207 }
208
209 const char* unicode2utf8(unsigned int input) {
210 const int maskbits = 0x3F;
211 const int maskbyte = 0x80;
212 const int mask2bytes = 0xC0;
213 const int mask3bytes = 0xE0;
214 static char result[4];
215 int n = 0;
216 // 0xxxxxxx
217 if (input < 0x80) {
218 result[n++] = static_cast<char>(input);
219
220 // 110xxxxx 10xxxxxx
221 } else if (input < 0x800) {
222 result[n++] = (static_cast<char>(mask2bytes | (input >> 6)));
223 result[n++] = (static_cast<char>(maskbyte | (input & maskbits)));
224
225 // 1110xxxx 10xxxxxx 10xxxxxx
226 } else {
227 result[n++] = (static_cast<char>(mask3bytes | (input >> 12)));
228 result[n++] = (static_cast<char>(maskbyte | ((input >> 6) & maskbits)));
229 result[n++] = (static_cast<char>(maskbyte | (input & maskbits)));
230 }
231 result[n++] = '\0';
232 return result;
233 }
234
235 const char* JsonParser::readcode() {
236 int code = 0;
237 for (int i = 0; i < 4; i++) {
238 int n = is.get();
239 if (!is.good())
240 throw JsonException("eof");
241 if ('0' <= n && n <= '9')
242 n = n - '0';
243 else
244 n = 10 + (toupper(n) - 'A');
245 code = code * 16 + n;
246 }
247 return unicode2utf8(code);
248 }
249
250 string JsonParser::readstring() {
251 ostringstream os("");
252 char c;
253 do {
254 is.get(c);
255 if (!is.good())
256 return "";
257 if (c == '\\') {
258 is.get(c);
259 if (!is.good())
260 return "";
261 switch (c) {
262 case 'b': os << '\b'; break;
263 case 'f': os << '\f'; break;
264 case 'n': os << '\n'; break;
265 case 'r': os << '\r'; break;
266 case 't': os << '\t'; break;
267 case 'u': os << readcode(); break;
268 default: is.get(c); os << c; break;
269 }
270 } else if (c == '"') {
271 return os.str();
272 } else {
273 os << c;
274 }
275 } while (true);
276 }
277
278 string JsonParser::readnumber(char c) {
279 ostringstream os("");
280 do {
281 os << c;
282 c = is.peek();
283 switch (c) {
284 case '+': case '-': case '0': case '1': case '2': case '3': case '4':
285 case '5': case '6': case '7': case '8': case '9': case 'e': case 'E':
286 case '.':
287 break;
288 default:
289 return os.str();
290 }
291 is.get(c);
292 } while (is.good());
293 return "";
294 }
295
296 void JsonParser::read_next() {
297 if (next_tok == end_token)
298 return;
299 if (next_tok != no_token and next_depth == 0) {
300 next_tok = end_token;
301 return;
302 }
303 char c;
304 nl = false;
305 while (true) {
306 do {
307 is.get(c);
308 if (!is.good())
309 throw JsonException("eof");
310 if (c == '\n')
311 nl = true;
312 } while (c == ' ' || c == '\t' || c == '\r' || c == '\n');
313 switch (c) {
314 case '[': next_tok = begin_array; next_depth++; break;
315
316 case ']': next_tok = end_array; next_depth--; break;
317
318 case '{': next_tok = begin_object; next_depth++; break;
319
320 case '}': next_tok = end_object; next_depth--; break;
321
322 case ',': continue;
323
324 case '"':
325 next_str = readstring();
326 is >> c;
327 if (!is.good())
328 throw JsonException("eof");
329 if (c == ':') {
330 next_tok = value_key;
331 } else {
332 is.unget();
333 next_tok = value_string;
334 }
335 break;
336
337 case '-': case '0': case '1': case '2': case '3': case '4':
338 case '5': case '6': case '7': case '8': case '9':
339 next_str = readnumber(c);
340 next_tok = value_number;
341 break;
342
343 default:
344 throw JsonException("bad token");
345 }
346 break;
347 }
348 }
349
350 JsonParser::token JsonParser::next(token expect) {
351 if (cur_tok != end_token) {
352 if (next_tok == no_token)
353 read_next();
354 depth = next_depth;
355 cur_tok = next_tok;
356 str = next_str;
357 if (next_tok != end_token)
358 read_next();
359 }
360 if (expect != no_token)
361 check_expect(expect);
362 return cur_tok;
363 }
364
365
366 void JsonParser::copy_object(JsonWriter& jw) {
367 int curdepth = depth;
368 do {
369 switch (next()) {
370 case begin_object:
371 jw.begin_object(nl);
372 break;
373 case end_object:
374 jw.end_object(nl);
375 break;
376 case begin_array:
377 jw.begin_array(nl);
378 break;
379 case end_array:
380 jw.end_array(nl);
381 break;
382 case value_string:
383 jw.write(current_value(), nl);
384 break;
385 case value_number:
386 jw.write_lit(current_value(), nl);
387 break;
388 case value_key:
389 jw.write_key(current_value().c_str(), nl);
390 break;
391 default:
392 throw JsonException("unexpected token");
393 }
394 } while (curdepth != depth);
395 }
396
397 void JsonParser::skip_object() {
398 int curdepth = depth;
399 do {
400 if (next() == end_token) {
401 throw JsonException("unexpected eof");
402 }
403 } while (curdepth != depth);
404 }
405
406
407 /****************************************************************
408 ** loading of saving application data
409 */
410
411 static void write_parameters(JsonWriter &w, bool preset) {
412 w.begin_object(true);
413 for (gx_gui::ParamMap::iterator i = gx_gui::parameter_map.begin();
414 i != gx_gui::parameter_map.end(); i++) {
415 gx_gui::Parameter *param = i->second;
416 if ((preset and param->isInPreset()) or(!preset and !param->isInPreset())) {
417 param->writeJSON(w);
418 w.newline();
419 }
420 }
421 w.end_object(true);
422 }
423
424 static void read_parameters(JsonParser &jp, gx_gui::paramlist& plist, bool preset) {
425 jp.next(JsonParser::begin_object);
426 do {
427 jp.next(JsonParser::value_key);
428 if (!gx_gui::parameter_map.hasId(jp.current_value())) {
429 gx_print_warning(_("recall settings"),
430 _("unknown parameter: ")+jp.current_value());
431 jp.skip_object();
432 continue;
433 }
434 gx_gui::Parameter& param = gx_gui::parameter_map[jp.current_value()];
435 if (!preset and param.isInPreset()) {
436 gx_print_warning(_("recall settings"),
437 _("preset-parameter ")+param.id()+_(" in settings"));
438 jp.skip_object();
439 continue;
440 } else if (preset and !param.isInPreset()) {
441 gx_print_warning(_("recall settings"),
442 _("non preset-parameter ")+param.id()+_(" in preset"));
443 jp.skip_object();
444 continue;
445 }
446 param.readJSON_value(jp);
447 plist.push_back(&param);
448 } while (jp.peek() == JsonParser::value_key);
449 jp.next(JsonParser::end_object);
450 }
451
452 void write_preset(JsonWriter &w, bool write_midi, bool force_midi) {
453 w.begin_object(true);
454 w.write_key("engine");
455 write_parameters(w, true);
456 w.write_key("jconv");
457 gx_jconv::GxJConvSettings::instance()->writeJSON(w);
458 if (force_midi || (write_midi &&
459 gx_gui::parameter_map["system.midi_in_preset"].getSwitch().get())) {
460 w.write_key("midi_controller");
461 gx_gui::controller_map.writeJSON(w);
462 }
463 w.newline();
464 w.end_object(true);
465 }
466
467 void fixup_parameters(int major, int minor) {
468 assert(gx_gui::parameter_map.hasId("jconv.wet_dry"));
469 if (major == majorversion && minor == minorversion) {
470 return;
471 }
472 if (major == 1 && minor < 2) {
473 if (gx_gui::parameter_map.hasId("jconv.wet_dry")) {
474 gx_gui::Parameter& p = gx_gui::parameter_map["jconv.wet_dry"];
475 if (p.isFloat()) {
476 p.getFloat().convert_from_range(-1, 1);
477 }
478 }
479 }
480 }
481
482 void read_preset(JsonParser &jp, bool *has_midi, int major, int minor) {
483 gx_gui::paramlist plist;
484 if (has_midi) {
485 *has_midi = false;
486 }
487 gx_gui::MidiControllerList::controller_array *m = 0;
488 jp.next(JsonParser::begin_object);
489 do {
490 jp.next(JsonParser::value_key);
491 if (jp.current_value() == "engine") {
492 read_parameters(jp, plist, true);
493 } else if (jp.current_value() == "jconv") {
494 *gx_jconv::GxJConvSettings::instance() = gx_jconv::GxJConvSettings(jp);
495 } else if (jp.current_value() == "midi_controller") {
496 if (has_midi || gx_gui::parameter_map["system.midi_in_preset"].getSwitch().get()) {
497 m = new gx_gui::MidiControllerList::controller_array
498 (gx_gui::MidiControllerList::controller_array_size);
499 gx_gui::controller_map.readJSON(jp, *m);
500 if (has_midi) {
501 *has_midi = true;
502 }
503 } else {
504 jp.skip_object();
505 }
506 } else {
507 gx_print_warning(_("recall settings"),
508 _("unknown preset section: ") + jp.current_value());
509 }
510 } while (jp.peek() == JsonParser::value_key);
511 jp.next(JsonParser::end_object);
512 gx_gui::controller_map.remove_controlled_parameters(plist, m);
513 fixup_parameters(major, minor);
514 for (gx_gui::paramlist::iterator i = plist.begin(); i != plist.end(); i++) {
515 (*i)->setJSON_value();
516 }
517 if (m) {
518 gx_gui::controller_map.set_controller_array(*m);
519 delete m;
520 }
521 }
522
523 void writeHeader(JsonWriter& jw) {
524 jw.write("gx_head_file_version");
525 jw.begin_array();
526 jw.write(majorversion); // major format version
527 jw.write(minorversion); // minor format version
528 jw.write(GX_VERSION);
529 jw.end_array(true);
530 }
531
532 bool readHeader(JsonParser& jp, int *major, int *minor) {
533 jp.next(JsonParser::value_string);
534 if (jp.current_value() != "gx_head_file_version") {
535 throw JsonException("invalid gx_head file header");
536 }
537 jp.next(JsonParser::begin_array);
538 jp.next(JsonParser::value_number);
539 int m = jp.current_value_int();
540 if (major) {
541 *major = m;
542 }
543 jp.next(JsonParser::value_number); // minorversion
544 int n = jp.current_value_int();
545 if (minor) {
546 *minor = n;
547 }
548 jp.next(JsonParser::value_string); // gx_head version
549 jp.next(JsonParser::end_array);
550 return m == majorversion && n == minorversion;
551 }
552
553 static void write_jack_port_connections(JsonWriter& w, const char *key, jack_port_t *port) {
554 w.write_key(key);
555 w.begin_array();
556 const char** pl = jack_port_get_connections(port);
557 if (pl) {
558 for (const char **p = pl; *p; p++) {
559 w.write(*p);
560 }
561 free(pl);
562 }
563 w.end_array(true);
564 }
565
566 void write_jack_connections(JsonWriter& w) {
567 w.begin_object(true);
568 write_jack_port_connections(w, "input", gx_jack::gxjack.input_ports[0]);
569 write_jack_port_connections(w, "output1", gx_jack::gxjack.output_ports[2]);
570 write_jack_port_connections(w, "output2", gx_jack::gxjack.output_ports[3]);
571 write_jack_port_connections(w, "midi_input", gx_jack::gxjack.midi_input_port);
572 write_jack_port_connections(w, "midi_output", gx_jack::gxjack.midi_output_ports);
573 write_jack_port_connections(w, "insert_out", gx_jack::gxjack.output_ports[0]);
574 write_jack_port_connections(w, "insert_in", gx_jack::gxjack.input_ports[1]);
575 w.end_object(true);
576 }
577
578 // -- save state including current preset data
579 bool saveStateToFile(const string &filename) {
580 gx_print_info(_("wrinting to "), filename.c_str());
581 string tmpfile = filename + "_tmp";
582 ofstream f(tmpfile.c_str());
583 JsonWriter w(f);
584
585 w.begin_array();
586 writeHeader(w);
587
588 w.write("settings");
589 write_parameters(w, false);
590
591 w.write("midi_controller");
592 gx_gui::controller_map.writeJSON(w);
593
594 w.write("midi_ctrl_names");
595 gx_gui::midi_std_ctr.writeJSON(w);
596
597 w.write("current_preset");
598 write_preset(w, false);
599
600 w.write("jack_connections");
601 write_jack_connections(w);
602
603 w.newline();
604 w.end_array(true);
605 w.close();
606 f.close();
607 if (!f.good()) {
608 return false;
609 }
610 int rc = rename(tmpfile.c_str(), filename.c_str());
611 return rc == 0;
612 }
613
614 list<string> jack_connection_lists[7];
615
616 static void read_jack_connections(JsonParser& jp) {
617 jp.next(JsonParser::begin_object);
618 while (jp.peek() == JsonParser::value_key) {
619 int i;
620 jp.next(JsonParser::value_key);
621 if (jp.current_value() == "input") {
622 i = gx_jack::kAudioInput;
623 } else if (jp.current_value() == "output1") {
624 i = gx_jack::kAudioOutput1;
625 } else if (jp.current_value() == "output2") {
626 i = gx_jack::kAudioOutput2;
627 } else if (jp.current_value() == "midi_input") {
628 i = gx_jack::kMidiInput;
629 } else if (jp.current_value() == "midi_output") {
630 i = gx_jack::kMidiOutput;
631 } else if (jp.current_value() == "insert_out") {
632 i = gx_jack::kAudioInsertOut;
633 } else if (jp.current_value() == "insert_in") {
634 i = gx_jack::kAudioInsertIn;
635 } else {
636 gx_print_warning(_("recall state"),
637 _("unknown jack ports sections") + jp.current_value());
638 jp.skip_object();
639 continue;
640 }
641 jp.next(JsonParser::begin_array);
642 while (jp.peek() == JsonParser::value_string) {
643 jp.next();
644 jack_connection_lists[i].push_back(jp.current_value());
645 }
646 jp.next(JsonParser::end_array);
647 }
648 jp.next(JsonParser::end_object);
649 }
650
651 // -- recallState(filename) : load state from file
652 bool recallState(const string &filename) {
653 ifstream f(filename.c_str());
654 if (!f.good()) {
655 return false;
656 }
657 gx_gui::paramlist plist;
658 gx_gui::MidiControllerList::controller_array m
659 (gx_gui::MidiControllerList::controller_array_size);
660 gx_system::JsonParser jp(f);
661 try {
662 jp.next(JsonParser::begin_array);
663
664 int major, minor;
665 readHeader(jp, &major, &minor);
666 if (major != majorversion) {
667 if (major == 0) {
668 gx_print_info(_("recall settings"), _("loading converted state"));
669 } else {
670 stringstream s;
671 s << _("major version mismatch in ")+filename+_(": found ")
672 << major << _(", expected ") << majorversion << endl;
673 gx_print_warning(_("recall settings"), s.str());
674 }
675 }
676
677 // other sections (settings, current_preset)
678 do {
679 jp.next(JsonParser::value_string);
680 if (jp.current_value() == "settings") {
681 read_parameters(jp, plist, false);
682 } else if (jp.current_value() == "current_preset") {
683 read_preset(jp, 0, major, minor);
684 } else if (jp.current_value() == "midi_controller") {
685 gx_gui::controller_map.readJSON(jp, m);
686 } else if (jp.current_value() == "midi_ctrl_names") {
687 gx_gui::midi_std_ctr.readJSON(jp);
688 } else if (jp.current_value() == "jack_connections") {
689 read_jack_connections(jp);
690 } else {
691 gx_print_warning(_("recall settings"),
692 _("unknown section: ") + jp.current_value());
693 jp.skip_object();
694 }
695 } while (jp.peek() == JsonParser::value_string);
696 jp.next(JsonParser::end_array);
697 jp.next(JsonParser::end_token);
698 } catch(JsonException& e) {
699 gx_print_error(_("recall settings"), _("invalid settings file: ") + filename);
700 return false;
701 }
702 for (gx_gui::paramlist::iterator i = plist.begin(); i != plist.end(); i++) {
703 (*i)->setJSON_value();
704 }
705 gx_gui::controller_map.set_controller_array(m);
706 return true;
707 }
708
41 SystemVars sysvar;
70942 /****************************************************************
71043 ** Measuring times (only when debugging)
71144 */
785118 ** OS functions and helper
786119 */
787120
121
122 const int SystemVars::SYSTEM_OK = 0;
123 const char* SystemVars::gx_head_dir = ".gx_head";
124 const char* SystemVars::jcapsetup_file = "ja_ca_ssetrc";
125 const char* SystemVars::jcapfile_wavbase = "gx_head_session";
126 const string SystemVars::gx_pixmap_dir = string(GX_PIXMAPS_DIR) + "/";
127 const string SystemVars::gx_user_dir = string(getenv("HOME")) + string("/")
128 + string(gx_head_dir) + "/";
129 const char* SystemVars::shell_var_name[] = {
130 "GUITARIX2JACK_INPUTS",
131 "GUITARIX2JACK_OUTPUTS1",
132 "GUITARIX2JACK_OUTPUTS2",
133 "GUITARIX2JACK_MIDI",
134 "GUITARIX_RC_STYLE",
135 "GUITARIX2JACK_UUID",
136 "GUITARIX_LOAD_FILE"
137 };
138
139 void SystemVars::sysvar_init() {
140 is_session = false;
141 gx_style_dir = string(GX_STYLE_DIR1) + "/";
142 gx_builder_dir = string(GX_BUILDER_DIR1) + "/";
143 }
144
145
788146 // ---- retrieve and store the shell variable if not NULL
789147 void gx_assign_shell_var(const char* name, string& value) {
790148 const char* val = getenv(name);
794152 // ---- OS signal handler -----
795153 void gx_signal_handler(int sig) {
796154 // print out a warning
155 if (sig == SIGABRT) {
156 if(!gx_jack::gxjack.client) {
157 printf(_(" SIGABRT . .received, try to clean up and exit. . . \n"));
158 exit(1);
159 }
160 else {
161 gx_clean_exit(NULL, NULL);
162 }
163 }
797164 string msg = string(_("signal ")) + gx_i2a(sig) + _(" received, exiting ...");
798165 gx_print_warning(_("signal_handler"), msg);
799166
804171 gboolean gx_ladi_handler(gpointer) {
805172 gx_print_warning(_("signal_handler"), _("signal USR1 received, save settings"));
806173
807 saveStateToFile(gx_user_dir + gx_jack::client_instance + "_rc");
174 saveStateToFile(sysvar.gx_user_dir + gx_jack::gxjack.client_instance + "_rc");
808175 return false;
809176 }
810177
814181 void gx_process_cmdline_options(int& argc, char**& argv, string* optvar) {
815182 // store shell variable content
816183 for (int i = 0; i < NUM_SHELL_VAR; i++) {
817 gx_assign_shell_var(shell_var_name[i], optvar[i]);
184 gx_assign_shell_var(sysvar.shell_var_name[i], optvar[i]);
818185 }
819186 // initialize number of skins. We just count the number of rc files
820187 unsigned int n = gx_gui::gx_fetch_available_skins();
1016383
1017384 // *** process builder_dir
1018385 if (!builder_dir.empty()) {
1019 gx_builder_dir = builder_dir;
1020 if (gx_builder_dir[gx_builder_dir.size()-1] != '/') {
1021 gx_builder_dir += "/";
386 sysvar.gx_builder_dir = builder_dir;
387 if (sysvar.gx_builder_dir[sysvar.gx_builder_dir.size()-1] != '/') {
388 sysvar.gx_builder_dir += "/";
1022389 }
1023390 }
1024391
1025392 // *** process style_dir
1026393 if (!style_dir.empty()) {
1027 gx_style_dir = style_dir;
1028 if (gx_style_dir[gx_style_dir.size()-1] != '/') {
1029 gx_style_dir += "/";
394 sysvar.gx_style_dir = style_dir;
395 if (sysvar.gx_style_dir[sysvar.gx_style_dir.size()-1] != '/') {
396 sysvar.gx_style_dir += "/";
1030397 }
1031398 }
1032399
1064431
1065432 optvar[LOAD_FILE] = load_file;
1066433
1067 rcpath = gx_style_dir + string("gx_head_") + optvar[RC_STYLE] + ".rc";
434 sysvar.rcpath = sysvar.gx_style_dir + string("gx_head_") + optvar[RC_STYLE] + ".rc";
1068435 }
1069436
1070437 void gx_set_override_options(string* optvar) {
1159526 // ----- if the presethandling is working with the courent version, we only count this
1160527 // ----- string when we must remove the old preset files.
1161528 string rcfilename =
1162 gx_user_dir + string("version-") + string("0.03.3");
1163
1164 if (stat(gx_user_dir.c_str(), &my_stat) == 0) { // directory exists
529 sysvar.gx_user_dir + string("version-") + string("0.03.3");
530
531 if (stat(sysvar.gx_user_dir.c_str(), &my_stat) == 0) { // directory exists
1165532 // check which version we're dealing with
1166533 if (stat(rcfilename.c_str(), &my_stat) != 0) {
1167534 // current version not there, let's create it and refresh the whole shebang
1168 string oldfiles = gx_user_dir + string("gx_head*rc");
535 string oldfiles = sysvar.gx_user_dir + string("gx_head*rc");
1169536 (void)gx_system_call("rm -f", oldfiles.c_str(), false);
1170537
1171 oldfiles = gx_user_dir + string("version*");
538 oldfiles = sysvar.gx_user_dir + string("version*");
1172539 (void)gx_system_call("rm -f", oldfiles.c_str(), false);
1173540
1174 oldfiles = gx_user_dir + string("*.conf");
541 oldfiles = sysvar.gx_user_dir + string("*.conf");
1175542 (void)gx_system_call("rm -f", oldfiles.c_str(), false);
1176543
1177544 // setting file for current version
1181548 f.close();
1182549
1183550 // --- create jack_capture setting file
1184 /*string tmpstr = gx_user_dir + jcapsetup_file;
551 /*string tmpstr = sysvar.gx_user_dir + sysvar.jcapsetup_file;
1185552
1186553 (void)gx_system_call("touch", tmpstr.c_str(), false);
1187554 (void)gx_system_call(
1192559 }
1193560 } else { // directory does not exist
1194561 // create .gx_head directory
1195 (void)gx_system_call("mkdir -p", gx_user_dir.c_str(), false);
562 (void)gx_system_call("mkdir -p", sysvar.gx_user_dir.c_str(), false);
1196563
1197564 // setting file for current version
1198565 ofstream f(rcfilename.c_str());
1201568 f.close();
1202569
1203570 // --- create jack_capture setting file
1204 string tmpstr = gx_user_dir + jcapsetup_file;
571 string tmpstr = sysvar.gx_user_dir + sysvar.jcapsetup_file;
1205572
1206573 /* (void)gx_system_call("touch", tmpstr.c_str(), false);
1207574 (void)gx_system_call(
1213580 // --- version file
1214581 // same here, we only change this file, when the presethandling is broken,
1215582 // otherwise we can let it untouched
1216 tmpstr = gx_user_dir + string("version-") + string("0.03.3");
583 tmpstr = sysvar.gx_user_dir + string("version-") + string("0.03.3");
1217584 (void)gx_system_call("touch", tmpstr.c_str(), false);
1218585
1219586 cim = string("echo 'gx_head-") + string(GX_VERSION) + "' >";
1220587 (void)gx_system_call(cim.c_str(), tmpstr.c_str(), false);
1221588
1222589 // create empty preset file
1223 tmpstr = gx_user_dir + string("gx_headpre_rc");
590 tmpstr = sysvar.gx_user_dir + string("gx_headpre_rc");
1224591 ofstream nfile(tmpstr.c_str());
1225592 JsonWriter jw(nfile);
1226593 jw.begin_array();
1237604 int gx_pixmap_check() {
1238605 struct stat my_stat;
1239606
1240 string gx_pix = gx_pixmap_dir + "gx_head.png";
1241 string midi_pix = gx_pixmap_dir + "gx_head-midi.png";
1242 string warn_pix = gx_pixmap_dir + "gx_head-warn.png";
607 string gx_pix = sysvar.gx_pixmap_dir + "gx_head.png";
608 string midi_pix = sysvar.gx_pixmap_dir + "gx_head-midi.png";
609 string warn_pix = sysvar.gx_pixmap_dir + "gx_head-warn.png";
1243610
1244611 if ((stat(gx_pix.c_str(), &my_stat) != 0) ||
1245612 (stat(midi_pix.c_str(), &my_stat) != 0) ||
1362729 if (G_IS_OBJECT(gx_gui::gw.ibr))
1363730 g_object_unref(gx_gui::gw.ibr);
1364731
1365 if (G_IS_OBJECT(gx_cairo::tribeimage))
1366 g_object_unref(gx_cairo::tribeimage);
1367
1368 if (G_IS_OBJECT(gx_cairo::tribeimage1))
1369 g_object_unref(gx_cairo::tribeimage1);
1370
1371 if (G_IS_OBJECT(gx_cairo::tribeimage2))
1372 g_object_unref(gx_cairo::tribeimage2);
1373
1374732 // remove threads from main GTK thread
1375 for (unsigned int i = 0; i < sizeof(gx_gui::g_threads)/sizeof(gx_gui::g_threads[0]); i++) {
1376 if (gx_gui::g_threads[i] > 0) {
1377 g_source_remove(gx_gui::g_threads[i]);
733 for (unsigned int i = 0; i < sizeof(gx_gui::guivar.g_threads)/sizeof(gx_gui::guivar.g_threads[0]); i++) {
734 if (gx_gui::guivar.g_threads[i] > 0) {
735 g_source_remove(gx_gui::guivar.g_threads[i]);
1378736 }
1379737 }
1380738
1391749 if (gtk_widget_get_visible(GTK_WIDGET(gx_gui::gw.fWindow))) {
1392750 gint mainxorg, mainyorg;
1393751 gtk_window_get_position(GTK_WINDOW(gx_gui::gw.fWindow), &mainxorg, &mainyorg);
1394 gx_gui::main_xorg = static_cast<float>(mainxorg);
1395 gx_gui::main_yorg = static_cast<float>(mainyorg);
752 gx_gui::guivar.main_xorg = static_cast<float>(mainxorg);
753 gx_gui::guivar.main_yorg = static_cast<float>(mainyorg);
1396754 }
1397755
1398756 // only save if we are not in a preset or session context
1399 if (!gx_preset::setting_is_preset && !gx_preset::setting_is_factory
1400 && !is_session
757 if (!gx_preset::gxpreset.setting_is_preset && !gx_preset::gxpreset.setting_is_factory
758 && !sysvar.is_session
1401759 && gx_jack::gxjack.client) {
1402 saveStateToFile(gx_user_dir + gx_jack::client_instance + "_rc");
1403 }
1404 }
1405
1406 gx_gui::shownote = -1;
1407 gx_gui::showwave = 0;
1408 gx_jack::NO_CONNECTION = 1;
760 saveStateToFile(sysvar.gx_user_dir + gx_jack::gxjack.client_instance + "_rc");
761 }
762 }
763
764 gx_gui::guivar.shownote = -1;
765 gx_gui::guivar.showwave = 0;
766 gx_jack::gxjack.NO_CONNECTION = 1;
1409767
1410768 gx_engine::turnOffMidi();
1411769
1412770 // clean jack gxjack.client stuff
1413 gx_jack::gx_jack_cleanup();
771 gx_jack::gxjack.gx_jack_cleanup();
1414772
1415773 // clean GTK stuff
1416774 if (gx_gui::gw.fWindow) {
1417775 gx_destroy_event();
1418776 }
1419777 // delete the locked mem buffers
1420 if (gx_engine::checkfreq) {
1421 delete[] gx_engine::checkfreq;
1422 gx_engine::checkfreq = NULL;
1423 }
1424 if (gx_engine::get_frame) {
1425 delete[] gx_engine::get_frame;
1426 gx_engine::get_frame = NULL;
1427 }
1428 if (gx_engine::get_frame1) {
1429 delete[] gx_engine::get_frame1;
1430 gx_engine::get_frame1 = NULL;
1431 }
1432 if (gx_engine::oversample) {
1433 delete[] gx_engine::oversample;
1434 gx_engine::oversample = NULL;
1435 }
1436 if (gx_engine::result) {
1437 delete[] gx_engine::result;
1438 gx_engine::result = NULL;
1439 }
1440 if (is_session) {
778 if (gx_engine::audio.checkfreq) {
779 delete[] gx_engine::audio.checkfreq;
780 gx_engine::audio.checkfreq = NULL;
781 }
782 if (gx_engine::audio.get_frame) {
783 delete[] gx_engine::audio.get_frame;
784 gx_engine::audio.get_frame = NULL;
785 }
786 if (gx_engine::audio.get_frame1) {
787 delete[] gx_engine::audio.get_frame1;
788 gx_engine::audio.get_frame1 = NULL;
789 }
790 if (gx_engine::audio.oversample) {
791 delete[] gx_engine::audio.oversample;
792 gx_engine::audio.oversample = NULL;
793 }
794 if (gx_engine::audio.result) {
795 delete[] gx_engine::audio.result;
796 gx_engine::audio.result = NULL;
797 }
798 delete gx_engine::_modulpointer;
799 gx_resample::_glob_resamp->delete_resampler_ref();
800 gx_engine::pitch_tracker.stop_thread();
801 delete gx_jack::_jackbuffer_ptr;
802
803 if (sysvar.is_session) {
804 jack_session_event_t *event = reinterpret_cast<jack_session_event_t *>(data);
805 jack_session_event_free(event);
1441806 printf(_(" gx_head session exit *** ciao . . \n"));
1442807 return;
1443808 } else {
2323
2424 #include "guitarix.h" // NOLINT
2525
26 #include <glibmm/i18n.h> // NOLINT
2627 #include <errno.h> // NOLINT
2728 #include <cstring> // NOLINT
2829 #include <algorithm> // NOLINT
2930
3031
3132 namespace gx_threads {
32 static const float falloff = gx_gui::meter_falloff * gx_gui::meter_display_timeout * 0.001;
3333
3434 /* ----------------- refresh GX level display function ---------------- */
3535 gboolean gx_refresh_meter_level(gpointer args) {
36 if (gx_jack::gxjack.client && gx_engine::buffers_ready) {
36 if (gx_jack::gxjack.client && gx_engine::audio.buffers_ready) {
3737 gx_gui::GxMainInterface* gui = gx_gui::GxMainInterface::instance();
38 static const float falloff = gx_gui::guivar.meter_falloff *
39 gx_gui::guivar.meter_display_timeout * 0.001;
3840
3941 // data holders for meters
4042 // Note: removed RMS calculation, we will only focus on max peaks
5456 switch (c) {
5557 default:
5658 case 0:
57 (void)memcpy(data, gx_engine::get_frame, sizeof(data));
59 (void)memcpy(data, gx_engine::audio.get_frame, sizeof(data));
5860 break;
5961
6062 case 1:
61 (void)memcpy(data, gx_engine::get_frame1, sizeof(data));
63 (void)memcpy(data, gx_engine::audio.get_frame1, sizeof(data));
6264 break;
6365 }
6466
99101 /* --------- load preset triggered by midi program change --------- */
100102 gboolean gx_do_program_change(gpointer arg) {
101103 int pgm = GPOINTER_TO_INT(arg);
102 gx_engine::GxEngineState estate = gx_engine::checky;
103 if (gx_preset::gx_nth_preset(pgm)) {
104 gx_engine::GxEngineState estate = gx_engine::audio.checky;
105 if (gx_preset::gxpreset.gx_nth_preset(pgm)) {
104106 if (estate == gx_engine::kEngineBypass)
105107 // engine bypass but preset found -> engine on
106108 gx_gui::gx_engine_switch(reinterpret_cast<GtkWidget*>(0), (gpointer)1);
118120 GtkWidget* wd = gx_gui::GxMainInterface::instance()->getJackConnectItem();
119121
120122 // return if jack is not down
121 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::SYSTEM_OK) {
122 if (gx_jack::jack_is_down) {
123 if (gx_system::gx_system_call("pgrep", "jackd", true) == gx_system::sysvar.SYSTEM_OK) {
124 if (gx_jack::gxjack.jack_is_down) {
123125 // let's make sure we get out of here
124126 if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(wd)))
125127 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wd), TRUE);
135137 // more than once, no harm here
136138 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wd), FALSE);
137139 gx_jconv::GxJConvSettings::checkbutton7 = 0;
138 gx_jack::jack_is_down = true;
140 gx_jack::gxjack.jack_is_down = true;
139141 }
140142 // run as long jackd is down
141143 return true;
158160
159161 gx_engine::cab_conv.stop();
160162 gx_gui::cab_conv_restart();
163 }
164 }
165 if (gx_engine::audio.fcon) {
166 if ((gx_engine::audio.con_level - gx_engine::audio.con_sum) < -0.01
167 ||(gx_engine::audio.con_level - gx_engine::audio.con_sum) > 0.01) {
168 gx_engine::contrast_conv.stop();
169 gx_gui::contrast_conv_restart();
161170 }
162171 }
163172 return TRUE;
201210 gint pgm;
202211 while (TRUE) {
203212 // wait for a semaphore post from jack realtime thread
204 sem_wait(&gx_gui::program_change_sem);
213 sem_wait(&gx_gui::guivar.program_change_sem);
205214 // atomic read and reset the variable
206215 do {
207 pgm = g_atomic_int_get(&gx_gui::program_change);
208 } while (!g_atomic_int_compare_and_exchange(&gx_gui::program_change, pgm, -1));
216 pgm = g_atomic_int_get(&gx_gui::guivar.program_change);
217 } while (!g_atomic_int_compare_and_exchange(&gx_gui::guivar.program_change, pgm, -1));
209218 assert(pgm != -1);
210219 // get the work done by ui thread
211220 g_idle_add(gx_do_program_change, (gpointer)pgm);
116116
117117 void UiSelectorFloat::on_value_changed() {
118118 modifyZone(get_value());
119 gx_engine::audio.rack_change = true;
119120 }
120121
121122 void UiSelectorInt::on_value_changed() {
122123 modifyZone((int)get_value());
124 gx_engine::audio.rack_change = true;
123125 }
124126
125127 GtkWidget* UiSelector::create(gx_ui::GxUI& ui, string id) {
278280
279281 void UiSwitchFloat::on_toggled() {
280282 modifyZone(get_active());
283 gx_engine::audio.rack_change = true;
281284 }
282285
283286 void UiSwitchFloat::reflectZone() {
302305
303306 void UiSwitchBool::on_toggled() {
304307 modifyZone(get_active());
308 gx_engine::audio.rack_change = true;
305309 }
306310
307311 void UiSwitchBool::reflectZone() {
22 <!-- interface-requires gxwidgets 0.0 -->
33 <requires lib="gtk+" version="2.16"/>
44 <!-- interface-naming-policy project-wide -->
5 <object class="GtkAdjustment" id="adjustment1">
6 <property name="upper">100</property>
7 <property name="step_increment">1</property>
8 <property name="page_increment">10</property>
9 </object>
10 <object class="GtkAdjustment" id="adjustment2">
11 <property name="upper">100</property>
12 <property name="step_increment">1</property>
13 <property name="page_increment">10</property>
14 </object>
15 <object class="GtkAdjustment" id="adjustment3">
16 <property name="upper">100</property>
17 <property name="step_increment">1</property>
18 <property name="page_increment">10</property>
19 </object>
20 <object class="GtkAdjustment" id="adjustment4">
21 <property name="lower">-20</property>
22 <property name="upper">20</property>
23 <property name="step_increment">0.10000000000000001</property>
24 <property name="page_increment">1</property>
25 </object>
26 <object class="GtkAdjustment" id="adjustment5">
27 <property name="upper">100</property>
28 <property name="step_increment">0.10000000000000001</property>
29 <property name="page_increment">1</property>
30 </object>
31 <object class="GtkAdjustment" id="adjustment6">
32 <property name="upper">100</property>
33 <property name="step_increment">0.10000000000000001</property>
34 <property name="page_increment">1</property>
35 </object>
36 <object class="GtkAdjustment" id="adjustment7">
37 <property name="upper">100</property>
38 <property name="step_increment">0.10000000000000001</property>
39 <property name="page_increment">1</property>
40 </object>
41 <object class="GtkAdjustment" id="adjustment8">
42 <property name="value">100</property>
43 <property name="upper">100</property>
44 <property name="step_increment">1</property>
45 <property name="page_increment">10</property>
46 </object>
47 <object class="GtkAdjustment" id="adjustment9">
48 <property name="lower">-10</property>
49 <property name="upper">10</property>
50 <property name="step_increment">0.10000000000000001</property>
51 <property name="page_increment">1</property>
52 </object>
53 <object class="GtkAdjustment" id="adjustment10">
54 <property name="lower">-10</property>
55 <property name="upper">10</property>
56 <property name="step_increment">0.10000000000000001</property>
57 <property name="page_increment">1</property>
58 </object>
559 <object class="GtkWindow" id="DisplayIR">
660 <property name="title" translatable="yes">Guitarix JConvolver Parameters</property>
761 <signal name="destroy" handler="on_DisplayIR_destroy"/>
769823 <child>
770824 <object class="GxToggleImage" id="gxtoggleimage1">
771825 <property name="visible">True</property>
772 <property name="base_name">led</property>
826 <property name="base_name">switchit</property>
773827 </object>
774828 <packing>
775829 <property name="position">1</property>
11421196 </object>
11431197 </child>
11441198 </object>
1145 <object class="GtkAdjustment" id="adjustment1">
1146 <property name="upper">100</property>
1147 <property name="step_increment">1</property>
1148 <property name="page_increment">10</property>
1149 </object>
1150 <object class="GtkAdjustment" id="adjustment2">
1151 <property name="upper">100</property>
1152 <property name="step_increment">1</property>
1153 <property name="page_increment">10</property>
1154 </object>
1155 <object class="GtkAdjustment" id="adjustment3">
1156 <property name="upper">100</property>
1157 <property name="step_increment">1</property>
1158 <property name="page_increment">10</property>
1159 </object>
1160 <object class="GtkAdjustment" id="adjustment4">
1161 <property name="lower">-20</property>
1162 <property name="upper">20</property>
1163 <property name="step_increment">0.10000000000000001</property>
1164 <property name="page_increment">1</property>
1165 </object>
1166 <object class="GtkAdjustment" id="adjustment5">
1167 <property name="upper">100</property>
1168 <property name="step_increment">0.10000000000000001</property>
1169 <property name="page_increment">1</property>
1170 </object>
1171 <object class="GtkAdjustment" id="adjustment6">
1172 <property name="upper">100</property>
1173 <property name="step_increment">0.10000000000000001</property>
1174 <property name="page_increment">1</property>
1175 </object>
1176 <object class="GtkAdjustment" id="adjustment7">
1177 <property name="upper">100</property>
1178 <property name="step_increment">0.10000000000000001</property>
1179 <property name="page_increment">1</property>
1180 </object>
1181 <object class="GtkAdjustment" id="adjustment8">
1182 <property name="value">100</property>
1183 <property name="upper">100</property>
1184 <property name="step_increment">1</property>
1185 <property name="page_increment">10</property>
1186 </object>
1187 <object class="GtkAdjustment" id="adjustment9">
1188 <property name="lower">-10</property>
1189 <property name="upper">10</property>
1190 <property name="step_increment">0.10000000000000001</property>
1191 <property name="page_increment">1</property>
1192 </object>
1193 <object class="GtkAdjustment" id="adjustment10">
1194 <property name="lower">-10</property>
1195 <property name="upper">10</property>
1196 <property name="step_increment">0.10000000000000001</property>
1197 <property name="page_increment">1</property>
1198 </object>
1199
11991200 <object class="GtkWindow" id="HelpIR">
12001201 <child>
12011202 <object class="GxPaintBox" id="gxpaintbox2">
1313 <object class="GtkVBox" id="dialog-vbox1">
1414 <property name="visible">True</property>
1515 <property name="spacing">2</property>
16 <signal name="expose_event" handler="rectangle_skin_color_expose"/>
1716 <child>
1817 <object class="GtkLabel" id="zone_name">
1918 <property name="visible">True</property>
229228 <object class="GtkVBox" id="dialog-vbox2">
230229 <property name="visible">True</property>
231230 <property name="spacing">2</property>
232 <signal name="expose_event" handler="rectangle_skin_color_expose"/>
233231 <child>
234232 <object class="GtkLabel" id="label2">
235233 <property name="visible">True</property>
8080 <object class="GtkVBox" id="dialog-vbox1">
8181 <property name="visible">True</property>
8282 <property name="spacing">2</property>
83 <signal name="expose_event" handler="rectangle_skin_color_expose"/>
8483 <child>
8584 <object class="GxPaintBox" id="gxpaintbox1">
8685 <property name="visible">True</property>
9089 <object class="GtkVBox" id="dialog-vbox2">
9190 <property name="visible">True</property>
9291 <property name="spacing">2</property>
93 <signal name="expose_event" handler="rectangle_skin_color_expose"/>
9492 <child>
9593 <object class="GtkNotebook" id="notebook1">
9694 <property name="visible">True</property>
1313 'gx_interface_builder.cpp',
1414 'gx_mono_rack_builder.cpp',
1515 'gx_stereo_rack_builder.cpp',
16 'gx_globals.cpp',
1716 'gx_child_process.cpp',
1817 'gx_engine_tubetable.cpp',
1918 'gx_engine.cpp',
2019 'gx_engine_midi.cpp',
21 'gx_convolver.cpp',
22 'gx_pitch_tracker.cpp',
23 'gx_resampler.cpp',
2420 'gx_engine_audio.cpp',
2521 'gx_portmap.cpp',
2622 'gx_paramtable.cpp',
2723 'gx_cairo_callbacks.cpp',
2824 'gx_gui_helpers.cpp',
29 'gx_cabinet_data.cpp',
3025 'gx_threads.cpp',
3126 'gx_jack.cpp',
3227 'gx_preset.cpp',
28 'gx_json.cpp',
29 'gx_ui.cpp',
30 'gx_pitch_tracker.cpp',
31 'gx_convolver.cpp',
32 'gx_cabinet_data.cpp',
33 'gx_resampler.cpp',
3334 'gx_system.cpp',
34 'gx_ui.cpp',
3535 'gx_main.cpp',
3636 ]
3737
+0
-476
src/gx_head/zettberlin_rc less more
0 ["gx_head_file_version", [1, 2, "0.12.0"],
1 "fatbrett", {
2 "engine": {
3 "IR.auto_freq": "manual",
4 "IR.bandwidth": 100,
5 "IR.freq": 440,
6 "IR.on_off": 0,
7 "IR.peak": 1,
8 "IR.position": 4,
9 "IR.pp": "post",
10 "amp.balance": 0,
11 "amp.bass_boost.on_off": 1,
12 "amp.feed_on_off": 0,
13 "amp.tonestack.Bass": 0.5,
14 "amp.tonestack.Middle": 0.5,
15 "amp.tonestack.Treble": 0.5,
16 "amp.tonestack.select": "M-Lead",
17 "amp2.stage1.Pregain": 0,
18 "amp2.stage2.gain1": -12.1053,
19 "beat_detector.atack_gain": 5,
20 "beat_detector.beat_gain": 1,
21 "beat_detector.midi_gain": 1,
22 "beat_detector.note_off": 2,
23 "beat_detector.stepper": 1,
24 "cab.on_off": 1,
25 "chorus.delay": 0.02,
26 "chorus.depth": 0.02,
27 "chorus.freq": 3,
28 "chorus.level": 0.5,
29 "chorus.on_off": 0,
30 "chorus.position": 1,
31 "compressor.attack": 0.002,
32 "compressor.knee": 3,
33 "compressor.on_off": 0,
34 "compressor.position": 5,
35 "compressor.pp": "post",
36 "compressor.ratio": 2,
37 "compressor.release": 0.5,
38 "compressor.threshold": -20,
39 "crybaby.autowah": "manual",
40 "crybaby.level": 0.07,
41 "crybaby.on_off": 0,
42 "crybaby.position": 1,
43 "crybaby.pp": "post",
44 "crybaby.wah": 0,
45 "crybaby.wet_dry": 0,
46 "delay.delay": 0,
47 "delay.gain": 0,
48 "delay.on_off": 0,
49 "delay.position": 9,
50 "delay.pp": "post",
51 "echo.on_off": 0,
52 "echo.percent": 0,
53 "echo.position": 8,
54 "echo.pp": "post",
55 "echo.time": 1,
56 "eqs.Qs125": 50,
57 "eqs.Qs16k": 50,
58 "eqs.Qs1k": 50,
59 "eqs.Qs250": 50,
60 "eqs.Qs2k": 50,
61 "eqs.Qs31_25": 50,
62 "eqs.Qs4k": 50,
63 "eqs.Qs500": 50,
64 "eqs.Qs62_5": 50,
65 "eqs.Qs8k": 50,
66 "eqs.freq125": 125,
67 "eqs.freq16k": 16000,
68 "eqs.freq1k": 1000,
69 "eqs.freq250": 250,
70 "eqs.freq2k": 2000,
71 "eqs.freq31_25": 31,
72 "eqs.freq4k": 4000,
73 "eqs.freq500": 500,
74 "eqs.freq62_5": 62,
75 "eqs.freq8k": 8000,
76 "eqs.fs125": 0,
77 "eqs.fs16k": 0,
78 "eqs.fs1k": 0,
79 "eqs.fs250": 0,
80 "eqs.fs2k": 0,
81 "eqs.fs31_25": 0,
82 "eqs.fs4k": 0,
83 "eqs.fs500": 0,
84 "eqs.fs62_5": 0,
85 "eqs.fs8k": 0,
86 "eqs.on_off": 0,
87 "eqs.position": 2,
88 "eqs.pp": "post",
89 "flanger.LFO freq": 0.2,
90 "flanger.depth": 1,
91 "flanger.feedback gain": 0,
92 "flanger.flange delay": 10,
93 "flanger.flange delay offset": 1,
94 "flanger.invert": "linear",
95 "flanger.level": 0,
96 "flanger.on_off": 0,
97 "flanger.position": 2,
98 "freeverb.RoomSize": 0.5,
99 "freeverb.damp": 0.5,
100 "freeverb.on_off": 0,
101 "freeverb.position": 10,
102 "freeverb.pp": "post",
103 "freeverb.wet_dry": 0,
104 "gx_distortion.drive": 0.64,
105 "gx_distortion.gain": 2,
106 "gx_distortion.high_drive": 1,
107 "gx_distortion.high_gain": 10,
108 "gx_distortion.level": 0.01,
109 "gx_distortion.low_drive": 1,
110 "gx_distortion.low_gain": 10,
111 "gx_distortion.middle_h_drive": 1,
112 "gx_distortion.middle_h_gain": 10,
113 "gx_distortion.middle_l_drive": 1,
114 "gx_distortion.middle_l_gain": 10,
115 "gx_distortion.on_off": 1,
116 "gx_distortion.position": 3,
117 "gx_distortion.pp": "post",
118 "gx_distortion.resonator.on_off": 0,
119 "gx_distortion.split_high_freq": 1250,
120 "gx_distortion.split_low_freq": 250,
121 "gx_distortion.split_middle_freq": 650,
122 "gx_distortion.trigger": 0.12,
123 "gx_distortion.vibrato": 1,
124 "gxdistortion.drive": 0.64,
125 "jconv.balance": 0,
126 "jconv.diff_delay": 0,
127 "jconv.gain": 0,
128 "jconv.on_off": 0,
129 "jconv.wet_dry": 100,
130 "low_high_pass.lhc.high_freq": 5000,
131 "low_high_pass.lhc.low_freq": 130,
132 "low_high_pass.lhc.on_off": 0,
133 "low_high_pass.lhp.high_freq": 130,
134 "low_high_pass.lhp.low_freq": 5000,
135 "low_high_pass.lhp.on_off": 0,
136 "low_highpass.on_off": 0,
137 "low_highpass.position": 6,
138 "low_highpass.pp": "post",
139 "midi_out.channel_1.auto_pitch": 0,
140 "midi_out.channel_1.autogain": 0,
141 "midi_out.channel_1.channel": 0,
142 "midi_out.channel_1.oktave": 0,
143 "midi_out.channel_1.program": 0,
144 "midi_out.channel_1.sensity": 20,
145 "midi_out.channel_1.velocity": 64,
146 "midi_out.channel_1.volume": 64,
147 "midi_out.channel_2.auto_pitch": 0,
148 "midi_out.channel_2.autogain": 0,
149 "midi_out.channel_2.channel": 0,
150 "midi_out.channel_2.oktave": 0,
151 "midi_out.channel_2.on_off": 0,
152 "midi_out.channel_2.program": 0,
153 "midi_out.channel_2.sensity": 20,
154 "midi_out.channel_2.velocity": 64,
155 "midi_out.channel_2.volume": 64,
156 "midi_out.channel_3.auto_pitch": 0,
157 "midi_out.channel_3.autogain": 0,
158 "midi_out.channel_3.channel": 0,
159 "midi_out.channel_3.oktave": 0,
160 "midi_out.channel_3.on_off": 0,
161 "midi_out.channel_3.program": 0,
162 "midi_out.channel_3.sensity": 20,
163 "midi_out.channel_3.velocity": 64,
164 "midi_out.channel_3.volume": 64,
165 "midi_out.on_off": 0,
166 "midi_out.position": 1,
167 "moog.Q": 1,
168 "moog.fr": 3000,
169 "moog.on_off": 0,
170 "moog.position": 6,
171 "oscilloscope.on_off": 0,
172 "oscilloscope.position": 12,
173 "oscilloscope.pp": "post",
174 "overdrive.drive": 1,
175 "overdrive.on_off": 0,
176 "overdrive.position": 7,
177 "overdrive.pp": "post",
178 "phaser.MaxNotch1Freq": 800,
179 "phaser.MinNotch1Freq": 100,
180 "phaser.Notch width": 1000,
181 "phaser.NotchFreq": 1.5,
182 "phaser.Speed": 0.5,
183 "phaser.VibratoMode": "direct ",
184 "phaser.depth": 1,
185 "phaser.feedback gain": 0,
186 "phaser.invert": "linear",
187 "phaser.level": 0,
188 "phaser.on_off": 0,
189 "phaser.position": 3,
190 "shaper.on_off": 1,
191 "shaper.sharper": 7,
192 "stereodelay.LFO freq": 0.2,
193 "stereodelay.invert": "linear",
194 "stereodelay.l_delay": 0,
195 "stereodelay.l_gain": 0,
196 "stereodelay.on_off": 0,
197 "stereodelay.position": 4,
198 "stereodelay.r_delay": 0,
199 "stereodelay.r_gain": 0,
200 "stereoecho.on_off": 0,
201 "stereoecho.percent_l": 0,
202 "stereoecho.percent_r": 0,
203 "stereoecho.position": 5,
204 "stereoecho.time_l": 1,
205 "stereoecho.time_r": 1,
206 "system.select_tube": 0,
207 "system.select_tube2": 0,
208 "system.select_tube3": 1,
209 "ui.Chorus": 1,
210 "ui.Compressor": 1,
211 "ui.Crybaby": 0,
212 "ui.Delay": 0,
213 "ui.Echo": 0,
214 "ui.Flanger": 1,
215 "ui.Freeverb": 0,
216 "ui.ImpulseResponse": 0,
217 "ui.Moog Filter": 0,
218 "ui.Multi Band Distortion": 1,
219 "ui.Oscilloscope": 0,
220 "ui.Overdrive": 0,
221 "ui.Phaser": 1,
222 "ui.Scaleable EQ": 0,
223 "ui.Stereo Delay": 0,
224 "ui.Stereo Echo": 0,
225 "ui.low high pass": 0,
226 "ui.main_xorg": 300,
227 "ui.main_yorg": 300
228 },
229 "jconv": {
230 "jconv.IRFile": "greathall.wav",
231 "jconv.IRDir": "/usr/share/gx_head/sounds"
232 "jconv.Gain": 0.598717,
233 "jconv.Offset": 0,
234 "jconv.Length": 39839,
235 "jconv.Delay": 0,
236 "jconv.gainline": [[0, 0], [112560, 0]]}
237 },
238 "krystallik", {
239 "engine": {
240 "IR.auto_freq": "manual",
241 "IR.bandwidth": 6831.55,
242 "IR.freq": 3939.52,
243 "IR.on_off": 1,
244 "IR.peak": 6.59082,
245 "IR.position": 9,
246 "IR.pp": "post",
247 "amp.balance": 0,
248 "amp.bass_boost.on_off": 1,
249 "amp.feed_on_off": 0,
250 "amp.tonestack.Bass": 0.547672,
251 "amp.tonestack.Middle": 0.315512,
252 "amp.tonestack.Treble": 0.640625,
253 "amp.tonestack.select": "JCM-2000",
254 "amp2.stage1.Pregain": 6.56548,
255 "amp2.stage2.gain1": -12.2206,
256 "beat_detector.atack_gain": 5,
257 "beat_detector.beat_gain": 1,
258 "beat_detector.midi_gain": 1,
259 "beat_detector.note_off": 2,
260 "beat_detector.stepper": 1,
261 "cab.on_off": 1,
262 "chorus.delay": 0.00813992,
263 "chorus.depth": 0.0855811,
264 "chorus.freq": 3,
265 "chorus.level": 0.343142,
266 "chorus.on_off": 1,
267 "chorus.position": 1,
268 "compressor.attack": 0.511919,
269 "compressor.knee": 3,
270 "compressor.on_off": 0,
271 "compressor.position": 12,
272 "compressor.pp": "post",
273 "compressor.ratio": 5.49532,
274 "compressor.release": 0.5,
275 "compressor.threshold": -3.71029,
276 "crybaby.autowah": "manual",
277 "crybaby.level": 0.07,
278 "crybaby.on_off": 0,
279 "crybaby.position": 1,
280 "crybaby.pp": "post",
281 "crybaby.wah": 0,
282 "crybaby.wet_dry": 0,
283 "delay.delay": 0,
284 "delay.gain": 0,
285 "delay.on_off": 0,
286 "delay.position": 5,
287 "delay.pp": "post",
288 "echo.on_off": 0,
289 "echo.percent": 0,
290 "echo.position": 4,
291 "echo.pp": "post",
292 "echo.time": 1,
293 "eqs.Qs125": 34.6166,
294 "eqs.Qs16k": 50,
295 "eqs.Qs1k": 50,
296 "eqs.Qs250": 41.5112,
297 "eqs.Qs2k": 50,
298 "eqs.Qs31_25": 50,
299 "eqs.Qs4k": 50,
300 "eqs.Qs500": 50,
301 "eqs.Qs62_5": 50,
302 "eqs.Qs8k": 50,
303 "eqs.freq125": 125,
304 "eqs.freq16k": 16000,
305 "eqs.freq1k": 1000,
306 "eqs.freq250": 250,
307 "eqs.freq2k": 2000,
308 "eqs.freq31_25": 31,
309 "eqs.freq4k": 4000,
310 "eqs.freq500": 500,
311 "eqs.freq62_5": 62,
312 "eqs.freq8k": 8000,
313 "eqs.fs125": 10,
314 "eqs.fs16k": -15.2,
315 "eqs.fs1k": 4,
316 "eqs.fs250": -20,
317 "eqs.fs2k": 6.4,
318 "eqs.fs31_25": -12.8,
319 "eqs.fs4k": 4,
320 "eqs.fs500": -14,
321 "eqs.fs62_5": 6.4,
322 "eqs.fs8k": -4.4,
323 "eqs.on_off": 0,
324 "eqs.position": 11,
325 "eqs.pp": "post",
326 "flanger.LFO freq": 0.2,
327 "flanger.depth": 1,
328 "flanger.feedback gain": 0,
329 "flanger.flange delay": 10,
330 "flanger.flange delay offset": 1,
331 "flanger.invert": "linear",
332 "flanger.level": 0,
333 "flanger.on_off": 0,
334 "flanger.position": 2,
335 "freeverb.RoomSize": 0.5,
336 "freeverb.damp": 0.5,
337 "freeverb.on_off": 0,
338 "freeverb.position": 6,
339 "freeverb.pp": "post",
340 "freeverb.wet_dry": 0,
341 "gx_distortion.drive": 0.64,
342 "gx_distortion.gain": 2,
343 "gx_distortion.high_drive": 0.881267,
344 "gx_distortion.high_gain": 10,
345 "gx_distortion.level": 0.01,
346 "gx_distortion.low_drive": 1,
347 "gx_distortion.low_gain": 10,
348 "gx_distortion.middle_h_drive": 1,
349 "gx_distortion.middle_h_gain": 10,
350 "gx_distortion.middle_l_drive": 1,
351 "gx_distortion.middle_l_gain": 10,
352 "gx_distortion.on_off": 0,
353 "gx_distortion.position": 7,
354 "gx_distortion.pp": "post",
355 "gx_distortion.resonator.on_off": 0,
356 "gx_distortion.split_high_freq": 1250,
357 "gx_distortion.split_low_freq": 250,
358 "gx_distortion.split_middle_freq": 650,
359 "gx_distortion.trigger": 0.0527184,
360 "gx_distortion.vibrato": 1,
361 "gxdistortion.drive": 0.0459224,
362 "jconv.balance": 0,
363 "jconv.diff_delay": 0,
364 "jconv.gain": 0,
365 "jconv.on_off": 1,
366 "jconv.wet_dry": 27,
367 "low_high_pass.lhc.high_freq": 5000,
368 "low_high_pass.lhc.low_freq": 130,
369 "low_high_pass.lhc.on_off": 0,
370 "low_high_pass.lhp.high_freq": 130,
371 "low_high_pass.lhp.low_freq": 5000,
372 "low_high_pass.lhp.on_off": 0,
373 "low_highpass.on_off": 0,
374 "low_highpass.position": 2,
375 "low_highpass.pp": "post",
376 "midi_out.channel_1.auto_pitch": 0,
377 "midi_out.channel_1.autogain": 0,
378 "midi_out.channel_1.channel": 0,
379 "midi_out.channel_1.oktave": 0,
380 "midi_out.channel_1.program": 0,
381 "midi_out.channel_1.sensity": 20,
382 "midi_out.channel_1.velocity": 64,
383 "midi_out.channel_1.volume": 64,
384 "midi_out.channel_2.auto_pitch": 0,
385 "midi_out.channel_2.autogain": 0,
386 "midi_out.channel_2.channel": 0,
387 "midi_out.channel_2.oktave": 0,
388 "midi_out.channel_2.on_off": 0,
389 "midi_out.channel_2.program": 0,
390 "midi_out.channel_2.sensity": 20,
391 "midi_out.channel_2.velocity": 64,
392 "midi_out.channel_2.volume": 64,
393 "midi_out.channel_3.auto_pitch": 0,
394 "midi_out.channel_3.autogain": 0,
395 "midi_out.channel_3.channel": 0,
396 "midi_out.channel_3.oktave": 0,
397 "midi_out.channel_3.on_off": 0,
398 "midi_out.channel_3.program": 0,
399 "midi_out.channel_3.sensity": 20,
400 "midi_out.channel_3.velocity": 64,
401 "midi_out.channel_3.volume": 64,
402 "midi_out.on_off": 0,
403 "midi_out.position": 1,
404 "moog.Q": 1,
405 "moog.fr": 3000,
406 "moog.on_off": 0,
407 "moog.position": 6,
408 "oscilloscope.on_off": 1,
409 "oscilloscope.position": 8,
410 "oscilloscope.pp": "post",
411 "overdrive.drive": 1,
412 "overdrive.on_off": 0,
413 "overdrive.position": 3,
414 "overdrive.pp": "post",
415 "phaser.MaxNotch1Freq": 800,
416 "phaser.MinNotch1Freq": 100,
417 "phaser.Notch width": 1000,
418 "phaser.NotchFreq": 1.5,
419 "phaser.Speed": 0.5,
420 "phaser.VibratoMode": "direct ",
421 "phaser.depth": 1,
422 "phaser.feedback gain": 0,
423 "phaser.invert": "linear",
424 "phaser.level": 0,
425 "phaser.on_off": 0,
426 "phaser.position": 3,
427 "shaper.on_off": 1,
428 "shaper.sharper": 2,
429 "stereodelay.LFO freq": 0.2,
430 "stereodelay.invert": "linear",
431 "stereodelay.l_delay": 0,
432 "stereodelay.l_gain": 0,
433 "stereodelay.on_off": 0,
434 "stereodelay.position": 4,
435 "stereodelay.r_delay": 0,
436 "stereodelay.r_gain": 0,
437 "stereoecho.on_off": 0,
438 "stereoecho.percent_l": 0,
439 "stereoecho.percent_r": 0,
440 "stereoecho.position": 5,
441 "stereoecho.time_l": 1,
442 "stereoecho.time_r": 1,
443 "system.select_tube": 0,
444 "system.select_tube2": 1,
445 "system.select_tube3": 0,
446 "ui.Chorus": 1,
447 "ui.Compressor": 0,
448 "ui.Crybaby": 0,
449 "ui.Delay": 0,
450 "ui.Echo": 0,
451 "ui.Flanger": 1,
452 "ui.Freeverb": 0,
453 "ui.ImpulseResponse": 1,
454 "ui.Moog Filter": 0,
455 "ui.Multi Band Distortion": 0,
456 "ui.Oscilloscope": 1,
457 "ui.Overdrive": 0,
458 "ui.Phaser": 1,
459 "ui.Scaleable EQ": 1,
460 "ui.Stereo Delay": 0,
461 "ui.Stereo Echo": 0,
462 "ui.low high pass": 0,
463 "ui.main_xorg": 300,
464 "ui.main_yorg": 300
465 },
466 "jconv": {
467 "jconv.IRFile": "greathall.wav",
468 "jconv.IRDir": "/usr/share/gx_head/sounds"
469 "jconv.Gain": 0.598717,
470 "jconv.Offset": 0,
471 "jconv.Length": 39839,
472 "jconv.Delay": 0,
473 "jconv.gainline": [[0, 0], [112560, 0]]}
474 }
475 ]
4040 using namespace std;
4141
4242 /* guitarix declarations */
43 #include "./gx_globals.h"
4443 #include "./gx_system.h"
44 #include "./gx_json.h"
4545 #include "./gx_jack.h"
4646 #include "./gx_portmap.h"
4747 #include "./gx_child_process.h"
2121
2222 #pragma once
2323
24 #ifndef SRC_HEADERS_GX_CAIRO_CALLBACKS_H_
25 #define SRC_HEADERS_GX_CAIRO_CALLBACKS_H_
26
2427 namespace gx_cairo
2528 {
29 // forwarddeclaration
30 gboolean level_meter_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
31 gboolean conv_widget_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
32 gboolean info_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
33 gboolean rectangle_skin_color_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
34 }
35 #endif // SRC_HEADERS_GX_CAIRO_CALLBACKS_H_
2636
27 extern "C" {
28 gboolean filter_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
29 gboolean vbox_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
30 gboolean tribal_box_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
31 gboolean AmpBox_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
32 gboolean level_meter_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
33 gboolean zac_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
34 gboolean convolver_icon_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
35 gboolean rectangle_skin_color_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
36 gboolean rectangle_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
37 gboolean upper_widget_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
38 gboolean conv_widget_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
39 gboolean amp_expose (GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
40 gboolean boxamp_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
41 gboolean eq_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
42 gboolean plug_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
43 gboolean info_box_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
44 gboolean slooper_expose(GtkWidget *wi, GdkEventExpose *ev, gpointer user_data);
45 }
46
47 void gx_init_pixmaps();
48
49 }
6868 Audiofile(void);
6969 ~Audiofile(void);
7070
71 // int mode(void) const { return _mode; }
72 int type(void) const { return _type; }
73 int form(void) const { return _form; }
74 int rate(void) const { return _rate; }
75 int chan(void) const { return _chan; }
71 // int mode(void) const { return _mode; }
72 int type(void) const { return _type; }
73 int form(void) const { return _form; }
74 int rate(void) const { return _rate; }
75 int chan(void) const { return _chan; }
7676 uint32_t size(void) const { return _size; }
7777
7878 int open_read(string name);
103103 GxConvolverBase(): ready(false) {}
104104 public:
105105 bool checkstate();
106 void set_not_runnable() { ready = false; }
107 bool is_runnable() { return ready; }
106 void set_not_runnable() { ready = false; }
107 bool is_runnable() { return ready; }
108108 bool start();
109 void stop() { stop_process(); }
109 void stop() { stop_process(); }
110110 };
111111
112112 class GxConvolver: public GxConvolverBase {
3434 namespace gx_engine {
3535
3636 /* -- guitarix main engine -- */
37
37 /* engine state : can be on or off or bypassed */
38 typedef enum {
39 kEngineOff = 0,
40 kEngineOn = 1,
41 kEngineBypass = 2
42 } GxEngineState;
43
44 typedef enum {
45 kMidiOff = 0,
46 kMidiOn = 1
47 } GxMidiState;
48
49 // define engine pointer typs
50 typedef void (*chainorder)
51 (int count, float *output, float *output1);
52
53 typedef void (*stereochainorder)
54 (int count, float* input, float* input1, float *output, float *output1);
55
56 class ModulPointer {
57 public:
58 chainorder mono_rack_order_ptr[60];
59 chainorder tonestack_ptr;
60 chainorder amp_ptr;
61 stereochainorder stereo_rack_order_ptr[12];
62 };
63 extern ModulPointer *_modulpointer;
3864 /****************************************************************/
3965
4066 class AudioVariables {
4167 public:
4268 GxMidiState midistate;
43
44 bool fnoise_g;
45 bool fng;
46 bool foverdrive4;
47 bool fcheckbox4;
48 bool fcheckbox5;
49 bool fcheckbox6;
50 bool fcheckbox8;
51 bool ftube;
52 bool fboost;
53 bool fcheckboxcom1;
54 bool midistat1;
55 bool midistat2;
56 bool midistat3;
57 bool feq;
58 bool fmoog;
59 bool fflanger;
60 bool fbiquad;
61 bool fcab;
62 bool fcon;
63 bool flh;
64 bool fmi;
65 bool fwv;
66 bool fwv_on;
67 bool famp;
68 bool fampout;
69 bool ftone;
70 bool ftremolo;
71 bool fpm;
72 bool fflanger_mono;
73 bool ffeedback;
74 bool ftonestack;
75
76 unsigned int effect_pre_post[20];
77
78 int fcheckbox7;
79 int fdelay;
80 int fchorus;
81 int fchorus_mono;
82 int fphaser;
83 int tonestack;
84 int cabinet;
85 int cab_switched;
86 int fsd;
87 int fse;
88 int gxtube;
89 int mono_plug_counter;
90 int stereo_plug_counter;
69 GxEngineState checky;
70
71 bool initialized; /* engine init state */
72 bool buffers_ready; /* buffer ready state */
73 bool fnoise_g;
74 bool fng;
75 bool foverdrive4;
76 bool fcheckbox4;
77 bool fcheckbox5;
78 bool fcheckbox6;
79 bool fcheckbox8;
80 bool ftube;
81 bool fboost;
82 bool fcheckboxcom1;
83 bool midistat1;
84 bool midistat2;
85 bool midistat3;
86 bool feq;
87 bool fmoog;
88 bool fflanger;
89 bool fbiquad;
90 bool fcab;
91 bool fcon;
92 bool flh;
93 bool fmi;
94 bool fwv;
95 bool fwv_on;
96 bool famp;
97 bool fampout;
98 bool ftone;
99 bool ftremolo;
100 bool fpm;
101 bool fflanger_mono;
102 bool ffeedback;
103 bool ftonestack;
104 bool rack_change;
105 bool tube_changed;
106
107 int fcheckbox7;
108 int fdelay;
109 int fchorus;
110 int fchorus_mono;
111 int fphaser;
112 int tonestack;
113 int cur_tonestack;
114 int cabinet;
115 int cab_switched;
116 int fsd;
117 int fse;
118 int gxtube;
119 int mono_plug_counter;
120 int mono_active_counter;
121 int stereo_plug_counter;
122 int stereo_active_counter;
91123
92124 float posit[30];
93125
107139 float cab_bass;
108140 float cab_treble;
109141 float cab_sum;
142 float con_level;
143 float con_sum;
144
145 unsigned int effect_pre_post[20];
146 unsigned int effect_buffer[9];
147
148
149 float* get_frame;
150 float* get_frame1;
151 float* checkfreq;
152 float* oversample;
153 float* result;
110154
111155 void register_parameter();
112156 };
170214 int send2;
171215 int noten2;
172216
173 bool fcheckbox10;
174 bool fcheckbox11;
217 bool fcheckbox10;
218 bool fcheckbox11;
175219
176220 unsigned char* midi_send;
177221 unsigned char* midi_send1;
186230 /****************************************************************/
187231
188232 /* square function */
189 inline double sqrf(float x) { return x * x; }
233 inline double sqrf(float x) { return x * x; }
190234
191235 // wrap the state of the latency change warning (dis/enable) to
192236 // the interface settings to load and save it
193 inline void set_latency_warning_change() { audio.fwarn_swap = audio.fwarn; }
194 inline void get_latency_warning_change() { audio.fwarn = audio.fwarn_swap; }
195
196 inline bool isMidiOn() { return (audio.midistate == kMidiOn ? true : false); }
197 inline void turnOffMidi() { audio.midistate = kMidiOff; }
198 inline void turnOnMidi() { audio.midistate = kMidiOn; }
199
200 inline void set_tube_model(int x) {audio.gxtube = x;}
201 inline void set_cab_mode(float x) {audio.cab_sum = x;}
202 inline void set_mono_plug_counter(int x) {audio.mono_plug_counter = x;}
237 inline void set_latency_warning_change() {audio.fwarn_swap = audio.fwarn;}
238 inline void get_latency_warning_change() {audio.fwarn = audio.fwarn_swap;}
239
240 inline bool isMidiOn() {return (audio.midistate == kMidiOn ? true : false);}
241 inline bool isInitialized() {return audio.initialized;}
242 inline void turnOffMidi() {audio.midistate = kMidiOff;}
243 inline void turnOnMidi() {audio.midistate = kMidiOn;}
244
245 inline void set_tube_model(int x) {audio.gxtube = x;}
246 inline void set_cab_mode(float x) {audio.cab_sum = x;}
247 inline void set_mono_plug_counter(int x) {audio.mono_plug_counter = x;}
203248 inline void set_stereo_plug_counter(int x) {audio.stereo_plug_counter = x;}
204249
205250 /****************************************************************/
206251
207252 /* function declarations */
208 void register_faust_parameters();
253
209254 void gx_engine_init(const string *optvar);
210255 void gx_engine_reset();
211 void faust_init(int samplingFreq);
256
212257 void compute_midi(int len);
213258 void compute_midi_in(void* midi_input_port_buf);
214259 void process_midi(int count);
260
215261 void compute(int count, float* input, float* output0);
216262 void compute_insert(int count, float* input1, float* output2, float* output3);
217263
218 void convolver_filter(float* input, float* output, int sf, int iconvolvefilter);
219 void moving_filter(float* input, float* output, int sf);
220264 void process_buffers(int count, float* input, float* output0);
221265 void process_insert_buffers(int count, float* input1, float* output0, float* output1);
222266
267 // cabinet pre processing
223268 void init_non_rt_processing();
224269 void non_rt_processing(int count, float* input, float* output0);
270
271 // contrast pre processing
272 void init_presence_processing();
273 void presence_processing(int count, float* input, float* output0);
274
275 // register vars to param and init
276 void register_faust_parameters();
277 void faust_init(int samplingFreq);
225278
226279 /* ------------------------------------------------------------------- */
227280 } /* end of gx_engine namespace */
228281 #endif // SRC_HEADERS_GX_ENGINE_H_
282
4242 extern struct tabled tubetable2[];
4343 extern struct tabled tubetable3[];
4444 extern struct tabled tubetable4[];
45 // extern struct tabled tubetable5[];
46 extern struct tabled tubetable6[];
4547 } // end namespace
4648 #endif // SRC_HEADERS_GX_ENGINE_TUBETABLE_H_
4749
+0
-209
src/headers/gx_globals.h less more
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * --------------------------------------------------------------------------
18 *
19 * This is the guitarix global variable declarations for all namespaces
20 * These global vars are created / initialized in gx_globals.cpp
21 *
22 * --------------------------------------------------------------------------
23 */
24
25 #pragma once
26
27 #ifndef SRC_HEADERS_GX_GLOBALS_H_
28 #define SRC_HEADERS_GX_GLOBALS_H_
29
30 #include <semaphore.h>
31 #include <jack/midiport.h>
32 #include <gtk/gtk.h>
33
34 #include <string>
35 #include <vector>
36
37 /* ----- main engine ----- */
38 namespace gx_engine {
39 /* engine state : can be on or off or bypassed */
40 typedef enum {
41 kEngineOff = 0,
42 kEngineOn = 1,
43 kEngineBypass = 2
44 } GxEngineState;
45
46 typedef enum {
47 kMidiOff = 0,
48 kMidiOn = 1
49 } GxMidiState;
50
51 /* global var declarations */
52 extern GxEngineState checky;
53 extern float* get_frame;
54 extern float* get_frame1;
55 extern float* checkfreq;
56 extern float* oversample;
57 extern float* result;
58
59 /* latency warning switch */
60 extern float fwarn;
61
62 /* engine init state */
63 extern bool initialized;
64 inline bool isInitialized() { return initialized; }
65
66 /* pitchtracker init state */
67 extern bool pt_initialized;
68
69 /* buffer ready state */
70 extern bool buffers_ready;
71 }
72
73 /* -------------------------------------------------------------------------- */
74
75 /* ----- jack namespace ----- */
76 namespace gx_jack {
77 /* latency change confirmation */
78 typedef enum {
79 kChangeLatency = 1,
80 kKeepLatency = 2
81 } GxJackLatencyChange;
82
83
84 extern int NO_CONNECTION;
85
86 extern GxJackLatencyChange change_latency;
87
88 #ifdef USE_RINGBUFFER
89 extern struct MidiMessage ev;
90 extern jack_ringbuffer_t* jack_ringbuffer;
91 #endif
92 extern void* midi_input_port_buf;
93 extern void* midi_port_buf;
94 extern bool jack_is_down;
95 extern bool jack_is_exit;
96 extern string client_name;
97 extern string client_insert_name;
98 extern string client_instance;
99
100 extern string client_out_graph;
101 extern string gx_port_names[];
102
103 /* lists of jack port types for menu items */
104 enum {
105 kAudioInput = 0,
106 kAudioOutput1 = 1,
107 kAudioOutput2 = 2,
108 kMidiInput = 3,
109 kMidiOutput = 4,
110 kAudioInsertIn = 5,
111 kAudioInsertOut= 6
112 };
113 }
114
115 /* -------------------------------------------------------------------------- */
116
117 /* ----- preset namespace ----- */
118 namespace gx_preset {
119 /* global var declarations */
120 extern GdkModifierType list_mod[];
121 extern const char* preset_accel_path[];
122 extern const char* preset_menu_name[];
123 // extern map<GtkMenuItem*, string> preset_list[];
124
125 extern string gx_current_preset;
126 extern string gx_factory_preset;
127 extern string old_preset_name;
128
129 extern GtkWidget* presmenu[];
130 extern GtkWidget* presMenu[];
131
132 extern vector<string> plist;
133 extern vector<GtkMenuItem*> pm_list[];
134 extern bool setting_is_preset;
135 extern bool setting_is_factory;
136
137 extern GtkWidget* fpresmenu;
138 extern GtkWidget* ffpresmenu[];
139
140 extern vector<string> fplist[];
141 extern vector<GtkMenuItem*> fpm_list[];
142
143 extern GCallback preset_action_func[];
144 }
145
146 /* -------------------------------------------------------------------------- */
147
148 /* ----- system namespace ----- */
149 namespace gx_system {
150
151 /* variables and constants */
152 extern const int SYSTEM_OK;
153
154 extern bool is_session;
155
156 extern string rcpath;
157
158 extern const char* jcapsetup_file;
159 extern const char* jcapfile_wavbase;
160 extern const string gx_pixmap_dir;
161 extern const string gx_user_dir;
162 extern string gx_style_dir;
163 extern string gx_builder_dir;
164
165 /* shell variable names */
166 extern const char* shell_var_name[];
167 }
168
169 /* -------------------------------------------------------------------------- */
170
171 /* ----- GUI namespace ----- */
172 namespace gx_gui {
173
174 /* tuner and osilloscope*/
175 extern int showwave;
176 extern int shownote;
177 extern float show_patch_info;
178
179 /* rack handlig */
180 extern int mono_plugs;
181 extern int stereo_plugs;
182 extern int refresh_size;
183
184 /* widget orientation */
185 extern float main_xorg;
186 extern float main_yorg;
187
188 /* for level display */
189 extern int meter_falloff;
190 extern int meter_display_timeout;
191
192 /*midi_in preset switch */
193 extern volatile gint program_change;
194 extern sem_t program_change_sem;
195
196 extern int g_threads[10];
197 }
198
199 /* -------------------------------------------------------------------------- */
200
201 /* ----- cairo namespace ----- */
202 namespace gx_cairo {
203 extern GdkPixbuf *tribeimage;
204 extern GdkPixbuf *tribeimage1;
205 extern GdkPixbuf *tribeimage2;
206 }
207 #endif // SRC_HEADERS_GX_GLOBALS_H_
208
3737 #define AVOIDDENORMALS
3838 #endif
3939
40 #include <jack/jack.h> // NOLINT
41 #include <jack/midiport.h>
42 #include <semaphore.h>
43
4044 #ifdef HAVE_JACK_SESSION
4145 #include <jack/session.h>
4246 #endif
4650 namespace gx_jack {
4751
4852 class GxJack {
53 private:
54 bool gx_start_jack_dialog();
55 bool gx_start_jack(void* arg);
56
4957 public:
50 static const int nIPorts = 3; // mono input + jconv
51 static const int nOPorts = 4; // stereo output + jconv
52 /* variables */
58 static const int nIPorts = 3; // mono input + jconv
59 static const int nOPorts = 4; // stereo output + jconv
60
61 static int gx_jack_srate_callback(jack_nframes_t, void* arg);
62 static int gx_jack_xrun_callback(void* arg);
63 static int gx_jack_buffersize_callback(jack_nframes_t, void* arg);
64 static int gx_jack_process(jack_nframes_t, void* arg);
65 static int gx_jack_insert_process(jack_nframes_t, void* arg);
66
67 static void gx_set_jack_buffer_size(GtkCheckMenuItem*, gpointer);
68 static void gx_jack_connection(GtkCheckMenuItem*, gpointer);
69 static void gx_jack_shutdown_callback(void* arg);
70 static void gx_jack_portreg_callback(jack_port_id_t, int, void* arg);
71
72 #ifdef HAVE_JACK_SESSION
73 static void gx_jack_session_callback(jack_session_event_t *event, void *arg);
74 #endif
75
5376 jack_nframes_t jack_sr; // jack sample rate
5477 jack_nframes_t jack_bs; // jack buffer size
55 float jcpu_load; // jack cpu_load
56 float xdel; // last xrun delay
57 int is_rt;
78 jack_nframes_t time_is;
5879
5980 jack_client_t* client;
6081 jack_client_t* client_insert;
6384 jack_port_t* midi_input_port;
6485 jack_port_t* midi_output_ports;
6586
66 jack_nframes_t time_is;
87 void* midi_input_port_buf;
88 void* midi_port_buf;
89
90 bool gx_jack_init(const string *optvar );
91 bool jack_is_down;
92 bool jack_is_exit;
93
94 float jcpu_load; // jack cpu_load
95 float xdel; // last xrun delay
96
97 int is_rt;
98 int NO_CONNECTION;
99 int gx_jack_midi_process(jack_nframes_t, void* arg);
100 int gx_jack_midi_input_process(jack_nframes_t, void* arg);
101
102 void gx_jack_init_port_connection(const string*);
103 void gx_jack_callbacks_and_activate();
104 void gx_jack_cleanup();
105
106 string client_instance;
107 string client_name;
108 string client_insert_name;
109
110 /* lists of jack port types for menu items */
111 enum {
112 kAudioInput = 0,
113 kAudioOutput1 = 1,
114 kAudioOutput2 = 2,
115 kMidiInput = 3,
116 kMidiOutput = 4,
117 kAudioInsertIn = 5,
118 kAudioInsertOut= 6
119 };
120
121 typedef enum {
122 kChangeLatency = 1,
123 kKeepLatency = 2
124 } GxJackLatencyChange;
125
126 GxJackLatencyChange change_latency;
67127 };
128
129 class JackBuffer {
130 public:
131 float *input;
132 float *input1;
133 float *output0;
134 float *output2;
135 float *output3;
136 };
137 extern JackBuffer *_jackbuffer_ptr;
138
68139 extern GxJack gxjack;
69140
70141 extern sem_t jack_sync_sem;
71142
72 /* -------- functions ---------- */
73 bool gx_jack_init(const string *optvar );
74 void gx_jack_callbacks_and_activate();
75 bool gx_start_jack_dialog();
76 bool gx_start_jack(void* arg);
77 void gx_set_jack_buffer_size(GtkCheckMenuItem*, gpointer);
78 void gx_jack_connection(GtkCheckMenuItem*, gpointer);
79 void gx_jack_cleanup();
80
81 /* client callbacks */
82 int gx_jack_srate_callback(jack_nframes_t, void* arg);
83 void gx_jack_shutdown_callback(void* arg);
84 int gx_jack_xrun_callback(void* arg);
85 int gx_jack_buffersize_callback(jack_nframes_t, void* arg);
86 void gx_jack_portreg_callback(jack_port_id_t, int, void* arg);
87 void gx_jack_init_port_connection(const string*);
88 #ifdef HAVE_JACK_SESSION
89 void gx_jack_session_callback(jack_session_event_t *event, void *arg);
90 #endif
91
92 /* processing */
93 int gx_jack_process(jack_nframes_t, void* arg);
94 int gx_jack_insert_process(jack_nframes_t, void* arg);
95 int gx_jack_midi_process(jack_nframes_t, void* arg);
96 int gx_jack_midi_input_process(jack_nframes_t, void* arg);
97143 } /* end of jack namespace */
98144 #endif // SRC_HEADERS_GX_JACK_H_
5757 guint fLength; // length of the IR to use for convolution
5858 guint fDelay; // delay when to apply reverb
5959 Gainline gainline;
60 guint fGainCor;
60 guint fGainCor;
6161
6262 void read_gainline(gx_system::JsonParser& jp);
63 // inline string getIRDir () const { return fIRDir; }
64 inline void setIRFile(string name) { fIRFile = name; }
65 inline void setIRDir(string name) { fIRDir = name; }
63 inline void setIRFile(string name) { fIRFile = name; }
64 inline void setIRDir(string name) { fIRDir = name; }
6665
6766 // private constructor (don't call it, call instance())
6867 GxJConvSettings();
7473 explicit GxJConvSettings(gx_system::JsonParser& jp);
7574
7675 // getters and setters
77 inline string getIRFile() const { return fIRFile; }
76 inline string getIRFile() const { return fIRFile; }
7877 string getFullIRPath() const;
79 inline float getGain() const { return fGain; }
80 inline guint getOffset() const { return fOffset; }
81 inline guint getLength() const { return fLength; }
82 inline guint getDelay() const { return fDelay; }
83 inline guint getGainCor() const { return fGainCor; }
84 inline const Gainline& getGainline() const { return gainline; }
85 inline string getIRDir() const { return fIRDir; }
78 inline float getGain() const { return fGain; }
79 inline guint getOffset() const { return fOffset; }
80 inline guint getLength() const { return fLength; }
81 inline guint getDelay() const { return fDelay; }
82 inline guint getGainCor() const { return fGainCor; }
83 inline const Gainline& getGainline() const { return gainline; }
84 inline string getIRDir() const { return fIRDir; }
8685 inline void setFullIRPath(string name);
8786
88 inline void setGain(float gain) { fGain = gain; }
89 inline void setGainCor(guint gain) { fGainCor = gain; }
90 inline void setOffset(guint offs) { fOffset = offs; }
91 inline void setLength(guint leng) { fLength = leng; }
92 inline void setDelay(guint del) { fDelay = del; }
87 inline void setGain(float gain) { fGain = gain; }
88 inline void setGainCor(guint gain) { fGainCor = gain; }
89 inline void setOffset(guint offs) { fOffset = offs; }
90 inline void setLength(guint leng) { fLength = leng; }
91 inline void setDelay(guint del) { fDelay = del; }
9392 inline void setGainline(const Gainline& gain) { gainline = gain; }
9493
9594 // internal setting manipulation
9695 private:
97 inline bool isValid() { return fValidSettings; }
96 inline bool isValid() { return fValidSettings; }
9897 public:
9998
10099 // --------------- instanciation of jconv handler
105104 return &jcset;
106105 }
107106
108
109107 // checkbutton state
110108 static float checkbutton7;
111109
0 /*
1 * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
2 * Copyright (C) 2011 Pete Shorthose
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 * --------------------------------------------------------------------------
18 */
19
20 /* ------- This is the System namespace ------- */
21
22 #pragma once
23
24 #ifndef SRC_HEADERS_GX_JSON_H_
25 #define SRC_HEADERS_GX_JSON_H_
26
27 #include <semaphore.h>
28
29 #include <cmath>
30 #include <sstream>
31 #include <list>
32 #include <string>
33 #include <algorithm>
34
35 namespace gx_system {
36
37
38 /* classes for reading and writing JSON files */
39 class JsonException: public exception {
40 private:
41 string what_str;
42 public:
43 explicit JsonException(const char* desc);
44 ~JsonException() throw() { }
45 virtual const char* what() const throw() { return what_str.c_str(); }
46 };
47
48 class JsonWriter {
49 private:
50 ostream &os;
51 bool first;
52 bool deferred_nl;
53 string indent;
54 void snl(bool v) { deferred_nl = v; }
55 void komma();
56 void space();
57 void iplus();
58 void iminus();
59 public:
60 explicit JsonWriter(ostream& o);
61 ~JsonWriter() { close(); }
62 bool good() { return os.good(); }
63 void flush();
64 void close() { if (deferred_nl) os << endl; }
65 void write(float v, bool nl = false);
66 void write(double v, bool nl = false);
67 void write(int i, bool nl = false);
68 void write(unsigned int i, bool nl = false);
69 void write(const char* p, bool nl = false);
70 void write(string s, bool nl = false) { write(s.c_str(), nl); }
71 void write_lit(string s, bool nl = false);
72 void begin_object(bool nl = false);
73 void end_object(bool nl = false);
74 void begin_array(bool nl = false);
75 void end_array(bool nl = false);
76 void write_key(const char* p, bool nl = false);
77 void write_key(string p, bool nl = false);
78 void newline() { snl(true); }
79 };
80
81 class JsonParser {
82 public:
83 explicit JsonParser(istream& i);
84 enum token {
85 no_token, end_token, begin_object, end_object, begin_array, end_array,
86 value_string, value_number, value_key };
87 static const char* token_names[];
88 bool good() { return is.good(); }
89 token next(token expect = no_token);
90 token peek() { return next_tok; }
91 void check_expect(token expect) { if (cur_tok != expect) throw_unexpected(expect); }
92 inline string current_value() const { return str; }
93 int current_value_int() { return atoi(str.c_str()); }
94 unsigned int current_value_uint() { return atoi(str.c_str()); }
95 float current_value_float() {
96 istringstream b(str);
97 float f;
98 b >> f;
99 return f;
100 }
101 double current_value_double() {
102 istringstream b(str);
103 double d;
104 b >> d;
105 return d;
106 }
107 void copy_object(JsonWriter& jw);
108 void skip_object();
109 private:
110 istream& is;
111 int depth;
112 token cur_tok;
113 string str;
114 bool nl;
115 int next_depth;
116 token next_tok;
117 string next_str;
118 const char* readcode();
119 string readstring();
120 string readnumber(char c);
121 void read_next();
122 void throw_unexpected(token expect);
123 };
124
125 void writeHeader(JsonWriter& jw);
126 bool readHeader(JsonParser& jp, int *major = 0, int *minor = 0);
127 void write_preset(JsonWriter& w, bool write_midi = true, bool force_midi = false);
128 void read_preset(JsonParser &jp, bool *has_midi, int major, int minor);
129 bool saveStateToFile(const string & filename );
130 bool recallState(const string & filename );
131
132 // file format versions
133 const int majorversion = 1;
134 const int minorversion = 2;
135 } /* end of gx_system namespace */
136 #endif // SRC_HEADERS_GX_JSON_H_
5858 public:
5959 Gtk::VBox m_box;
6060 ToggleCheckButton m_tcb;
61 explicit GxTBox(gx_ui::GxUI& ui);
61 explicit GxTBox(const gx_ui::GxUI& ui);
6262 virtual ~GxTBox();
6363 };
6464
6868 public:
6969 Gtk::VBox m_box;
7070 Gtk::Label m_label;
71 explicit GxVBox(gx_ui::GxUI& ui);
71 explicit GxVBox(const gx_ui::GxUI& ui);
7272 virtual ~GxVBox();
7373 };
7474
7979 Gtk::HBox m_box;
8080 Gtk::Label m_label;
8181 Gtk::Frame m_frame;
82 explicit GxHBox(gx_ui::GxUI& ui);
82 explicit GxHBox(const gx_ui::GxUI& ui);
8383 virtual ~GxHBox();
8484 };
8585
8989 public:
9090 Gtk::Fixed m_fixed;
9191 Gtk::VBox m_box;
92 explicit GxFixedBox(gx_ui::GxUI& ui);
92 explicit GxFixedBox(const gx_ui::GxUI& ui);
9393 virtual ~GxFixedBox();
9494 };
9595
115115 Gtk::HBox m_fbox;
116116 Gtk::HBox m_fixedbox;
117117 Gtk::Label m_label;
118 explicit GxEventBox(gx_ui::GxUI& ui);
118 explicit GxEventBox(const gx_ui::GxUI& ui);
119119 virtual ~GxEventBox();
120120 };
121121
156156 class GxNotebookBox {
157157 public:
158158 Gtk::Notebook m_box;
159 explicit GxNotebookBox(gx_ui::GxUI& ui);
159 explicit GxNotebookBox(const gx_ui::GxUI& ui);
160160 virtual ~GxNotebookBox();
161161 };
162162
170170 Gxw::PaintBox m_paintbox;
171171 Gtk::Button m_button;
172172 Gtk::Button m_button1;
173 explicit GxMoveBox(gx_ui::GxUI& ui);
173 explicit GxMoveBox(const gx_ui::GxUI& ui);
174174 virtual ~GxMoveBox();
175175 };
176176
3434 #include "./gx_ui.h"
3535 #endif
3636
37 #ifndef GX_MAIN_INTERFACE
38 #define GX_MAIN_INTERFACE
39
4037
4138 #include <gxwmm/bigknob.h>
4239 #include <gxwmm/smallknob.h>
7370
7471 class GuiVariables {
7572 public:
76 bool dialogbox[30];
73 bool dialogbox[30];
74
75 int showwave;
76 int shownote;
77 float show_patch_info;
78
79 /* rack handlig */
80 int mono_plugs;
81 int stereo_plugs;
82 int refresh_size;
83
84 int g_threads[14];
85 /* for level display */
86 int meter_display_timeout; // in millisec
87 int meter_falloff ; // in dB/sec.
88 /* midi_in preset switch */
89 volatile gint program_change;
90 sem_t program_change_sem;
91
92 float main_xorg;
93 float main_yorg;
94
7795 void register_gui_parameter();
7896 };
7997
85103 class GlobalWidgets {
86104 public:
87105 /* global GUI widgets */
88 GtkWidget* fWindow;
89 GtkWidget* menuh;
90 GtkWidget* midibox;
91 GtkWidget* patch_info;
92 GtkWidget* tuner_widget;
93 GtkWidget* rack_widget;
94 GtkWidget* srack_widget;
95 GtkWidget* menu_mono_rack;
96 GtkWidget* menu_stereo_rack;
97 GtkWidget* rack_tool_bar;
106 GtkWidget* fWindow;
107 GtkWidget* menuh;
108 GtkWidget* midibox;
109 GtkWidget* patch_info;
110 GtkWidget* tuner_widget;
111 GtkWidget* rack_widget;
112 GtkWidget* srack_widget;
113 GtkWidget* menu_mono_rack;
114 GtkWidget* menu_stereo_rack;
115 GtkWidget* rack_tool_bar;
98116
99117 /* icon widgets */
100 GdkPixbuf* ib;
101 GdkPixbuf* ibm;
102 GdkPixbuf* ibr;
118 GdkPixbuf* ib;
119 GdkPixbuf* ibm;
120 GdkPixbuf* ibr;
103121
104122 /* jack server status icons */
105 GtkWidget* gx_jackd_on_image;
106 GtkWidget* gx_jackd_off_image;
123 GtkWidget* gx_jackd_on_image;
124 GtkWidget* gx_jackd_off_image;
107125
108126 /* engine status images */
109 GtkWidget* gx_engine_on_image;
110 GtkWidget* gx_engine_off_image;
111 GtkWidget* gx_engine_bypass_image;
112 GtkWidget* gx_engine_item;
113 GtkStatusIcon* status_icon;
127 GtkWidget* gx_engine_on_image;
128 GtkWidget* gx_engine_off_image;
129 GtkWidget* gx_engine_bypass_image;
130 GtkWidget* gx_engine_item;
131 GtkStatusIcon* status_icon;
114132 };
115133
116134 extern GlobalWidgets gw;
120138 class SkinHandling {
121139 public:
122140 /* skin handling */
123 vector<string> skin_list;
124 gint gx_current_skin;
125 int last_skin;
126 int no_opt_skin;
127 int set_knob;
141 vector<string> skin_list;
142 gint gx_current_skin;
143 int last_skin;
144 int no_opt_skin;
145 int set_knob;
128146 SkinHandling();
129147 };
130148
361379 // private constructor
362380 explicit GxMainInterface(const char* name);
363381
364 void addMainMenu();
365 void addEngineMenu();
366 void addJackServerMenu();
367 void addPresetMenu();
368 void addExtraPresetMenu();
369 void addPluginMenu();
370 void addAmpMenu();
371 void addOptionMenu();
372 void addGuiSkinMenu();
373 void addAboutMenu();
374
375 bool on_meter_button_release(GdkEventButton* ev);
376 void on_tuner_activate();
377 void gx_show_menu_settings(GtkWidget *widget, gpointer data);
378 void on_log_activate();
379 void on_rack_activate();
380 void on_rrack_activate();
381 void on_srack_activate();
382 void on_toolbar_activate();
383 void on_tube_activate();
384 void set_mouse_mode();
385 void on_show_oscilloscope();
386 bool on_refresh_oscilloscope();
382 void addMainMenu();
383 void addEngineMenu();
384 void addJackServerMenu();
385 void addPresetMenu();
386 void addExtraPresetMenu();
387 void addPluginMenu();
388 void addAmpMenu();
389 void addOptionMenu();
390 void addGuiSkinMenu();
391 void addAboutMenu();
392
393 bool on_meter_button_release(GdkEventButton* ev);
394 void on_tuner_activate();
395 void gx_show_menu_settings(GtkWidget *widget, gpointer data);
396 void on_log_activate();
397 void on_rack_activate();
398 void on_rrack_activate();
399 void on_srack_activate();
400 void on_toolbar_activate();
401 void on_tube_activate();
402 void set_mouse_mode();
403 void on_show_oscilloscope();
404 bool on_refresh_oscilloscope();
387405
388406 protected :
389 int fTop;
390 GtkWidget* fBox[stackSize];
391 GtkWidget* rBox;
392 GtkWidget* sBox;
393 GtkWidget* tBox;
394
395 int fMode[stackSize];
396 bool fStopped;
397 GtkTextView* fLoggingWindow;
398 GtkExpander* fLoggingBox;
399 GtkAdjustment* fLoggingVAdjustment;
400 Gxw::FastMeter fLevelMeters[2];
401 uiTuner fTuner;
402 Gxw::WaveView fWaveView;
403 GtkWidget* fSignalLevelBar;
407 static const int MAX_TUBES = 17;
408 int fTop;
409 GtkWidget* fBox[stackSize];
410 GtkWidget* rBox;
411 GtkWidget* sBox;
412 GtkWidget* tBox;
413
414 int fMode[stackSize];
415 bool fStopped;
416 GtkTextView* fLoggingWindow;
417 GtkExpander* fLoggingBox;
418 GtkAdjustment* fLoggingVAdjustment;
419 Gxw::FastMeter fLevelMeters[2];
420 uiTuner fTuner;
421 Gxw::WaveView fWaveView;
422 GtkWidget* fSignalLevelBar;
404423
405424 // menu items
406425 map<string, GtkWidget*> fMenuList;
407 MenuCheckItem fMidiInPreset;
408 MenuCheckItem fShowTooltips;
409 MenuCheckItem fShowTuner;
410 MenuCheckItem fShowWaveView;
411 MenuCheckItem fSetMouse;
426 MenuCheckItem fMidiInPreset;
427 MenuCheckItem fShowTooltips;
428 MenuCheckItem fShowTuner;
429 MenuCheckItem fShowWaveView;
430 MenuCheckItem fSetMouse;
412431
413432 // jack menu widgets
414 GtkWidget* fJackConnectItem;
415 GtkWidget* fJackLatencyItem[NJACKLAT];
416
417 GtkWidget* addWidget(const char* label, GtkWidget* w);
418 virtual void pushBox(int mode, GtkWidget* w);
433 GtkWidget* fJackConnectItem;
434 GtkWidget* fJackLatencyItem[NJACKLAT];
435
436 GtkWidget* addWidget(const char* label, GtkWidget* w);
437 virtual void pushBox(int mode, GtkWidget* w);
419438
420439 public :
421 MenuCheckItem fShowRack;
422 MenuCheckItem fShowRRack;
423 MenuCheckItem fShowSRack;
424 MenuCheckItem fShowLogger;
425 MenuCheckItem fShowMidiOut;
426 MenuCheckItem fShowToolBar;
427 RadioCheckItem fSelectTubeModel[14];
428
429 GtkWidget* logger;
430 GtkWidget* RBox;
431
432 static bool fInitialized;
433 int highest_unseen_msg_level;
440 MenuCheckItem fShowRack;
441 MenuCheckItem fShowRRack;
442 MenuCheckItem fShowSRack;
443 MenuCheckItem fShowLogger;
444 MenuCheckItem fShowMidiOut;
445 MenuCheckItem fShowToolBar;
446 RadioCheckItem fSelectTubeModel[MAX_TUBES];
447
448 GtkWidget* logger;
449 GtkWidget* RBox;
450
451 static bool fInitialized;
452 int highest_unseen_msg_level;
434453
435454 static const gboolean expand = TRUE;
436455 static const gboolean fill = TRUE;
442461 GtkAccelGroup* fAccelGroup;
443462
444463 // -- acquire a pointer to the logging window
445 GtkTextView* const getLoggingWindow() const { return fLoggingWindow; }
446 GtkExpander* const getLoggingBox() const { return fLoggingBox; }
447 GtkWidget* const getJackConnectItem() const { return fJackConnectItem; }
448 void set_waveview_buffer();
449
450 Gxw::WaveView& getWaveView() { return fWaveView; }
451
452 Gxw::FastMeter& getLevelMeter(unsigned int i) {
464 GtkTextView* const getLoggingWindow() const { return fLoggingWindow; }
465 GtkExpander* const getLoggingBox() const { return fLoggingBox; }
466 GtkWidget* const getJackConnectItem() const { return fJackConnectItem; }
467 GtkWidget* const getJackLatencyItem(const jack_nframes_t bufsize) const;
468 GtkWidget* const getMenu(const string name) { return fMenuList[name]; }
469
470 void set_waveview_buffer();
471 Gxw::WaveView& getWaveView() { return fWaveView; }
472
473 Gxw::FastMeter& getLevelMeter(unsigned int i) {
453474 assert(i < sizeof(fLevelMeters)/sizeof(fLevelMeters[0]));
454475 return fLevelMeters[i];
455476 }
456
457 GtkWidget* const getJackLatencyItem(const jack_nframes_t bufsize) const;
458
459 GtkWidget* const getMenu(const string name) { return fMenuList[name]; }
460477
461478 // -- layout groups
462479 void gx_build_mono_rack();
745762
746763 void conv_restart();
747764
748
749765 /* -------------------------------------------------------------------------- */
750766 } /* end of gx_gui namespace */
751767
752 #endif
753
754768 #endif // SRC_HEADERS_GX_MAIN_INTERFACE_H_
769
3535 public:
3636 PitchTracker();
3737 ~PitchTracker();
38 bool setParameters(int sampleRate, int fftSize );
39 void init() { setParameters(static_cast<int>(gx_jack::gxjack.jack_sr), MAX_FFT_SIZE); }
40 void add(int count, float *input);
41 float tuner_estimate();
38 bool pt_initialized;
39 bool setParameters(int sampleRate, int fftSize );
40 void init()
41 {setParameters(static_cast<int>(gx_jack::gxjack.jack_sr), MAX_FFT_SIZE);}
42 void add(int count, float *input);
43 float tuner_estimate();
44 void stop_thread();
4245
4346 private:
44 void run();
45 static void *static_run(void* p);
46 void setEstimatedFrequency(float freq);
47 int find_minimum();
48 int find_maximum(int l);
49 void start_thread();
50 void copy();
51 bool error;
52 volatile bool busy;
53 int tick;
54 sem_t m_trig;
55 pthread_t m_pthr;
56 Resampler resamp;
57 int m_sampleRate;
47 void run();
48 static void *static_run(void* p);
49 void setEstimatedFrequency(float freq);
50 int find_minimum();
51 int find_maximum(int l);
52 void start_thread();
53 void copy();
54 bool error;
55 volatile bool busy;
56 int tick;
57 sem_t m_trig;
58 pthread_t m_pthr;
59 Resampler *resamp;
60 int m_sampleRate;
5861 // Size of the FFT window.
59 int m_fftSize;
62 int m_fftSize;
6063 // The audio buffer that stores the input signal.
61 float *m_buffer;
64 float *m_buffer;
6265 // Index of the first empty position in the buffer.
63 int m_bufferIndex;
66 int m_bufferIndex;
6467 // Whether or not the input level is high enough.
65 bool m_audioLevel;
68 bool m_audioLevel;
6669 // Support buffer used to store signals in the time domain.
67 float *m_fftwBufferTime;
70 float *m_fftwBufferTime;
6871 // Support buffer used to store signals in the frequency domain.
69 fftwf_complex *m_fftwBufferFreq;
72 fftwf_complex *m_fftwBufferFreq;
7073 // Plan to compute the FFT of a given signal.
71 fftwf_plan m_fftwPlanFFT;
74 fftwf_plan m_fftwPlanFFT;
7275 // Plan to compute the IFFT of a given signal (with additional zero-padding).
73 fftwf_plan m_fftwPlanIFFT;
76 fftwf_plan m_fftwPlanIFFT;
7477 };
7578
7679 extern PitchTracker pitch_tracker;
3636 // #define DELETE_PRESET_LIST (3)
3737
3838 // number of factory preset lists
39 #define GX_NUM_OF_FACTORY_PRESET (3)
39 #define GX_NUM_OF_FACTORY_PRESET (4)
4040
4141 namespace gx_preset {
42
43 class GxPreset {
44 private:
45 string gx_get_accel_path(int lindex);
46 void gx_add_preset_to_menus(const string&);
47 void gx_save_preset(const gchar*, bool);
48 void gx_add_single_preset_menu_item(const string&,
49 const gint,
50 GCallback);
51 public:
52 static void gx_save_newpreset_dialog(GtkMenuItem*, gpointer);
53 static void gx_save_oldpreset(GtkMenuItem*, gpointer);
54 static void gx_save_newpreset(GtkEntry* entry);
55 static void gx_load_preset_file(const gchar*, bool);
56 static void gx_save_preset_file(const gchar*, bool);
57 static void gx_load_preset(GtkMenuItem*, gpointer);
58 static void gx_recall_main_setting(GtkMenuItem*, gpointer);
59 static void gx_save_main_setting(GtkMenuItem*, gpointer);
60 static void gx_rename_preset(GtkEntry* entry);
61 static void gx_rename_preset_dialog(GtkMenuItem*, gpointer);
62 static void gx_rename_active_preset_dialog(GtkWidget*, gpointer);
63 static void gx_delete_preset(GtkMenuItem*, gpointer);
64 static void gx_delete_preset_dialog(GtkMenuItem*, gpointer);
65 static void gx_delete_active_preset_dialog(GtkWidget*, gpointer);
66 static void gx_delete_all_presets_dialog(GtkMenuItem*, gpointer);
67 static void gx_next_preset(GtkWidget*, gpointer);
68 static void gx_previous_preset(GtkWidget*, gpointer);
69
70 void gx_delete_all_presets();
71 void gx_recall_settings_file(const string *filename = 0);
72 void gx_cleanup_preset_name(string& presname);
73 void gx_refresh_preset_menus();
74 void gx_load_factory_file(int i);
75 void init();
76
77 string gx_current_preset;
78 string gx_factory_preset;
79 string old_preset_name;
80
81 bool gx_nth_preset(unsigned char pgm);
82 bool setting_is_preset;
83 bool setting_is_factory;
84
85 GtkMenuItem* const gx_get_preset_item_from_name(int, const string&);
86 GtkWidget* ffpresmenu[GX_NUM_OF_FACTORY_PRESET];
87 GtkWidget* fpresmenu;
88 GtkWidget* presmenu[GX_NUM_OF_PRESET_LISTS];
89 GtkWidget* presMenu[GX_NUM_OF_PRESET_LISTS];
90
91 vector<string> fplist[GX_NUM_OF_FACTORY_PRESET];
92 vector<GtkMenuItem*> fpm_list[GX_NUM_OF_FACTORY_PRESET];
93 vector<string> plist;
94 vector<GtkMenuItem*> pm_list[GX_NUM_OF_PRESET_LISTS];
95 };
96 extern GxPreset gxpreset;
97
4298 extern gx_gui::FileParameter gx_preset_file;
4399 extern gx_gui::FileParameter gx_factory_preset_file;
44
45 /* function declarations */
46 string gx_get_accel_path(int lindex);
47
48 void gx_save_newpreset_dialog(GtkMenuItem*, gpointer);
49 void gx_save_newpreset(GtkEntry* entry);
50 void gx_save_preset(const gchar*, bool);
51 void gx_save_oldpreset(GtkMenuItem*, gpointer);
52
53 void gx_save_preset_file(const gchar*, bool);
54 void gx_load_preset_file(const gchar*, bool);
55
56 void gx_load_preset(GtkMenuItem*, gpointer);
57 void gx_recall_settings_file(const string *filename = 0);
58 void gx_recall_main_setting(GtkMenuItem*, gpointer);
59 void gx_save_main_setting(GtkMenuItem*, gpointer);
60
61 void gx_load_factory_file(int i);
62
63 void gx_rename_preset(GtkEntry* entry);
64 void gx_rename_preset_dialog(GtkMenuItem*, gpointer);
65 void gx_rename_active_preset_dialog(GtkWidget*, gpointer);
66
67 void gx_delete_preset(GtkMenuItem*, gpointer);
68 void gx_delete_preset_dialog(GtkMenuItem*, gpointer);
69 void gx_delete_active_preset_dialog(GtkWidget*, gpointer);
70
71 void gx_delete_all_presets_dialog(GtkMenuItem*, gpointer);
72 void gx_delete_all_presets();
73
74 void gx_add_preset_to_menus(const string&);
75 void gx_add_single_preset_menu_item(const string&,
76 const gint,
77 GCallback);
78
79 void gx_refresh_preset_menus();
80 void gx_cleanup_preset_name(string& presname);
81
82 bool gx_nth_preset(unsigned char pgm);
83 void gx_next_preset(GtkWidget*, gpointer);
84 void gx_previous_preset(GtkWidget*, gpointer);
85
86 GtkMenuItem* const gx_get_preset_item_from_name(int, const string&);
87
88 void init();
89100
90101 /* --------------------------------------------------------------------- */
91102 } /* end of gx_preset namespace */
92103 #endif // SRC_HEADERS_GX_PRESET_H_
104
4040 void down(int count, float *input, float *output);
4141 };
4242
43 extern SimpleResampler resampTube, resampDist;
44
4543 class BufferResampler: Resampler {
4644 public:
4745 float *process(int fs_inp, int ilen, float *input, int fs_outp, int& olen);
5452 int process(int count, float *input, float *output);
5553 int flush(float *output); // check source for max. output size
5654 };
55
56 class GlobalResampler {
57 public:
58 StreamingResampler _stream_resampler;
59 BufferResampler _buffer_resampler;
60 SimpleResampler _resampDist;
61 SimpleResampler _resampTube;
62
63 void init_resampler_ref();
64 void delete_resampler_ref();
65 };
66
67 extern GlobalResampler *_glob_resamp;
5768 }
5869 #endif // SRC_HEADERS_GX_RESAMPLER_H_
5858 kMessageTypeCount // just count, must be last
5959 } GxMsgType;
6060
61 /* classes for reading and writing JSON files */
62 class JsonException: public exception {
63 private:
64 string what_str;
65 public:
66 explicit JsonException(const char* desc);
67 ~JsonException() throw() { }
68 virtual const char* what() const throw() { return what_str.c_str(); }
69 };
70
71 class JsonWriter {
72 private:
73 ostream &os;
74 bool first;
75 bool deferred_nl;
76 string indent;
77 void snl(bool v) { deferred_nl = v; }
78 void komma();
79 void space();
80 void iplus();
81 void iminus();
82 public:
83 explicit JsonWriter(ostream& o);
84 ~JsonWriter() { close(); }
85 bool good() { return os.good(); }
86 void flush();
87 void close() { if (deferred_nl) os << endl; }
88 void write(float v, bool nl = false);
89 void write(double v, bool nl = false);
90 void write(int i, bool nl = false);
91 void write(unsigned int i, bool nl = false);
92 void write(const char* p, bool nl = false);
93 void write(string s, bool nl = false) { write(s.c_str(), nl); }
94 void write_lit(string s, bool nl = false);
95 void begin_object(bool nl = false);
96 void end_object(bool nl = false);
97 void begin_array(bool nl = false);
98 void end_array(bool nl = false);
99 void write_key(const char* p, bool nl = false);
100 void write_key(string p, bool nl = false);
101 void newline() { snl(true); }
102 };
103
104 class JsonParser {
105 public:
106 explicit JsonParser(istream& i);
107 enum token {
108 no_token, end_token, begin_object, end_object, begin_array, end_array,
109 value_string, value_number, value_key };
110 static const char* token_names[];
111 bool good() { return is.good(); }
112 token next(token expect = no_token);
113 token peek() { return next_tok; }
114 void check_expect(token expect) { if (cur_tok != expect) throw_unexpected(expect); }
115 inline string current_value() const { return str; }
116 int current_value_int() { return atoi(str.c_str()); }
117 unsigned int current_value_uint() { return atoi(str.c_str()); }
118 float current_value_float() {
119 istringstream b(str);
120 float f;
121 b >> f;
122 return f;
123 }
124 double current_value_double() {
125 istringstream b(str);
126 double d;
127 b >> d;
128 return d;
129 }
130 void copy_object(JsonWriter& jw);
131 void skip_object();
132 private:
133 istream& is;
134 int depth;
135 token cur_tok;
136 string str;
137 bool nl;
138 int next_depth;
139 token next_tok;
140 string next_str;
141 const char* readcode();
142 string readstring();
143 string readnumber(char c);
144 void read_next();
145 void throw_unexpected(token expect);
146 };
147
148 void writeHeader(JsonWriter& jw);
149 bool readHeader(JsonParser& jp, int *major = 0, int *minor = 0);
150 void write_preset(JsonWriter& w, bool write_midi = true, bool force_midi = false);
151 void read_preset(JsonParser &jp, bool *has_midi, int major, int minor);
152 bool saveStateToFile(const string & filename );
153 bool recallState(const string & filename );
154
155 // file format versions
156 const int majorversion = 1;
157 const int minorversion = 2;
15861
15962 /****************************************************************
16063 ** Measuring times
257160
258161 #endif
259162
163 class SystemVars {
164 public:
165 static const int SYSTEM_OK;
166
167 static const char* gx_head_dir;
168 static const char* jcapsetup_file;
169 static const char* jcapfile_wavbase;
170
171 static const string gx_pixmap_dir;
172 static const string gx_user_dir;
173
174 /* shell variable names */
175 static const char* shell_var_name[7];
176
177 bool is_session;
178 string rcpath;
179 string gx_style_dir;
180 string gx_builder_dir;
181
182 void sysvar_init();
183 };
184
185 extern SystemVars sysvar;
260186
261187 /****************************************************************
262188 ** misc function declarations
3131 gboolean gx_update_all_gui(gpointer args);
3232 gboolean gx_refresh_meter_level(gpointer arg);
3333 gboolean gx_survive_jack_shutdown(gpointer arg);
34 gboolean gx_monitor_jack_clients(gpointer args);
3534 gboolean gx_do_program_change(gpointer arg);
3635 gboolean gx_xrun_report(gpointer xdel);
3736 gboolean gx_check_cab_state(gpointer args);
9292 unsigned int fr)
9393 {
9494 Resampler_table *P;
95
9695 _mutex.lock ();
9796 P = _list;
9897 while (P)
117116 void Resampler_table::destroy (Resampler_table *T)
118117 {
119118 Resampler_table *P, *Q;
120
121119 _mutex.lock ();
122120 if (T)
123121 {
138136 P = P->_next;
139137 }
140138 delete T;
139 T = 0;
141140 }
142141 }
143142 _mutex.unlock ();
170169
171170 Resampler::~Resampler (void)
172171 {
173 clear ();
172 clear ();
174173 }
175174
176175
4646 # o o
4747 #
4848
49 # TUBE MU EX KG1 KG2 KP KVB CCG CPG CCP RGI
50 # 6DJ8 28 1.3 330 320 300 2.3P 2.1P 0.7P 2k
51 # 6L6CG 8.7 1.35 1460 4500 48 12 14P 0.85P 12P 1k
52 # 12AX7 100 1.4 1060 600 300 2.3P 2.4P 0.9P 2k
53 # 12AU7 21.5 1.3 1180 84 300 2.3P 2.2P 1.0P 2k
54 # 6550 7.9 1.35 890 4800 60 24 14P 0.85P 12P 1k
55 # KT88 8.8 1.35 730 4200 32 16 14P 0.85P 12P 1k
56
49 # TUBE MU EX KG1 KG2 KP KVB CCG CPG CCP RGI
50 # 6DJ8 28 1.3 330 320 300 2.3P 2.1P 0.7P 2k
51 # 6L6CG 8.7 1.35 1460 4500 48 12 14P 0.85P 12P 1k
52 # 12AX7 100 1.4 1060 600 300 2.3P 2.4P 0.9P 2k
53 # 12AT7 60 1.35 460 300 300 2.7P 2.2P 1P 2k
54 # 12AU7 21.5 1.3 1180 84 300 2.3P 2.2P 1.0P 2k
55 # 6550 7.9 1.35 890 4800 60 24 14P 0.85P 12P 1k
56 # KT88 8.8 1.35 730 4200 32 16 14P 0.85P 12P 1k
57 # EL34 60.0 4.8 2000 800 50
58 # EL34 11 1.35 650 4200 60 24 15P 1P 8P 1K
59 # 2A3 4.2 1.4 1500 60 300 8P 17P 6P 1K
60 # 300B 3.95 1.4 1550 65 300 10P 16P 5P 1K
61 # 6C33C 3.1 1.4 163 15 300 31P 31P 11P 500
5762
5863
5964 def Igk_Vgk(Vgk):
6267
6368 def Ipk(Vgk, Vpk):
6469 """plate current as function of gate-kathode voltage and plate-kathode voltage"""
65 mu = 100.0
66 kx = 1.4
67 kg1 = 1060.0
68 kp = 600.0
69 kvb = 300.0
70 mu = 100.0 # Amplification factor.
71 kx = 1.4 # Exponent:
72 kg1 = 1060.0 # Inversely proportional to overall plate current
73 kp = 600.0 # Affects opration in region of large plate voltage and large negative grid voltage.
74 kvb = 300.0 # Knee volts.
7075 #E1 = Vpk /kp*log(1+exp(kp*(1/mu+ Vgk/Vpk)))
7176 #return 2*E1**kx/kg1*(E1>0.0)*arctan(Vpk /kvb)
7277 E1 = Vpk/kp*log(1+exp(kp*(1/mu+Vgk/sqrt(kvb+Vpk*Vpk))))
3737 return True
3838
3939 # used by waf dist and waf build
40 VERSION='0.17.0'
40 VERSION='0.18.0'
4141 APPNAME='guitarix'
4242 APPNAME1='guitarix'
4343
591591 bld.install_files(bld.env['GX_STYLE_DIR1'], './src/gx_head/funkmuscle_rc', chmod=0664)
592592 bld.install_files(bld.env['GX_STYLE_DIR1'], './src/gx_head/dlp_ae_rc', chmod=0664)
593593 bld.install_files(bld.env['GX_STYLE_DIR1'], './src/gx_head/zettberlin_rc', chmod=0664)
594 bld.install_files(bld.env['GX_STYLE_DIR1'], './src/gx_head/autoandimat_rc', chmod=0664)
594595 sub_file('./src/gx_head/zettberlin_rc.in', './src/gx_head/zettberlin_rc', (('"jconv.IRDir": "(.*)"', '"jconv.IRDir": "%s"' % pa), ))
595596 bld.install_files(bld.env['GX_SOUND_DIR1'], './IR/greathall.wav', chmod=0664)
596597 if bld.env["GX_LIB_SHARED"]: