1declare id "6DJ8 feedback"; // in amp tube ba.selector 2declare name "6DJ8 feedback"; 3 4import("stdfaust.lib"); 5import("guitarix.lib"); 6 7/**************************************************************** 8 ** Tube Preamp Emulation stage 1 - 2 9 */ 10 11val(x) = valve.vt(dist, q(x), x) 12with { 13 dist = 40.1; 14 q(x) = lp1tm1(x) * 1 - lp2tm1(x) * 1.02 - 1.0 : clip(-1,-0.01); 15 lp(a) = *(1 - a) : + ~ *(a); 16 lp1tm1 = abs <: lp(0.9999), _ : max; 17 avgs = lp1tm1 : avg; 18 avg_size = ma.SR/9; 19 avg(x) = x - de.delay1s(avg_size,x) : + ~ _ : /(avg_size); 20 lp2tm1 = avgs : lp(0.999); 21}; 22 23tubeax(preamp,gain1) = hgroup("stage1", stage1) : 24 hgroup("stage2", stage2) 25 with { 26 27 atten = 0.6; 28 stage1 = tubestage130_20(TB_6DJ8_68k,86.0,2700.0,1.863946) : - ~ (atten*tubestage130_20(TB_6DJ8_250k,132.0,1500.0,1.271609)) : *(preamp): 29 fi.lowpass(1,6531.0) : tubestage130_20(TB_6DJ8_250k,132.0,1500.0,1.271609): + ~ (atten*tubestage130_20(TB_6DJ8_250k,194.0,820.0,0.797043)); 30 stage2 = fi.lowpass(1,6531.0) : tubestage130_20(TB_6DJ8_250k,194.0,820.0,0.797043) : *(gain1); 31 32}; 33 34amp = val : component("gxdistortion.dsp").dist1(drive,wet_dry) : tubeax(preamp,gain1) with { 35 drive = ampctrl.drive; 36 wet_dry = ampctrl.wet_dry; 37 preamp = ampctrl.preamp; 38 gain1 = ampctrl.gain1; 39/* 40 drive = vslider(".gxdistortion.drive[alias]",0.35, 0, 1, 0.01); 41 wet_dry = vslider(".gxdistortion.wet_dry[alias]", 100, 0, 100, 1) : /(100) : smoothi(0.999); 42 preamp = vslider(".amp2.stage1.Pregain[alias]",0,-20,20,0.1) : ba.db2linear : smoothi(0.999); 43 gain1 = vslider(".amp2.stage2.gain1[alias]", 6, -20.0, 20.0, 0.1) : ba.db2linear : smoothi(0.999); 44*/ 45}; 46 47process = amp,amp; 48