/*
Note:
-------
'Mono M+S'
'Mono M-S'
These modes are not 'track panning' compatible !!!
In these modes you can't put this plugin on a master/parent bus.

So instead of putting this plugin on a folder track,
just insert it on a child track right after your track FX chain,
before any 'track panning' is happening...
*/

slider1:0<0,11,1{Stereo,Stereo Swap,Mono L+R (Mid only),Mono L-R (Side only),Mono M+S (Mid+Side to Center),Mono M-S (Mid-Side to Center),Mono L+L (Left to L+R),Mono R+R (Right to L+R),Mono L+R to Left only,Mono L+R to Right only,L only,R only}>Mode
slider2:0<-60,24,0.1>Volume (dB)

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

@slider
adj = slider2 <= -60.0 ? 0.0 : 10^(slider2/20);

doseek=1;

@block
doseek ? (
dadj=(adj-adj_s)/samplesblock;
doseek=0;
):(
dadj=0;
adj_s=adj;
);

@sample
slider1 == 0 ? ( //stereo
spl0=spl0*adj_s;
spl1=spl1*adj_s;
);

slider1 == 1 ? ( // stereo reverse
s0=spl0;
s1=spl1;
spl0=s1*adj_s;
spl1=s0*adj_s;
);

slider1 == 2 ? ( // mono L+R (mid only)
spl0=((spl0+spl1)*0.5)*adj_s;
spl1=spl0;
);

slider1 == 3 ? ( // mono L-R (side only)
spl0=(spl0-spl1)*adj_s;
spl1=spl0;
);

slider1 == 4 ? ( // mono MS (mid+side)
s0=(spl0+spl1)*0.5;
s1=(spl0-spl1)*0.5;
spl0=(s0+s1)*adj_s;
spl1=spl0;
);

slider1 == 5 ? ( // mono MS (mid-side)
s0=(spl0+spl1)*0.5;
s1=(spl0-spl1)*0.5;
spl0=(s0-s1)*adj_s;
spl1=spl0;
);

slider1 == 6 ? ( // mono L+L (left to left+right)
spl0=spl0*adj_s;
spl1=spl0;
);

slider1 == 7 ? ( // mono R+R (right to left+right)
spl1=spl1*adj_s;
spl0=spl1;
);

slider1 == 8 ? ( // mono L+R to left
spl0=((spl0+spl1)*0.5)*adj_s;
spl1=0;
);

slider1 == 9 ? ( // mono L+R to right
spl1=((spl0+spl1)*0.5)*adj_s;
spl0=0;
);

slider1 == 10 ? ( // mono L only
spl0=spl0*adj_s;
spl1=0;
);

slider1 == 11 ? ( // mono R only
spl1=spl1*adj_s;
spl0=0;
);

adj_s+=dadj;
