slider1:0<-100,100,1>Attack (%)
slider2:0<-100,100,1>Sustain (%)
slider3:25<10,100,5>Envelope A (ms)
slider4:100<20,200,10>Envelope S (ms)
slider5:0<-24,24,0.1>Output (dB)
slider6:1<0,1,1{Off,On}>Clip

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

@init
ext_noinit = 1;
gain = 1;

@slider
(old_s3 != slider3 && slider3 > slider4) ? slider4 = slider3;
(old_s4 != slider4 && slider4 < slider3) ? slider3 = slider4;
old_s3 = slider3;
old_s4 = slider4;

attack = slider1/100;
sustain = slider2/100;

amount_c1=slider3;
amount_c2=slider4;

c1 = exp( -1/(srate*amount_c1/1000) );
c2 = exp( -1/(srate*amount_c2/1000) );

vol = 10^(slider5/20);
clip = slider6;

@sample
in = max(abs(spl0),abs(spl1));

e1 = in + c1 * (e1-in);
e2 = in + c2 * (e2-in);

gain = e2 - e1;
(gain > 0) ? gain = exp(log(max(e2/e1,1))*sustain) : gain = exp(log(max(e1/e2,1))*attack);
//gain = exp(log(max(e2/e1,1))*sustain) * exp(log(max(e1/e2,1))*attack);

spl0 *= (gain *= vol);
spl1 *= gain;

clip ? (
spl0 = min(max(spl0,-1),1);
spl1 = min(max(spl1,-1),1);
);
