/*
Put the vca_master plugin on a track.
Put the vca_slave plugin on another track.

Open the IO-Window and route a free pair of
channels from the 'master' to the 'slave' track.
(Free = not used by any media/fx plugins)

Use the same routing for the plugins
you have chosen for the track IO-Window.

Example:
track1:::vca_master (out 7+8)
send (audio 7+8 => 63/64) to track2
track2:::vca_slave (in 63/64)
*/

desc: vca slave

slider1:0<0,300,1>transition time (ms)
slider2:1<0,31,1{----------,3+4,5+6,7+8,9+10,11+12,13+14,15+16,17+18,19+20,21+22,23+24,25+26,27+28,29+30,31+32,33+34,35+36,37+38,39+40,41+42,43+44,45+46,47+48,49+50,51+52,53+54,55+56,57+58,59+60,61+62,63+64}>vca in channels

@init
curgain = 0;
curgain2 = 0;
reflevel = 10^(18/20);

@slider
sc = exp(-1.0 / (slider1*0.001*srate));

channel = slider2*2;
in = channel;
in2 = in+1;

@sample
slider2 > 0 ? (
curgain = curgain * sc + min(abs(spl(in)),reflevel)*(1-sc)*reflevel;
curgain2 = curgain2 * sc + min(abs(spl(in2)),reflevel)*(1-sc)*reflevel;
spl0 = spl0*curgain;
spl1 = spl1*curgain2;
):(
spl0 = spl0;
spl1 = spl1;
);
