This is a review of „max for live“ using Ableton Live 8.1 FINAL and max/msp 5.1 on a Mac OSX 10.5.8 Core2Duo Intel MacBook Pro. As I am a frequent user of all kinds of visual DSP systems for quite a while now: pure data (PD), max/msp, vvvv, nord modular OS, etc. – so I am quite dazzled what max for live has to offer. (Read the full Entry to see the Review)
Instruments, Audio Effects, Midi Effects – but of course, this is not all of the cake. Imagine you can create user-interface elements however you please and also assign MIDI to that interface parts. This brings Ableton Live huge steps forward: the possibility to extend ableton to include a full featured audiovisual prototyping environment and to interface with the world: be it sensors, webservices or other Ableton Live installations.
1. Installation and Setup
Ableton Live Suite 8.1 (1.4GB download size!) and max/msp 5.1. are out in final versions as of today. As a happy Ableton and max/msp owner, the crossgrade was only 79€ for me (including VAT).
Right after Live starts up it has to be authorized, so all the extensions would be usable. After everything is set up, the following popup should be visible:
There are 3 different ways to include Max for Live patches into Ableton.
Instruments would be a Synthesizer, a Sampler, etc.
Input: MIDI, Output: Audio
b) Audio Effects
Imagine any Audio Effect you can build here – let’s say a Reverb for now.
Input: Audio, Output: Audio
c) MIDI Effects
Controlling and modifying the MIDI flow – like arpeggiators, mathematical functions, midi-sequencers, whatever.
Input: MIDI (or controller values), Output: MIDI
Of course, the whole bandwidth of max/msp is much more than only that. With Max for Live, now it is possible to use sensoric interfaces directly with Ableton Live: such as the i-cube, the arduino microcontroller board and so much else (for example the wireless MIDI Glove).
Interfacing to the “outside world” is also quite easy with max/msp: the netsend and netreceive objects let you connect via socket to e.g. a webservice, RSS-feed, whatever.
See also: Max for Live and twitter integration, the shoutcast~ and netsend~ objects for sending your audio stream around.
3. First Steps
In the screenshot above you see where the “Max Instrument” can be found in Ableton Live. In the right corner you can also see the first Instrument example I built: a sine wave oscillator.
a) Example: Sine Wave Oscillator Instrument with Signal Oscilloscope [download the patch]
This is a very basic patch: notein gets the MIDI note played, ddg.mono simplifies monosynth creation by dealing with last-note priority and note-on/note-off pairing, mtof (MIDI to frequency) translates the MIDI note to a frequency which is pushed to the cycle~ object (sine wave generator). The cycle~ then sends its audio-output to plugout~ which gets routed back to Ableton Live. Play the Sine Wave Oscillator as you would play any other instrument in Ableton Live: either via keyboard or via MIDI tracks.
b) Example: Simple Delay [download the patch]
This is also a rather simple patch. The incoming signal is delayed for a specific amount of time using the tapin~ and tapout~ objects. The tapin~ object is a continually updated buffer that stores the most recent signal it has received, and tapout~ accesses that buffer at one or more specific points in the past. The sound is mixed with its delayed version to create a sort of reflection.
What you can see in the screenshot below is how to implement images in patches that get loaded also to Ableton (using the fpic object) and which part is actually displayed in Live: everything below the black line is “invisible”.
Test out the patch with the presets and also try to change the tapin~ and tapout~ values (use it as an audio effect on any soundfile. percussion or drums may be the best to hear the difference).
c) Example: 8-Step-MIDI-Repeat [download the patch]
The patch is also really simple: a line object counts from 1 to 9, resetting itself to 1 when it reaches 9 (=8 step), the select object checks for values between 1 and 8 and sends the according bang messages to the lights on top. the lights also trigger the int object, that saves values and outputs them on demand. this int objects are used to save the state of the checkboxes.
everytime an int object outputs a 1 (checkbox=checked), the select object on the right side sends the last notein event to a noteout object, causing the last note to be played again.
The difference between the two above screenshots is: hidden objects. Objects that you don’t want to be visible in your Ableton Live surface you can hide with Object -> Hide on Lock (Apple+K).
Patch No.3 repeats your last played note in a step-sequencer style: however you checked your checkboxes, every time the light is active over a checked box, the last note will be played again. Test the 3 different presets and also the freestyle option (entering numbers on your own). Be careful with too low and negative numbers.
Max for Live is not only a very huge extension to Ableton Live (as stated above, a lot is possible now, from interfacing with hardware to webservices) but also finally a step in the right direction for the said to be lazy “ableton users”: while the mainstream of ableton users use similar effects and instruments, this will change from now on. Instrument-directories such as on maxforlive.com feature lots of already available patches.
Another positive point is since max/msp is there much longer than Ableton Live and there is lots of educational content, tutorials etc. around. This could bring more people to look and learn about DSP and sound engineering als well as the physics behind audio.
Max for Live has still a few bugs – but what is there already is really something! Maybe one has to see it like this: in the end max/msp got a really cool sequencer ;)