{
   "id" : "1-4WZ",
   "is_private" : null,
   "code" : "// Morning jazz2 by Notgoodenough\r\n(\r\n~buff1 = Buffer.read(s, \"jloop2.wav\".resolveRelative);\r\n~mthue = {arg i, base, mul;(i * mul).asDigits(base).sum};\r\n~eu = {arg len, hits; var seq = Array.newClear(); for(0, len - 1, {arg i;seq = seq.add((i * hits % len) < hits)}); seq};\r\n~bpm = 95;\r\n)\r\n\r\n(\r\nSynthDef(\\bell, { arg freq, amount = 100, ratio = 2, release = 0.5;\r\n\tvar snd, mod, env;\r\n\tmod = SinOsc.ar(freq.midicps * 3, mul: amount);\r\n\tenv = EnvGen.kr(Env.linen(0.02, 0.1, release, 0.1), doneAction: 2);\r\n\tsnd = SinOsc.ar(freq.midicps + mod , mul: env);\r\n\tOut.ar(0, snd * 0.5 ! 2);\r\n}).add;\r\n\r\nSynthDef(\\slicer, { arg buff = ~buff1, pos = 0, len = 2;\r\n\tvar snd, dur, chunk;\r\n\tdur = 15 / ~bpm;\r\n\tchunk = BufFrames.kr(buff) / 16;\r\n\tsnd = BufRd.ar(2, buff, Line.ar(pos * chunk, (pos * chunk) + (chunk * len), dur * len, doneAction: 2));\r\n\tOut.ar(0, snd);\r\n}).add;\r\n)\r\n\r\n(\r\nvar count = 0, rd = 0, oct = 0, pitch = 0, scale = Scale.minorPentatonic.degrees, bang = ~eu.value(28,19),\r\ncount2 = 0, rd2 = 0, oct2 = 0, pitch2, scale2 = Scale.ritusen.degrees, bang2 = ~eu.value(9,4), len = 0, shift, cnt = 0, shread = 0, sh = [0,5,-3,3,7];\r\n\r\n~t = Task({\r\n\tinf.do({\r\n\r\n\t\tcnt = cnt + 1 % 102;\r\n\t\tif(cnt == 101, {shread = shread + 1 % sh.size});\r\n\r\n\t\tpitch = ~mthue.value(count,16,8);\r\n\t\tif(pitch > scale.size, {oct = 12}, {oct = 0});\r\n\r\n\t\tpitch2 = ~mthue.value(count2,13,3);\r\n\t\tif(pitch2 > scale2.size, {oct2 = 12}, {oct = 0});\r\n\r\n\t\trd = rd + 1 % 28;\r\n\t\trd2 = rd2 + 1 % 9;\r\n\r\n\t\tif(bang[rd], {count = count + 1 % 18; Synth(\\bell, [\\freq,\r\n\t\t\tscale[pitch % scale.size] + 60 + oct + sh[shread],\r\n\t\t\t\\amount, rrand(100,500),\r\n\t\t\t\\release, rrand(0.5,1.5),\r\n\t\t\t\\ratio, rrand(3,12);\r\n\t\t]); });\r\n\t\tif(bang2[rd2], {count2 = count2 + 1 % 34; Synth(\\bell, [\\freq,\r\n\t\t\tscale2[pitch2 % scale2.size] + 60 + oct2 + sh[shread],\r\n\t\t\t\\amount, rrand(100,500),\r\n\t\t\t\\release, rrand(0.5,1.5),\r\n\t\t\t\\ratio, rrand(3,12);\r\n\t\t]); });\r\n\r\n\t\t(15 / ~bpm).wait; // 16th\r\n\t});\r\n}).play;\r\n\r\n~beat = Task({\r\n\tinf.do({\r\n\t\tlen = rrand(4,6);\r\n\t\tSynth(\\slicer, [\\pos, rrand(0,15), \\len, len]);\r\n\t\t(15 / ~bpm * len).wait;\r\n\t});\r\n}).play;\r\n)\r\n\r\n~t.stop; ~beat.stop;",
   "labels" : [
      "jazz",
      "algorithm",
      "rythm",
      "generative",
      "morse",
      "euclidean",
      "thue"
   ],
   "ancestor_list" : [],
   "description" : "download drum loop:\r\n\r\nhttps://www.dropbox.com/s/6yyrm7ivwqmxbdi/jloop2.wav?dl=0",
   "author" : "Devi Skanadze",
   "name" : "Generative jazz"
}
