Max 9.1.0 Release Notes
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 or contact our Support team here: support@cycling74.com
Download 9.1.0 |
Release Notes
Max 9.1 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.
New Objects and Enhancements
ABL Improvements: The abl.* suite of objects now support assigning float-type attributes to an inlet using @ins, many new objects including four new “devices” (autofilter, compressor, drum buss, drum sampler) and four new lower level “dsp” components (meldfilter, meldosc, pitchestimator, transform).
Array Objects: New objects: array.deserialize, array.replace. The array.tolist object has new @stringmode options, and array.routepass/string.passcmp have additional match modes.
CEF (jweb) Update: The bundled version of CEF has been updated to v135, which facilitates the ability to zoom in the Documentation Browser, File Browser, and the Package Manager interfaces.
Codebox Improvements: New text.codebox object, as well as the ability to “transform” many codeboxes to/from its associated box object.
Core Audio System Device: New Audio Settings Input/Output option for following the “system device” on MacOS.
FFT Engine Optimization: New fft/ifft/pfft SIMD optimized implementation using the PFFFT library.
Gamepad Improvements: Joystick/DINPUT support, rawdata reporting (input as joystick data), GUID reporting to assist mapping, and an update to SDL 2.32.8.
Javascript Improvements: v8 implementations of the Rx256 Class (Xoshiro Random algorithm), ParameterInfoProvider Class, XMLHttpRequest, SQLite/SQLResult, and the SnapshotAPI, as well as Buffer Improvements, v8ui onkeydown (key input support), and JitterListener keyboard events. Added support for inline error reporting for js, v8, and v8.codebox.
Jitter FX Objects: New additions including jit.fx.camera, jit.fx.crt, jit.fx.vhs, jit.fx.cf.kuwahara, jit.fx.cf.tiltshift, jit.fx.ge.lineinterp, jit.fx.ge.pattern.
Jitter Shader #include: Support for the #include directive, primarily for JitLygia Package support.
Jitter Global Context: New Preference (enabled by default) to set jit.world context objects to belong to a hidden global context, forcing enable capture to texture. This prevents the destruction of context resources and processes whenever a window is rebuilt (most commonly via floating or fullscreen changes).
List / Text UI Objects: New messageview object to view a stream of messages, and new listbox and textbox objects.
Node v22 Update: The bundled version of Node has been updated to v22.18, which allows support of simple TypeScript translation.
OSC Improvements: New Max Preferences and Patcher attributes for OSC rate limiting, defer, and quantization. New osc.packet object to store packets, and memory safe osc_packet messages, as well as udpsend/receive rawbyte input/output functionality.
Signal-Rate Timing Objects: New objects including stepfun~, stepdiv~, stepcounter~, and event-rate stepcounter.
Tutorials UI Overhaul: "deep link" support for downloading online tutorial packages. Display of the list of tutorial patchers, the patch itself, and the text for each tutorial all in one patcher window.
Changelog
New Features
- ABL: dynamic inlet support (See Extras->Ableton DSP Objects-Dynamic Inlets tab)
- abl.device.autofilter~: Classic analog filter emulation.
- abl.device.compressor~/limiter~: envelope output
- abl.device.drumbuss~: An analog-style drum processor
- abl.device.drumsampler~: sampler with various effect processors
- abl.device.echo~: repitch_smoothing_time attribute
- abl.device.roar.modulation-matrix.maxpat: modulation UI abstraction / helper
- abl.device.roar~: 'delay' routing option
- abl.device.roar~: get modulation matrix state dict from third outlet
- abl.dsp.meldfilter~: Meta-filter with fourteen modes
- abl.dsp.meldosc~: Meta-oscillator with twenty-four modes
- abl.dsp.pitchestimator~: frequency detector
- abl.dsp.stereolfo~: added 3 new waveforms
- abl.dsp.transform~: Signal transformer
- array.deserialize: new object
- array.replace: new object
- array.routepass/string.passcmp: additional match modes
- array.tolist: add option to @stringmode to output strings as atoms/numbers
- array.tolist: rename prefersym -> stringmode
- Audio Driver: new CoreAudio system device option
- buffer~: chans / sr attributes
- CEF / jweb: Update to CEF 135
- chooser / crosspatch: icons added to object palette
- delay: transport attribute for sync with named transport
- Doc Browser: object attribute alias are shown on ref pages
- ESC key: improved handling in object, message and comment
- expr / vexpr: added noise()
- fft~ / pfft~: max size increased to 1048576
- Find: return results for some objects that load files (bpatcher, attrui, textbutton, jsui/v8ui (filename), playlist)
- function: constrainpointchanges attribute
- function: fixed points are square
- gamepad: rawdata / guid output features
- gamepad: report GUID AND SDL versions
- gamepad: support for joysticks and DINPUT devices on Windows
- gamepad: updated SDL to v2.32.8
- gen (event): set message to set without output
- gridmeter~: shape attribute
- Illustration Mode: added preference to set speed (1-10, defaults to 5)
- Inspector: dot indicator when attribute is "non-default"
- Inspector: double-click on label resets value to default
- jit.fx: new objects (camera, crt, vhs, cf.kuwahara, cf.tiltshift, ge.lineinterp, ge.pattern)
- jit.gl.grab/movie: new objects (defines with @output_texture 1)
- jit.gl.picker: mouseout notification
- jit.gl.pix/slab: filter attribute
- jit.gl.shader: #include functionality
- jit.polymovie / jit.gl.polymovie: autorestart attribute
- jit.pwindow: high resolution display support when drawing matrices
- jit.pworld: auto_handle gizmo attribute
- jit.spill: increased list out to 32767
- jit.ui.number: minimum and maximum attributes to limit value range
- jit.world: global context (enable via Preferences->Jitter->Enable Global Context)
- js / v8 / v8.codebox: support for inline error reporting
- js / v8: JitterListener key events
- kslider: converts negative notevalues to positive (a la nslider)
- Left Toolbar Browsers: "My Files" filter for many browsers
- listbox / textbox: new objects (aliases to number format modes)
- mc.channelcount~: active attribute
- messageview: an object for viewing a stream of messages
- mgraphics: mgraphics_svg viewbox attribute
- Node for Max: v3.0.3 (bundles Node v22.18)
- Object box: text can be utf8
- OSC: global and patcher prefs to control rate-limiting for OSC i/o
- OSC: paraminfo object is not created of parameter does not exist
- OSC: support for different time notations
- osc.packet: new object to store OSC packets
- Packages: added package_extra key "openhomepatcher" to open the launch patcher
- Packages: .c74_forceload file to prefer package to load
- param.osc / udpsend/receive: osc_packet message
- param.osc: FullPacketmode attribute to support transition to osc_packet message
- param.osc: outputformat attribute a la osc.packet and udpreceive
- Patcher JSON: improved JSON formatting (backwards compatible)
- Patcher List View: new Missing Objects filterPaths: Print message to Console if slash or colon is in macOS root volume name
- pfft~: new implementation using PFFFT library
- Plug-in Toolbar Browsers: option on option+drag to make object boxes
- poly~: assignpatcher message for individual patcher loading
- preset: ignoreconnected attribute to ignore objects connected to inlet
- preset: ignoreemptyinterp to ignore multinterp messages 1 2 3 4 etc
- Projects: files used in dict are treated as dependencies
- regexp: @legacyoutputorder attribute (defaults to on for old patches, off for new)
- RNBO: v1.4.2
- Search: online tutorials integrated into search results
- shape~: syncupdate attribute
- stepcounter / stepcounter~: new objects to count steps in a sequence
- stepdiv~: new object to generate phasors for each step of a function
- stepfun~: new object to generate a function sequenced by input phasors
- tab: increased limit to 10000
- tab: number / set flashes tab in button modetable: @setresizes attr resizes table when receiving set message / preset data
- text.codebox: new object for string object construction
- thisobject: new object to monitor and control named objects
- Transform menu: dict/coll/node.script/text/v8 to codebox versions, js/ui->v8/ui, etc.
- Transform to bpatcher: uses openrect of loaded patch
- translate: listmode attribute to translate lists
- udpsend/recieve: support for rawbytes
- v8 XMLHttpRequest: new implementation
- v8: allows default string for assist with index -1
- v8: assist via function support
- v8: Buffer improvements (get/setname, get/setattr, create)
- v8: implemented rx256 class (Xoshiro256+ random number generator)
- v8: initial implementation of SnapshotAPI
- v8: initial implementation of SQLite / SQLResult
- v8: ParameterInfoProvider implementation
- v8: support for declareattribute 'default'
- v8ui: onkeydown function (key input support)
- Zoom: Package Manager, Doc Browser, File Browser support
Fixed Bugs
- ABL objects: improved reference pages
- ABL phaser-flanger objects: fixed LFO waveform setter
- ABL: signal input appropriately clamped
- abl.device.compressor~: fixed initialization
- abl.device.delay~: fixed @filter_width range
- abl.device.delay~: min/max delay times are reported
- abl.device.redux~: fixed range limits for @post_filter_octave
- abl.device.roar~: fixed modulation functionality
- abl.device.utility~: @gain has maximum 35 dB as in Live device
- abl.dsp.euclid~: pulses setter and signal input ranges for steps/pulses
- abl.dsp.phaser~: fixed @warmth default
- abl.dsp.squaresync~: fixed attribute setters
- abl.dsp.stereolfo~: @spin disabled when not supported
- abl.dsp.stereolfo~: fixed reset
- abl.dsp.swarm~: fixed inlet count
- abl.dsp.tides~: fixed range for @phase
- abl.dsp.transientdesign~: attributes are appropriately limited
- amxd~ / node.script: improved unfreeze behavior
- amxd~: fixed crash during undo/redo
- amxd~: fixed MIDI input and fixed crash when getting port
- array.routepass: fixed crash when sending array to second inlet
- array.routepass/string.passcmp: misc iteration/matching improvements
- Audio Drivers: fixed potential crash when coming back from sleep
- Authorization: fixed issues with window focus
- autocomplete: fixed whitespace issues
- bpatcher: new view updates after closing the original
- buffer~: fixed 'writeraw' channel handling
- buffer~: fixed bogus format specified with raw float32 write and read
- buffer~: fixed raw float32 write and read mismatch
- CEF / Max for Live: fixed crash when Max is launched from Live (Win only)
- chooser: preview works for files outside of Max search path
- click~: sample accurate in amxd~ loaded in Max
- coll: numeric symbls are quoted in the editor
- Color Panel: eyedropper is accurate (MacOS)
- comment: fixed spacing / alignment (Win only)
- crosspatch: fixed crash when changing state via preset
- curve~: fixed linear discrepancy with line~
- Dependency Cache: removed from saved patches
- detonate: fixed crash on write
- detonate: MIDI import does not corrupt shared data
- dict: fixed issues when retyping @name
- dict: string conversion performance improvements
- dict.codebox: UI reflects @name change
- dict.codebox/coll.codebox: fixed issues with typing attributes into box
- dict.iter: prints correct value when key is "time"
- dict.pack: fixed potential crash on deletion after setting name to existing dict
- dict.pack: improved parsing of box test
- dict.pack: triggers output with changes to base dictionary inlet
- dict/array/string: threadsafety improvements
- File Save: dialog shows relevant file types
- Font Panel: opens and closes via cmd+t shortcut
- Format Palette: able to change text color of an object
- fpic: svg rendering does not use x/y viewbox offset
- freqshift~: outputs zeroed when unused
- function: error message for 'target 0' usage
- function: improved thread safety (potential fix for crashes)
- function: paste works with setvalue
- Gen history: does not allow illegal names
- gen~: assistance works before first compile (still requires audio to be on)
- genexpr: fixed syntax coloring for functions
- grab: works across outlets
- Illustration Mode: improved button / textbutton blink behavior
- iLok: improved behavior when checking for InterLok software
- in/in~/out/out~: "@c" is alias for @comment
- Inspector Color palette: updates after attribute paste
- Inspector: disallow invalid drags to RNBO / Gen patchers
- Inspector: fixed crash when return key pressed when color popup is visible
- Inspector: inspector shows OSC attributes after authorization
- Inspector: Set Attributes to Default Values no longer de-italicizes labels
- jit.anim.drive: fixed up glitchy mouse animations
- jit.cellblock / dialog: fixed unexpected interaction on macOS
- jit.cellblock: initialization performed before object is drawn
- jit.gl: patch cord type adjusted when matrixoutput not enabled
- jit.gl.*: attribute cleanup
- jit.gl.camera: fixed PBR lighting when attached to anim.node
- jit.gl.cubemap: correct orientation in skybox and reflections
- jit.gl.environment: fixed matrix input sent after cubemap input
- jit.gl.environment/skybox: fixed intermittent exr rendering breakage
- jit.gl.light: fixed shadow glitch when orienting along certain angles
- jit.gl.lua: all messages are deferred
- jit.gl.material: clamps alpha values
- jit.gl.material: doesn't show invalid MOP attrs/messages
- jit.gl.material: lighting_enable and auto_material reset on material disable
- jit.gl.meshwarp / jit.ui: draws to captured context
- jit.gl.meshwarp: fixed pattrstorage restore on loadbang
- jit.gl.multiple: improved interaction with pbr and material
- jit.gl.multiple: instance color support when bound to jit.gl.pbr
- jit.gl.multiple/pbr: fixed when pbr bound to multiple and non-multiple object
- jit.gl.node: fix for long type capture targets
- jit.gl.node: fixed non-automatic drawing crash
- jit.gl.pbr: fixed crash when connecting jit.gl.multiple
- jit.gl.shader: binding same param to different programs properly sets default value
- jit.gl.shader: getparamdesription returns full string
- jit.gl.shader: improved filewatch and param restore behavior
- jit.gl.skybox: fixed state bleed
- jit.gl.slab: clamp input/output counts to 32
- jit.gl.slab/shader/pass: report error on unsupported attribute in object box
- jit.gl.text2d: fixed non-automatic capture
- jit.gl.texture (VIDDLL): fixed file reading of movie file
- jit.gl.texture: fixed "can't copy unshared resources" errors
- jit.gl/phys.multiple: param attribute error for unsupported params
- jit.matrixset (VIDDLL): improved importmovie / outputmatrix behavior
- jit.movie (AVF): fixed 'framedump' usage
- jit.movie (AVF): images no longer imported with blue tint
- jit.movie (AVF): no longer crashes after changing dims
- jit.movie (VIDDLL): fixed playback issues with palindrom looping
- jit.movie (VIDDLL): imports still image with proper orientation
- jit.movie (VIDDLL): loop and time improvements
- jit.movie: removed frame/jump_true variants, added frame/jump_coarse variants for avf engine
- jit.movie: time attributes update when playing
- jit.openexr: fixed write function when passed a full path
- jit.time / jit.mo.time: removed ui_priority attribute
- jit.ui: improved mousing interaction
- jit.ui.canvas: fixed crash when deleted / recreated
- jit.ui.group: respects “ignore_click” attribute
- jit.window / jit.pwindow / etc: fixed flickering when resizing (Mac)
- jit.window / jit.world: fixed invisible windows grabbing desktop space when fullscreen (Mac)
- jit.window / jit.world: fixed size / pos issues in Max for Live
- jit.window: rect can be set when when visible is 0
- jit.window: removed colormode attribute
- jit.world: fixed "couldn't get context" errors
- Jitter Examples: jitterlistentest-example & jitter-gui-sliderexample work with glcore
- Jitter GL: fixed method setup_light called on invalid object warning
- Jitter GL: improved layer order persistence
- Jitter GL: removed shared attribute, contexts are always shared enabled
- Jitter Objects: @file attribute updates when saving a new file (ie jit.gl.shader)
- Jitter Openexr: improved support
- Jitter Video Engine (AVF): misc playback fixups
- Jitter Windows: mousing now reports leaving context window
- js/jsui: retain param data across save/restore
- jweb: fixed crash on click when no url is loaded
- Left Toolbar Browsers: path eliminated from returned name if in search path
- live.adsrui: fixed crash with negative domain_exponent
- live.banks: changes are correctly displayed on Push after save
- live.banks: fixed duplicated restoration
- live.menu: fixed dropdown coloring in LCD mode
- live.menu: increased max items to 256
- live.routing: handles tracks with slashes in their name
- live.scope~: annotation_name field
- live.scope~: fixed crash on inf
- live.scope~: improved drawing with audio off
- live.scope~: redraws after scheduler restart
- matrix: improved thread safety
- matrix~: fixed crash on invalid dict input
- Max Database: improve behavior when there are files of the same name, type, and kind
- Max Database: performance improvements
- Max for Live Project: dev path attrs are disabled if the device is unsaved
- Max for Live: fixed potential issues with Live set export
- Max Tour: improved Max tour inhibition when prior launch crashed
- Max UI: pop up menu colors come from theme
- maxdb: fixed potential crash on startup
- MC wrapper: wrapper messages are reapplied after channel count increase
- MC: functions can have default values
- mc.abl.*: works in collectives/devices/standalones
- mc.live.scope~: fixed usage
- mcs.gen~: extra inlets set to zero
- menus: fixed 'sysmenu_cmdid_set: id out of range' error (Windows only)
- MIDI Mapping: outputs correct MIDI before it receives external input
- MIDI: fixed device update on plug/unplug/sleep (Win only)
- node.script: fixed memory growth when sending large amounts of data to node.script
- OSC: only created in a valid editable patcher
- OSC: works in standalones
- osc.codebox / osc.packet: fixed memory leak
- osc.codebox: fixed 'clear' message
- osc.codebox: fixed potential NULL-termination bug
- osc.codebox: prints multiple copies of the same address
- panel: fixed crash when setting bgfillcolor with array
- panel: improved shadow attr enable/disable logic for inspector
- Param Connect: enum improvements
- Param Connect: short name is not changed if long name matches
- Parameters window: fixed crash with editing name
- Parameters Window: value updates when changed with mapping
- Patcher title bar: titles containing only numbers are rendered
- Patcher Zoom: constrained pinch-to-zoom and unified zoom constraints
- Patcher Zoom: fixed crash on zoom out with small patcher grid size (Win)
- Patcher Zoom: improved grid render speed (MacOS)
- Patcher: ensure window views become frontmost when double-clicking
- Patcher: improved grid rendering
- Patcher: most default valued attributes are not unnecessarily saved
- Patching: fixed potential crash with deletion of outlets
- Paths: Fix crash if root volume name is longer than 64 characters
- Paths: improved behavior with OneDrive-managed paths (Win only)
- Paths: improved documentation on all available Max paths
- Paths: Patcher prefix works when patch is not topmost
- pattrhub: fixed 'getstate' object output for dict, array, string
- pfft~: fallback to legacy fft algorithm if fftsize is 16 to avoid crash
- phasor~: outputs zero on transport off
- pictctrl: "tracking" attribute off now doesn't do any tracking
- pictslider: eliminated error with parameter type Float
- playbar: clamps looppoints drawing
- poundsign / changeable arguments: fixed junk characters at end of box text
- Preference: improved value ranges for some preferences
- preset: interpmulti works for attributes
- preset: loads json in older patches
- preset: restores slot from pattrstorage on initial loadbang
- print popup: moves when parent windo is moved
- Project: disclosure state preserved for category headers and items
- record~: fixed crash on record with small buffer sizes
- regexp: converts substring/capture group strings to atoms after substitution
- repl: fixed potential crashes
- RNBO Sidebar Reference: updates appropriately in help patchers
- RNBO Target Export Sidebar: individual target views load
- Set Colors To Default Values: works as expected in Max for Live
- sfplay~: improve timeout errors
- sfrecord~: fixed ramping for 16-bit and 24-bit files
- sfrecord~: integer formats are no longer clipped (read/write improvements)
- snapshot~: fixed minimum sample interval constraints
- snapshot~: fixed setting minimum interval with audio on
- Standalone: added required Theme and JS resources
- Standalone: icon supports any valid path
- Startup: logging improvements
- string.fromutf8: fixed crash with invalid utf-8 when Max Console is open
- string.regexp: allocate objects & strings even if there are no arguments
- string.regexp: fixed crash with substitute %0 and quotes in box
- Styles: selecting "clear style" resizes object when font was changed
- subpatcher: @showontab works when set as an argument or a message
- subpatcher: fixed unexpected window activation when saving
- subpatcher: save works from subpatcher of unsaved top-level-patcher
- subpatcher: UI works after minimize and close
- Syntax Highlighting: support for octal, binary, underscore, and big number suffix
- Tabbed Patchers: fixed potential crash (Windows)
- text: line and dump message optimizations
- Text: tab is replaced with four space (fixes render issues)
- textbutton: improved text color attr enable/disable logic for inspector
- thisobject: fixed connections with attrui
- thisobject: fixed crash when clicking on object action menu
- thisobject: fixed issues with connecting to recieve object
- thispoly~: fixed for small vector sizes not working with automute
- Toolbar meter and power button: tracks tab / subpatcher with audio on
- Toolbar: improved pin color with lighter Themes
- Tour: does not load on startup if prior launch crashed
- UI objects: Info View Title field works in Live
- umenu: prefix saves Package:/ type paths
- v8 / v8ui: fixed error on Max for Live device freeze
- v8 arraywrap: fixed MaxArray.at() array contents corruption
- v8 declareattribute: fixed errors when using param connected objects
- v8 dict setparse(): fixed issues with arrays of dictionaries
- v8: added patcher drag of .js files
- v8: fixed 'bad object' error
- v8: fixed additional memory leaks
- v8: fixed crash when declarattribute and setter function has same name
- v8: improved fix for crash with max.frontpatcher when Max is in the background
- v8: jstask is freed properly during callback
- v8: support for user functions named 'read'
- vexpr: fixed crash
- VIDDLL: fixed crashes when writing a frame/closing the encoder
- VIZZIE: compositors output if input is received in any inlet
- VIZZIE: fixed issues with instantiating modules when fullscreen (Mac only)
- VIZZIE: TECHNICOLORBR and POSTERIZR accept matrix input
- vst~: fixed potential windowing crash
- vstscan: works in Max for Live
- waveform~: always gets sample rate changes from buffer~
- Windows: fixed patcher toolbar lock icon when window is in background
System Requirements
Intel
- OS 11.0 or later
- Intel® Core™2 Duo processor. Intel® Core™ i5 processor or faster recommended
- 4 GB RAM (8 GB or more recommended)
- Approximately 3 GB disk space on the system drive for basic installation
Silicon
- OS 11.0 or later
- Apple Silicon processor
- 4 GB RAM (8 GB or more recommended)
- Approximately 3 GB disk space on the system drive for basic installation
- Windows 10 (version 22H2) or Windows 11 (version 22H2 or higher)
- 64-bit Intel® or AMD multi-core processor. Intel® Core™ i5 processor or faster recommended
- 4 GB RAM (8 GB or more recommended)
- Approximately 2 GB disk space on the system drive for basic installation
System Requirements
Intel
- OS 11.0 or later
- Intel® Core™2 Duo processor. Intel® Core™ i5 processor or faster recommended
- 4 GB RAM (8 GB or more recommended)
- Approximately 3 GB disk space on the system drive for basic installation
Silicon
- OS 11.0 or later
- Apple Silicon processor
- 4 GB RAM (8 GB or more recommended)
- Approximately 3 GB disk space on the system drive for basic installation
- Windows 10 (version 22H2) or Windows 11 (version 22H2 or higher)
- 64-bit Intel® or AMD multi-core processor. Intel® Core™ i5 processor or faster recommended
- 4 GB RAM (8 GB or more recommended)
- Approximately 2 GB disk space on the system drive for basic installation