Here's one way to achieve this effect in SuperCollider, taking a recorded breakbeat as a basis:
// Written by Dan Stowell, September 2006 b = Buffer.read(s,"sounds/break2.snd"); // Provide a simple breakbeat loop ( var ampTable = Signal.hanningWindow(1024,100).squared; var ampBuf = Buffer.loadCollection(s, ampTable); SynthDef("accelerando_inf1", { arg out=0,bufnum=0; var pos, posses, pitches, amps, sons; // "pos" is a kind of master pitch control, linear varying between one and zero pos = Phasor.ar(1, 0.007 / SampleRate.ir, 0, 1); posses = (pos + ((0..4)/5)).wrap(0.0, 1.0); // Evenly spaced circularly within 0 to 1 pitches = (0.2 * 2.0.pow(posses * 5)); amps = BufRd.kr(1, ampBuf.bufnum, posses * BufFrames.ir(ampBuf.bufnum)); sons = (PlayBuf.ar(1, bufnum, pitches.poll(100), loop:1) * amps * 10); Out.ar(out, Pan2.ar(sons.mean.softclip) ) }).play(s,[\out, 0, \bufnum, b.bufnum]); )
Here's a recording: Risset_accelerando_beat1.mp3
Other methods were discussed too: http://elists.resynthesize.com/sc-users/2006/09/1632851/