desc:Cross-Pan
//author: LOSER, Belovw

slider1:0<-12,12,0.1>Volume (dB)
slider2:0<-100,100,0.1>Pan
slider3:-
slider4:-
slider5:200<0,22000,1>Crossover 1 (Hz)
slider4:-
slider7:0<-12,12,0.1>Volume (dB)
slider8:0<-100,100,0.1>Pan
slider9:-
slider10:-
slider11:2000<0,22000,1>Crossover 2 (Hz)
slider12:-
slider13:0<-12,12,0.1>Volume (dB)
slider14:0<-100,100,0.1>Pan
slider15:-
slider16:-
slider17:5000<0,22000,1>Crossover 3 (Hz)
slider18:-
slider19:0<-12,12,0.1>Volume (dB)
slider20:0<-100,100,0.1>Pan
slider21:-
slider22:-
slider23:8000<0,22000,1>Crossover 4 (Hz)
slider24:-
slider25:0<-12,12,0.1>Volume (dB)
slider26:0<-100,100,0.1>Pan
slider27:-
slider28:-

@init
cDenorm=10^-30;
function Gane(vol,pan)
local(y,y1,y2)
(
y1=pow(10,vol/20);
y2=pow(0.5+pan/200,1/2);
y1*y2
);

@slider
l1=gane(slider1,-slider2);
l2=gane(slider7,-slider8);
l3=gane(slider13,-slider14);
l4=gane(slider19,-slider20);
l5=gane(slider25,-slider26);

r1=gane(slider1,slider2);
r2=gane(slider7,slider8);
r3=gane(slider13,slider14);
r4=gane(slider19,slider20);
r5=gane(slider25,slider26);



freqHII = max(min(slider23,srate),slider17);
xHII = exp(-2.0*$pi*freqHII/srate);
a0HII = 1.0-xHII;
b1HII = -xHII;

freqHI = max(min(min(slider17,srate),slider23),slider11);
xHI = exp(-2.0*$pi*freqHI/srate);
a0HI = 1.0-xHI;
b1HI = -xHI;

freqMID = max(min(min(slider11,srate),slider17),slider5);
xMID = exp(-2.0*$pi*freqMID/srate);
a0MID = 1.0-xMID;
b1MID = -xMID;

freqLOW = min(min(slider5,srate),slider17);
xLOW = exp(-2.0*$pi*freqLOW/srate);
a0LOW = 1.0-xLOW;
b1LOW = -xLOW;

@sample

s0 = spl0;
s1 = spl1;
s0 = (tmplHII = a0HII*s0 - b1HII*tmplHII + cDenorm);
s1 = (tmprHII = a0HII*s1 - b1HII*tmprHII + cDenorm);
s8 = spl0 - s0;
s9 = spl1 - s1;

spl0 = s0;
spl1 = s1;
s0 = (tmplHI = a0HI*s0 - b1HI*tmplHI + cDenorm);
s1 = (tmprHI = a0HI*s1 - b1HI*tmprHI + cDenorm);
s6 = spl0 - s0;
s7 = spl1 - s1;

spl0 = s0;
spl1 = s1;
s0 = (tmplMID = a0MID*s0 - b1MID*tmplMID + cDenorm);
s1 = (tmprMID = a0MID*s1 - b1MID*tmprMID + cDenorm);
s4 = spl0 - s0;
s5 = spl1 - s1;

spl0 = s0;
spl1 = s1;
s0 = (tmplLOW = a0LOW*s0 - b1LOW*tmplLOW + cDenorm);
s1 = (tmprLOW = a0LOW*s1 - b1LOW*tmprLOW + cDenorm);
s2 = spl0 - s0;
s3 = spl1 - s1;

spl0 = s0*l1+s2*l2+s4*l3+s6*l4+s8*l5;
spl1 = s1*r1+s3*r2+s5*r3+s7*r4+s9*r5;
