{
   "labels" : [
      "effect",
      "fx",
      "stutter",
      "tapestop"
   ],
   "code" : "(\r\nNdef(\\stutter).quant = 1;\r\n//~bus = BusDef(\\stutter, \\audio);\r\n~bus = Bus.audio(s, 2);\r\n);\r\n\r\n(\r\n~bufsize = 2; // in seconds\r\nNdef(\\stutter, { arg choose=0, time=2, tapetime=2, stutter=4, attack=0.001, decay=0.001, tapelevel=0.7;\r\n\tvar in = InFeedback.ar(~bus,2);\r\n\tvar sig;\r\n\tvar sig1,sig2,sig3,sig4,sig5;\r\n\tvar buf = LocalBuf(~bufsize * s.sampleRate, 2);\r\n\tvar buf2 = LocalBuf(~bufsize * s.sampleRate, 2);\r\n\tvar rate;\r\n\tvar choosetrig, choosetrig2;\r\n\tvar env;\r\n\tvar stuttrig;\r\n\tvar recordtrig;\r\n\tsig = in;\r\n\tsig1 = sig;\r\n\tstuttrig = Impulse.ar(stutter);\r\n\tchoosetrig = choose > 0;\r\n\r\n\trecordtrig = Impulse.kr(1/time);\r\n\trecordtrig = recordtrig + Trig1.kr(choosetrig);\r\n\r\n\tRecordBuf.ar(sig, buf, loop:1, trigger:choosetrig);\r\n\tRecordBuf.ar(sig, buf2, loop:1, trigger:recordtrig);\r\n\r\n\t// tape stop\r\n\trate = EnvGen.kr(Env([1,1,tapelevel],[0,tapetime]), choosetrig);\r\n\tsig2 = PlayBuf.ar(2, buf, rate, choosetrig, loop:1);\r\n\r\n\t// stutter\r\n\tenv = EnvGen.ar(Env([0,1,1,0],[attack, 1/stutter, decay]), stuttrig);\r\n\tsig3 = PlayBuf.ar(2, buf2, 1, stuttrig, 0, loop:1) * env;\r\n\r\n\tsig = Select.ar(choose, [sig1, sig2, sig3]);\r\n\tsig;\r\n}).play;\r\n);\r\n\r\n(\r\nPdef(\\stutter, Pbind(\r\n\t\\instrument, \\default,\r\n\t\\freq, Pseq([\r\n\t\tPseq([\r\n\t\t\tPser([\r\n\t\t\t\t100,300,200,500,\r\n\t\t\t],32),\r\n\t\t\tPser([\r\n\t\t\t\t100,300,200,500,\r\n\t\t\t\t400,350,300,250,\r\n\t\t\t],16),\r\n\t\t\tPser([\r\n\t\t\t\t400,50,70,90,\r\n\t\t\t],16),\r\n\t\t],2),\r\n\t\t800,\r\n\t],inf) + Pwhite(0.0,20) * Pseq([1,2,1.5,0.5],inf).stutter(8) * Pseq([\r\n\t\t1,\r\n\t\t[1,0.5,0.3],\r\n\t\t1,\r\n\t\t[3/7,1,2/5],\r\n\t\t1,\r\n\t\t[1/9,1/2,2/11],\r\n\t],inf).stutter(16),\r\n\t\\legato, Pseq([1,0.5,2.1,0.052],inf).stutter(32),\r\n\t\\out, ~bus,\r\n\t\\dur, 1/8,\r\n)).play\r\n);\r\n\r\n\r\nNdef(\\stutter).set(\\stutter, 20); // repeat rate\r\nNdef(\\stutter).set(\\stutter, 180); // repeat rate\r\nNdef(\\stutter).set(\\stutter, 8);\r\nNdef(\\stutter).set(\\time, 1/16); // repeat size in seconds\r\nNdef(\\stutter).set(\\time, 2); // repeat size\r\nNdef(\\stutter).set(\\choose, 2); // stutter\r\nNdef(\\stutter).set(\\choose, 1); // tapestop\r\nNdef(\\stutter).set(\\choose, 0); // normal\r\nNdef(\\stutter).set(\\tapetime, 2); // tape slowdown factor\r\nNdef(\\stutter).set(\\tapetime, 1/8); // tape slowdown factor\r\n\r\nNdef(\\stutter).set(\\tapelevel, 0.7); // end rate of tape\r\nNdef(\\stutter).set(\\tapelevel, 0.1);  \r\n\r\n\r\n(\r\nNdef(\\stutter).unset(\\choose); \r\nNdef(\\stutter).unset(\\stutter); \r\nNdef(\\stutter).put(1, \\set -> Pbind(\r\n\t\\choose, Pseq([\r\n\t\tPser([\r\n\t\t\t0,0,2,2, 0,0,2,1,\r\n\t\t],16),\r\n\t\tPser([2],16),\r\n\t],inf),\r\n\t\\stutter, Pseq([\r\n\t\tPser([8,4],16),\r\n\t\tPser([2,78,20,120, 40,20,160,40],16),\r\n\t],inf),\r\n\t\\dur, 1/2,\r\n\t\r\n));\r\n)",
   "id" : "1-4VY",
   "is_private" : null,
   "name" : "stutter and tape stop fx",
   "author" : "grirgz",
   "description" : "",
   "ancestor_list" : []
}
