Livecode: Ruby toolkit for TextMate/OSX

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.

Installation

gem install livecode

The TextMate bundle should be updated every time you install a new version:

livecode update_textmate

Usage

Once you’re set up, you can fire up the server in a terminal window:

livecode run

(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!

Multiplayer livecoding

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:

livecode disconnect

Making your own client

..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'