Live coding (sometimes known as 'interactive programming', 'on-the-fly programming', 'just in time programming') is the name given to the process of writing software in realtime as part of a performance. Historically, similar techniques were used to produce early computer art, but recently it has been explored as a more rigorous alternative to laptop DJs who, live coders often feel, lack the charisma and pizzazz of musicians performing live.
Generally, this practice stages a more general approach: one of interactive programming, of writing (parts of) programs while they run. Traditionally most computer music programs have tended toward the old write/compile/run model which evolved when computers were much less powerful. This approach has locked out code-level innovation by people whose programming skills are more modest. Some programs have gradually integrated real-time controllers and gesturing (for example, MIDI-driven software synthesis and parameter control). Until recently, however, the musician/composer rarely had the capability of real-time modification of program code itself.“ - en.wikipedia.org/wiki/Livecoding#Live_coding
Livecode is a toolkit for livecoding with Ruby using TextMate on OSX. At the core, it's a server/client setup that'll let you run and modify code in realtime.
The server and TextMate bundle is functional, I'm currently working on porting over the MIDI code. Watch this space.
gem install livecode
The TextMate bundle should be updated every time you install a new version:
Once you're set up, you can fire up the server in a terminal window:
(Alternatively, you could press CMD+B in TextMate to launch it as a background daemon.)
Open a new TextMate document and set the language to “Ruby Livecode”. You can now press CMD+E to run either the selected text or the current line on the server. Hack away!
Instead of running your own server, you can connect to a remote session by running:
livecode connect drb://somewhere.else:123456
When you're done, disconnect with:
..is fairly simple:
require 'livecode_server' client = LivecodeServer::Client.new
You can now send code to the server as strings:
client.run 'message = "Hello world!"' client.run 'puts message'