«stutter» by Santiago Vilanova
on 23 Feb'24 16:05 inmicro-beat repeat, based on delay
1 2 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
( SynthDef(\stutter,{ arg in=0, out=0; var sig, delayTime, increment, trigger; var reset=\reset.kr(0); var delayPitch=\pitch.kr(12); var offsetms=\offsetms.kr(0)/1000; var strobe=\strobe.kr(1); var on=\onoff.kr(0); var envGen, sustainTime; var atkTime=0.002, relTime=0.002; reset=reset*on; // Convert pitch to delay time in seconds delayTime = delayPitch.midicps.reciprocal; // Trigger for incrementing delay time trigger = Impulse.ar(delayTime.reciprocal); // Calculate sustain time to ensure envelope stays high for the chunk duration minus attack and release sustainTime = delayTime - (atkTime + relTime); // Ensure sustainTime is not negative sustainTime = max(sustainTime, 0)*strobe; // Increment delay time increment = Dseries(0, delayTime, inf)*on; increment = Demand.ar(trigger, reset, increment); // Generate an envelope to soften clicks envGen = EnvGen.ar(Env([0, 1, 1, 0], [atkTime, sustainTime, relTime], 'lin'), trigger); // Get input signal sig = In.ar(in, 1); // Assuming stereo input // Apply delay sig = DelayC.ar(sig, 24, increment+offsetms); // Apply envGen sig=sig*envGen; // Output Out.ar(out, sig); }).add(); )
reception
comments