Betablocker UGen – first encounter


05 May 2011

This is the first recording of a Betablocker UGen (well, actually 20 of them). Careful, high-pitched noise.

BetablockerDS, its basis, is a “Touch based audio livecoding in assembler, for the Nintendo DS” by Dave Griffiths.

I use its virtual machine, consisting of several threads, each having a stack for temporary data storage. They share a common heap, in which data and code reside side by side. Since there is no difference between data and code in the heap (as it is suggested for von Neumann machines), it is possible to alter the code while it is running. In this very basic case, I run 20 Betablocker UGens, each operating on a heap filled with random numbers. You hear the top() of the stacks.

Ndef('test').fadeTime = 5;
Ndef('test', {
	({Betablocker.ar}!20).clump(2).sum / 10
}).play

{loop{
	Ndef('test').rebuild;
	10.wait;
}}.fork

updates

11.1.2013: In the current BetaBlocker quark implementation, the code looks like this:

s.boot;
(
Ndef(\test, {
  var srcs = ({BBlockerBuf.ar(
    s.sampleRate,
    BBlockerProgram({rrand(0, 24)}!256).makeLocalBuf
  )[1]}!20);
  Splay.ar(srcs.collect{|src| LeakDC.ar(src)}, 1, 0.4);
}).play
)
Ndef(\test).fadeTime = 5;
 
{loop{
  Ndef(\test).rebuild;
  10.wait;
}}.fork