{
   "labels" : [
      "generative",
      "piece"
   ],
   "code" : "q = ();\r\n// either create new programs, or see already generated ones from the programs file\r\n// q.programs = \"%/DetaNocturn-programs.scd\".format(Document.current.path.dirname).load;\r\n \r\n// if new, also adjust score indices. (see below)\r\nq.programs = {[\\ORG] ++ ({([0, 1, 2] ++ (5..25)).choose}!250) ++ [\\JMP, 1]}!200;\r\n \r\ns.boot;\r\nNdefMixer(s);\r\n \r\n(\r\n// put all programs into buffers. re-running these lines will start with a new set of programs that will -- over a long time period -- relax their amplitudes and complexity.\r\nq.buffers = q.programs.collect{|prog|\r\n  BBlockerProgram(prog).makeBuffer\r\n};\r\n \r\n// add specs\r\nSpec.add(\\rate, [1, 40000, \\exp]);\r\n)\r\n\r\n\r\nNdef(\\deta).clear\r\n(\r\n// the score player\r\n \r\nTdef(\\player).quant = nil;\r\nNdef(\\deta).quant = nil;\r\nNdef(\\deta).fadeTime = 0;\r\n \r\nTdef(\\player, {\r\n  var score = 48.collect{\r\n    ([3, 11, 13, 17, 25, 26, 38, 4, 6, 8, 34, 38, 43, 44, 52, 71, 72, 85, 90]\r\n    .scramble[0..7])\r\n  };\r\n  score.do{|a|\r\n    Ndef(\\deta, {|rate = 20000|\r\n      Splay.ar((a.collect{|number|\r\n        LeakDC.ar(Demand.ar(Impulse.ar(rate), 0, DetaBlockerBuf(q.buffers[number].bufnum, 0)))\r\n      })).tanh\r\n    }).play(fadeTime: 0);\r\n    2.7.wait\r\n  };\r\n  Ndef(\\deta).stop\r\n})\r\n)\r\n \r\nNdef(\\deta).play\r\n \r\n// start piece\r\n{Ndef(\\deta).set(\\rate, 9965.3); Tdef(\\player).reset.play;}.fork\r\n \r\n// stop piece\r\nTdef(\\player).stop; Ndef(\\deta).stop\r\n \r\n////////////// explore programs\r\n\r\n// a saw wave generating program\r\nq.bblocker = BBlockerProgram([\\ORG, \\INC, \\INC, \\JMP, 1]);\r\nq.buf = q.bblocker.makeBuffer\r\n \r\nNdef(\\deta, {|rate = 20000|\r\n  Demand.ar(Impulse.ar(rate), 0, DetaBlockerBuf(q.buf.bufnum, 0)).tanh!8\r\n});\r\n \r\nTdef(\\ticker, {\r\n  loop{\r\n    q.programs.do({|prog, i|\r\n      i.postln;\r\n      BBlockerProgram(prog).fillBuffer(q.buf);\r\n      1.wait;\r\n    })\r\n  }\r\n})\r\n \r\nTdef(\\ticker).stop\r\nTdef(\\ticker).play",
   "is_private" : null,
   "id" : "1-5hE",
   "name" : "deta-nocturn",
   "author" : "LFSaw",
   "ancestor_list" : [],
   "description" : "A piece experimenting with the settling of 8-bit programs running in BetaBlocker (Dave Griffith & Till Bovermann, 2011)."
}
