Whats new in Max for live in Ableton Live 9

by Clint on March 11th 2013

Ableton Live 9 is finally shipping! Of the many new and cool features, the inclusion of Max for Live into Live 9 Suite is a welcome addition that is driving many new users to the world of Max for Live and our community at maxforlive.com. The fact that M4L is now free if you own the Suite isn't the only new thing though. Check out a full list of new things in Max for Live in Live 9! (Note M4L in Live 9 requires Max 6.1 or greater is installed).

From Cycling74:
  • New features in the Live Object Model or "LOM". Please see below in this blog post for a full list of LOM changes.
  • API: retrieve all notes in a midiclip without selecting
  • device width: settable
  • Devices: improved patcher loading time
  • live.dial: narrower in tiny mode
  • LiveAPI: get AudioClip file path
  • LiveAPI: misc improvements & changes
  • LivePack: resolve file path
  • MFL devices: all devices are Max Projects. Among many benefits, this now allows developers to include both the Win and Mac versions of externals when Freezing devices to make them cross platform. See the "Max for Live Device Projects" Vignette in the Max doc for full details.
  • MFL keyboard focus: fixed various issues
  • MFL parameters: enabled ordering of automatic mapping of on external MIDI controllers
  • Rye Pluggo MFL device: minor gain improvments
  • startup: improved Max for Live startup time
  • textedit: un-focussing device un-focuses textedit
  • undo events: events during a mouse down are merged into a single event

    New Max for Live Devices

    The new "Max for Live Essentials" pack includes:
  • Buffer Shuffler
  • Convolution Reverb (including a device to create your own IRs!)
  • Pitchdrop
  • Device Randomizer
  • Envelope Follower
  • LFO
  • MultiMap
  • XY Pad
  • Instant Haus
  • Mono Sequencer
  • Note Echo
  • Envelope
  • Expression Control
  • DrumSynth

    What's new in the Live Object Model (LOM)

    The following are new additions to the LOM taken from LOMChanges.pdf by Cycling74. This document only reflect the state of the LOM at the time of writing, for up­to­date documentation and more explanation of these specific properties and functions, please refer to the LOM documentation included in Max for Live.


  • open_dialog_count ­ Get/listen to the number of dialog boxes shown.
  • current_dialog_message ­ Text of the current message box; empty if none is shown at the moment.
  • current_dialog_button_count ­ Number of buttons on the current message box.
  • press_current_dialog_button(index) ­ Press the button with the given index on the current dialog box.


  • scroll_view for the “Browser” view
  • toggle_browse() ­ Reveals the device chain, the browser and starts hot swap for the selected device. Calling this function again stops hot swap.
  • browse_mode ­ True if HotSwap mode is active for any target


  • create_scene(index) ­ Index determines where the scene is added; it is only valid between 0 and len(song.scenes); ­1 will add the new scene at the end of the list
  • swing_amount ­ 0.0 ­ 1.0; right now only affects midi recording quantization and direct calls to Clip.quantize(...).
  • capture_and_insert_scene() ­ Optional argument that can either be 'Song.CaptureMode.all' or 'Song.CaptureMode.all_except_selected'; the latter will capture all playing clips except for the selected one, leaving the slot of the selected track free in the new scene.
  • create_midi_track(index)
  • create_audio_track(index)
  • duplicate_scene(index)
  • duplicate_track(index)
  • session_record ­ Get/set/listen to the state of the session overdub button.
  • arrangement_overdub ­ Get/set/listen to the state of the arrangement overdub button.
  • session_record_status ­ An integer that changes when the state of Live's new session recording button changes. Can be observed but not set.
  • create_return_track() ­ Adds a new Return track at the end.
  • delete_track(track_index) ­ Delete the track in the 'tracks' property at the given index
  • stop_all_clips now has an optional argument 'quantized' (default is true). Calling the function with false will stop all clips immediately, independent of the launch quantization.
  • session_automation_record ­ Get/set/listen to the state of the new Automation Arm button in Live
  • re_enable_automation_enabled ­ Get/listen to the state of the 'Back to Session Automation' button.
  • re_enable_automation() ­ Trigger 'Back to Session Automation', re­activating automation in all running session clips.
  • delete_scene(index) ­ Deletes the scene at the given index. Raises an error when there is no scene at given index or the index is invalid.
  • trigger_session_record (optional: record_length) ­ Starts recording in either the selected slot or the next empty slot, if track is armed. If record_length is provided, the slot will record for the given length in beats. If triggered while recording, it will stop recording and start to play back the clip.


  • delete_device(device_index) ­ Delete the device in the 'devices' property at the given index
  • duplicate_clip_slot(index) ­ Works like 'Duplicate' in a clip's context menu;


  • device_insert_mode ­ Get/set/listen to where a device will be inserted when loaded from the browser. Can be 'default' (add device at the end), 'selected_left' (add device to the left of the selected device), or 'selected_right' (add device to the right of the selected device).


  • create_clip(length) ­ Length is given in beats, must be bigger than 0.0; can only be called on empty clip slots in MIDI tracks.
  • delete_clip() ­ Deletes the contained clip
  • fire(record_length, launch_quantization) ­ The resulting clip will be re­fired after the given record_length; launch_quantization overrides the global quantization if provided.
  • is_playing, is_recording, will_record_on_start will now return the respective state of the contained clip if there is one (they used to throw errors in that case)


    Reminder: Note format is (pitch, time, duration, velocity, is_muted)
  • get_notes(from_time, from_pitch, time_span, pitch_span) ­ Returns a list of notes that start in the given area just like get_selected_notes
  • remove_notes(from_time, from_pitch, time_span, pitch_span) ­ Deletes all notes that start in the given area
  • set_notes(list_of_notes) ­ Will apply the given notes to the clip, overwriting existing notes Note: Accessing these properties if is_midi_clip is false will generate an error
  • duplicate_loop ­ Makes the loop two times longer by moving loop_end to the right, and duplicates both the notes and the envelopes. If the clip is not looped, the clip start/end range is duplicated. The function has no parameters. Available for MIDI clips only.
  • is_overdubbing ­ Get/listen to whether the clip is overdubbing
  • file_path ­ Get the location of the audio file represented by the clip Note: Accessing this property will generate an error if is_audio_clip is false
  • quantize(quantization_grid, amount) ­ Quantizes all notes in the clip to the quantization_grid (one of Live.Song.RecordingQuantization) taking the song's swing_amount into account; throws a runtime error if called on an audio clip.
  • start_marker ­ Get/set/listen to the clip's start marker in beats, independent of the loop state. Raises an error if set behind the end marker.
  • start_time ­ The time the clip has been started, relative to the global song time, the value is in beats
  • end_marker ­ Get/set/listen to the clip's end marker in beats, independent of the loop state. Raises an error if set before the start marker.
  • gain ­ Get/set/listen to the clip's gain setting; range is 0.0 to 1.0. Raises an error if called on a MIDI clip.
  • gain_display_string ­ Get the clip's gain display value as a string (e.g., “1.3 dB”). Raises an error if called on a MIDI clip.
  • available_warp_modes ­ Returns the list of indexes of the warp modes available for the clip; Raises an error if called on a MIDI clip.
  • warp_mode ­ Get/set/listen to the clip's warp mode as an integer index. Raises an error if called on a MIDI clip. Note: Available warp modes are 0(Beats), 1(Tones), 2(Texture), 3(Repitch), 4(Complex), 5(Rex), 6(ComplexPro).
  • clear_envelope(device_parameter) ­ Removes the clip's automation for the given parameter.
  • clear_all_envelopes ­ Removes all automation in the clip.
  • has_envelopes ­ Get/listen to whether the clip has any automation.
  • quantize_pitch(pitch, quantization_grid, amount) ­ Same as quantize(quantization_grid, amount), but only for notes in the given pitch.


  • grid_is_triplet ­ Get/set whether the clip is displayed with a triplet grid
  • grid_quantization ­ The grid quantization; possible values can be found in Live.Clip.GridQuantization
  • show_loop ­ If the clip is visible in Live's detail view, this function will make the current loop visible there


  • can_have_drum_pads (only true for drum racks)
  • drum_pads ­ Read­/listenable list of all 128 DrumPads for the top most drum rack, inner drum racks return a list of 0 entries).
  • visible_drum_pads ­ Read­/listenable list of all 16 visible DrumPads for the top most drum rack, inner drum racks return a list of 0 entries).
  • class_display_name ­ Get the device's original name (e.g., Operator, Auto Filter).
  • type ­ The device's type. Possible types are 0(undefined), 1(instrument), 2(audio_effect), 3(midi_effect).

    Device.View (read­only, of type Live.Device.Device.View)

  • drum_pads_scroll_position (int) ­ Lowest row of pads visible, range: 0 ­ 28 Note: Accessing this property will generate an error if can_have_drum_pads is false or the drum rack is nested
  • selected_chain ­ The currently selected Chain (only available in instrument racks)
  • selected_drum_pad ­ The currently selected DrumPad (only available in drum racks)


  • chains ­ Read­/listenable list of contained chains
  • name ­ Read/listenable
  • note ­ Read­only
  • mute ­ Read­/write­/listenable
  • solo ­ Read­/write­/listenable, exclusivity needs to be maintained manually, same as in tracks
  • name ­ Read­/listenable


  • delete_device(device_index) ­ Delete the device in the 'devices' property at the given index.
  • Added has_audio_input, has_audio_output, has_midi_input, and has_midi_output all read­only.


  • fire and fire_as_selected now have an optional argument 'force_legato' (default is false). Calling these functions with true will launch all clips immediately in legato, independent of their launch mode.
  • fire(force_legato, can_select_scene_on_launch) now has a second parameter can_select_scene_on_launch (default is True). If set to False/0, the scene is fired without selecting it.
  • is_empty ­ Is true if none of the slots in the scene is filled.


    The Push control surface now has functions that allow Max for Live to use its controls more easily.
  • get_control_names() ­ Returns the list of alls controls' names.
  • get_control(name) ­ Returns the control with the given name.
  • grab_control(control) ­ Releases all Push functionality from the control so that it can be used exclusively from Max for Live.
  • release_control(control) ­ Re­establishes the Push functionality for the control.

    Did you like this post? subscribe to this blog or follow me on twitter or facebook for updates when new posts are made.

    blog comments powered by Disqus
  • Copyright © 2024 synnack All Rights Reserved.