How can I programatically load a Live set?

simonbreak's icon

Old Maxer wrestling with migrating my performance rig to M4L here with a question, one I'm hoping has a simple answer.

My performance consists of discrete songs, with different synths, effects, etc etc. In my old Max rig each song had a separate patch & I had a master patch called "setlist" which loaded and unloaded song patches according to what button I pressed on a midi controller. This allowed me to switch songs without ever going near the computer and worked very well.

Now I'm using Live, a piece of software designed specifically for live performance, and so far I can find no way to replicate this behaviour. The whole system seems designed with the idea that you have one file which corresponds to your entire performance. I DO NOT want to do this - I do not want one colossal file with the 50 or so songs I have ever performed live sitting inside it. I don't want to have to load this monstrosity every time I want to make a new song. I just want to switch between Live sets without having to click File -> Open on my laptop between each song.

Does anyone have any idea how I can do this? So far my best guess is to make a plugin which uses a shell object to fire an applescript to unload the current set and load the new one...but oh my god that is so filthy, and also I've never used applescript in my life.

Any brilliant suggestions gratefully received.

[sb]

geddonn's icon

This is the same thing that I'm wrestling with actually. Although I started on Ableton Live and am trying to move all my stuff over to Max.

Unfortunately this is the way live works.
You can't load up multiple sets (without using multiple versions of live) and there is no way to dynamically load sets.
Also since the program is 32bit it is advised by many users to simply force quit Live and reopen to switch sets since this flushes out the RAM and prevents Live from crashing due to exceeding the 4GB RAM limit.

For me this means I can only really do 45mins to an hour long set with my current set up continuous music. (yes that's all tracks in a clunky huge live set).

I would say hopefully they will address this in Live 9 but saying that has already got pretty old.

Let me know if you find a solution.

mike fonte's icon

Did you check out the poly~ object's dynamic loading feature - works great for swapping out instruments and fx. I believe it can be done in m4l. Good luck!

simonbreak's icon

Farfisavox - Wow, the situation is worse than I thought! In 2012 I have to reload my DAW between songs? Maybe the Live manual should say "WARNING, do not attempt to use this software for anything other than minimal techno jams".

mike fonte - Thanks for the suggestion, but even if I can get my effects & instruments dynamically changing between songs I still really want to avoid having all my clips in the same set. I want my scenes to be thing like "verse" and "chorus" not "song 28".

Thanks both for your replies.

mike fonte's icon

Simonbreak, I hear you. One last thought that's not really a solution, but...I went to an Ableton clinic with's Beck's Keyboard Player. He said he kept shortcuts to his Ableton sets, in one folder in his Ableton Browser, and actually just changed changed sets between songs. Not a very exciting answer, I know. I wish Ableton was more performance oriented in that way (like with the ability to hot swap things with midi control!). The one good thing about that approach though, is avoiding the "giant patch syndrome". The bad thing obviously, is the 5-15 sec of dead space in the middle of a performance...awkward!

simonbreak's icon

Thanks Mike, I may just end up resorting to that. Would really rather not touch my computer during the gig but there comes a point where you just have to say "maybe in Live 9...."

mike fonte's icon

A 64bit version of Live might be worth the wait. If what I understand is correct, that there is not really a limit to RAM in the 64bit environment. The days of bouncing tracks, turning off plugins, audio glitching, etc. could be over.

Sorry I'm not offering that much technical help. Just being chatty, 'cause I think about these issues a lot.

I was thinking about building a small "grid-based" looper in Max. A patch that could load loops, play and mute them on the downbeat, with a visual feedback grid, etc. A sorta "Live for Max" concept. I wonder, Farfisavox, if you are playing back synchronized loops now in Max?

simonbreak's icon

Hiya to anybody interested in this post, I actually came up with a solution to this problem!

My solution was to make an M4L plugin which uses a udpsend object to communicate with a very simple server I wrote in Ruby. The server waits for a next, previous or reload command and then uses the shell "open" command to load the requested set from a list of available sets (an, ahem, setlist).

In OS X this seems to work very well, although my sets are not huge & complex beasts like some people's. You have to wait a few seconds for the set to load but a few seconds gap is acceptable for my purposes. Anyway, if this is useful to anyone please let me know and I will upload it on the forum.

Cheers [sb]

benoit-1842's icon

I will be very interested.... Thanx a lot
Ben

ztutz's icon

We'll all be interested in how this works for you live. Abe has been dinged for this for years; you are certainly not alone.

I am always spooked by having to load new sets, because it breaks the flow for us ambient types. My solution has been to run more than one laptop (also makes for a crash backup), but this is not optimal.

simonbreak's icon
LSka's icon

I usually run two instances of Live ("Live" and Live "Copy") and route them through Soundflower, respectively to channels 1-2 and 3-4.
Then I have a little mixer patch (see attachment) which allows me to mix between the two sources. And this works fine. The only uncomfortable thing is that I need each time to switch between windows to open the next live set, and it may take some time and create confusion.
I was looking to a solution like yours, so I can open live sets from the Max interface, I think I'll just need to implement it in a Max abstraction and it should work, what do you think?

4412.Mix3r.zip
zip
simonbreak's icon

LSka, you can certainly make a simple patch in Max which will load & unload Live sets by sending "open" commands to the shell. However, as far as I can see (on OSX, I don't know abut Windows) it is impossible to use the shell open command from a Max 4 Live plugin, so you would have to have full Max running at the same time as M4L/Live. I did something similar but using a Ruby program instead of a Max patch, see my post before yours for the link.

Angelo's icon

I am very impressed about the pragmatic solution of SIMONBREAK that points to the same idea I had when suffering the missing feature on stage -> "Just let a tool open .als files from the outside."

Sorry if this seems like hi-jacking this M4L forum, but I coded another solution in Java that runs on Mac and Windows. You may have a look here: http://midi-automator.com.

Klangschmied's icon

@ THEGAMBLER your MIDI Automator sounds interesting, is this jaya-prog avalaible for public ?

Angelo's icon

@KLANGSCHMIED: Yes you can download the latest release here:
http://midi-automator.com/?q=downloads

Though we already successfully worked with it on stage twice, I would suggest to test it well. See it as a beta version. I am looking forward to improve it with the experience you make with it...

Klangschmied's icon

@THEGAMBLER. Thanks a lot !

xMonsta's icon

Not sure if this has been posted yet - but stray posted this in maxforlive.com recently - It opens a live set through M4L

Angelo's icon

@XMONSTA Also very interesting. I see there is a need for a set-list feature. But creative people will find a creative solution. ;)

Mark Wesse's icon

SET LIST LOAD for PC
Forget Max for this function...Im happy with Max for many things...but never seen an elegant and simple solution. Simple solution for pc only, just use bome midi translator (I dont have shares);
1. Keep all Live songs as separate entities (except where you want to segues etc) ie as you would expect.
2. Create a 'Set List' folder with a list of shortcuts named simply 1, 2, 3 -30 etc
3. Point the shortcut targets to the songs you would like loaded (be nice to have a UI that could simply rewrite the targets from a list)
4. MTP (Midi Trans Pro)
A. Use incoming trigger of CC ie 1-30 (or however many songs for a gig) and set up a trigger for each
B. 1 trigger to execute a load of the shortcut

Thats it; MTP sits outside as a mast and simply reloads the songs as required.
Caveats; Live has to be the front most window as MTP doesnt seem to grab the window for direct inject

Hope that helps others with the same need. Its super simple and works.
If anyone would like the MTP presets; PM me