desc:jda midi controlled trance gate
in_pin:left input
in_pin:right input
out_pin:left output
out_pin:right output
@init
gain = 0;
tgt_gain = 0;
fade_time = 0.01;
fade_spls = fade_time * srate;
dg = 1/fade_spls;
@block
@sample
while(midirecv(offset,msg1,msg2,msg3)) (
cmd = msg1 >> 4;
( cmd == 0x9 ) ? ( tgt_gain = 1; ) :
( cmd == 0x8 ) ? ( tgt_gain = 0; );
midisend(offset,msg1,msg2,msg3);
);
( gain != tgt_gain ) ? (
( gain > tgt_gain ) ? (
gain -= dg;
( gain < tgt_gain ) ? ( gain = tgt_gain; ); // overshoot management
);
( gain < tgt_gain ) ? (
gain += dg;
( gain > tgt_gain ) ? ( gain = tgt_gain; ); // overshoot management
);
);
spl0 *= gain;
spl1 *= gain;