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
attack = slider1/100;
sustain = slider2/100;

amount_c1=slider3;
amount_c2=max(min((slider4/20),(slider4/20)),20);
amount_c3=max(min((slider3/5),(slider3/5)),10);
amount_c4=slider4;

c1 = exp( -1/(srate*amount_c1/1000) );
c2 = exp( -1/(srate*amount_c2/1000) );
c3 = exp( -1/(srate*amount_c3/1000) );
c4 = exp( -1/(srate*amount_c4/1000) );

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

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

e1 = in + c1 * (e1-in);
e2 = in + c2 * (e2-in);
e3 = in + c3 * (e3-in);
e4 = in + c4 * (e4-in);

// (short/long)*attack + (long/short)*sustain
gain = exp(log(max(e3/e1,1))*attack + log(max(e4/e2,1))*sustain);

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

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