Loadbang Reloaded

jython170

We’ve been putting some effort in recently to shift our major JVM-hosted MaxMSP projects to GitHub. Most of them started out hosted privately in CVS and built using Eclipse, and then migrated to hosting in Mercurial, with a different directory structure and a fair degree of pain in getting the various Ant scripts to work again. Moving everything to GitHub made sense, but that required another rearrangement of source directories and build paths, so it was obviously time to bite the bullet and use Maven to build everything instead. This decision has lowered the maintenance effort considerably.

MaxMSP Showing and Telling

m4u_170

We’re workshopping, and gigging, at the M4_u (Max/MSP for Users) Convention, 13th to 14th of January, Phoenix Square, Leicester. The workshop is pretty much going to be a repeat of that given at the Cycling ’74 Expo – building an algorithmic step sequencer and abstract display system using Clojure. The gig will be monome-based, probably with some pulse sequencer action.

Plenum at Lumiere Durham

This short video shows [Plenum][nelson] projected onto St. Oswald’s church as part of the Lumiere Durham festival. This was the third outing for the piece this year, the first two being at Skyway (Toruń, Poland) and Valgus (Tallinn, Estonia), associated with Lux Scientia.

Coding for the Cathedral: Dreamhub at Vor Frue Kirke

We recently did a bit of coding for Dreamhub: the Lysets Lyd chill-out gig at Vor Frue Kirke required twelve Percussa AudioCubes connected into an Ableton Live set, capable of sending MIDI data to Live (to trigger clips from the sensors) and of responding to MIDI (to transform automation controller messages into colour changes). Percussa’s bundled control software wasn’t up to the task at the time, being limited to four cubes at once and a rather laborious manual setup procedure, so we built a custom Max patcher using an external object by Thomas Grill and our Python machinery to deal with the configuration and state transitions required by the set.

Monome and Wall of Sound Gig at the Science Museum

wall-440

In the very-short-notice department, we’ve been asked to do some kind of live performance/installation for the upcoming Science Museum Late event on September 28th, using the 77-speaker Lottolab Soundwall as the sound system.

Faced with a complete lack of existing material which can be pressed into service in this kind of environment, and also faced with a very tight deadline, the only solution is to quickly assemble a set of tools which can be used to generate and modify musical material quickly and fluidly. This is a good excuse to dust off some sequencing tools which were aired briefly for the Post Me performance project in Prague, plus the Max for Live sample shard processor which has been pressed into service for a few gigs (and which features in a video here). Visual impact is going to be a factor for this gig, so we’re going for this look:

lotto-monomes-440

The Straker sequencer already has some bling on the monome 128, but we need to get something up and spinning on the arc 4 in quick order.

(Geek note: in this photo the monome 128 is running Straker, written in Java, with sequencer tracks implemented in Python, while the arc 4 is running an animation demo written in Clojure. Both use the shado rendering library.)

Oh: the Soundwall is apparently OSC-controllable. We may or may not have time to throw some code at that.

Digital Futures in Dance Residency

dfid-170

We’ve been awarded an artist’s residency at DanceDigital as part of the Digital Futures in Dance National Conference this September. Our mission is to bring the Choreographic Language Agent forward from its current workshopping phase into a state where Wayne McGregor can make use of it in the creation of his new work which premieres at Sadler’s Wells in December. We present the outcomes of the residency on September 9th.

There’s more information about the residency (and the other artists based at South East Dance and Dance South West) here.

(Photo: Jonah Bokaer.)

Clojure Workshop, Expo ’74, October

expo-74-logo

We are running a workshop on concurrent patchers and data structures with MaxMSP and Clojure at the Cycling ’74 Expo in Brooklyn, October 14-16. Details to follow. For that matter, details to be designed and coded.

Anyone who wants to get a flavour of how the workshop might pan out should check out the existing Python-for-MaxMSP package, and then close their eyes and try to imagine what that might look and feel like if the underlying language were Clojure rather than Python.

I’m anticipating that full-on functional programming techniques will be new to many MaxMSP users, and the uncompromising nature of the Lisp syntax can also be a bit of a hurdle, so I’m planning to spend some workshop time getting up to speed on those aspects before looking at the concurrency features specific to Clojure itself.

Plenum: European Tour 2011

plenum440

We are about to depart to Poland to install the computer platforms for Plenum, showing in Toruń from August 9th. This work by Simeon Nelson is part of the Lux Scientica festival series; the piece moves on to Estonia in September and Durham in November.

Dates:

  • 9-13 August, Skyway ’11, Toruń, Poland
  • 22-25 September, Valgus Festival, Tallinn, Estonia
  • 17-20 November, Lumiere, Durham

Moving and Making

moving-making-440

We recently participated in a workshop organised by the R-Research arm of Wayne McGregor | Random Dance, teaching the Choreographic Language Agent software to the company. We are now back in software maintenance mode, applying some fixes and enhancements suggested by sessions with the company dancers. Our next period of residence with the company is at Dartington College at the end of August.

Clojure in MaxMSP

AquamacsScreenSnapz001

One of the things moving up my to-do list is an environment for hosting the Clojure language inside MaxMSP. Clojure is hosted on the Java JVM, just like the languages for my other MaxMSP hosting projects, Python and Groovy, although the Clojure interpreter is rather an odd beast compared to the other two. Specifically, it’s not clear to me (yet) exactly what it means to build a Max patcher with several Clojure objects inside it, and one of the strengths of Clojure is its ability to deal cleanly with concurrency and interaction between decoupled computations, so there should only really be “one” Clojure environment which everything somehow shares and uses for communication.

That aside, Clojure is good at Java interoperability, and has a built-in compiler which generates real class files for synthesised Java classes matching interfaces or extending existing classes, so getting a Clojure program into MaxMSP is just a case of configuring this machinery. (The Leiningen build tool does most of the work.)

So, proof of concept: a simple stopwatch for MaxMSP in Clojure. It’s quite stateful, and doesn’t do much with data structures or higher-order functions, so it’s a feeble example of Clojure’s power and not a very convincing use case, but it gets the ball rolling.