slider1:-120<-120,0,0.1>Threshold (dB)
slider2:0.01<0.01,10,0.01>Attack (ms)
slider3:50<20,200,1>Release (ms)
slider4:50<10,100,1>Env Decay (ms)
slider5:0<-24,24,0.1>Output (dB)

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

@init
gain = 1;
env = 0;

@slider
threshold = 10^(slider1/20);

attack = exp(-1/(slider2/1000*srate));
release = exp(-1/(slider3/1000*srate));
envelope_decay = exp(-1/(slider4/1000*srate));

vol = 10^(slider5/20);

@sample
inL = spl0;
inR = spl1;

det = max(abs(inL),abs(inR));
det += 0.000000000001;
env = det >= env ? det : det+envelope_decay*(env-det);
transfer_gain = env > threshold ? pow(env,0):0;
gain = transfer_gain > gain ? transfer_gain+attack*(gain-transfer_gain) : transfer_gain+release*(gain-transfer_gain);

spl0 = inL * gain * vol;
spl1 = inR * gain * vol;
