2011, Till Bovermann
A piece experimenting with the settling of 8-bit programs running in BetaBlocker (Dave Griffith & Till Bovermann, 2011).
q = (); | |
// either create new programs, or see already generated ones from the programs file | |
// q.programs = "%/DetaNocturn-programs.scd".format(Document.current.path.dirname).load; | |
// if new, also adjust score indices. (see below) | |
q.programs = {[\ORG] ++ ({([0, 1, 2] ++ (5..25)).choose}!250) ++ [\JMP, 1]}!200; | |
s.boot; | |
NdefMixer(s); | |
( | |
// 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. | |
q.buffers = q.programs.collect{|prog| | |
BBlockerProgram(prog).makeBuffer | |
}; | |
// add specs | |
Spec.add(\rate, [1, 40000, \exp]); | |
) | |
Ndef(\deta).clear | |
( | |
// the score player | |
Tdef(\player).quant = nil; | |
Ndef(\deta).quant = nil; | |
Ndef(\deta).fadeTime = 0; | |
Tdef(\player, { | |
var score = 48.collect{ | |
([3, 11, 13, 17, 25, 26, 38, 4, 6, 8, 34, 38, 43, 44, 52, 71, 72, 85, 90] | |
.scramble[0..7]) | |
}; | |
score.do{|a| | |
Ndef(\deta, {|rate = 20000| | |
Splay.ar((a.collect{|number| | |
LeakDC.ar(Demand.ar(Impulse.ar(rate), 0, DetaBlockerBuf(q.buffers[number].bufnum, 0))) | |
})).tanh | |
}).play(fadeTime: 0); | |
2.7.wait | |
}; | |
Ndef(\deta).stop | |
}) | |
) | |
Ndef(\deta).play | |
// start piece | |
{Ndef(\deta).set(\rate, 9965.3); Tdef(\player).reset.play;}.fork | |
// stop piece | |
Tdef(\player).stop; Ndef(\deta).stop | |
// a saw wave generating program | |
q.bblocker = BBlockerProgram([\ORG, \INC, \INC, \JMP, 1]); | |
q.buf = q.bblocker.makeBuffer | |
Ndef(\deta, {|rate = 20000| | |
Demand.ar(Impulse.ar(rate), 0, DetaBlockerBuf(q.buf.bufnum, 0)).tanh!8 | |
}); | |
Tdef(\ticker, { | |
loop{ | |
q.programs.do({|prog, i| | |
i.postln; | |
BBlockerProgram(prog).fillBuffer(q.buf); | |
1.wait; | |
}) | |
} | |
}) | |
Tdef(\ticker).stop | |
Tdef(\ticker).play |