Max 8.6.0 / RNBO 1.2.4 Released
We are happy to announce the release of Max 8.6.0 and RNBO 1.2.4!
You can download the update here:
https://cycling74.com/downloads
Below are some of the highlights for this release, as well as change logs for a complete list of improvements. Please note that many of the new Max for Live features require the use of Live 12.
The Max 8.6.0 release page can be found here:
https://cycling74.com/releases/max/8.6.0
The RNBO 1.2.4. release page can be found here:
https://cycling74.com/releases/rnbo/1.2.4
Happy patching!
Ben & Cycling '74
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.
Max 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
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
Max 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
RNBO New Features
fade~: alias to line~ @keepramp 1
RNBO Fixed Bugs
ftom / mtof: @ref & @mid of 0 work as expected
Gen in RNBO: functions with multiple returns are appropriately destructured
Max Extern Target: fixed MIDI / event output issues in Max for Live devices
metro: improved timing and eliminated double-bangs
midiformat: fixed pitch bend and midi channel inlets order
RNBO Arrays: initialization performance improvements
scala.scl, mtof: support for ableton’s .ascl directives, documentation coming
Scala: archives updated (version 91, May 2022)
subdiv~: fixed issues on intialization/reset/dsp restart
translate: fixed initialization when there are no arguments
transport: fixed outlet ordering (right-to-left)