// input ch 3-6 disabled

desc: Lo:1+2  Mid:3+4  Hi:5+6

slider1:0<0,3,1{Output,Lo,Mid,Hi}>|------------------- listen
slider2:0.25<0,1,0.001>x-over 1
slider3:0.75<0,1,0.001>x-over 2
slider4:0.5<0,1,0.01>|------------------ lo trim
slider5:0.5<0,1,0.01>mid trim
slider6:0.5<0,1,0.01>hi trim
slider7:0.5<0,1,0.01>|-------------- main out

in_pin:L in
in_pin:R in
in_pin:xxx
in_pin:xxx
in_pin:xxx
in_pin:xxx
out_pin:L out 1
out_pin:R out 2
out_pin:L out 3
out_pin:R out 4
out_pin:L out 5
out_pin:R out 6

@init
fb1 = fb2 = fb3 = 0;

@slider
fParam1=slider1; // listen
fParam2=slider2; // lo<>mid
fParam3=slider3; // mid<>hi
fParam4=slider4; // lo out
fParam5=slider5; // mid out
fParam6=slider6; // hi out
fParam7=slider7; // main out

trim1 = (0.5*pow(10, 2 * fParam4 - 1));
trim2 = (0.5*pow(10, 2 * fParam5 - 1));
trim3 = (0.5*pow(10, 2 * fParam6 - 1));

switch = fParam1|0;

(switch==1) ? (
trim2=0; trim3=0;
);
(switch==2) ? (
trim1=0; trim3=0;
);
(switch==3) ? (
trim1=0; trim2=0;
);

fi1 = pow(10,fParam2 - 1.70); fo1=(1 - fi1);
fi2 = pow(10,fParam3 - 1.05); fo2=(1 - fi2);

main = pow(10, 2 * fParam7 - 1);

@sample
spl2=spl3=spl4=spl5=0;

b1=fb1;
b2=fb2;
l=fb3;

a = spl0;
b = spl1;

b2 = (fi2 * a) + (fo2 * b2); // crossovers
b1 = (fi1 * b2) + (fo1 * b1);
l = (fi1 * b1) + (fo1 * l);
m = b2 - l;
h = a - b2;

b4 = (fi2 * b) + (fo2 * b4); // crossovers
b3 = (fi1 * b4) + (fo1 * b3);
l2 = (fi1 * b3) + (fo1 * l2);
m2 = b4 - l2;
h2 = b - b4;

spl0 = l * trim1 * main *2;
spl1 = l2 * trim1 * main *2;

spl2 = m * trim2 * main *2;
spl3 = m2 * trim2 * main *2;

spl4 = h * trim3 * main *2;
spl5 = h2 * trim3 * main *2;

(abs(b1)<0.0000000001) ? ( fb1=0; fb2=0; fb3=0; ):( fb1=b1; fb2=b2; fb3=l; );

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

gfx_x =20; gfx_y =10;  gfx_printf("%.0f",srate * fi1 * (0.098 + 0.09*fi1 + 0.5*pow(fi1,8.2)) );
gfx_x =70; gfx_y =10;  gfx_printf("Hz");
gfx_x =110; gfx_y =10;  gfx_printf("X-Over 1");

gfx_x =20; gfx_y =30;  gfx_printf("%.0f",srate * fi2 * (0.015 + 0.15*fi2 + 0.9*pow(fi2,8.2)) );
gfx_x =70; gfx_y =30;  gfx_printf("Hz");
gfx_x =110; gfx_y =30;  gfx_printf("X-Over 2");

gfx_r=0.8; gfx_g=0.5; gfx_b=0.2;

gfx_x =20; gfx_y =50;  gfx_printf("%.1f",(40 * fparam4 - 20) );
gfx_x =70; gfx_y =50;  gfx_printf("dB");
gfx_x =110; gfx_y =50;  gfx_printf("Lo Trim");

gfx_x =20; gfx_y =70;  gfx_printf("%.1f",(40 * fparam5 - 20) );
gfx_x =70; gfx_y =70;  gfx_printf("dB");
gfx_x =110; gfx_y =70;  gfx_printf("Mid Trim");

gfx_x =20; gfx_y =90;  gfx_printf("%.1f",(40 * fparam6 - 20) );
gfx_x =70; gfx_y =90;  gfx_printf("dB");
gfx_x =110; gfx_y =90;  gfx_printf("Hi Trim");

gfx_r=0.2; gfx_g=0.8; gfx_b=0.8;

gfx_x =20; gfx_y =110;  gfx_printf("%.1f",(40 * fparam7 - 20) );
gfx_x =70; gfx_y =110;  gfx_printf("dB");
gfx_x =110; gfx_y =110;  gfx_printf("Main Out");
