Max 8.6.0 Release Version

    This page contains a record of fixed bugs and added features.
    If you know of an issue which is outstanding or you would like to report a bug, please fill out our Bug Reporting Form, found here:
    Bug Reporting Form

    Or contact our Support team here:
    support@cycling74.com

    System Requirements
    macOSWindows

    Intel

    • OS X 10.15 or later
    • Intel® Core™2 Duo processor. Intel® Core™ i5 processor or faster recommended
    • 4 GB RAM (8 GB or more recommended).

    Silicon

    • OS 11.0 or later
    • Apple Silicon processor
    • 4 GB RAM (8 GB or more recommended)

    Download 8.6.0 | Jan 17, 2024
    Download

    Release Notes

    Max 8.6 Update Overview

    Here are some of the highlights for this release. Be sure to check out the changelog below for a complete list of improvements. Please note that many of the new Max for Live features require Live 12.

    New Objects

    • live.map: utility object for easily integrating mapping into your max for live device without having to make use of lower level LiveAPI functions. Especially helpful for use in conjunction with live.remote~ and live.modulate~
    • live.modulate~: similar to live.remote~ but allows for modulation rather than parameter takeover
    • live.routing: utility object for easily managing Audio and MIDI input and output routings without having to make use of lower level LiveAPI functions 
    • Array objects: over 40 new objects for managing and operating upon arrays, including arrays of other objects like arrays, dictionaries, or strings. This is an important advance over flat Max lists which can only contain numbers and symbols. They make working with dictionaries that contain arrays much easier, including arrays of note events that are a big part of the new Max for Live MIDI Tools feature in Live 12.
    • String objects: over 30 new objects for managing and operating upon strings of characters. This is different from symbols in Max which persist for the life of the running process and have a 32k character limit. These objects enable users to work on dynamic string data without necessarily converting to a symbol along the way and allocating that memory until the application quits, or having to deal with upper limits. The set of objects include many helpful utilities for working with string data that are otherwise tricky to accomplish with other max objects and operating on symbols or lists of integer characters.
    • sfizz~ / mcs.sfizz~ / mc.sfizz~: new sampler objects integrating the open source sfizz sfz format sampler parser and synth. These objects make it easy to load and play a wealth of sample libraries or easily author your own with the straightforward sfz text file format that supports many advanced sampling features
    • gamepad: simple cross-platform gamepad integration based on SDL2. Makes working with gamepad controllers much easier than using the lower level and platform specific hi object. 
    • dict.compare: compare the contents of two dictionaries
    • mc.miditarget: object to map MIDI channels to MC channels

    Enhancements

    • live.remote @normalized attribute: for controlling remote parameters with normalized range 0.-1. rather than needing to know or query target parameter range and scale before sending to parameter
    • Patcher:/ virtual path: new patcher relative path support using Patcher:/relative/path/to/file syntax
    • crosspatch improvements: improved highlighting and contrast on hover

    New Editor Features

    • Themes
      • Follow Live Theme: For Live 12, we’ve added the ability to adapt Max objects and the Max editor to the current Live theme. This is enabled by default, but if legacy colors are desired either in Live or the Max editor, this can be disabled in the Max editor preferences by setting “Follow Live Theme” to “Off”. If you would like the Live theme colors to remain when launching Max directly (i.e. not launched from Live), you can set “Follow Live Theme” to “Persist”.
      • New built in Themes: We’ve also tuned and bundled a number of new built-in themes with Max, which include oft requested all-dark and very light themes. 
    • Left toolbar
      • Max for Live Category: the left patcher toolbar now has a dedicated Max for Live category for easily browsing Max for Live content, examples, and utilities to use in your patchers
      • Saving your place: the left toolbar will now remember where you were when you return to it for subsequent operations, so that any filtering and navigation within categories doesn’t have to be repeated each time you use it
      • More room: the left toolbar now has more room for viewing longer sub-categories and filenames
    • Snap/Grid Layout Operations
      • Improved Zoom level coordinate quantization: now the current zoom level will be used for quantizing position and size
      • Snap to Pixel Patcher Attribute: Always snap box movement and sizing in patcher to integer coordinates. This is especially helpful for authoring patches at any zoom level without having fractional pixel coordinates.
      • Arrange Menu -> Apply Grid: This new sub menu allows applying a 1x1 pixel grid or the user specified grid for a patcher to selected objects

    Miscellaneous

    • Window Menu -> Move All Windows to Main Display: new menu item for collecting windows from other monitors, virtual desktops, non visible coordinates  to main display.

    Updated Technologies

    • JUCE 7: We've updated the cross-platform JUCE framework to version 7. This includes many improvements underlying platform interaction, drawing performance, audio plugin hosting, and more.
    • CEF 114: For embedding and integrating web pages inside Max using the jweb object, we’ve updated the Chromium Embedded Framework to Chromium 114. A big jump from CEF 96, this enables some exciting web technologies for use inside of jweb, including WebGPU, MathML Core, WebTransport, JS and CSS updates, and more. 
    • Node v20.6: Node for Max has had its embedded node version updated to Node v20.6 from the previous version of Node v16.6. This includes many performance improvements and new features like OpenSSL 3.0, Fetch API, Web Crypto API, an updated javascript engine, and more.

    Changelog

    New Features

    • array & string: new objects for processing arrays and strings
    • CEF/jweb: Updated to CEF 5735 with Chrome 114
    • comment: bubble background color
    • crosspatch: ‘bang’ message to resync
    • crosspatch: dictionary output if client doesn’t understand setdictionary
    • crosspatch: dim circles / alpha dimming attribute / misc improvements
    • crosspatch: input / output connection highlighting
    • Database: improved behavior when externals are added/removed
    • dialog: ‘clearsymbol’ message
    • dict: @legacy mode for ‘get’ value output (on by default for old objects)
    • dict: rightmost outlet for file operation notifications
    • dict.compare: new object
    • dict.unpack: @legacy mode
    • Displays: Move All Windows to Main Display feature
    • gamepad: new object for receiving gamepad controller events
    • info~: rightmost outlet reports full pathname
    • jit.dx.grab: fps support
    • js / Max SDK: ability to pass a js patcher to an external
    • JS dict: ‘stringify_compressed’ method
    • Left Toolbar: Max for Live browser, Object browser improvements, etc
    • Live MIDI Tools: new MIDI Generator and MIDI Transformation device types (requires Live 12)
    • live.adsrui: @tethering attribute to suppress output when there is input
    • live.adsrui: outputmode attribute
    • live.dial: needlemode attribute
    • live.map: Get info for any Ableton Live parameter
    • live.modulate~: Realtime control of Ableton Live parameters without taking over control
    • live.param~: Support for applying live.modulate~ modulation
    • live.remote~: @normalized attribute for controlling remote parameters with normalized range 0.-1.
    • live.remote~: @getid attribute
    • live.routing: route MIDI & Audio inputs/outputs in Live
    • Max for Live: support for dynamic buffer sizes (as small as 32)
    • mc.makelist~: @fixed attribute
    • mc.miditarget: object to map MIDI channels to MC channels
    • mc.unpack~: replicate attribute (like mc.wrapper~)
    • mcp.record~: new MC mapping
    • Node for Max: updated to Node v20.6.1
    • Patching: allow for 1x1 patcher gridsize
    • Patching: Apply Grid (1x1 Pixel Grid, or Current Pixel Grid) Arrange menu items
    • Patching: Arrange->Apply Grid
    • Patching: Snap to Pixel patcher attribute
    • path: 'Patcher:' path prefix
    • pattr: @thru 2 (suppress output when triggered from inlet)
    • Preferences: 'Follow Live Theme' preference (defaults to on)
    • Preferences: new 'Add Patchers to Search Path on Save' preference
    • print: @bettersymquotes attribute for clearer symbol quoting
    • RNBO: update to RNBO v1.2.4
    • serial: @asyncread attribute to read continuously in the background (defaults to 0)
    • serial: @break_duration to determine the length of a break signal
    • serial: @postbreak_duration to specify a pause after the end of a break (MAB)
    • serial: @rts attribute to support enabling RTS flow control
    • serial: @rts to raise the RTS line
    • serial: support for non-standard baud rates
    • sfizz~ / mcs.sfizz~ / mc.sfizz~: sampler object based on the Sfizz library
    • stash~: @extend attribute
    • text objects: add ‘Edit…’ menu item support
    • Themes: New Themes

    Fixed Bugs

    • amxd~: improved read-only device attribute behavior
    • borax: detects illegal note numbers
    • bpatcher: fixed crash with closebang fontface
    • buffer~: fixed issues with writing > 2GB audio files on MacOS
    • CEF / jweb: improved startup/shutdown sequence
    • chooser: fixed crash with enter and key object (Win)
    • click~: improved sample accuracy at high signal vector sizes
    • coll: fixed crash when name is > 79 characters
    • Colors: fixed crash when setting bgcolor without any arguments
    • comment: Home and End in multiline jumps to correct line
    • crosspatch: dimmed connection alpha is constrained
    • Database: improved added/removed externals
    • Database: prevent potential hangs on quit
    • dict: ‘remove’ message supports array notation
    • dict: improved efficiency
    • dict.view: improve performance of large dictionaries
    • Displays: fixed ‘phantom’ handles (Win)
    • Displays: fixed drag of window between displays on Windows
    • encapsulate: can encapsulate 256 or more objects
    • File Browser: externals in internal packages are listed once
    • File Search Path: obtrusive error warning about adding single files to search path
    • fpic: drag and drop from project shows loaded image
    • function: modern curve now draws using the modern curve formula
    • function: redraws when changing classic_curve mode
    • fuzzy Math: improve float comparison epsilon
    • gen~ codebox: require finds genexpr files that are in Project paths
    • GLCore: allow 1D texture updates
    • GLCore: fixed crash when freeing camera when slab is receiving input
    • Help / Ref: missing object error now refers to the missing object instead of jbogus
    • hover: fixed usage with objects that have keyboard entry
    • Inspector: view updates immediately when dragging boxes
    • jit.gl.handle / jit.gl.mesh: works with auto_handle
    • jit.gl.material: improved vtf_normals heightmap
    • jit.gl.multiple: fixed drawing jit.gl.node color
    • jit.gl.sketch: fixed axes geometry
    • jit.gl.sketch: fixed issues on Windows / Max for Live
    • jit.gl.sketch: fixed vertex colors usage
    • jit.gl.sketch: glrect command re-implemented
    • jit.gl.text: fixed draw errors on visiblity change
    • jit.gradient.ui: misc improvements
    • jit.str.regexp: fixed crashing
    • Jitter GL: fixed crash with implicit context finder
    • js: jsarguments are no longer truncated
    • JSUI: fixed crash on Mac VMs
    • jweb: removed in built applications without CEF support
    • live.dial: increased arc line width to avoid blurriness
    • live.menu: svg files are included as dependencies in Projects
    • live.step: fixed crash on Push 3
    • live.text: properly sets value when mouse released outside box
    • matrixctrl: supports 'dictionary' message
    • Max for Live Devices / Node for Max: maintains organization when unfreezing
    • Max for Live Devices: fixed crashes when creating and freeing devices
    • Max for Live Devices: loadtime performance improvements
    • Max for Live: fixed loading of decoded Live audio files
    • Max for Live: improved mouse behavior in device with no parameters
    • Max for Live: Keyboard input changes parameter value during modulation
    • maxurl: fixed crash when object is created and destroyed quickly
    • mc.combine~: unassigned outputs are appropriately zeroed
    • mc.in~/mc.out~/mc.route~: bumped channels max to 128
    • mc.list~: eliminated 'bad number' warning when using @chans attribute
    • mc.poly~: fixed issues with resampling and vs
    • mc.sig~: fixed crash when changing chans attribute
    • midiselect: note off can only output a 0 from the note outlet
    • midiselect: release velocity is output correctly
    • node.script: dependencies are found when file paths are updated
    • node.script: fix error reporting
    • Object Action menu: fixed crash with very large number of attributes
    • Parameters: fixed issues with parameter value overrides
    • Parameters: fixed potential crash toggling parameter mode enable
    • Path: don’t search collective if a fullpath is given
    • Path: fixed plugin name conforming for VST3
    • pattr: @bindto works on project load in 3rd level nested subpatchers
    • pattr / pattrstorage: prevent feedback routings
    • pattrstorage: autorestore respects changeable arg when saving new view
    • pattrstorage: disallow managed pattrstorage objects in the same patcher
    • pattrstorage: fixed indent level in windows
    • pattrstorage: get edited works for AMXD parameters
    • pattrstorage: improved @changemode behavior with int/float comparison
    • pattrstorage: reduce output of a bound pattr object
    • playlist~: clip loop points are properly initialized
    • playlist~: improved resolution when patcher is zoomed
    • plugin~ / plugout~: fixed crash with bad arguments message
    • poly~: fixed crash with ‘wclose’ message when there is no loaded patcher
    • Presentation mode / thispatcher: fixed issues when quickly switching mode
    • Projects: amxds unfreeze to the M4L devices folder
    • Projects: development path available for amxds opened from Max again
    • Projects: Open Project Folder now opens the current project folder
    • regexp: substitution works as well as @substitute with no argument
    • ReWire: removed
    • sah~: reversed triggermode 4 / 5 labels
    • selector~: improved performance
    • serial: outputs 'read 0' when there is nothing in queue
    • Shortcuts: fixed cmd + apostrophe in French keyboard
    • Sidebar: fixed crash when triple-clicking on left sidebar icons
    • stash~: mode 1 works with all sizes
    • table~: fixed issues with @size attr / attribute order
    • table~: removed inmap scaling of next increment
    • textedit: hints work when ignoreclick is set to 1
    • thispatcher: fixed window messages when inside a bpatcher
    • Toolbar Browsers: improved behavior when DB is updated
    • umenu: ‘&’ character is drawn in dropdown
    • umenu: empty items are retained in parameter enum lists
    • updown~: handles ramps of very small values
    • VIZZIE AUDIOSPLITTR: fixed usage when there is no GL context
    • vst~: embedded editor updates values when changing controls
    • Zoom: improved zoom-dependent coordinate quantization