News Archive

Audio excerpts #1: Centipede

Prominent in its absence from the v4 blog is any trace of sound – which, as a document of a piece of music, is somewhat remiss. We’ll be remedying this over the coming weeks with audio excerpts of the piece as it develops. As much of the score will take the form of open forms, harnessing indeterminacy from the sensor inputs, we’ll do our best to explain the underlying processes behind each.

This first excerpt is a 4-note arpeggio taking a random walk on a chromatic scale, with velocity and note length similarly following a Brownian pattern (that is, incrementing or decrementing by a small amount each note event). It’s a simple technique but, with this variance in dynamics, one that sounds surprisingly organic.

Excerpt #1

As a comparison, here’s the same process but with fixed dynamics. Its machinic character is pretty glaring.

Excerpt #1 (flat dynamics)

Perhaps one of the biggest challenges of producing the algorithmic sections of Variable 4 is making them sound as organic as possible, blending evenly with the manually-performed elements. This Brownian-dynamic technique goes some way to alleviate the synthetic flatness, and will undoubtedly be a useful magician’s trick in our toolbox.

This sketch was produced from a short SuperCollider patch, whose code can be seen below. We’re currently in the midst of porting this to Max For Live, via a pattern library that we’re developing for v4 but will undoubtedly have uses in the wider world. More on this soon.

// send MIDI data via internal IAC driver
// (OS X specific, needs to be configured in Audio MIDI Setup)
MIDIClient.init
m = MIDIOut.newByName("IAC Driver", "A")

// rapidfire random walk
p = Pbind
(
	\type,		\midi,
	\midiout,	m,
	\midinote, 	Pseries(64, Pwrand([-1, 1, -7, 7], [0.49, 0.49, 0.01, 0.01], inf), inf) +.x Pseq(#[0, 3, 7, 5], 1),
	\dur, 		Pfunc({ TempoClock.default.tempo = TempoClock.default.tempo * (1 + 0.05.rand2); TempoClock.default.tempo.postln; 0.05 }),
	\amp,		Pbrown(0.03, 0.1, 0.01, inf) + Pwhite(0.02, 0.06, inf) + Pseq([0.01, 0.02, 0.03, 0.01], inf),
	\legato,	Pbrown(0.3, 1.7, 0.5, inf)
).play;

About Variable 4

Variable 4 is an outdoor sound installation that translates live weather conditions into an ever-changing piece of music, using weather sensors and custom software to generate and recombine thousands of musical fragments. Read more about the piece...