Max 8.3 Released


    Apr 26 2022 | 5:08 pm
    We are excited to announce the release of Max 8.3!
    With 80+ new features and 110+ bug fixes, Max 8.3 offers many improvements to MC, support for 64-bit audio formats across objects that deal with audio files, adds a collection of 20+ new objects to enable creative music making with signals, and a whole lot more.
    As always, you can download the update here: https://cycling74.com/downloads
    You can check out an overview of Max 8.3 features here: https://www.cycling74.com/products/new-in-max
    For a full list of all Max 8.3 improvements, check out the change log below, or here: https://cycling74.s3.amazonaws.com/support/version_8_3_0.html
    Happy patching! Ben & Cycling '74
    New Features: • adsr~: 'triggermode' attribute • attrui: 'storeinpreset' attribute which defaults to enabled (also applies to pattr) • attrui: name and value can be saved/restored via preset / pattrstorage & can be parameterized • buffer~: 'dither' attribute for write operations • buffer~: 'readraw' message • chooser: 'keynavigate' attribute • click~: number message for scaled impulse • clip / clip~: mode attribute to zero outside of boundaries • crosspatch: patching editor for matrix-style routing objects • Edit->Copy Attributes: new menu command • File Support: exr file support • frame*~ fft objects: added 'clear' message • gate, switch, selector~, gate~: 'next' message to iterate through connections • gate~ / selector~: 'ramptime' attribute • jit.gl.cubemap: 'gamma_correction' option • jit.gl.cubemap: added 'type' and 'autotype' attributes • jit.gl.cubemap: equirectangular format import and conversion • jit.gl.light: hemisphere light type • jit.gl.meshwarp: masking mode • jit.gl.meshwarp: texture output • jit.gl.pass: @fxname gamma • jit.gl.pbr: Generate physically based rendering materials for 3D objects • jit.gl.texture / jit.matrix: image file drag support • jit.gl.texture: new colormodes (srgb, srgb_alpha) • jit.gradient.ui: GUI for creating 1-dimensional gradient matrices • jit.openexr: supports js usage, added output file attr, exr drag support, file read notifications • js: Rx256 JS extension added that uses xoshiro256 for random number generation • live.banks: added warnings to explain non-reactivity in Max-only • matrixctrl: new dialmode 2 for float gain tracking, stores cell values as floats • max-fileformats: add mTXT for objects which exclusively want a .txt file save option • MC Wrapper: 'applymessages' message to pass symbols and ints • MC wrapper: 'op' attribute (like mc.generate~) • MC Wrapper: voiceprob attribute • mc.assign: assign messages to MC objects • mc.channelcount~: signal outlet • mc.chord~: output a variable-size list of values across MC channels • mc.generate~: Generate values for a range of channels • mc.in~ / mc.out~: MC versions of poly~ signal input objects • mc.list~: 'chans' attribute • mc.midiplayer~: Generate MIDI events from audio signals • mc.pattern~: signal pattern sequencer and recorder • mc.s~ / mc.r~: aliases to mc.send~/mc.receive~ • mc.snowphasor~: control many phasors • mc.wrapper~: 'decide' message • mcs.gate~ / mcs.selector~: new objects • mcs.poly~: mcs version of poly~ • opendialog: 'path' and 'setpath' messages • Patcher Dependencies: 'savedependencies' Max preference (defaults to 1) • peakamp~: @interval attribute • pgmin/pgmout: 'zerobased' attribute to use 0 / 1 for program count base • phasegroove~: phasor-based groove-style sample playback • phasor~: 'jitter' & 'limit' attributes • plot~: 'applyfont' attribute • preset: fifth outlet that can be connected to object to capture state of attributes • qlim: usurp mode • ramp~: a single ramp triggered by a signal • random: 'classic' attribute • sah~: 'triggermode' attribute • savedialog: 'path' & 'setpath' messages • select: fuzzy attribute (fuzzy float matching) • sfplay~: 'openraw' message to open Raw audio formats • sfplay~: Support for ~5GB wave files and wave64 files • sfrecord~: @dither attribute option to apply triangular dither (TPDF) with noise shaping when writing PCM files • sfrecord~: @resample is an attribute • sfrecord~: bitdepth attribute • shape~: phasor-driven line~ • slide~ / rampsmooth~: attributized / added signal inlets • snowfall~: phasor-driven particle • stash~: store and recall audio signal values • Styles: 'Remove Unused Styles' option • subdiv~: integer subdivision of a phasor • swing~: subdivide a phasor • sync~: @rtport attribute for direct MIDI input • table~: signal table lookup • twist~: non-linearize incoming ramps • updown~: Trapezoidal function generator with constant attack and release • what~: sample triggers based on a list of signal values • where~: elapsed + predicted phasor~ time • zigzag~: 'append' & 'insert' messages • zigzag~: 'maxpoints' attribute • zigzag~: set points with function object via line message
    Fixed Bugs • amxd~: uses correct name in errors and menus • Audio Drivers: fixed delay when stopping audio • AVF Video Engine: fixed crash when image frame loaded from movie file • AVF Video engine: support for 16-bit images • chooser: fixed scrolling when using a key • click~, edge~, line~ (output only), snapshot~, peakamp~, sig~, subdiv~, what~, curve~: sample-accurate when SIAI is enabled • closebang: fixed issues with views / recursion • dict.pack: fix crash if no key is matched to inlet • dict.pack: sending name message no longer invalidates dictionary • dict.pack/unpack: outlet created when there is no argument • DSP: prevent connections that happen during load from restarting audio • Dynamic Colors: changed label of ‘live_control_fg’ to ‘Text /Icon’ • function: reduced minimum size • GL3 jit.gl.cubemap: import/conversion of exr equirectangular images, with optional gamma correction • GL3 jit.gl.gridshape: fixed cylinder end cap shading • GL3 jit.gl.gridshape/mesh: fixed tangents (auto_tangents smooth_tangents attribute option) • GL3 jit.gl.multiple: fixed crash with multiple textures and changing instance count • GL3: fixed crash on shader compilation failure when texture is bound to state • GL3: fixed lighting glitches on Apple M1 machines • GL3: fixed mesh autonormals • in~: non-MC is not multichannel • inlet / outlet assistance: fixed crash with long strings • Inspector: filter text is retained when reopening sidebar • Inspector: fixed crash with modal text editor and focus changes • jit.cellblock: exposed 'neverdirty' attribute to prevent dirtying the patcher • jit.gl.asyncread: fixed crash when input type changes • jit.gl.material: fixed broken materials in standalones • jit.gl.model GL3: matrixoutput does not output when automatic is disabled • jit.gl.multiple: fixed intermittent crash when bound to jit.gl.node and drawto set • jit.gl.texture: fixed 'thru' attribute • jit.gl.texture: setting type attribute forces type • jit.matrix: 'importmovie' reports correct file name • jit.matrix: improved native colorspace discrepancies when loading images • jit.movie AVF engine: fixed plane swapping bug on first frame (Mac M1) • jit.window GL3: fixed crash with matrix input and fullscreen • jit.window: fixed issues when exiting fullscreen when floating is enabled • Jitter GL: fixed matrixoutput assist and type for objects that don't support it • js File: fixed issues with explicit (second) open() • js: enforce .js suffix in save as dialog • js: jsglobal is appropriately deferred • js: patcher.filepath reports path to collective • jstrigger: fixed potential crash when copying • jsui: new Image from graphics context preserves alpha • jweb / CEF: fixed usage in Max for Live (Windows) • live.* ui objects: updated color code • live.banks: banks configuration is retained if device is opened and saved in Max • live.comment: linecount is preserved • live.gain~: @orientation 1 typed-in a box works as expected • live.gain~: auto-adapts when transforming to MC version • live.observer: fixed value output after opening/closing Max editor • Max Console / Event Probe: quotes are retained • Max for Live / Gen: improved fixes for intermittent crashes • Max Windows: fixed positioning in two monitor case • MC Wrapper: attrui menu works • mc.audiounit~: can instantiate • mc.function: fixed crash when recalling saved data • mc.function: handle pattrstorage interpolation more gracefully • message extra arguments warning: can locate the receiver • Message to Max: fixed ;something% (percent) crash • MGraphics "tonamedmatrix": correct alpha in Jitter Matrix / "float32" support • mgraphics: fixed tonamedmatrix drawing when not fully opaque • mousestate: improved delta mouse reporting • mtr: fixed track loop reporting in 'dump' message output • multislider: select output is not deferred • New from Clipboard: fixed amxd~ paste • OpenGL Shader editing: retains parameter state • OpenGL Status: align colors with other status windows • Parameters window: reduce float display precision • Patcher: better positioning when zooming/unzooming window • Patcher: better sorting of styles / attributes of attributes • patching: fixed crash when closing patcher while object box menu button is active • patchline colors: improve dynamic color handling • pattrstorage: 'storenext' works when there are no slots • pattrstorage: restore behavior of 'getslotnamelist' (outputs slot 0 in unflitered mode) • play~: sample accurate • playlist~: fixed menu positioning when dragging from Format Palette • plot~: definerange log actually works • plot~: fixed dictionary updating • pow~: accepts integers • Quickrecord: added WAVE filetype to savedialog • receive~: disabled 'chans' in non-MC version • reson~: fixed typed-in argument errors • RGB Music lesson: no longer crashes Max • save dialog: improve default extension behavior when a generic file type is requested • save/open dialogs: improved focus restoration • scope~: 'displaychan' attribute is preserved • select: 'matchfloat' aliased to 'exact' • selector~: eliminated erroneous MC-related error • seq: can write files with .txt extension • seq: fixed potential crash on write • seq: tempo improvements • seq: writes type 0 or 1 MIDI files • sfplay~ / sfrecord~ / sflist~: JUCE-based rewrite • Sidebar Reference: tutorials are listed by title • snapshot~ / timer: improved timing • spike~: accepts ints in right inlet • stretch~: readagain works as expected • Styles: objects no longer erroneously inherit styles from other objects • suspend: works as expected • sync~: additional timing improvments • sync~: offset works as documented • tapin~: error messages added for non-existent attributes • tapout~: unique mode works for signal inputs • umenu: improved maintaining number-like symbols • VIZZIE FOGGR: fixed changing dims • vst~: fixed memory leak • vst~: midievent is sample-accurate in SIAI • waveform~: improved drawing when patcher is zoomed • zigzag~: fixed crash with append • zigzag~: set message and setline message jumps to the end after setting list • zl.union: removes duplicates

    • Apr 26 2022 | 5:37 pm
      Thanks to all of you for all the excellent hard work and support!
    • Apr 26 2022 | 5:47 pm
      This release sounds fantastic, thanks and congrats! :-)
    • Apr 26 2022 | 6:39 pm
      This is great! Thank you very much.
    • Apr 26 2022 | 7:58 pm
      typo on new in max page. mcs~.selector should be mcs.selector~
    • Apr 26 2022 | 9:19 pm
      @TESTCASE thanks, fixed.
    • Apr 26 2022 | 9:48 pm
      HI, Thanks for this release ! There must be a bug with the 'seek' message on the 'mc.sfplay~' object. playback stops after a few seconds... thx again !
    • Apr 26 2022 | 10:06 pm
      @FRANCOIS WEBER thanks, I can reproduce the problem here, and looks to be a general issue with sfplay~ 'seek'. We will investigate.
    • Apr 26 2022 | 11:34 pm
      Swing~! Excited about mc.in~ and mc.out~, too. Looks like a great update
    • Apr 27 2022 | 7:35 am
      Quick question about the update on snapshot~. I seem to have occasionally multiple back and forth switches now when my ramp switches between a value and 0, where it used to be a single transition. Is this expected behavior?
    • Apr 27 2022 | 8:57 am
      Although snapshot~ (and other MSP -> Max objects) seems to work fine with 8.3 (more tests are needed), fzero~ still stops working after a while on my setup. See this topic where I gave some details.
    • Apr 27 2022 | 9:12 am
      This one looks amazing. All updates are appreciated, but every now and again there is one like this that has lots of innovative stuff. Thank you.
    • Apr 27 2022 | 9:20 am
      Max MSP always turns off (same if using a standalone) If you change the output device at Audio Settings in Mac. The same was happening in Max 8.2.2. Are you planning to fix this issue? Does it happens to anyone else?
    • Apr 27 2022 | 11:30 am
      crosspatch is really neat! one thing that would make it even better: the ability to remap the dials to something like -1. 1. for modulation matrix purposes, outside of the intended matrix~ or gate~ usage. working around it just scaling the values but yeah that would be a really elegant solution. thanks for the great update!
    • Apr 27 2022 | 12:41 pm
      🥰😍❤️🤓🌨
    • Apr 27 2022 | 2:22 pm
      Should turning thru to 0 on a jit.gl.texture mean that it doesn't automatically pass the output unless banged? If that's the case I can't get it working currently, it just outputs new frames no matter what thru is set at?
    • Apr 27 2022 | 2:32 pm
      super excited about this release. thanks!!
    • Apr 27 2022 | 2:42 pm
      I'm curious about what "when SIAI is enabled" means
    • Apr 27 2022 | 2:49 pm
      @Daddymax, the @thru attribute does in fact prevent output until banged, however remember that texture state is persistent on gl objects, so unless you are sending the texture output through something that outputs on input, like jit.gl.slab, it won't be clear that the functionality is working.
    • Apr 27 2022 | 2:59 pm
      @nick "scheduler in audio interrupt" ; toggle in the Audio Status panel
    • Apr 27 2022 | 3:25 pm
      @Robramirez - thanks for the explanation, I didn't know that's how it works, appreciated.
    • Apr 27 2022 | 3:31 pm
      jit.gl.texture @file xxxxxxx.jpg outputs correct dimension, but no texture xxxxxx.png works properly is it only my case? MSI GE63 Raider RGB 8RE NVIDIA GeForce GTX 1060
    • Apr 27 2022 | 3:33 pm
      oh, right! thanks
    • Apr 27 2022 | 3:47 pm
      @Sakerdon, thanks for the report regarding issues with JPG loading. I believe this issue is only with viddll engine use. We are investigating a fix. apologies for the inconvenience. For now you should be able to load JPG images properly with the read message to a jit.movie object.
    • Apr 27 2022 | 3:52 pm
      @VincentC re: snapshot~, can you post a patch or send one to Support? Thanks!
      @MISTABU we are not aware of any general issues regarding audio randomly turning off, please submit report to Support.
    • Apr 27 2022 | 4:39 pm
      Some images (not all) that I'm loading into jit.movie are coming out with the dimensions skewed, like it's been twisted? I'll make a report and send examples.
    • Apr 27 2022 | 4:45 pm
      Thanks C74! :)
    • Apr 27 2022 | 4:46 pm
      @Daddymax, that would be much appreciated, along with system and video engine 🙏
    • Apr 27 2022 | 5:07 pm
      sorry, is it possible to roll back to version 822 and keep settings? after update to 830 textures in shaders behave absolutely different
    • Apr 27 2022 | 5:08 pm
      @SAKERDON You can find Max 8.2.2 here: https://cycling74.com/downloads/older
      We hope to have a fix for this VIDDLL-only matrix/texture loading issue soon.
    • Apr 27 2022 | 5:41 pm
      thanks. Yes, I found the older version, but the question is - if I roll back to older, will all the settings and additional packages (kinect, etc.) be kept in place, the same way as they are migrating from older to newer?
    • Apr 27 2022 | 6:02 pm
      @SAKERDON this should not affect your preferences and settings.
    • Apr 27 2022 | 8:35 pm
      super great update, Thanks how do I use remove unused styles ? There seems to be a lot of pollution when looking from the help files.
      Thanks
    • Apr 27 2022 | 8:49 pm
      To remove unused styles from a patcher, go to the Format menu, then select 'Remove Unused Styles':
      This does not remove styles from your Library, just from the patcher that is active.
    • Apr 27 2022 | 10:44 pm
      Wow these are really exciting new features. !!! Thanks Cycling ppl : )
    • Apr 28 2022 | 4:32 am
      @ben bracken Yes ! it worked. Sadly I do not understand why I am still getting this bug. I have passed all my 1000s+ abstractions into the style remover patch and I still get them adding on. Hopefully this will fix it. But I doubt I'll have to the time or will to ever do that endless task again with this new fix. maybe I should. Thanks again for the nice update, been wanting attrui saved since it came out in 2012
    • Apr 28 2022 | 2:57 pm
      Thanks for all your hard work this is a really fun update!
    • Apr 29 2022 | 4:52 pm
      @Francois Weber and Ben Bracken mc.sfplay does the same anytime. I sent already a bug report...
      Besides that many thanks for great update, only missing is WAVE64 support for mc.sfrecord...
    • Apr 30 2022 | 6:10 pm
      Hi. I stumbled upon a pretty nasty bug in mc.shape~ where if curvemode is set to auto (which it is by default), it does not automatically detect "setvalue ..." commands as being curved. I woke up eager to play with this stuff this morning and first thing i did was connect this as an amplitude envelope and instead of what i expected, got massive speaker-destroying distortion.
      Here is an example patch (no dac~ involved here just some scopes~)
    • May 02 2022 | 3:14 am
      @NICK thanks for the report (non-speaker destroying version of the patch :P). The reference suggests that function must be directly connected to the object, but that still doesn't solve the problem.
      We will take a look, appreciate it!
    • May 02 2022 | 7:56 am
      Thanks for the update! Please consider the [scale] bug reported here: https://cycling74.com/forums/bug-in-scale-with-max-8-3-0/replies/1#reply-626ebea9de0fff7c0f5a1bc4
      And is there a list of all new objects?
    • May 02 2022 | 1:41 pm
      https://cycling74.com/products/new-in-max
    • May 02 2022 | 1:43 pm
      or crosspatch matrix mc.apply~ mc.assign mc.chord~ mc.generate~ mc.midiplayer~ mc.pattern~ mc.snowphasor~ mcs.gate~ mcs.selector~ phasegroove~ ramp~ shape~ snowfall~ stash~ subdiv~ swing~ table~ twist~ updown~ what~ where~
    • May 02 2022 | 1:44 pm
      thank you
    • May 02 2022 | 1:49 pm
      Large Audio File Support -> Finally!

      👏

    • May 02 2022 | 4:27 pm
      @11OLSEN We are aware of and tracking the scale bug, which was present in Max 8.2.1/8.2.2 as well.
    • May 02 2022 | 10:26 pm
      @DADDYMAX and @SAKERDON, I have just pushed an update to the VIDDLL package (v 1.2.7) in the Package Manager that I believe fixes both of the issues you reported with loading images in the 8.3.0 update. Please update VIDDLL from the Package Manager and let us know if you are still encountering these bugs. Thanks much for your feedback.
    • May 03 2022 | 6:44 am
      Yes, Now gl.texture reads .jpg properly. Thanks!
    • May 03 2022 | 3:03 pm
      I know I'm being "that guy" by saying this but it would be awesome of mc.midiplayer~ worked with mcs.vst~. In any case, thanks for all the new toys!
    • May 04 2022 | 8:47 pm
      What is siai? What was off about audio/scheduler objects? There's no second inlet in sig~? Thank you for fixing the mgraphics drawto alpha thing! Thank you for fixing the load patch restart audio thing! Thank you for the zig zag improvements! Thank you for all your amazing work!!!!
    • May 04 2022 | 9:30 pm
      @AUDIOMATT
      RE: SIAI: = Scheduler In Audio Interrupt
      RE: sig~/right inlet, that should read: spike~: accepts ints in right inlet Re: audio/scheduler objects: a lot of work was done to make many (but not all) objects that affect audio from event or events from audio "sample-accurate". Sample-accuracy is only possible when Scheduler in Audio Interrupt is enabled. In other modes, things should still work as you’re used to, with the exception of the signal-to-event objects like snapshot~ which should be far more robust but not necessarily any more “accurate.”
      Sample-accuracy is now independent of the signal vector size for many things as long as the event affecting the audio is in the scheduler to begin with.
    • May 04 2022 | 9:58 pm
      Re scheduler, like mid vector? Holy shit that’s gigantic!! How did you even do that? I’d love to hear how exactly it works. I’ve been writing a daw in max and dealing with sample accuracy while preloading buffers before the vector starts is so fricken annoying. I’ve been sending messages around mid audio computation but it’s clearly not the way max is supposed to work.
    • May 05 2022 | 7:19 pm
      Amazing! This is a great release. :-)
    • May 05 2022 | 9:37 pm
      Thanks as always. I might have found an issue though. I don't know whether it is an incompatibility with external software that I use (MUBU and dynamicdsp~ in particular) or an issue that is also recognised by others. Normally when I ask too much of MAX and the CPU is going over 50-60% in the audio status window I get crackles and pops (and sometimes audio that hangs) but when I return to a more decent use of CPU those crackles and pops disappear again. I tested in 8.2.2 and there it still works in this fashion. In 8.3.0 though, when I go back to a lower CPU usage, the crackles and pops remain and I also see the CPU spikes remaining. Turning audio off and on again, changing vector sizes and turning scheduler overdrive off and on does not help. I have to reload the patch to get rid of the issue, though I do not have to quit MAX. I have an 8-core Intel mac from 2019 and I am on Monterey. My patch is way too elaborate to be of any use in tackling the issue. I hope the description together with the knowledge that it is a new issue introduced in 8.3.0 rings a bell. Thanks in advance. Best, Hans.
    • May 06 2022 | 10:11 pm
      @hans, nothing I'm aware of should have generally affected threading behavior in this way between Max 8.3 and Max 8.2.2.
      First, I'd suggest comparing the support info for each version (especially i/o and signal vectorsizes, Overdrive, Scheduler in Audio Interrupt, et cetera). That might give a clue and/or a solution for you.
      Secondly, one thing that comes to mind regarding performance regressions that could stall out the audio thread if scheduler in audio interrupt is on, was a change to MultiSlider that has in certain cases led to much more CPU expensive processing for patches which did not assume. If you are using the select message, it will now correctly output the list with each select message. This was broken in some earlier version of Max, and restored in 8.3. If this is the case in your patches and you need that older behavior to set specific values without output of the list, please use the set message instead.
      However that last piece is just a wild stab in the dark without any clear example patch.
      If you do figure it out, and/or have a clear example patch that illustrates your issue, please let us know, since this issue otherwise isn't on our radar yet.
      Thanks, Joshua
    • May 09 2022 | 7:17 am
      Hi, What about the sfplay~ object ? I'm staying with version 8.2.2 because I need to use the "seek" message ... but, I would like to use the new mcs.poy ~. Sorry for my impatience ... Thanks again
    • May 09 2022 | 3:03 pm
      @FRANCOIS we are aware of the bug and working on a fix. Stay tuned!
    • May 13 2022 | 5:46 pm
      @Ben Bracken, checked my patch again today (after installing 8.3.1) for the snapshot~ problem I had earlier, suddenly noticed Scheduler Overdrive was on, but Audio Interrupt was off. My bad, I thought I had enable both programmed at startup, have to check that again. With Audio Interrupt on, problem is solved. Thanks anyway!
    • May 13 2022 | 6:02 pm
      @VINCENTC thanks so much for double checking and following up, glad to know it is working!