slider1:2<0,3,1{SM to LR,MS to LR,LR to LR,LR to MS}>mode
slider2:0.75<0,1,0.01>s width
slider3:0.5<0,1,0.01>s pan
slider4:0.75<0,1,0.01>m level
slider5:0.5<0,1,0.01>m pan
slider6:0.5<0,1,0.01>output

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

@slider
fParam2 = slider2; // width
fParam3 = slider3; // skew
fParam4 = slider4; // centre
fParam5 = slider5; // balance
fParam6 = slider6; // output

w = 4 * fParam2 - 2; // width
k = 2 * fParam3;       // balance
c = 4 * fParam4 - 2;  // depth
b = 2 * fParam5;       // pan
g = pow(10, 2 * fParam6 - 1);

slider1 == 0 ? ( // SM->LR
r2l =  g * c * (2 - b);
l2l =  g * w * (2 - k);
r2r =  g * c * b;
l2r = -g * w * k;
);

slider1 == 1 ? ( // MS->LR
l2l =  g * c * (2 - b);
r2l =  g * w * (2 - k);
l2r =  g * c * b;
r2r = -g * w * k;
);

slider1 == 2 ? ( // LR->LR
g *= 0.5;
l2l = g * (c * (2 - b) + w * (2 - k));
r2l = g * (c * (2 - b) - w * (2 - k));
l2r = g * (c * b - w * k);
r2r = g * (c * b + w * k);
);

slider1 == 3 ? ( // LR->MS
g *= 0.5;
l2l =  g * (2 - b) * (2 - k);
r2l =  g * (2 - b) * k;
l2r = -g * b * (2 - k);
r2r =  g * b * k;
);

@sample
a = spl0;
b = spl1;

d = r2r*b + l2r*a;
c = l2l*a + r2l*b;

spl0 = c;
spl1 = d;

@gfx 0 120
gfx_r=0; gfx_g=1; gfx_b=0; gfx_a=1;
gfx_setfont(1,"Arial", 16);

gfx_x =20; gfx_y =10;  gfx_printf("%.0f",(400 * fParam2 - 200) );
gfx_x =70; gfx_y =10;  gfx_drawchar($'%');
gfx_x =140; gfx_y =10;  gfx_printf("S Width");

gfx_x =20; gfx_y =30;  gfx_printf("%.0f",(200 * fParam3 - 100) );
gfx_x =70; gfx_y =30;  gfx_printf("L <> R");
gfx_x =140; gfx_y =30;  gfx_printf("S Pan");

gfx_x =20; gfx_y =50;  gfx_printf("%.0f",(400 * fParam4 - 200) );
gfx_x =70; gfx_y =50;  gfx_drawchar($'%');
gfx_x =140; gfx_y =50;  gfx_printf("M Level");

gfx_x =20; gfx_y =70;  gfx_printf("%.0f",(200 * fParam5 - 100) );
gfx_x =70; gfx_y =70;  gfx_printf("L <> R");
gfx_x =140; gfx_y =70;  gfx_printf("M Pan");

gfx_x =20; gfx_y =90;  gfx_printf("%.1f",(40 * fParam6 - 20) );
gfx_x =70; gfx_y =90;  gfx_printf("dB");
gfx_x =140; gfx_y =90;  gfx_printf("Output");
