slider1:350<50,1000,50>Window Size (ms)
slider2:0<-60,24,0.1>Channel 1+2 (dB)
slider3:0<-60,24,0.1>Channel 3+4 (dB)
slider4:0<-60,24,0.1>Channel 5+6 (dB)

in_pin:L in 1
in_pin:R in 2
in_pin:L in 3
in_pin:R in 4
in_pin:L in 5
in_pin:R in 6
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
spl0=spl1=spl2=spl3=spl4=spl5=0;

RMS_MS = slider1;

decay = exp(-1/(RMS_MS*srate*0.001));
DB_LO = -60;

log2dB = 8.6858896380650365530225783783321;

peak0=peak1=peak2=peak3=peak4=peak5=0;
peakdb0=peakdb1=peakdb2=peakdb3=peakdb4=peakdb5=DB_LO;

@block
peak0 <= 0.001 ? peakdb0 = DB_LO : peakdb0 = log2dB*log(peak0);
peak1 <= 0.001 ? peakdb1 = DB_LO : peakdb1 = log2dB*log(peak1);
peak2 <= 0.001 ? peakdb2 = DB_LO : peakdb2 = log2dB*log(peak2);
peak3 <= 0.001 ? peakdb3 = DB_LO : peakdb3 = log2dB*log(peak3);
peak4 <= 0.001 ? peakdb4 = DB_LO : peakdb4 = log2dB*log(peak4);
peak5 <= 0.001 ? peakdb5 = DB_LO : peakdb5 = log2dB*log(peak5);

@slider
RMS_MS = slider1;
decay = exp(-1/(RMS_MS*srate*0.001));

vol0 = slider2 <= -60.0 ? 0.0 : 10^(slider2/20);
vol1 = slider3 <= -60.0 ? 0.0 : 10^(slider3/20);
vol2 = slider4 <= -60.0 ? 0.0 : 10^(slider4/20);

@sample
s0=spl0;
s1=spl1;
s2=spl2;
s3=spl3;
s4=spl4;
s5=spl5;

spl0=vol0*s0;
new = abs(spl0);
new > peak0 ? peak0 = new : peak0 = peak0*decay;

spl1=vol0*s1;
new = abs(spl1);
new > peak1 ? peak1 = new : peak1 = peak1*decay;

spl2=vol1*s2;
new = abs(spl2);
new > peak2 ? peak2 = new : peak2 = peak2*decay;

spl3=vol1*s3;
new = abs(spl3);
new > peak3 ? peak3 = new : peak3 = peak3*decay;

spl4=vol2*s4;
new = abs(spl4);
new > peak4 ? peak4 = new : peak4 = peak4*decay;

spl5=vol2*s5;
new = abs(spl5);
new > peak5 ? peak5 = new : peak5 = peak5*decay;

@gfx 587 301
gfx_a = 1;
segh=(gfx_h)/60;
segw=(gfx_w-12)/8;

gfx_x=segw;
gfx_y=segh;

gfx_r = 0.2;
gfx_g = 0.8;
gfx_b = 0.3;
modh=segh*(60+peakdb0);
gfx_rectto(segw*2,modh);

gfx_r = 0.2;
gfx_g = 0.8;
gfx_b = 0.3;
gfx_x=2*segw+2;
gfx_y=segh;
modh=segh*(60+peakdb1);
gfx_rectto(segw*3,modh);

gfx_r = 0.2;
gfx_g = 0.8;
gfx_b = 0.8;
gfx_y=segh;
gfx_x=3*segw+2;
modh=segh*(60+peakdb2);
gfx_rectto(segw*4,modh);

gfx_r = 0.2;
gfx_g = 0.8;
gfx_b = 0.8;
gfx_x=4*segw+2;
gfx_y=segh;
modh=segh*(60+peakdb3);
gfx_rectto(segw*5,modh);

gfx_r = 0.8;
gfx_g = 0.2;
gfx_b = 0.3;
gfx_x=5*segw+2;
gfx_y=segh;
modh=segh*(60+peakdb4);
gfx_rectto(segw*6,modh);

gfx_r = 0.8;
gfx_g = 0.2;
gfx_b = 0.3;
gfx_x=gfx_x+2;
gfx_y=segh;
modh=segh*(60+peakdb5);
gfx_rectto(segw*7,modh);

i = 0;
db = 60;
while
(
i%2 ? gfx_r=gfx_g=gfx_b=0 : gfx_r=gfx_g=gfx_b=0.2;
//gfx_r=gfx_g=gfx_b=0.1;
gfx_x = 4;
gfx_y = gfx_h-segh*db-0.5;
gfx_lineto(gfx_w-4, gfx_y, 0);
db = db-3;
i = i+1;
db > 0;
);

i = 0;
db = 60;
while
(
gfx_r=gfx_g=gfx_b=0.375;
gfx_x = 4;
gfx_y = gfx_h+2-segh*db;
gfx_drawnumber(-dB,0);
db = db-6;
i = i+1;
db > 0;
);

gfx_r=gfx_g=gfx_b=0;
gfx_x = segw+segw/2-3;
gfx_y = segh*3.5;
gfx_drawchar($'1');

gfx_x = 2*segw+segw/2-3;
gfx_drawchar($'2');

gfx_x = 3*segw+segw/2-3;
gfx_drawchar($'3');

gfx_x = 4*segw+segw/2-3;
gfx_drawchar($'4');

gfx_x = 5*segw+segw/2-3;
gfx_drawchar($'5');

gfx_x = 6*segw+segw/2-3;
gfx_drawchar($'6');
