Live coding is a form of improvised performance. Code is written during the performance to create music and/or video. The composition of code is often projected for the audience to see.
Another form of live coding is used in conference presentations, where the presenter wants to show how to build something in front of an audience.
An important aspect of live coding is the representation of time. The user needs to be able to specify when sounds or video are played. One solution is to have time as part of control flow. For example a recursive call could be scheduled at a specific time in the future.
Some live coding environments allow multiple users to manipulate the performance.
The goal of this competition is to make a programming language for a live coding environment. The use is open-ended. For example, it could be designed to create:
play{SinOsc.ar(OnePole.ar(Mix(
LFSaw.ar([1,0.99],[0,0.6],2000,2000).trunc([400,600])*[1,-1]
),0.98)).dup*0.1}
(dotimes (i 8)
(play-note (+ (now) (* i 5000)) piano (+ 60 i) 80 4000))
// our signal graph (patch)
SinOsc s => JCRev r => dac;
// set gain
.2 => s.gain;
// set dry/wet mix
.1 => r.mix;
// an array of pitch classes (in half steps)
[ 0, 2, 4, 7, 9, 11 ] @=> int hi[];
// infinite time loop
while( true )
{
// choose a note, shift registers, convert to frequency
Std.mtof( 45 + Std.rand2(0,3) * 12 +
hi[Std.rand2(0,hi.cap()-1)] ) => s.freq;
// advance time by 120 ms
120::ms => now;
}
Repo | User | Innovation | Completeness | Theme | Total |
---|---|---|---|---|---|
liveJSONAutomata | jacopofar | 5 | 5 | 5 | 15 |
silica | gatesphere | 5 | 5 | 5 | 15 |
Turbo Impress | philipbjorge | 4 | 4 | 4 | 12 |