Programming with Clojure in Max

Nick Rothwell will be leading one of nine community-driven workshops at Expo '74 in Brooklyn this October. Read on for more information about his workshop and some history of his work.

Functional Programming with Clojure in Max

The workshop provides an introduction to the Clojure language working within Max. Clojure is a lightweight functional programming language designed from the ground up for concurrent programming - it features transactions and asynchronous agents - and it avoids the fundamental problems encountered when attempting to spot-weld a stateful procedural language to a dynamic, time-sensitive programming environment like Max. Clojure offers Max a safe, concurrent world of data structures and algorithmic power, and the combination lets Clojure have some fun in the world of digital media.

As examples you'll look at asynchronously driving a MaxMSP user interface and time-based sequencing, two areas where conventional programming languages tend to have a hard time.

To participate in this workshop, you will need a laptop with MaxMSP and Java installed.

A Short Interview with Nick Rothwell

Who are you and what do you do?

I'm Nick Rothwell, based in London, going under the name "cassiel" in situations like gigs and recording sessions where it's safer to use a secret codename. I'm a freelance composer, performer, digital artist and software engineer, working mostly in collaboration with choreographers and visual artists, and with my fingers in lots of pies encompassing sound art, video animation, scores for dance, interactive installations, live coding and physical computing. I also have a few teaching gigs (mostly MaxMSP and Jitter) and write sporadically for the music technology press.

When and why did you start using Max?

I think I got my first version of Max late in 1991. This took several months: it wasn't available in the UK and, since this was before the Web, I had to phone dealers in the US to find a copy. (Mine finally came from Alabama.) I still have the big black Max ring binder. Within a few weeks I was writing externals in THINK C, and was gigging with Max-based performance systems (and racks of synthesisers) the following summer.

At the time, electronic music performance revolved around linear MIDI sequencers and idiosyncratic master keyboards, and I really needed something more flexible, configurable and versatile for programming and controlling MIDI gear; Max was perfect. Even now, for a lot of my own projects most of my Max patching is control systems and algorithmics.

What technology or person's work intrigues you most right now?

Lemme see... In terms of software technology, Clojure - the topic of the workshop - is really sweet: it's a new take on a formal, interactive, abstract style of programming that goes back 50 years, and a refreshing break from the rather ossified procedural languages that currently dominate the scene. I'm also spending a lot of time in Marc Downie's Field, a massive sophisticated meta-environment for live-coding OpenGL visuals and animation which, if it doesn't finally kill me, will surely make me stronger.

I don't follow the music technology scene that closely, but in hardware I love the products from monome - minimal, abstract, beautifully made and inviting to the imagination - and have written libraries and applications for them, including (naturally) some code in Clojure. And, of course, there's the Arduino: a fully-fledged computer platform so cheap that the London Hackspace sells them from a vending machine.

People: most of my collaborations are with international choreographers, and I've always found dance to be a richly fertile and rewarding environment to work in as a composer - and, recently, as a software maker. I've worked with Michael Klien at William Forsythe's Ballett Frankfurt: Klien has some wonderfully focussed ideas about creative processes and systems of performance, and Forsythe's dance pieces are stunning. (Computer visualists should check out the online Synchronous Objects work at Ohio State.) I've composed sound scores for Aydin Teker in Istanbul and Shobana Jeyasingh in London - open and collaborative processes from the beginning - and am currently working in visuals for Wayne McGregor's Random Dance Company at Sadler's Wells. I could - but won't - name-drop any number of renowned choreographers whose views on creating and structuring work have been influential in my efforts with sound, image and software.

What is the most exciting part of attending Expo '74?

The technology-rich, creative-people-rich ecology of Cycling '74 and MaxMSP is something that surrounds Max users around the world, through social networks, video and music sites, forums, online works and frequent patcher-swapping. I can't wait to meet a whole bunch of people I've known only through their sounds, images, writings and avatar icons for years, to talk to them face to face, and to share a large number of beers.