slider1:0<-100,100,1>Pan (%)
slider2:0<0,10,1{Stereo: LR pan,Mono: Mid/Side-inv sum tremolo,Mono: Mid/Side-inv sum tremolo (alt),MS: Mid/Side alternated,MS: Side tremolo (Mid def),MS: Side-inv pan (Mid def),MS: Mid tremolo (Side-inv),MS: Mid pan (Side-inv),MS: Mid pan (Side def),MS: Mid tremolo (Side def) (alt),MS: Side tremolo (Mid def) (alt)}>Mode
slider3:0<-36,24,0.1>(Stereo L, Mono, Mid) Input (dB)
slider4:0<-36,24,0.1>(Stereo R, Side) Input (dB)
slider5:0<-24,24,0.1>Output (dB)

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

@init
src_pan = tgt_pan = slider1*0.01;
src_vol0 = tgt_vol0 = slider3 <= -36.0 ? 0.0 : 10^(slider3/20);
src_vol1 = tgt_vol1 = slider4 <= -36.0 ? 0.0 : 10^(slider4/20);
src_vol = tgt_vol = 10^(slider5/20);

@slider
tgt_pan = slider1*0.01;
tgt_vol0 = slider3 <= -36.0 ? 0.0 : 10^(slider3/20);
tgt_vol1 = slider4 <= -36.0 ? 0.0 : 10^(slider4/20);
tgt_vol = 10^(slider5/20);

@block
d_pan = (tgt_pan-src_pan)/samplesblock;
tpan = src_pan;
src_pan = tgt_pan;

d_vol0 = (tgt_vol0-src_vol0)/samplesblock;
tvol0 = src_vol0;
src_vol0 = tgt_vol0;

d_vol1 = (tgt_vol1-src_vol1)/samplesblock;
tvol1 = src_vol1;
src_vol1 = tgt_vol1; 

d_vol = (tgt_vol-src_vol)/samplesblock;
tvol = src_vol;
src_vol = tgt_vol;

@sample
tpan += d_pan;
tvol0 += d_vol0;
tvol1 += d_vol1;
tvol += d_vol;

pan=tpan;
vol0=tvol0;
vol1=tvol1;
vol=tvol;

slider2 == 0 ? (
spl0 *= vol0;
spl1 *= vol1;
spl0 *= (pan > 0 ? 1-pan:1);
spl1 *= (pan < 0 ? 1+pan:1);
);

slider2 == 1 ? (
in=(spl0+spl1)*0.5*vol0;
in *= (pan > 0 ? 1-pan:1);
in *= (pan < 0 ? 1+pan:1);

spl0=in;
spl1=in;
);

slider2 == 2 ? (
spl0 *= (pan > 0 ? 1-pan:1);
spl1 *= (pan < 0 ? 1+pan:1);
out=(spl0+spl1)*0.5*vol0;

spl0=out;
spl1=out;
);

slider2 == 3 ? (
in0=(spl0+spl1)*0.5*vol0;
in1=(spl0-spl1)*0.5*vol1;
in0 *= (pan > 0 ? 1-pan:1);
in1 *= (pan < 0 ? 1+pan:1);

spl0=(in0+in1);
spl1=(in0-in1);
);

slider2 == 4 ? (
in0=(spl0+spl1)*0.5*vol0;
in1=(spl0-spl1)*0.5*vol1;
in1 *= (pan > 0 ? 1-pan:1);
in1 *= (pan < 0 ? 1+pan:1);

spl0=(in0+in1);
spl1=(in0-in1);
);

slider2 == 5 ? (
in=(spl0+spl1)*0.5*vol0;
in0=(spl0-spl1)*0.5*vol1;
in1=(spl0-spl1)*0.5*vol1;
in0 *= (pan > 0 ? 1-pan:1);
in1 *= (pan < 0 ? 1+pan:1);

spl0=(in0+in);
spl1=(in1+in);
);

slider2 == 6 ? (
in0=(spl0-spl1)*0.5*vol1;
in1=(spl0+spl1)*0.5*vol0;
in1 *= (pan > 0 ? 1-pan:1);
in1 *= (pan < 0 ? 1+pan:1);

spl0=(in0+in1);
spl1=(in0+in1);
);

slider2 == 7 ? (
in=(spl0-spl1)*0.5*vol1;
in0=(spl0+spl1)*0.5*vol0;
in1=(spl0+spl1)*0.5*vol0;
in0 *= (pan > 0 ? 1-pan:1);
in1 *= (pan < 0 ? 1+pan:1);

spl0=(in0-in);
spl1=(in1-in);
);

slider2 == 8 ? (
in=(spl0-spl1)*0.5*vol1;
in0=(spl0+spl1)*0.5*vol0;
in1=(spl0+spl1)*0.5*vol0;
in0 *= (pan > 0 ? 1-pan:1);
in1 *= (pan < 0 ? 1+pan:1);

spl0=(in0+in);
spl1=(in1-in);
);

slider2 == 9 ? (
in=(spl0-spl1)*0.5*vol1;
spl0 *= (pan > 0 ? 1-pan:1);
spl1 *= (pan < 0 ? 1+pan:1);
out=(spl0+spl1)*0.5*vol0;

spl0=(out+in);
spl1=(out-in);
);

slider2 == 10 ? (
in=(spl0+spl1)*0.5*vol0;
spl0 *= (pan > 0 ? 1-pan:1);
spl1 *= (pan < 0 ? 1+pan:1);
out=(spl0-spl1)*0.5*vol1;

spl0=(in+out);
spl1=(in-out);
);

spl0*=vol;
spl1*=vol;
