[chuck-users] other ways to live-code with time

Kassen signal.automatique at gmail.com
Wed Apr 29 21:01:48 EDT 2009


Dan;

> it's not a technical paper, but a paper about the musical effects of the
> syncing, which at the time was quite amazing.

Quite interesting indeed.

> for instance, to sync with
> Matmos, running a specific BPM, we've had the players simply use their ears
> (!) to sync. this has worked quite well, and with a distributed audio system
> like PLOrk, it may well be that this kind of sync is *better* than network
> sync.

That sounds more or less like mixing two locked groove records using
quartz lock on turntables, that's indeed not that hard while it does
open up a lot of space for intuitive ways of dealing with things like
the contrast between jazz-style brushed hits and techno-style stacato
beats.

I noticed I neglected to post the code I promissed before (now it's
really there). As silly as it may sound; I seriously considered to
augment this with a tap-tempo using -say- spacebar and the enter key
for intuitive control over global tempo while livecoding.

There is certainly a lot more to this topic than what we've seen so
far in general applications, I feel.

Yours;
Kas.

public class clk
	{
	//beats per minute
	static float BPM;
	//beats per bar
	static int bpb;
	static dur period;
	
	static int beatnr;
	static int barnr;
	
	static Event @ bar;
	static Event @ beat;
	
	fun static void bpm(float value)
		{
		if (value > 0)
			{
			value => BPM;
			minute / BPM => period;
			}
		else <<<"BPM should be greater than 0">>>;
		}
	}

new Event @=> clk.beat;
new Event @=> clk.bar;

120 => clk.bpm;
4	=> clk.bpb;

while(1)
	{
	if(!clk.beatnr)
		{
		clk.barnr++;
		clk.bar.broadcast();
		}
	clk.beat.broadcast();
	clk.period => now;
	clk.beatnr++;
	clk.bpb %=> clk.beatnr;
	}


More information about the chuck-users mailing list