Ableton Live through Max/MSP
What is the best practice for routing audio from Ableton Live to Max/MSP (in terms of load, latency, overall stability, synchronization, integration, etc.)?
I've been weighing between two options:
1. Routing the Live outputs using Jack OS X to Max/MSP
2. Using rewire to designate Live as a slave to Max/MSP (the designated rewire mixer)
Any thoughts on the benefits or shortcomings of either approach? Or is there another alternative that I'm missing?
Max for Live?
jackosx does audio only, i may be wrong but rewire also sends control messages (midi?). so with that in mind you'll need also to send midi via iac if going with jack. more complex set up/maintenance for sure but arguably more flexible. other than that there's also soundflower i guess but i used it once and hated it so used jack instead. but yeah if for specifically integrating max and live i'd pony up for mfl, i wan't to but am student-broke atm.
@tdaeik
Two main points in response to your post...
1. That is the dilemma as far as I can tell: Jack seems to take more work in terms of synchronizing the midi clock and rewire seems to offer that extra ease in control. However, it seems like a number of previous posts that I've read direct users towards external signal routing software (i.e. Jack OS X or Sunflower). That brings me to my present quandary - why so? What's the benefit to using Jack over rewire?
2. I'm not sure M4L will not work for what I want to do. Two sources to refer to --
a. http://www.ableton.com/pages/faq/max_for_live
"Can I use Max for Live devices when Live is running as ReWire slave?
You can use Max for Live devices only while running Live as ReWire master or as a stand-alone application."
b. https://cycling74.com/products/maxforlive/
"For users who only own Max for Live, the Max application will have the following limitations:
- no built in support for audio and MIDI (Live is used for audio and MIDI I/O)"
The issue with those couple of facts is this: I'm trying to use different algorithms for spatialization - multi-channel panning - and all that depends on the audio coming either out of Max/MSP using the DSP IO mappings or using a router to send the signals to different channels. Still, if you have other thoughts on how I'd configure it to come through Live using M4L, I'm all ears (though your reasoning ought to be at least $99 worth :D)...
howdy eresair. in answer to:
1) i've never used rewire. i can't comment on it's fitness for a purpose. also i've only been using max for 6 months or so properly and don't really know that side of it. when i used jack and iac it was with supercollider and live, and i never exchanged clock timing info, i always just used live to set up clips to play synths in sc3, midi sent over iac. i'm not really an expert on any of it.
2) yeah i've heard max for live only has two channels in/out of the device, so multichannel surround may be a challenge. but again i don't own it and haven't used it so i wouldn't take my word for it.
maybe your over thinking it. jacks free, so is soundflower. iac is easy to set up. i assume rewire is somewhat user friendly to use. why not just give them all a try and see which works best? maybe rewire will do precisely what you want. i'd start there, it's the least effort.
@eresair - you don't mention whether you need MIDI and/or transport signals in your Max implementation? In other words, is all it's doing is processing audio signals coming from Live? If so, then I see no need to get the tight integration that MFL offers - all you need is to get the audio from Live to Max, and for that, Jack is perfect. Plus with MFL you do have the stereo limitation mentioned by tdaeik there.
Yes I'm biased (I'm one of the people behind Jack OS X).
@Dan
Sorry for the delayed reply.
Yea, signal transport is definitely functionality that I'd like supported. I do plan on running midi from Max *and* Ableton at some point later on, so I'd want there to be some master/slave relationship to drive both synchronously. The [rewire~] object seems to offer some of that built-in - particularly the mapping and midi - and while that eases the burden from a usability perspective... at the same time, it doesn't seem like it'd be so difficult to re-create and expand upon using the Jack setup (using [rtin] and [sync~] from the interface clock in that case).
In the past, I've had a number of crashes with the Jack approach, so I was also wondering whether or not there was a performance or stability boost in using [rewire~]. That part of the discussion, however, seems pretty moot.
So, for now, I'm going to stick with Jack I guess. It's what I've been using and the boon of using rewire doesn't seem all that great (less work, less visibility). I'll try my hand in trivially playing around with rewire and if there's any update, post it here though.
Thanks for the feedback btw.
Damn, one other thing.. This goes back to what you were saying tdaeik about the whole I/O of M4L being limited to two channels --
You can have multiple patches in a Live set right? So, potentially, you could have an M4L patch per Live channel (i.e. 8 total Live channels, 1 M4L patch per channel sending output)... there's room for a workaround somewhere in there if that were the case.
Anyhow, just a thought.
You might find Stefan Tiedje's multi-channel M4L work interesting over in the Ableton Forum:
The whole thread is probably worth a read...
HTH, Charles
Yeah, for what you want to do (including MIDI), I'd probably use ReWire...
Dan
I'm having a problem with rewire~.
I start up Max/MSP and open the rewire~ help file, select Live from the menu and Mix L and Mix R.
But when I I boot Live it freezes and wont even open. Any Idea of what I'm doing wrong?
On a MacBook Pro 2.66 GHz intel Core i7 with 4G Ram.
Running Max 5.1.4
Live 8.1.4
Hey,
I'm dealing with the exact same problem.
I'm building a drum machine within Max which I want to be connected to the clock of LIVE (Ableton).
So I use Max in ad_rewire mode and the 'rtin' object to get the data from LIVE.
But when I choose a really slow tempo in LIVE I have some latency. So the click in LIVE and my drum sounds which are coming from Max are not 100% simultan.
Can I solve that with Jack Pilot?
If so, could anybody tell me the exact audio set-up in Max and in LIVE please?
What I did now:
- incoming source in LIVE: my midi-interface
- outgoing source in LIVE: Jack Pilot
- Max is set in ad_rewire state
This doesn't work at all. I have more latency than without using Jack Pilot as outgoing source so I guess I did something wrong.
Hope someone can help.
Thanx a lot
Peer
Here's what I would do if I wanted to use a Max/MSP drum machine, and have it be in sync with Ableton Live:
1) User ReWire - no Jack or Soundflower necessary.
2) Ableton Live as ReWire Host, Max/MSP as Client (this means setting Max driver to ad_rewire - don't need rewire~ object, that's for use when Max is the Host)
3) In Max patch, for audio sync with Live, use hostsync~ and/or hostphasor~ as required by your patch.
4) In Max patch, for MIDI information - just use the standard midiin object and choose one of the default MIDI ReWire input ports. In Live, set the appropriate MIDI output port.
That's it...
Dan
I solved my latency problems.
The thing is that I took the 'beat' information from LIVE with the third outlet of the 'hostsync~' object and this gave me some latency.
I kept the 'hostsync~' object for other purposes but now I take the 'beat' information with the 'hostphasor~' object - and this solved all my latency problems cause I get a constant signal.
Cheers
Peer
Glad you solved it!
thanx for helping