Articles

    What's New in Live 11, Part 1


    Ableton Live 11 is here!
    If you’re a Max for Live user, you may have noticed a number of useful upgrades available to Live 10 users over the past year (some of which you may not know about yet). Live 11 has continued and expanded those changes considerably by adding a number of requested features and some entirely new features:
    • A live.scope~ UI object
    • Better/tighter integration of Live 11 with Max for Live
    • New features for developers of Max for Live devices
    • New additions to the Live API
    In this series of two articles, we’re going to run through those new features. In addition, the downloadable file includes some example Live devices that demonstrate the features described in this article, along with some example Live sets that demonstrate their use.
    What-is-new-in-Max-for-Live.zip
    application/zip 1.16 MB
    click here to download the examples

    A New UI Object and New Features for live.* Objects

    We’ll begin with the Max external objects created to work in the Live application environment
    Let's start off with a brand new object that was recently added to Max. With live.scope~, you get a performant and accurate oscilloscope, tuned to match Live's visual style by default and ready for your own customizing touches.

    Integration upgrades

    We’ve worked to make the overall experience of working with Max for Live devices feel more fluid in Live 11: Device interface rendering has been overhauled, which prevents unwanted visual artifacts caused by zooming the Live interface or scrolling the Device view.
    There have been numerous updates to Max for Live objects to support better interface integration:
    • The live.comment object now works seamlessly with the Live interface colors
    • The live.arrows object is now parameter-enabled (This is set to off by default)
    • The live.text object has a new @blinktime
    • The live.toggle and live.text objects now respond to the Return key, allowing you to use your keyboard to toggle both objects.
    • The live.dial and live.slider objects now mimic the behavior of native Live UI objects — the shift+arrow keys now change the dial/slider value by 12 steps.
    • The live.colors object now includes more native Live colors (e.g, histogram and spectrum).
    • When you right-click the patcher background in Max, you will now find a Max for Live category that provides you with direct access to essential building blocks. Here’s an example that shows one of the new snippets: Global.dB2Value. This snippet shows how to convert a value in dBs to a value that you can send to live.object in order to get the correct amount of dBs on a gain or volume control in Live.
    • A thispatcher object in your Max for Live device can now get and return the file path of the device it is located in.

    Usability and development updates

    Live 11 includes some new features that enhance the overall experience of working with Max in Live when developing new devices:
    • When there is a warning or error associated with a Max object in the Max for Live window, you will now see which specific external object caused it. Double-clicking on the error line in the Max window will take you to this device. Right-clicking a message will show how the operations (such as filtering per object) have been extended to the device. You can now copy text directly from the Max for Live window, too.
    • As a developer, you now get tools to limit your device to the Live and Max release versions and the platform in which it functions optimally. There’s a new Max for Live section in the Patcher Inspector that you can use to set those limits. In addition, you can also access these attributes via the live.thisdevice Max for Live object.
    • The Parameters (menu > View > Parameters) and Banks (double-click live.banks) windows have received some love, too — you can now edit the Info Title and Info Text for all your objects in one place in the Parameters window and it is easier to edit banks in the Banks window.

    MPE support

    MIDI in Live 11 supports MPE, and a new feature for Max for Live users reflects the embrace of MPE. In the new Max for Live category in the Patcher Inspector you can use an attribute (@is_mpe) to specify whether your MIDI Effect or Instrument is an MPE device. Setting the @is_mpe attribute enables your device to modify and generate MPE data.
    If you’re interested in how you can change MPE data for notes, we’ve provided a sample device in the download for this article that demonstrates how it’s done — the example device adds a pitch slide for every note that passes through:
    For more info, have a look at the help files for mpeparse, mpeformat and polymidiin.

    MIDI channel routings

    One new bit of support will be exciting for lots of you out there: just as is the case for VST devices, Max for Live Audio effects can now route MIDI to anywhere within Live and accept MIDI from anywhere in Live. Instruments can also accept MIDI from anywhere within Live.
    You’ll find demonstration devices in the download for this article that demonstrate how that’s done, too:

    API additions

    Live 11 includes some exciting new features for the Live API for Max for Live users, as well.
    The biggest single addition is an entirely new way to interact with MIDI clips. Those changes are so new and so extensive that we’re going to dedicate the second article in this series entirely to exploring them — so stay tuned!
    But that’s not the only stuff that’s new in the Live API. This time out, we’ve picked out some other highlights to share, and included example devices that show them in action in the download example folder.

    Simpler slices

    You can now query the slices in Simpler. Matching this with incoming MIDI notes and another new property in the Simpler (sample_rate) will let you know exactly what position in your sample will be triggered.

    Arrangement Clips

    You can now access the clips in Arrangement View with arrangement_clips. Most of the things you have done with clips in Session View are now applicable to the Arrangement View as well.

    Warp Markers

    Warp markers are no longer a mystery for Max for Live device creators — you’ve got access to them through the Live API. Querying warp_markers gives you a single dictionary with all the information you need to know where and how fast a clip will play back at any time in beats. This enables you to determine the current playback position in warped seconds, as well as a warped clip's current playback rate:

    More: Clip Launch Properties, Macros and Grooves

    And just in case that’s not enough, we’ve got a few more tricks up our API sleeve:
    • Clips now give you access to their launch properties: Legato, Launch mode, Launch quantization and Velocity amount.
    • The new Macro Variations can be fully controlled with Max.
    • Macro knobs can be added, removed, or randomized using Max.
    • The Groove pool and all of a Groove's properties are now accessible from Max.
    The features we’ve described here really don’t cover the full list of small improvements to Max for Live added recently, along with the new Live 11 features. For the full lists, see the change logs for Live 11 and Max 8.
    For example, did you know that freezing now works for Max for Live, even propagating to the editor?

    Next Time….

    With the arrival of MPE support and features such as velocity deviation, probability and release velocity, the concept of a note in Live 11 is a new and different beast compared to Live 10. We’ve added a completely new way to interact with MIDI clips in Live 11. Those new features are so extensive that we wanted to dedicate a separate article to cover them, and that’s what you’ll be seeing in Part 2 of this series. See you next time!

    Corrections

    • In a previous version, the text stated that all devices can send and receive MIDI to and from anywhere in Live. However only Audio effects can route MIDI inputs and outputs, and Instruments can only route MIDI output. MIDI effects' inputs and outputs and Instruments' MIDI inputs are necessarily fixed to their device chain.
    • The MIDI Routing Output device did not correctly contain its Routing and Colors abstractions. This should be fixed in the current download.

    by Mattijs Kneppers Gregory Taylor on
    Mar 2, 2021 6:55 PM

    • Herr Markant's icon
      Herr Markant's icon
      Herr Markant
      Mar 03 2021 | 3:01 pm
      great!
      Share
    • Herr Markant's icon
      Herr Markant's icon
      Herr Markant
      Mar 03 2021 | 8:17 pm
      • The new Macro Variations can be fully controlled with Max.
      • Macro knobs can be added, removed, or randomized using Max.
      Do you have an example here? Not quite sure about that.. TY
    • Christian Kleine's icon
      Christian Kleine's icon
      Christian Kleine
      Mar 03 2021 | 9:27 pm
      Here's a quick example
    • Herr Markant's icon
      Herr Markant's icon
      Herr Markant
      Mar 03 2021 | 9:30 pm
      nice! +1
    • flaviogaete's icon
      flaviogaete's icon
      flaviogaete
      Mar 04 2021 | 1:09 am
      Thanks for these! Re: the MIDI routing devices – reading the comments inside the Routing object: "Devices can currently have only one MIDI input or output channel (index 0). Only Audio Effects and Instruments support MIDI routings as MIDI Effects routings are fixed." Just to confirm then, it's not possible yet to have multiple 'midiout' objects in the same device, each with an independent routing assignment, is that right? I'd still have to use 'send' & 'receive' objects in order to route to multiple midi tracks from a single device (assuming each destination track has a 'receiving' device)?
    • Linden's icon
      Linden's icon
      Linden
      Mar 04 2021 | 3:29 am
      In the Midi Routing Out Example i get errors for missing the "Colors" and "Routing" objects... where can i get those?
    • flaviogaete's icon
      flaviogaete's icon
      flaviogaete
      Mar 04 2021 | 3:54 am
      Oh, I meant to comment on that as well – re: errors loading Colors & Routing. I ended up grabbing those (plus a third inside of Routing) from the MIDI Inputs' amxd, and saved them into my Max library, then dragged the device into Live & replaced (otherwise, the original device from the session wouldn't know where to look). Will see to attach here later (file's on a different computer).
    • Linden's icon
      Linden's icon
      Linden
      Mar 04 2021 | 5:40 am
      thanks for your help!
    • andrej's icon
      andrej's icon
      andrej
      Mar 04 2021 | 7:34 am
      Great updates!
    • Carlo Cattano's icon
      Carlo Cattano's icon
      Carlo Cattano
      Mar 04 2021 | 1:20 pm
      Great news !! Thanks for your effort on the midi side . However it doesnt seem to find the subpatchers I suppose , namely "Routing" and "Colors" are not found . Ive installed Live 11.0 and max 8.1.10 . Windows 10 machine . Added the zip contents to the Max 8 Library folder too .
      Anyone got it running on windows ?
      edit: Interesting , I do have the Routing subpatcher on the MIDI input example , but not on the routing out . Same goes for colors .
    • Mattijs Kneppers's icon
      Mattijs Kneppers's icon
      Mattijs Kneppers
      Mar 04 2021 | 1:36 pm
      Hey everyone, thanks for the feedback! Concerning the missing abstractions: indeed there was an error in the download that should now be corrected (see Corrections at the bottom of the article). Thanks for bringing it to our attention!
    • flaviogaete's icon
      flaviogaete's icon
      flaviogaete
      Mar 04 2021 | 1:51 pm
      Thanks Mattijs! Just wanted to confirm as well, re: the corrections / my 1st question above: "...only Audio Effects can route MIDI inputs and outputs, and Instruments can only route MIDI output. MIDI effects' inputs and outputs and Instruments' MIDI inputs are necessarily fixed to their device chain." Is it true that it would be *one* routing assignment per device? For example, I can have an audio effect send MIDI out directly to another track, but it couldn't send multiple outs, is that right?
    • Mattijs Kneppers's icon
      Mattijs Kneppers's icon
      Mattijs Kneppers
      Mar 04 2021 | 2:08 pm
      Hi Flavio, That is correct, there is currently no way to specify different routing channels for individual notein/out, ctrlin/out or midiin/out objects.
      We have a wish to add something that would add a convenient interface for this, but that has to be something for later. Any ideas are welcome btw.
    • flaviogaete's icon
      flaviogaete's icon
      flaviogaete
      Mar 04 2021 | 2:40 pm
      Thanks Mattijs! Personally I need to learn the LOM and Live's API first before I could contribute with any ideas, but it's on my mind :)
    • Glennzone's icon
      Glennzone's icon
      Glennzone
      Mar 04 2021 | 6:05 pm
      One side of me says, “un-friggin-believable,“ and another side says, “believe it.”
      I’ll do that, and thank all those who made this possible - very much !! This really is game changing attention to detail, flexibility, etc.
      Seriously thank you, thank you, thank you !!!
    • Jolon Dixon's icon
      Jolon Dixon's icon
      Jolon Dixon
      Mar 04 2021 | 8:17 pm
      Is there any support for transients within audio clips?
    • chapelier fou's icon
      chapelier fou's icon
      chapelier fou
      Mar 05 2021 | 8:47 am
      Thank you so much for doing this, your team is really doing a great job in terms of communication and access to resources.
    • Jan Andersson's icon
      Jan Andersson's icon
      Jan Andersson
      Mar 05 2021 | 9:22 am
      This is great work. Really love the tighter integration btw Max and Live. I am using the new note format in JS. Like that too (but am getting a dictionary exceed error when reading clips > 123 notes (no problem writing clips though)). Looking forward the next article in the series.
    • Mattijs Kneppers's icon
      Mattijs Kneppers's icon
      Mattijs Kneppers
      Mar 05 2021 | 9:37 am
      Hi Jan, thanks for your kind words. The note amount limitation should be gone in the next update of Live.
    • Jan Andersson's icon
      Jan Andersson's icon
      Jan Andersson
      Mar 05 2021 | 9:47 am
      Excellent!
    • piearesquared's icon
      piearesquared's icon
      piearesquared
      Mar 11 2021 | 8:03 am
      This is all very exciting! One question though: is sequencing/automating macro variations possible? Or would it have to be done by automating the macros themselves? Have tried a bit using the commands/functions in the LOM but apart from counting, randomizing, saving and recalling the macros, I haven't been able to do much else.
    • dfwaudio's icon
      dfwaudio's icon
      dfwaudio
      Mar 11 2021 | 10:42 am
      looks like its not even possible in Ableton. There are no Automation paramaters available. There is also no possibility for mapping macro presets to a midi controller.
    • Mattijs Kneppers's icon
      Mattijs Kneppers's icon
      Mattijs Kneppers
      Mar 12 2021 | 8:48 am
      I would say that it should indeed be possible to build a Max for Live device that links the selected macro variation to an automatable parameter, or that triggers it with notes.
    • dfwaudio's icon
      dfwaudio's icon
      dfwaudio
      Mar 12 2021 | 10:05 am
      Oh sorry. I really should read the posts more carefully. If you can recall the Macrovariation you can map this to a parameter.
    • dfwaudio's icon
      dfwaudio's icon
      dfwaudio
      Mar 12 2021 | 11:14 am
      I have also a question. I started a new thread about, but maybe this is the right place to ask. I have a little problem with note modification. It looks like the live.object apply_note_modification only handles dictionary arrays of notes. But if there is only one note entry in the dictionary there is no array created and live.object put out an 'invalid arguments' error. Is there a way to format a single dict entry like an array? By the way, the new maxforlive integration is really tight. Never had such a good performance. Also the new note modification and writing process is working very well.
    • Luke Muller's icon
      Luke Muller's icon
      Luke Muller
      Mar 13 2021 | 1:43 pm
      I really like the new note format with dicts. One thing I can't figure out though is how to use it in JS. It would be very cool if someone could post a simple example what syntax to use when getting the notes into a dict object with for example "get_selected_notes_extended" and then setting the notes back with "apply_note_modifications". thanks
    • dfwaudio's icon
      dfwaudio's icon
      dfwaudio
      Mar 13 2021 | 4:42 pm
      'call apply_note_modifications { "notes" : [ { "note_id" : 1, "pitch" : 10, "start_time" : 0.0, "duration" : 0.25, "velocity" : 100.0, "mute" : 0, "probability" : 1.0, "velocity_deviation" : 0.0, "release_velocity" : 64.0 } ] } ' Don't know anything about JS but maybe this helps. This is the 'raw' message which can be handled by live.object. this dictionary format is called array. The square brackets are necessary. More notes can be modificated at once. They must be appended inner the square brackets and seperated by a comma.
    • Luke Muller's icon
      Luke Muller's icon
      Luke Muller
      Mar 13 2021 | 8:25 pm
      Thanks DFW. Found out that "mydict.parse" does the trick when getting the notes and then stringifying dicts before using them to set notes worked out, if someone else is wondering.
    • broc's icon
      broc's icon
      broc
      Mar 14 2021 | 12:11 am
      Hi Luke, can you confirm that your method with JS also works for clips containing just a single note?
    • Luke Muller's icon
      Luke Muller's icon
      Luke Muller
      Mar 14 2021 | 9:48 am
      Hi Broc, Yes it works to get and set 0, 1 or multiple notes. It creates a note array in all 3 cases.
    • broc's icon
      broc's icon
      broc
      Mar 14 2021 | 11:04 am
      Thanks Luke! Strangely with plain Max creating a note array of 1 note seems not possible. Could you please post the JS solution here?
    • Luke Muller's icon
      Luke Muller's icon
      Luke Muller
      Mar 14 2021 | 1:20 pm
      Sure, here is an example. It uses the "apply_note_modifications" but it works just the same with "add_new_notes" I assume, if you want to create a new note from scratch. So if you create a string like '{"notes":[{...data for 1 note...}]}' and use dict.parse like in the example it should give you a dict with 1 note inside an array. Yes, I'm also wondering how to create a single note in Max.
    • broc's icon
      broc's icon
      broc
      Mar 14 2021 | 2:39 pm
      Thanks a lot, your example works perfectly.
    • Luke Muller's icon
      Luke Muller's icon
      Luke Muller
      Mar 14 2021 | 6:44 pm
      No worries, great to hear you could use it
    • Mattijs Kneppers's icon
      Mattijs Kneppers's icon
      Mattijs Kneppers
      Mar 14 2021 | 6:57 pm
      Hey all, a quick reminder that part 2 covers the notes API in a lot of depth, including javascript examples. You'll find it here: https://cycling74.com/articles/what's-new-in-live-11-part-2
    • Robert Koster's icon
      Robert Koster's icon
      Robert Koster
      Mar 18 2021 | 8:11 am
      All super duper awesome stuff... Still not possible to create a kind of 'Strip Silence' type function using max for live is there?... maybe Ableton can implement this instead?... Basically Split/Trim clips and create fades on any selected audio (or midi) clips that contain silence, would be a very welcome feature I think. Also its just awesome to have all these examples as a springboard for some great new devices, looking forward to finishing off a few of my MIDI effects I've got laying around, half built.
    • dfwaudio's icon
      dfwaudio's icon
      dfwaudio
      Mar 18 2021 | 12:20 pm
      I think that is already possible somehow. You can cut clips by API commands. With the new update also arrangement clips are accessable and you can read out all necessary data, i think. Would be some work to do, but not impossible. But it would be a kind of 'realtime' process.
    • chapelier fou's icon
      chapelier fou's icon
      chapelier fou
      Mar 20 2021 | 1:14 pm
      I've saved a copy of the [Routing] patcher in my search path, but when I copy/paste the Routing + menu section of the patch in one of mine, the menu are empty. Any idea why ?
    • offchristianamr's icon
      offchristianamr's icon
      offchristianamr
      Mar 22 2021 | 7:03 am
      I decided to look up this article to get information about warp marker access, and accidentally found that the new "Paste From" menu immediately solved a very specific, unrelated issue I had been trying to figure out for the last hour 😅 So much really amazing stuff, great job to everyone working on Max for Live! It just keeps getting better and better.
    • Mattijs Kneppers's icon
      Mattijs Kneppers's icon
      Mattijs Kneppers
      Mar 22 2021 | 9:26 am
      @chapelier fou, assuming the Routing patch was loaded properly; you do need to have a MIDI in or out object in your device before the dropdown will be populated. Also you need to save the device first before the routing options are properly found. Does that help? Inside the Routing abstraction is some explanation that might help:
      Together with two umenu objects, this patcher provides a device routing chooser. The third inlet expects two arguments: Argument 1 (symbol): channel type: which type of channel we want to control. One of the following types: - audio_inputs: the audio input channels of this device - audio_outputs: the audio output channels of this device - midi_inputs: the MIDI input channels of this device - midi_outputs: the MIDI output channels of this device Argument 2 (int): channel index: which of the available channels for this channel type we want to control. One routable MIDI input channel and one routable MIDI output channel are available to Audio Effects. Instruments support one routable MIDI output. MIDI inputs and outputs of MIDI effects are not routable since they are fixed to Live. The amount of audio input channels available to a device is determined by the channels specified in the plugin~ object. The amount of audio output channels available to a device is determined by the channels specified in the plugout~ object. Note that after modifiying the midi, plugin~ or plugout~ objects in a device, the available channels will update only after a device is saved.
    • chapelier fou's icon
      chapelier fou's icon
      chapelier fou
      Mar 23 2021 | 12:04 pm
      Thanks for the reply. Unfortunately, I can't make it work.