slider1:0<-60,24,0.1>Volume (dB)
slider2:0<-100,100,1>Pan (%)
slider3:0<-6,6,0.5>Pan Law (dB)
slider4:0<0,4,1{lightbulbs,tubes 1,tubes 2,freaks,off}>Mode
slider5:80<0,100,1>--Sensitivity (%)
slider6:0.2<0.01,1.5,0.01>--Release (sec)

filename:0,volpan_meter_gfx/lightbulb1.png
filename:1,volpan_meter_gfx/lightbulb2.png
filename:2,volpan_meter_gfx/tube.png
filename:3,volpan_meter_gfx/tubeR.png
filename:4,volpan_meter_gfx/tubeA.png
filename:5,volpan_meter_gfx/tubeE.png
filename:6,volpan_meter_gfx/tubeP.png
filename:7,volpan_meter_gfx/freak1.png
filename:8,volpan_meter_gfx/freak2.png
filename:9,volpan_meter_gfx/A.png
filename:10,volpan_meter_gfx/B.png
filename:11,volpan_meter_gfx/off.png

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

@init
src_vol = tgt_vol = slider1 <= -60.0 ? 0.0 : 10^(slider1/20);
src_pan = tgt_pan = 0.01*slider2;

@slider
tgt_vol = slider1 <= -60.0 ? 0.0 : 10^(slider1/20);
tgt_pan = 0.01*slider2;
panlaw = 10^(slider3/20);
pancomp = (panlaw > 1 ? 1/panlaw : panlaw);

s = 1-slider5/101;
r = exp(-1/(slider6*srate));

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

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

@sample
tvol += d_vol;
tpan += d_pan;
adj = tvol;

panlaw != 1 ? (
panlaw > 1 ? adj *= panlaw;
panatt = abs(tpan);
adj *= pancomp+(1-pancomp)*(2/(2-panatt)-1);
);

adj0 = adj1 = adj;
tpan < 0 ? adj1 *= 1+tpan;
tpan > 0 ? adj0 *= 1-tpan;

(slider4==0) || (slider4==2) ? (
m0 = max(abs(spl0),abs(spl0))*adj0;
m1 = max(abs(spl1),abs(spl1))*adj1;
m0 ^= s;
m1 ^= s;
e0 = m0 >= e0 ? m0 : m0 + r*(e0-m0);
e1 = m1 >= e1 ? m1 : m1 + r*(e1-m1);
);

(slider4==1) || (slider4==3) ? (
m = max(abs(spl0),abs(spl1))*adj;
m ^= s;
e = m >= e ? m : m + r*(e-m);
);

spl0 *= adj0;
spl1 *= adj1;

@gfx 0 156
x = gfx_w*0.5|0;

slider4==0?( //lightbulbs
gfx_a=1;
gfx_x=x-103;
gfx_y=0;
gfx_blit(0,1,0);

gfx_a=1;
gfx_x=x;
gfx_y=0;
gfx_blit(0,1,0);


gfx_a=min(e0,1);
gfx_x=x-103;
gfx_y=0;
gfx_blit(1,1,0);

gfx_a=min(e1,1);
gfx_x=x;
gfx_y=0;
gfx_blit(1,1,0);
);

slider4==1?( //tubes1
gfx_a=1;
gfx_x=x-135;
gfx_y=27;
gfx_blit(2,1,0);

gfx_a=1;
gfx_x=x-90;
gfx_y=27;
gfx_blit(2,1,0);

gfx_a=1;
gfx_x=x-45;
gfx_y=27;
gfx_blit(2,1,0);

gfx_a=1;
gfx_x=x;
gfx_y=27;
gfx_blit(2,1,0);

gfx_a=1;
gfx_x=x+45;
gfx_y=27;
gfx_blit(2,1,0);

gfx_a=1;
gfx_x=x+90;
gfx_y=27;
gfx_blit(2,1,0);


gfx_a=min(e,1);
gfx_x=x-135;
gfx_y=27;
gfx_blit(3,1,0);

gfx_a=min(e,1);
gfx_x=x-90;
gfx_y=27;
gfx_blit(5,1,0);

gfx_a=min(e,1);
gfx_x=x-45;
gfx_y=27;
gfx_blit(4,1,0);

gfx_a=min(e,1);
gfx_x=x;
gfx_y=27;
gfx_blit(6,1,0);

gfx_a=min(e,1);
gfx_x=x+45;
gfx_y=27;
gfx_blit(5,1,0);

gfx_a=min(e,1);
gfx_x=x+90;
gfx_y=27;
gfx_blit(3,1,0);
);

slider4==2?( //tubes2
gfx_a=1;
gfx_x=x-166;
gfx_y=40;
gfx_blit(9,1,0);

gfx_a=1;
gfx_x=x;
gfx_y=40;
gfx_blit(9,1,0);


gfx_a=min(e0,1);
gfx_x=x-166;
gfx_y=40;
gfx_blit(10,1,0);

gfx_a=min(e1,1);
gfx_x=x;
gfx_y=40;
gfx_blit(10,1,0);
);

slider4==3?( //freaks
gfx_a=1;
gfx_x=x-212;
gfx_y=0;
gfx_blit(7,1,0);

gfx_a=min(e,1);
gfx_x=x-212;
gfx_y=0;
gfx_blit(8,1,0);
);

slider4==4?( //off
gfx_a=1;
gfx_x=x-212;
gfx_y=20;
gfx_blit(11,1,0);
);
