Looking at the monome hardware, it could be difficult to understand how a simple array of buttons has become the most important musical design of the decade. It’s been the software that has brought this to life, not least the work of stretta (aka Matthew Davidson).
In the early days of electronic music, the creation of modular systems for synthesizing sound was a major breakthrough. Today, we can produce modular systems for composition, for assembling the music itself. And in a world in which “more” is the key word, many of these systems, by design, do less, focusing on the essential.
stretta reached a major landmark late last week, with the release of the maxforlive monome suite. It’s a set of seven Max for Live devices, with variations, which can be dropped into Ableton Live for use in musical projects. But it’s also more than that – it’s a modular model for how stretta thinks, and each module is designed to be used with the others, all without ever having to take your hands or eyes off the monome controller. Included in the pack:
- obo matrix step sequencer
- pitches for playing notes on the monome
- polygomé 64 for polyphonic, step-sequenced, transposing pitches
- press cafe for repeating patterns of pitches
- spectral display for blinking lights to visualize sound
- step filter step-sequenced filter bank
- automatorgator MIDI- and audio- and OSC- controllable pattern gate
Details and download link (no explicit license coming yet, but Matthew has promised an open license):
maxforlive monome suite released
I got the chance to talk to Matthew about the project, how he created it, how to approach using it, and what it was like working with Max for Live.
All photos by Matthew Davidson; released under a Creative Commons attribution license. Click the images for full-sized versions.
CDM: Can you talk a little bit about what these modules are, and how they fit together, for someone who hasn’t seen them before?
stretta: Obo is like tonematrix as a MIDI plug in. I like analog sequencers because they are tactile. They’re limited, though, so the natural tendency is to add memory to them. I’ve never enjoyed the experience of an analog sequencer with memory. As soon as you add memory, the fun evaporates. You can’t tell where the data matches the knobs, you’re looking at LCD menus… bleah. I’m not saying obo is the answer, as it is a very simple device, but obo (with a monome) does provide a pleasing combination of tactile control, visual feedback and multiple patterns.
Pitches turns the monome surface into a MIDI device. Press a button, get a note. The only issue to resolve is how do you map notes across the grid? One of the first things I did with my monome after I got is was create a pitch grid in columns of fourths and chromatic rows, much like a guitar, but more like a touchstyle instrument like a Warr guitar. I liked the strict grid as it made the geometry of harmony completely portable. The pitches application allows you to customize the interval relationships of the rows and columns and optionally add a modal scale filter on the output so it is pretty much impossible to produce a ‘bad’ note.
Polygomé is one of those things that is most easily explained to people by shoving a monome in their hands. It is kind of like if you took ‘pitches’ and added a step sequencer. You recall the sequence by pressing a button, the sequence is transposed based on which button you start on. Then you can play the sequences polyphonically. Polygomé grew out of this massive, overly complicated project for the 256 I was working on called gomé. The idea was you’d create these geometric patterns then define a ‘path’ or vector across the monome surface that they’d walk across; kind of like how gliders move in the game of life. I was describing this on the monome forums and someone said, "boy, I hope you make this so it works on the 64." I didn’t think there was enough room on the 64 so I re-thought the idea and polygomé was born.
Spectral Display is a non-interactive device that turns the monome into a graphic… well.. spectral display. I developed Spectral Display from vu_spec by [monome creator] Brian Crabtree so this is all his brilliance on display. I merely adapted it to maxforlive.
Press Cafe is another MIDI instrument. The original brilliance of the monome is the fact that the buttons are completely decoupled from the LEDs. Nobody had ever produced a device that did that before. There was always some internally programmed or proscribed functionality that was never entirely suitable for much of anything. So I brainstormed about various ways to leverage this unique ability. Press cafe is a pattern trigger sequencer. It works on any size monome, but if you’re using a 256, you get 16 rhythmic patterns of 16 notes. The rows select which pattern you’re triggering and the columns select which note you’re playing. Naturally, you can use the monome surface itself to edit the patterns.
Step Filter is eight independent sequencers, each triggering a band pass filter. The sequence is edited directly on the monome surface. The real fun begins when you start specifying various loop lengths for each of the filters so they loop independently. You can have one band looping in 7, another lopping in 6, etc…
automatorgator comes in two flavors. One is a MIDI plug in that produces MIDI and OSC automation. The output can be smoothed or stepped. The audio plug-in produces gating effects, or cyclical amplitude modulation.
CDM: What was it like working with Max for Live? How did that impact the way you work?
stretta: I’ve always wanted something like maxforlive. Max lacked a powerful timeline. Most DAWs lacked user-directed internal customization akin to a modular synthesizer. I think this is important for a DAW because it is impossible to be all things to all people. I’d hesitate to say much more because my experience with maxforlive is limited to a couple months thus far and there is so much yet to explore. I would be seriously happy for years on a deserted island with this tool, provided there was some mechanism to share my work with others.
Max 5 brought some concepts like a global transport and the ability to specify time values in a metric-centric way. So, instead of milliseconds and samples, you can think in terms of quarter notes and eight notes. Then maxforlive brought all this inside of a functional DAW which made everything more powerful. It is one thing to be able to manipulate audio like play doh. It is another to be able to do it inside a real production environment, using musically-sensible units.
So, maxforlive is a huge leap forward, but the needs of the monome community were a bit more dire. There are applications for the monome that are functional enough to produce a complete musical statement in real time by itself. A good example of this is mlr. You don’t need anything else. My monome applications are not so clever. I never intended for anyone to sit down and try to express something using polygomé in isolation. I figured it would be one tool you’d use in the context of a greater whole. The problem with this is it relegated polygomé and others to the recording studio.
What the monome needed, was, in my opinion, a meta environment that could host multiple monome applications, ensure they were all running in sync, and switch between them on the fly. It would route audio, host virtual instruments, mix everything and add effects. Then you could save a setup and recall everything by opening a single file. If that could be done, then the monome is transformed from this monolithic standalone device, to a piece of integrated performance hardware.
CDM: Many people are now getting started with Max for Live. Any tips for new users?
stretta: The best tip I can offer so far is adding '---'
before any data objects. On run, the ---
is turned into a unique identifier so the instance is unique. This allows multiple instances of the same maxforlive device with access to their own data. Of course, you may not want to do this, you may want to retain the ability for multiple maxforlive devices to ‘talk’ to each other and share data which is a cool feature. I’ve uploaded a example patch detailing this at the monome wiki called ‘thisinstance’
http://docs.monome.org/doku.php?id=app:thisinstance
CDM: What if someone is interested in this download, but they don’t own a monome? Is there anything they can do with this pack without the hardware?
stretta: Not much. The only application that operates monomeless is obo. However, there may be enough about obo that is interesting to people to justify the download.
CDM: You should be able to adapt to other controllers, though, with some work – correct?
stretta: Sure, it really is simply a matter of tapping into the matrixctrl object and routing to whatever device. My stuff rarely makes use of monome-specific protocols like ledcol, but I’m doing more of that recently for performance reasons.
CDM: Have you seen other Max or monome work that has inspired or impressed you?
stretta: 7up [SevenUpLive 2.0] is an amazing piece of engineering, although it is mostly Java wrapped inside a layer of maxforlive. Buffer Shuffler was the first example that really blew my mind, and the cool part about this is you can open this stuff up and see how it ticks. When I opened up Buffer Shuffler, I was amazed at how little there really is to it, which says a lot about the level of sophistication of the max objects themselves. I still haven’t explored or opened all the devices that are included with maxforlive. It is a simple matter to lift small sections of max code and repurpose it. It is really early on in the life of maxforlive, so I anticipate the learning process to continue and expect to see more interesting creations as the ideas cross pollinate and everyone starts editing everyone else’s work.
Thanks to Matthew for these thoughtful answers. If you have follow-up questions, definitely let us know. And we’ll be interested to see how you work with these tools, or modify them in your own work.
For the latest, be sure to check out stretta’s blog, The Stretta Procedure:
maxforlive: monome integration from stretta on Vimeo.
maxforlive: obo from stretta on Vimeo.