IDM08 SuperCollider Summer School
http://www.informal.org/SSG/index.htm
I took part in the Super Collider Summer School 2008 run by Nic Collins and John Eacott at Westminster University from 8th-11th July 2008.
The days were split into seesions covering a variety of areas in Super Collider and on the final day it finished with an evening concert in Public Life, Shoreditch, London.
The course was very useful as I had only used Super Collider a small ammount before, so I learnt a lot.
Below is the code I used for my performance on the final evening event.
/////////////////////////////////////////////
b = Buffer.read(s,"sounds/Image1b.wav");
c = Buffer.read(s,"sounds/bass1bass3.wav");
d = Buffer.read(s,"sounds/snare.wav");
f = Buffer.read(s,"sounds/bass1dloop1.wav");
g = Buffer.read(s,"sounds/bass1bass4.wav");
h = Buffer.read(s,"sounds/Image1b.wav");
//load GUI////////////////////////////////////////////////
JMouseBase.makeGUI
//load buffer/////////////////////////////////////////////
b= ["sounds/Image1b.wav","sounds/bass1bass3.wav","sounds/snare.wav","sounds/bass1dloop1.wav","sounds/bass1bass4.wav","sounds/Image1b.wav"].collect({arg filename; Buffer.read(s,filename)})
//create synth defs///////////////////////////////////////
//0
(
SynthDef(\noise,{ arg out=0,bufnum=0, rate=1, trigger=1, startPos=0;
Out.ar(out,
Pan2.ar(Line.kr(1,0,5,0.5,1,0.25,doneAction:2)*PlayBuf.ar(1,bufnum, BufRateScale.kr(bufnum)*rate, trigger, BufFrames.ir(bufnum)*startPos),0.0)
)
}).store;
)
/////////
//1
(
SynthDef(\bass,{ arg out=0,bufnum=0, rate=1, trigger=1, startPos=0;
Out.ar(out,
Pan2.ar(Line.kr(0,1,1,1,1,doneAction:2)*PlayBuf.ar(1,bufnum, BufRateScale.kr(bufnum)*rate, trigger, BufFrames.ir(bufnum)*startPos),0.0)
)
}).store;
)
/////////
//2
(
SynthDef(\snare,{ arg out=0, bufnum=0, rate=1, trigger=1, startPos=0;
Out.ar(out,
Pan2.ar(Line.kr(1,0,0.25,doneAction:2)*PlayBuf.ar(1,bufnum, BufRateScale.kr(bufnum)*rate, trigger, BufFrames.ir(bufnum)*startPos),0.0)
)
}).store;
)
/////////
//3
(
SynthDef(\bassloop,{ arg out=0,bufnum=0, rate=1, trigger=1, startPos=0, loop=1;
Out.ar(out,
Pan2.ar(PlayBuf.ar(1,bufnum, BufRateScale.kr(bufnum)*rate, trigger, BufFrames.ir(bufnum)*startPos, loop),0.0)
)
}).send(s);
)
/////////
//4
(
SynthDef(\bass2,{ arg out=0,bufnum=0, rate=1, trigger=1, startPos=0, loop=1;
Out.ar(out,
Pan2.ar(PlayBuf.ar(1,bufnum, BufRateScale.kr(bufnum)*rate, trigger, BufFrames.ir(bufnum)*startPos, loop),0.0)
)
}).send(s);
)
/////////
//5
(
SynthDef(\drumsloop,{ arg out=0,bufnum=0, rate=1, trigger=1, startPos=0, loop=1;
Out.ar(out,
Pan2.ar(PlayBuf.ar(1,bufnum, BufRateScale.kr(bufnum)*rate, trigger, BufFrames.ir(bufnum)*startPos, loop),0.0)
)
}).send(s);
)
//6
(
v = SynthDef(\pulsepan,{arg freq;
Out.ar(0,
Pan2.ar(
LFCub.ar(freq*0.5, Rand(0.4, 0.6), 0.2)
* (XLine.kr(0.001, 1, 0.9, doneAction:2)),
Rand(-1.0, 1.0)
)
)
}).send(s)
)
//bind them in seq//////////////////////////////////////////////////////
//b[0]
(
e = Pbind(
\rate, Pseq([2, 10],inf),
\instrument, \kick, \bufnum, b[0]
).play;
)
(
e.stream = Pbind(
[\rate, \dur, \rate], Pxrand([
Pseq([[0,1],[0.2,1],[0.3,1],[0.4,1],[0.5,0.8]],2),
Ptuple([Pxrand([0.06,0.07,0.08,0.09],0.04), 0.4]),
Ptuple([Pseq([0.9,0.8,0.7,0.6,0.5,0.004,0.2,0.89,0.4,0.3,0.2]), 0.2])
],inf),
\amp, 0.01, \octave, 5, \instrument, \kick, \bufnum, b[0], \mtranspose, 0).asStream;
)
(
e.stream = Pbind(
[\rate, \dur], Pseq([
Pseq([[0,0.1],[0.2,0.1],[0.3,0.1],[0.4,0.1],[0.5,0.8]],2),
Ptuple([Pxrand([1.66,0.7,0.8,0.9],0.4), 0.4]),
Ptuple([Pseq([1.9,0.8,2.7,10.6,0.5,0.4,10.3,2.2]), 0.2])
],inf),
\amp, 0.01, \octave, 3, \instrument, \kick, \bufnum, b[0], \mtranspose, 0).asStream;
)
//b[1]
(
e = Pbind(
\rate, Pseq([0.7,0.8,1,1,0.5,1,2,2.4],inf),
\instrument, \bass, \bufnum, b[1]
).play;
)
(
e.stream = Pbind(
[\rate, \dur, \rate], Pxrand([
Pseq([[0,0.1],[2,0.1],[1,0.1],[1.5,0.01],[1,0.8]],2),
Ptuple([Pxrand([0.6,0.77,1.8,0.9],0.4), 0.4]),
Ptuple([Pseq([0.22,1,0.7,0.6,1.5,0.004,2,0.89,1.4,0.3,2.1]), 0.2])
],inf),
\amp, 0.8, \octave, 5, \instrument, \bass, \bufnum, b[1], \mtranspose, -3).asStream;
)
(
e.stream = Pbind(
[\rate, \dur], Pseq([
Pseq([[0,0.1],[2,0.1],[3,0.1],[4,0.1],[5,0.8]],2),
Ptuple([Pxrand([1.6,1.7,0.8,0.9],1.4), 0.4]),
Ptuple([Pseq([0.9,0.008,1.7,2.6,3.5,0.4,1.3,1.2]), 0.2])
],inf),
\amp, 0.01, \octave, 2, \instrument, \bass, \bufnum, b[1], \mtranspose, 1).asStream;
)
//b[2]
(
e = Pbind(
\rate, Pseq([0.7,0.8,1,1,0.5,1,2,2.4],inf),
\instrument, \snare, \bufnum, b[2]
).play;
)
//b[3]
Synth(\bassloop, [\out, 0, \bufnum, b[3]]);
b[3].free;
//b[4]
Synth(\bass2, [\out, 0, \bufnum, b[4]]);
b[4].free;
//b[5]
{PlayBuf.ar(2,b[5],JMouseX.kr(0.0,2)*BufRateScale.kr(b[5]),Impulse.kr(1),JMouseY.kr(0,1.0)*BufFrames.ir(b[5]),loop:1)}.play
//synth!!!
(
var p, t;
p = Pseq([100, 200, 300, 330, 478, Prand([10, 60], 1)],inf).asStream;
t = Routine({
loop({
Synth(\pulsepan,[\freq,p.next]);
0.1.wait;
});
});
SystemClock.sched(0.0,t)
)
////////////////////////////////////////////////
b[0].free;
b[1].free;
b[2].free;
b[3].free;
b[4].free;
b[5].free;