{
   "labels" : [
      "random",
      "unfunky",
      "drum",
      "chaos"
   ],
   "id" : "1-4TQ",
   "is_private" : null,
   "code" : "(\r\nfork{\r\n\t//---------Source Files---------\r\n\t~numOfPatterns = 16;\r\n\t~synthDefToUse = \\bufPlay; //Change to \\bufPlay2 to use stereo samples\r\n\t~rate = 2; //Rate of playback\r\n\t~source = [ // Create an array of your samples. ~media.samples points at my base sample directory and is defined in my startup file.\r\n\t\t~media.samples ++ \"808/kicks/808 kick 6.wav\",\r\n\t\t~media.samples ++ \"808/snares/808 snare 6.wav\",\r\n\t\t~media.samples ++ \"808/hats/808 hat 2.wav\",\r\n\t\t~media.samples ++ \"808/other/808 cowbell.wav\",\r\n\t\t~media.samples ++ \"808/other/808 clap.wav\",\r\n\t\t~media.samples ++ \"808/other/808 rim.wav\",\r\n\t\t~media.samples ++ \"808/other/808 maraca.wav\"\r\n\t];\r\n\tBuffer.freeAll;\r\n\t~buffers = ~source.collect{|source| Buffer.read(s, source)};\r\n\t~patterns = ~numOfPatterns.collect{|val| Pbind(*[dur: Pn(1/val, val)])};\r\n\t~randPattern = Prand(~patterns, 1);\r\n\t~patterns = ~buffers.collect{|buf| Pbind(*[bufnum: buf]) <> ~randPattern};\r\n\tSynthDef(\\bufPlay, {|out = 0, bufnum, rateScale = 1, amp = 1| Out.ar(out, PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum) * rateScale, doneAction: 2) * amp!2);}).add;\r\n\tSynthDef(\\bufPlay2, {|out = 0, bufnum, rateScale = 1, amp = 1| Out.ar(out, PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum) * rateScale, doneAction: 2) * amp);}).add;\r\n\ts.sync;\r\n\tPpar(~patterns, inf).play(TempoClock(~rate, 0), protoEvent: (instrument: ~synthDefToUse, amp: 0.25));  //Change to /bufPlay2 for stereo samples\r\n};\r\n)",
   "author" : "Schemawound",
   "name" : "The Unfunky Drummer",
   "ancestor_list" : [],
   "description" : "The Unfunky Drummer - Insert samples, extract joy.\r\nCode by Jonathan Siemasko http://www.schemawound.com/\r\n\r\nNOTE: Set values for ~synthDefToUse, ~rate and ~source before running."
}
