1// generated automatically
2// DO NOT MODIFY!
3declare id "ruin";
4declare name "Ruiner";
5declare category "Fuzz";
6declare shortname "Ruiner";
7declare description "Devi Ever Dark Boost";
8declare drywetbox "true";
9declare samplerate "96000";
10
11import("stdfaust.lib");
12import("trany.lib");
13
14ruinerp1 = pre : fi.iir((b0/a0,b1/a0,b2/a0),(a1/a0,a2/a0)) with {
15    LogPot(a, x) = ba.if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
16    Inverted(b, x) = ba.if(b, 1 - x, x);
17    s = 0.993;
18    fs = float(ma.SR);
19    pre = _;
20
21
22
23        Intensity = vslider("Intensity[name:Intensity]", 0.5, 0, 1, 0.01) : Inverted(1) : si.smooth(s);
24
25    b0 = -3.68740376472719e-5*fs;
26
27    b1 = 0;
28
29    b2 = 3.68740376472719e-5*fs;
30
31    a0 = Intensity*fs*(3.23341143501596e-10*fs + 1.83849805831657e-6) + fs*(2.50211258533327e-10*fs + 1.41841348392955e-7) + 9.19249029158284e-5;
32
33    a1 = -6.46682287003193e-10*Intensity*pow(fs,2) - 5.00422517066654e-10*pow(fs,2) + 0.000183849805831657;
34
35    a2 = Intensity*fs*(3.23341143501596e-10*fs - 1.83849805831657e-6) + fs*(2.50211258533327e-10*fs - 1.41841348392955e-7) + 9.19249029158284e-5;
36};
37
38ruinerp2  = pre : fi.iir((b0/a0,b1/a0,b2/a0,b3/a0),(a1/a0,a2/a0,a3/a0)) with {
39    LogPot(a, x) = ba.if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
40    Inverted(b, x) = ba.if(b, 1 - x, x);
41    s = 0.993;
42    fs = float(ma.SR);
43    pre = _;
44
45
46
47        Level = vslider("Level[name:Level]", 0.5, 0, 1, 0.01) : Inverted(0) : si.smooth(s);
48
49    b0 = -1.11891193819806e-10*Level*pow(fs,2) - 1.11891193819806e-12*pow(fs,2);
50
51    b1 = 1.11891193819806e-10*Level*pow(fs,2) + 1.11891193819806e-12*pow(fs,2);
52
53    b2 = 1.11891193819806e-10*Level*pow(fs,2) + 1.11891193819806e-12*pow(fs,2);
54
55    b3 = -1.11891193819806e-10*Level*pow(fs,2) - 1.11891193819806e-12*pow(fs,2);
56
57    a0 = Level*(Level*fs*(fs*(-8.62067474057856e-16*fs - 4.46379387426086e-13) - 5.75832602737396e-11) + fs*(fs*(8.53446799317278e-16*fs + 5.28122340957611e-13) + 7.99957173492034e-11) + 2.87916301368698e-9) + fs*(fs*(8.71550216272493e-15*fs + 5.37582514840965e-12) + 8.12279541046302e-10) + 2.88204217670067e-8;
58
59    a1 = Level*(Level*fs*(fs*(2.58620242217357e-15*fs + 4.46379387426086e-13) - 5.75832602737396e-11) + fs*(fs*(-2.56034039795183e-15*fs - 5.28122340957611e-13) + 7.99957173492034e-11) + 8.63748904106094e-9) + fs*(fs*(-2.61465064881748e-14*fs - 5.37582514840965e-12) + 8.12279541046302e-10) + 8.646126530102e-8;
60
61    a2 = Level*(Level*fs*(fs*(-2.58620242217357e-15*fs + 4.46379387426086e-13) + 5.75832602737396e-11) + fs*(fs*(2.56034039795183e-15*fs - 5.28122340957611e-13) - 7.99957173492034e-11) + 8.63748904106094e-9) + fs*(fs*(2.61465064881748e-14*fs - 5.37582514840965e-12) - 8.12279541046302e-10) + 8.646126530102e-8;
62
63    a3 = Level*(Level*fs*(fs*(8.62067474057856e-16*fs - 4.46379387426086e-13) + 5.75832602737396e-11) + fs*(fs*(-8.53446799317278e-16*fs + 5.28122340957611e-13) - 7.99957173492034e-11) + 2.87916301368698e-9) + fs*(fs*(-8.71550216272493e-15*fs + 5.37582514840965e-12) - 8.12279541046302e-10) + 2.88204217670067e-8;
64};
65
66    preclip =  min(1) : max(-1);
67    //clip(x) = ((exp(x*4)-exp(-x*4*1.2))/(exp(x*4)+exp(-x*4)))/4;
68    clip = ffunction(float symclip(float), "clipping.h", "");
69    aclip(x) = atan(x)/ma.PI;
70    //tclip = tranystageb(TB_SVEL34_68k,86.0,2700.0,25.922163) : tranystageb(TB_SVEL34_68k,86.0,2700.0,25.922163) ;
71    tclip = tranystageb(TB_7199P_68k,86.0,2700.0,5.571981) : tranystageb(TB_7199P_68k,86.0,2700.0,5.571981) ;
72process = ruinerp1 : clip : ruinerp2  ;
73