slider1:100<0,100,1>Bias (%)
slider2:0<0,30,0.1>Drive (dB)
slider3:0<-36,24,0.1>Output (dB)

in_pin:L in
in_pin:R in
out_pin:L out
out_pin:R out

@init
function tanh(x) (
x = exp(2*x);
(x - 1) / (x + 1);
);

itm1=itm2=otm1=otm2=0;

@slider
bias=slider1*0.005;
drive=10^(slider2/20);
output=10^((slider3-3.1)/20);

@sample
in0=min(max(spl0*drive,-bias),bias);
in1=min(max(spl1*drive,-bias),bias);

in2=spl0;
in3=spl1;

det=max(abs(in2),abs(in3));

delta0=((det*abs(in0))-det);
delta1=((det*abs(in1))-det);

spl0=spl0+in0*delta0*sign(in2);
spl1=spl1+in1*delta1*sign(in3);

spl0=tanh(spl0*drive)*output;
spl1=tanh(spl1*drive)*output;

otm1=0.999*otm1 + spl0 - itm1; itm1=spl0; spl0=otm1;
otm2=0.999*otm2 + spl1 - itm2; itm2=spl1; spl1=otm2;
