{
   "labels" : [
      "beat slicer",
      "pitch shifter",
      "time stretch"
   ],
   "is_private" : null,
   "id" : "1-4Vc",
   "code" : "(\r\nb = Buffer.read(s, \"C:/Documents and Settings/brusli/Desktop/d1.wav\");\r\np = SoundFile.collectIntoBuffers(\"C:/Documents and Settings/brusli/Desktop/samples/*\");\r\n)\r\n\r\n(\r\n~bpm = 190;\r\n~n = 8;\r\n~dur = 60 / ~bpm / 2;\r\n\r\nSynthDef(\\sampler, { arg buff = b, pos, len, g_size, sel_stream,\r\n\tst_size = 0.5;\r\n\tvar slice, rd, out, dry, // slices vars\r\n\trd1, rd2, hann1, hann2, pos1, pos2, gr1, gr2, // t_stretch vars\r\n\tst, stut; // stutter\r\n\tslice = BufFrames.kr(buff) / ~n;\r\n\r\n\t// read slices\r\n\r\n\trd = Line.ar(pos * slice, (pos * slice) + (slice * len),\r\n\t\t~dur * len, doneAction: 2);\r\n\tdry = BufRd.ar(2,buff,rd);\r\n\r\n\t// time stretch\r\n\r\n\trd1 = LFSaw.ar(1000 / g_size, 1, 0.5, 0.5);\r\n\thann1 = (rd1 * pi).sin;\r\n\tpos1 = Latch.ar(Line.ar(pos * slice, (pos * slice) + slice,\r\n\t\t~dur * len, doneAction: 2), rd1 > 0.99);\r\n\tgr1 = BufRd.ar(2,buff, (rd1 * 44.1 * g_size) + pos1) * hann1;\r\n\r\n\trd2 = Wrap.ar(rd1 + 0.5);\r\n\thann2 = (rd2 * pi).sin;\r\n\tpos2 = Latch.ar(Line.ar(pos * slice, (pos * slice) + slice,\r\n\t\t~dur * len, doneAction: 2), rd2 > 0.99);\r\n\tgr2 = BufRd.ar(2,buff, (rd2 * 44.1 * g_size) + pos2) * hann2;\r\n\r\n\t// stt\r\n\r\n\tstut = LFSaw.ar((1000 / (slice / 44.1)) / st_size ,1, 0.5, 0.5);\r\n\tst = BufRd.ar(2, buff, (slice * pos) + (stut * slice * st_size)) * 0.75;\r\n\r\n\tout = Select.ar(sel_stream, [dry, gr1 + gr2, st]);\r\n\tOut.ar(2, out);\r\n}).add;\r\n\r\nSynthDef(\\p_shift, {arg pitch;\r\n\tvar in, rd1, rd2, hann1, hann2, snd1, snd2;\r\n\tin = In.ar(2,2);\r\n\trd1 = LFSaw.ar(pitch, 1, 0.5, 0.5);\r\n\thann1 = (rd1 * pi).sin;\r\n\trd2 = Wrap.ar(rd1 + 0.5);\r\n\thann2 = (rd2 * pi).sin;\r\n\tsnd1 = AllpassL.ar(in, 1, rd1 * 0.01,0) * hann1;\r\n\tsnd2 = AllpassL.ar(in, 1, rd2 * 0.01,0) * hann2;\r\n\tOut.ar(0, snd1 + snd2);\r\n}).add;\r\n)\r\n\r\n(\r\nvar len, buff, sel, size, count, st_size, pitch, sh = Synth(\\p_shift);\r\n~fX = Task({\r\n\tinf.do({\r\n\t\tif(rrand(0,10) > 8,{pitch = [-50,50].choose}, {pitch = 10});\r\n\t\tif(rrand(0,10) < 4, {buff = p[rrand(0,p.size - 1)]},\r\n\t\t\t{buff = b});\r\n\t\tcount = rrand(0,50);\r\n\t\tif(count < 40, {sel = 0},\r\n\t\t\tif((count > 39) && (count < 45),{size = rrand(20,50); sel = 1},\r\n\t\t\t\tif((count > 44) && (count < 51),\r\n\t\t\t\t\t{st_size = [0.5, 0.25, 0.125].choose; sel = 2}\r\n\t\t)));\r\n\t\t~dur.wait;\r\n\t});\r\n}).play;\r\n\r\n~t = Task({\r\n\tinf.do({\r\n\t\tlen = rrand(2,3);\r\n\t\tsh.set(\\pitch, pitch);\r\n\t\tSynth(\\sampler, [\\g_size, size, \\sel_stream ,sel,\r\n\t\t\t\\buff, buff, \\pos, rrand(0,7), \\len, len, \\st_size, st_size]);\r\n\t\t(~dur * len).wait;\r\n\t});\r\n}).play;\r\n)",
   "author" : "Brusli",
   "name" : "Beat slicer",
   "description" : "beat slicer",
   "ancestor_list" : []
}
