Live Coding with SuperCollider
Creating sound with SuperCollider can be very rewarding using its ready made unit generators to build novel instruments and sound generators, but what happens when one wants to improvise the structure of these instruments and change them on the fly.
Live coding as a musical performance paradigm
Dynamic or interactive programming, commonly known as live coding (in electronic music, and digital arts) is a performance paradigm that allows the performer(s) to create an instrument on the fly instead of interacting with it by altering its control inputs or parameters. That is, to improvise an algorithm and change its state while at run. Examples and recipes for live coding in SuperCollider, can be found at this repository (always take care of the volume while changing the algorithms in real time). For more information about live coding as performance paradigm see this Toplap, the home of live coding.
Examples:
Define an Ndef, a synthesis proxy!
Ndef(\x).fadeTime = 2;
Ndef(\x).play;
Ndef(\x, {SinOsc.ar(\freq.kr(120.0, 0.3)) * 0.1 });
Ndef(\x, {SinOsc.ar([\freq.kr(120.0), \freq.kr + 2.01]) / 2 * 0.1});
Ndef(\x, {LFSaw.ar([\freq.kr(120.0), \freq.kr + 2.01]) / 2 * 0.1});
Ndef(\x, {LFSaw.ar([\freq.kr(120.0), \freq.kr + 2.01]) / 2 * Linen.kr(Impulse.kr(\speed.kr(1)))});
// Make an Ndef mixer to control the node definitions via a GUI
NdefMixer(s);
For other conveniences see this repository and the JITLib Overview help file in SuperCollider
Resources and acknowledgements
- Download SuperCollider (latest stable version here).
- JITLib mainly created by Julian Rohrhuber, with contributions by Alberto De Campo.
- Chapter on live Coding from my PhD thesis including historical and recent practices (groups, software, etc.).
- Collective live coding and networked music performance.
- Birmingham Ensemble for Electroacoustic Music listen here
- Cybernetic Orchestra listen here
- PowerBooks Unplugged watch here
- Benoit and the Mandelbrots watch here
- Utopia, a system to communicate via ad-hoc network download here