1// generated automatically 2// DO NOT MODIFY! 3declare id "fuzzdrive"; 4declare name "Fuzz Drive"; 5declare category "Fuzz"; 6declare shortname "Fuzz Drive"; 7declare description "Fuzz Distortion"; 8 9import("stdfaust.lib"); 10import("trany.lib"); 11 12 LogPot(a, x) = ba.if(a, (exp(a * x) - 1) / (exp(a) - 1), x); 13 Inverted(b, x) = ba.if(b, 1 - x, x); 14 s = 0.993; 15 16 wet = vslider("wet_dry[name:Wet/Dry][tooltip:percentage of processed signal in output signal]", 100, 0, 100, 1) : /(100); 17 dry = 1 - wet; 18 19 //Level = vslider("Level[name:Level]", 0.5, 0, 1, 0.01) : Inverted(0) : si.smooth(s); 20 gain = hslider("Level[name:Level]", -2, -20, 12, 0.1) : ba.db2linear : si.smooth(s); 21 22 Fuzz = 0.5 ; //vslider("Fuzz[name:Tone]", 0.5, 0, 1, 0.01) : Inverted(1) : si.smooth(s); 23 24 Distortion = vslider("Distortion[name:Drive]", 0.5, 0, 0.99, 0.01) : Inverted(1) : si.smooth(s); 25 26 clip = tranystage(TB_7199P_68k,86.0,2700.0,3.571981) : tranystage(TB_7199P_68k,86.0,2700.0,3.571981) : tranystage(TB_7199P_68k,86.0,2700.0,3.571981) ; 27 28fuzz = fi.iir((b0/a0,b1/a0,b2/a0,b3/a0,b4/a0,b5/a0,b6/a0,b7/a0,b8/a0),(a1/a0,a2/a0,a3/a0,a4/a0,a5/a0,a6/a0,a7/a0,a8/a0)) with { 29 fs = float(ma.SR); 30 31 b0 = Fuzz*pow(fs,3)*(fs*(fs*(fs*(fs*(1.29594227235659e-40*fs - 8.87073657190112e-34) - 1.64126469795529e-30) - 1.58018238163299e-26) - 1.52868099778786e-23) - 4.36734685990874e-21) + pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(1.17227175222998e-40*fs - 8.60503380045389e-34) + 3.96129387282593e-28) + 4.46652612440854e-25) + 6.72185939565773e-21) + 2.17087377052947e-18) - 1.32343844239659e-17); 32 33 b1 = Fuzz*pow(fs,3)*(pow(fs,2)*(fs*(fs*(-1.03675381788527e-39*fs + 5.32244194314067e-33) + 6.56505879182116e-30) + 3.16036476326599e-26) - 8.73469371981747e-21) + pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(-9.37817401783986e-40*fs + 5.16302028027233e-33) - 1.58451754913037e-27) - 8.93305224881709e-25) + 4.34174754105893e-18) - 5.29375376958635e-17); 34 35 b2 = Fuzz*pow(fs,3)*(fs*(fs*(fs*(fs*(3.62863836259845e-39*fs - 1.24190312006616e-32) - 6.56505879182116e-30) + 3.16036476326599e-26) + 6.11472399115143e-23) + 8.73469371981747e-21) + pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(3.28236090624395e-39*fs - 1.20470473206354e-32) + 1.58451754913037e-27) - 8.93305224881709e-25) - 2.68874375826309e-20) - 4.34174754105893e-18) - 5.29375376958635e-17); 36 37 b3 = Fuzz*pow(fs,3)*(pow(fs,2)*(fs*(fs*(-7.2572767251969e-39*fs + 1.24190312006616e-32) - 6.56505879182116e-30) - 9.48109428979796e-26) + 2.62040811594524e-20) + pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(-6.5647218124879e-39*fs + 1.20470473206354e-32) + 1.58451754913037e-27) + 2.67991567464513e-24) - 1.30252426231768e-17) + 5.29375376958635e-17); 38 39 b4 = Fuzz*pow(fs,4)*(pow(fs,2)*(9.07159590649613e-39*pow(fs,2) + 1.64126469795529e-29) - 9.17208598672714e-23) + pow(fs,2)*(pow(fs,2)*(pow(fs,2)*(8.20590226560988e-39*pow(fs,2) - 3.96129387282593e-27) + 4.03311563739464e-20) + 1.32343844239659e-16); 40 41 b5 = Fuzz*pow(fs,3)*(pow(fs,2)*(fs*(fs*(-7.2572767251969e-39*fs - 1.24190312006616e-32) - 6.56505879182116e-30) + 9.48109428979796e-26) - 2.62040811594524e-20) + pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(-6.5647218124879e-39*fs - 1.20470473206354e-32) + 1.58451754913037e-27) - 2.67991567464513e-24) + 1.30252426231768e-17) + 5.29375376958635e-17); 42 43 b6 = Fuzz*pow(fs,3)*(fs*(fs*(fs*(fs*(3.62863836259845e-39*fs + 1.24190312006616e-32) - 6.56505879182116e-30) - 3.16036476326599e-26) + 6.11472399115143e-23) - 8.73469371981747e-21) + pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(3.28236090624395e-39*fs + 1.20470473206354e-32) + 1.58451754913037e-27) + 8.93305224881709e-25) - 2.68874375826309e-20) + 4.34174754105893e-18) - 5.29375376958635e-17); 44 45 b7 = Fuzz*pow(fs,3)*(pow(fs,2)*(fs*(fs*(-1.03675381788527e-39*fs - 5.32244194314067e-33) + 6.56505879182116e-30) - 3.16036476326599e-26) + 8.73469371981747e-21) + pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(-9.37817401783986e-40*fs - 5.16302028027233e-33) - 1.58451754913037e-27) + 8.93305224881709e-25) - 4.34174754105893e-18) - 5.29375376958635e-17); 46 47 b8 = Fuzz*pow(fs,3)*(fs*(fs*(fs*(fs*(1.29594227235659e-40*fs + 8.87073657190112e-34) - 1.64126469795529e-30) + 1.58018238163299e-26) - 1.52868099778786e-23) + 4.36734685990874e-21) + pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(1.17227175222998e-40*fs + 8.60503380045389e-34) + 3.96129387282593e-28) - 4.46652612440854e-25) + 6.72185939565773e-21) - 2.17087377052947e-18) - 1.32343844239659e-17); 48 49 a0 = Fuzz*(Fuzz*pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(-1.20954612086615e-39*fs - 2.86589792702458e-34) - 6.29844123704863e-30) - 6.96590249983833e-27) - 2.97472992156056e-24) - 4.85407145719168e-22) - 2.26821940920998e-20) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(2.45020046020493e-40*fs - 1.12017008405057e-33) - 2.68390877243249e-29) - 2.76343706770825e-26) - 1.93946085329172e-23) - 8.29607943811672e-21) - 1.41480755159492e-18) - 6.87339214912114e-17)) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(1.21134747730432e-39*fs + 1.63282987404348e-33) + 4.4344097371444e-29) + 1.07298568411666e-25) + 1.73266579347222e-22) + 1.31102852092565e-19) + 4.74767687606168e-17) + 7.12034665177176e-15) + 3.12426915869143e-13; 50 51 a1 = Fuzz*(Fuzz*pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(9.6763689669292e-39*fs + 1.71953875621475e-33) + 2.51937649481945e-29) + 1.39318049996767e-26) - 9.70814291438336e-22) - 9.0728776368399e-20) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-1.96016036816394e-39*fs + 6.7210205043034e-33) + 1.073563508973e-28) + 5.52687413541649e-26) - 1.65921588762334e-20) - 5.65923020637969e-18) - 4.12403528947268e-16)) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-9.69077981843452e-39*fs - 9.79697924426087e-33) - 1.77376389485776e-28) - 2.14597136823331e-25) + 2.62205704185131e-19) + 1.89907075042467e-16) + 4.27220799106305e-14) + 2.49941532695314e-12; 52 53 a2 = Fuzz*(Fuzz*pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(-3.38672913842522e-38*fs - 4.01225709783442e-33) - 2.51937649481945e-29) + 1.39318049996767e-26) + 1.18989196862423e-23) + 9.70814291438336e-22) - 9.0728776368399e-20) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(6.86056128857379e-39*fs - 1.56823811767079e-32) - 1.073563508973e-28) + 5.52687413541649e-26) + 7.75784341316688e-23) + 1.65921588762334e-20) - 5.65923020637969e-18) - 9.62274900876959e-16)) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(3.39177293645208e-38*fs + 2.28596182366087e-32) + 1.77376389485776e-28) - 2.14597136823331e-25) - 6.93066317388889e-22) - 2.62205704185131e-19) + 1.89907075042467e-16) + 9.96848531248046e-14) + 8.74795364433599e-12; 54 55 a3 = Fuzz*(Fuzz*pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(6.77345827685044e-38*fs + 4.01225709783442e-33) - 2.51937649481945e-29) - 4.179541499903e-26) + 2.91244287431501e-21) + 9.0728776368399e-20) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-1.37211225771476e-38*fs + 1.56823811767079e-32) - 1.073563508973e-28) - 1.65806224062495e-25) + 4.97764766287003e-20) + 5.65923020637969e-18) - 9.62274900876959e-16)) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-6.78354587290416e-38*fs - 2.28596182366087e-32) + 1.77376389485776e-28) + 6.43791410469994e-25) - 7.86617112555392e-19) - 1.89907075042467e-16) + 9.96848531248046e-14) + 1.7495907288672e-11; 56 57 a4 = Fuzz*(Fuzz*pow(fs,2)*(pow(fs,2)*(pow(fs,2)*(-8.46682284606305e-38*pow(fs,2) + 6.29844123704863e-29) - 1.78483795293634e-23) + 2.26821940920998e-19) + pow(fs,2)*(pow(fs,2)*(pow(fs,2)*(1.71514032214345e-38*pow(fs,2) + 2.68390877243249e-28) - 1.16367651197503e-22) + 1.41480755159492e-17)) + pow(fs,2)*(pow(fs,2)*(pow(fs,2)*(8.47943234113021e-38*pow(fs,2) - 4.4344097371444e-28) + 1.03959947608333e-21) - 4.74767687606168e-16) + 2.186988411084e-11; 58 59 a5 = Fuzz*(Fuzz*pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(6.77345827685044e-38*fs - 4.01225709783442e-33) - 2.51937649481945e-29) + 4.179541499903e-26) - 2.91244287431501e-21) + 9.0728776368399e-20) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-1.37211225771476e-38*fs - 1.56823811767079e-32) - 1.073563508973e-28) + 1.65806224062495e-25) - 4.97764766287003e-20) + 5.65923020637969e-18) + 9.62274900876959e-16)) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-6.78354587290416e-38*fs + 2.28596182366087e-32) + 1.77376389485776e-28) - 6.43791410469994e-25) + 7.86617112555392e-19) - 1.89907075042467e-16) - 9.96848531248046e-14) + 1.7495907288672e-11; 60 61 a6 = Fuzz*(Fuzz*pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(-3.38672913842522e-38*fs + 4.01225709783442e-33) - 2.51937649481945e-29) - 1.39318049996767e-26) + 1.18989196862423e-23) - 9.70814291438336e-22) - 9.0728776368399e-20) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(6.86056128857379e-39*fs + 1.56823811767079e-32) - 1.073563508973e-28) - 5.52687413541649e-26) + 7.75784341316688e-23) - 1.65921588762334e-20) - 5.65923020637969e-18) + 9.62274900876959e-16)) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(3.39177293645208e-38*fs - 2.28596182366087e-32) + 1.77376389485776e-28) + 2.14597136823331e-25) - 6.93066317388889e-22) + 2.62205704185131e-19) + 1.89907075042467e-16) - 9.96848531248046e-14) + 8.74795364433599e-12; 62 63 a7 = Fuzz*(Fuzz*pow(fs,2)*(fs*(pow(fs,2)*(fs*(fs*(9.6763689669292e-39*fs - 1.71953875621475e-33) + 2.51937649481945e-29) - 1.39318049996767e-26) + 9.70814291438336e-22) - 9.0728776368399e-20) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-1.96016036816394e-39*fs - 6.7210205043034e-33) + 1.073563508973e-28) - 5.52687413541649e-26) + 1.65921588762334e-20) - 5.65923020637969e-18) + 4.12403528947268e-16)) + fs*(fs*(fs*(pow(fs,2)*(fs*(fs*(-9.69077981843452e-39*fs + 9.79697924426087e-33) - 1.77376389485776e-28) + 2.14597136823331e-25) - 2.62205704185131e-19) + 1.89907075042467e-16) - 4.27220799106305e-14) + 2.49941532695314e-12; 64 65 a8 = Fuzz*(Fuzz*pow(fs,2)*(fs*(fs*(fs*(fs*(fs*(-1.20954612086615e-39*fs + 2.86589792702458e-34) - 6.29844123704863e-30) + 6.96590249983833e-27) - 2.97472992156056e-24) + 4.85407145719168e-22) - 2.26821940920998e-20) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(2.45020046020493e-40*fs + 1.12017008405057e-33) - 2.68390877243249e-29) + 2.76343706770825e-26) - 1.93946085329172e-23) + 8.29607943811672e-21) - 1.41480755159492e-18) + 6.87339214912114e-17)) + fs*(fs*(fs*(fs*(fs*(fs*(fs*(1.21134747730432e-39*fs - 1.63282987404348e-33) + 4.4344097371444e-29) - 1.07298568411666e-25) + 1.73266579347222e-22) - 1.31102852092565e-19) + 4.74767687606168e-17) - 7.12034665177176e-15) + 3.12426915869143e-13; 66}; 67 68dist = fi.iir((b0/a0,b1/a0,b2/a0,b3/a0),(a1/a0,a2/a0,a3/a0)) with { 69 fs = float(ma.SR); 70 71 b0 = 3.45357917689612e-13*Distortion*0.1*pow(fs,3) + 0.1*pow(fs,2)*(1.79347857986842e-13*fs + 3.45357917689612e-12); 72 73 b1 = -1.03607375306884e-12*Distortion*0.1*pow(fs,3) + 0.1*pow(fs,2)*(-5.38043573960525e-13*fs - 3.45357917689612e-12); 74 75 b2 = 1.03607375306884e-12*Distortion*0.1*pow(fs,3) + 0.1*pow(fs,2)*(5.38043573960525e-13*fs - 3.45357917689612e-12); 76 77 b3 = -3.45357917689612e-13*Distortion*0.1*pow(fs,3) + 0.1*pow(fs,2)*(-1.79347857986842e-13*fs + 3.45357917689612e-12); 78 79 a0 = Distortion*fs*(fs*(1.2099049942893e-14*fs + 2.51801622165627e-10) + 2.49252253398618e-8) + fs*(fs*(3.57407648445144e-16*fs + 2.81736895109737e-13) + 2.53046873750701e-9) + 2.49252253398618e-7; 80 81 a1 = Distortion*fs*(fs*(-3.62971498286789e-14*fs - 2.51801622165627e-10) + 2.49252253398618e-8) + fs*(fs*(-1.07222294533543e-15*fs - 2.81736895109737e-13) + 2.53046873750701e-9) + 7.47756760195853e-7; 82 83 a2 = Distortion*fs*(fs*(3.62971498286789e-14*fs - 2.51801622165627e-10) - 2.49252253398618e-8) + fs*(fs*(1.07222294533543e-15*fs - 2.81736895109737e-13) - 2.53046873750701e-9) + 7.47756760195853e-7; 84 85 a3 = Distortion*fs*(fs*(-1.2099049942893e-14*fs + 2.51801622165627e-10) - 2.49252253398618e-8) + fs*(fs*(-3.57407648445144e-16*fs + 2.81736895109737e-13) - 2.53046873750701e-9) + 2.49252253398618e-7; 86}; 87 X2 = fuzz : dist; 88 opamp = ffunction(float opamp(float), "clipping.h", ""); 89 X3 = _ <: _ - opamp(X2-_) :> _ ; 90 asymclip = ffunction(float asymhardclip2(float), "clipping.h", ""); 91 aclip = asymclip(X3); 92 93process = _<:*(dry),(*(wet) : aclip :*(gain) ):>_; 94