slider1:24<1,24,1>Bit Reduction
slider2:22500<100,44100>Freq Reduction (Hz)
slider3:0<0,100,1>Filter (%)
slider4:0<-24,24,0.1>Output (dB)

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

@init
itm1=itm2=otm1=otm2=0;

m1=m0=0;

phasorA = 0;
phasorB = 0;
lastA = 0;
lastB = 0;

@slider
step = 1/2^(slider1);
slider2 > srate/2 ? slider2 = srate/2;
tmp = max(min(slider2,(srate/2)),100);
normfreq = (tmp/srate);
filter = max(min(1-slider3*0.01,1),0.01);
gain = 10^(slider4/20);

@sample
// filter
m1=m0;
inputA=0.5*(m1+m0=spl0);
inputB=0.5*(m1+m0=spl1);

// bitcrusher
phasorA = phasorA+normfreq;
(phasorA >= 1) ?
(
phasorA = phasorA - 1;
lastA = step * floor( inputA/step + 0.5 );
);

phasorB = phasorB+normfreq;
(phasorB >= 1) ?
(
phasorB = phasorB - 1;
lastB = step * floor( inputB/step + 0.5 );
);

// filter
fa = fa + filter * ((lastA-inputA) + inputA - fa);
fb = fb + filter * ((lastB-inputB) + inputB - fb);

spl0 = fa * gain;
spl1 = fb * gain;

// filter
spl0=0.5*(m1+m0=spl0);
spl1=0.5*(m1+m0=spl1);

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