Max 8.2 Released With Native Apple Silicon Support

Ben Bracken's icon

We are happy to announce the official release of Max 8.2!

Along with over 60+ new features and 250+ bug fixes, Max 8.2 is also the first version to natively support the latest Apple Silicon based Mac computers.

We have also released an updated Max SDK, which third-party externals will need to be recompiled with in order to provide native support for this new architecture.

If you are on an Apple M1 machine, and need to use 3rd party externals that have not been updated for this new architecture, you can run Max 8.2 in Rosetta 2. In the Finder, select the Max.app, then go to File->Get Info and select "Open using Rosetta" in the Info window.

Take a look at the detailed list of New Features and Bug Fixes here:
https://cycling74.s3.amazonaws.com/support/version_8_2_0.html

You can download the Max 8.2 update here:
https://cycling74.com/downloads

To recap, here are some of the key improvements in Max 8.2:

Mac arm64 support
The most notable addition, this brings native support for the latest Apple Silicon-based Mac computers.

CEF Update
We've updated our shipping version of Chromium Embedded Framework to CEF 90.

Dynamic Colors
To make the colors in your patches and devices more responsive to the environment they find themselves in, we've added the ability to reference Max / Max for Live application colors via static names that automatically adjust to follow the active Max/Max for Live color themes.

Documentation Browser Updates
The Documentation Browser has a new home page, spiffy new navigation tools (breadcrumbs, open in browser, sidebar tweaks), and a brand new Glossary of Max terms.

live.adsr~ / live.adsrui
These are two new objects for generating and visualizing sample-accurate Attack-Decay-Sustain-Release envelopes.

Improved Random Numbers
Some objects now take advantage of a new random number generator implementation that is more efficient and has improved statistical qualities. Some of the affected objects include noise~, noise in Gen, random, drunk, decide, urn, and live.step.

Node for Max Update
The shipping version of Node has been updated to v16.6.0.

Jitter Tools Package
This package is a collection of tools that we think almost any Jitter user will want to take advantage of. Currently, this package features three tools: jit.gl.textureset (a texture version of jit.matrixset), jit.polymovie and jit.gl.polymovie (polybuffer type objects for movie files), and jit.gl.meshwarp (customizable grid of points to control the shape of a mesh and associated texture).

loadbang on paste / Re-initialize
There is a new preference called 'Edit Operations Trigger Loadbang', which allows for loadbangs to be fired when pasted. There is a new entry in the Edit menu, 'Reinitialize', which will fire loadbang and loadmess objects in the parent patcher all the way down the patcher hierarchy.

Thanks to all of you who downloaded and tested the Max 8.2 beta, we were glad to catch a number of bugs that we would have missed otherwise!

Happy patching,
Ben & Cycling '74

MAX.XAM's icon

Thanks C74! 👍

Andy Maskell's icon

Great to see another update. However, I appear to have encountered a major bug already. The patcher I’m working on is pretty complex but has worked fine until the Max 8.2 release. Now, if I create a new object and start to add links to other objects, Max locks up. Interestingly, if I minimise and maximise the window, it all starts working again but any attempt to add a new link causes another lockup. I’ve had to go back to v8.11, which still works fine.

Ben Bracken's icon

@ANDREW I recommend filing a bug report with Support so we can track down what you are experiencing:
https://cycling74.com/support/contact

schlam's icon

@ANDREW : same here.

Ben Bracken's icon

@SCHLAM If you have some repro steps, do drop Support a note as well. The more info we have, the quicker we can assess and fix. Thanks!

schlam's icon

it's very hard to reproduce...some times...I don"t know why/how (but it is too a big patch) when I want to connect two objects : max hangs. Minimizing / remaximazing the window makes all going good..until the next time..
It happens 3 times in 10 hours of work... (never saw that on 8.1.11.)
I will try to isolate..

daddymax's icon

Wonderful - some exciting stuff in this one. Thanks for always getting us new updates :)

Joshua Kit Clayton's icon


@andrew and @schlam For any hangs, if you are on Macintosh, please also send to support a sample of the process via activity monitor (good instructions here). This can still be very helpful for hard to reproduce situations. For windows, explicit reproduction steps are likely necessary.

Thanks for helping us track down these issues!

Andrew's icon

fantastic work team!

Ernest's icon

Well I finally got to trying out the mc.gen~ object. Is there a way to control whether it runs on multiple cores?

I can't say my experience with mc.gen~ was very good. Any code error at all required me to restart the app, and each time I had to copy the codebox into a code editor and restart Max, because if the error was for example a mistyped variable name, it would wipe out the gen object entirely. I started getting a 'freeing zero signal/" message which I never saw before. When I have it in poly~ I don't get that message. Also I couldn't set the number of instances to one without another similarly disastrous crash.

By the time I went through all that, I ended up switching back to a poly~ object again. I don't get any fatal crashes when editing the same codebox in a poly~ object.

I'm a little sad, because I know how much work Cycling74 put into the mc wrappers and I would have liked to try them out some more. What I did find is that the "setvalue" message works consistently across both, so at least the implementation make it easy to switch between the two. The only difference is that I have to send a bang to a thispoly~ object to get the instance number reported by mc_channel, and when my codebox reached more than a thousand lines I had to send a bang from the main patch delayed by a couple of seconds after loadbang for the gen~ object to be compiled and receive it properly.

tyler mazaika's icon

There's a significant (3x at minimum) performance regression setting parameter values in vst~ objects. Bug filed.

@Joshua/Ben re: samples: I added some samples to my bug because some difference in the call stacks seemed relevant. But I had to copy-paste them as text into the "Notes" field because there doesn't seem to be any way to attach files. Is that really the best/only way to do that?

tyler mazaika's icon

I also had an extremely alarming thing around the first time I ran 8.2.0. I can't say for sure it's 8.2.0 but the proximity to it's install is highly fishy and fortunately it has not happened again.

I was working on a project that I'd been using for ages, and when I clicked the project window to open one of it's sub files and error showed in Max console saying the file couldn't be found. So I tried another file and same deal. I looked in Finder at the project folder and while I was perusing the folder the entire folder got deleted. It wasn't in my system Trash, and searches on my system could find it (in case it had been moved). It's more like it was rm -rf'd (but there also isn't any suspicious terminal history). I was able to restore with a git reset, but could have been deeply hosed if not for that.

Again it's a highly weird, one-time thing and don't know for sure that 8.2.0 is the culprit, but in case it's not a complete 1-off I thought I'd mention it here...

Roman Thilenius's icon

you can trust noone, not even yourself. always make backups.

Benjamin Whateley's icon

very pleased with the live.adsr objects thanks! (:

sean charity's icon

. Some Coll issues ,, my large patch crashed on save , then I couldn't mouse state as a midi controller anymore ,, opened in rosetta helped for 3rd party extensions ,, but I just went back to 8.11 ,, everything ok,

Joshua Kit Clayton's icon

Hi Sean,

Thanks for giving 8.2 a spin. If you could take some time to try and reproduce your crashes and issues with 8.2 and send reports for any issues into support, we'd love to fix them :)

https://cycling74.com/support/contact

Thanks again,
Joshua

sean charity's icon

you guys are great , I'm going to finish a song first, make sure laptop is current with apple , looks like I'm behind on Big Sur updates etc , start fresh in a week or two , , thanks

Meludia's icon

There are some packages that were not yet compiled to the M1 architecture yet - "bach" for example...

Would it be possible to either:
- load the packages through rosetta (I think that would be complicated or even impossible)
- Install an Intel version of Max 8.2 in my apple silicon chip. (so as to load correctly the external packages)

(I've already filed an issue about it!)

Jony Carles's icon

Awesome job guys !!

Joshua Kit Clayton's icon

@andre For Intel only packages, I would recommend running Max 8.2 under rosetta.

Max 8.2 is a Universal Binary, which means it has both Apple Silicon(M1) and Intel versions of the application bundled into the same application. To run the intel version, simply get info on the Max application and select "Open using Rosetta".

If you'd like to have an easy way to run Apple Silicon and Intel versions of Max without every time changing that setting, you should be able to duplicate the Max application, and rename it to something like "Max Intel", and only change the "Open using Rosetta" for that copy of the application.

Meludia's icon

@Joshua thanks for the advice! Now everything works

foldh's icon

Just installed the update and am experiencing some strange behaviour with the Audio, Video and Image menus in the left sidebar.

The Audio file names are only visible for about half a second before disappearing. When opening either the Video or Image menus the scroll bar on the left continuously jumps down to where the arrow is on the attached image then back to the top.

I'm having a similar problem with the File Browser. I can only drag the scroll bar part way down through the various lists before it snaps back to the top.

I'm thinking the two sets of problems are related but I have no idea how to remedy this.

Current release MAX/Windows 10.


Ben Bracken's icon

@FOLDH Are you running GL3 or GL2 video engine? I'd recommend trashing Max's preferences, found here:
~/AppData/Roaming/Cycling '74/Max 8

If that doesn't help, please drop a note to Support:
https://cycling74.com/support/contact

foldh's icon

Thanks Ben. I'm using OpenGL3. Trashing the Settings folder (I don't have a preferences one) seems to have done the trick, thanks!

mistabu's icon

Any plans to support Windows 11 soon?

Artur Dobija's icon

Hello! Thank you for the update. I noticed that the comments describing inlets and outlets when highlighted by the cursor do not appear any more over objects...

Ernest's icon

Ben, I am having a problem with multiple output-gates in gen~ codebox. I can't get it to work. I tried

out1, out2 = gate(in1, 2);
out1, out2 = gate(2, in1); 
out1, out2 = gate(in1, 2, choices=2);  
out1, out2 = gate(in1, 2, choices="2");
out1, out2 = gate(2, in1, choices=2);  
out1, out2 = gate(2, in1, choices="2");

No compile errors are reported, but the second output remains zero whatever I do. There's 16 outputs I need to route to, there isn't another method that can do it without a huge if statement, and it's inside a conditional statement, so I can't use the GUI version.

Am I doing something wrong, or should I file a bug? Or maybe it couldn't be any more efficient than a giant if statement anyway, what I now have is:

// out1 contains output and out1~out16 are 15 channel outputs
if (chan>0){
        if (chan ==1) out2 = out1;
        else if(chan ==2) out3 = out1;
        else if(chan ==3) out4 = out1;
        else if(chan ==4) out5 = out1;
        else if(chan ==5) out6 = out1;
        else if(chan ==6) out7 = out1;
        else if(chan ==7) out8 = out1;
        else if(chan ==8) out9 = out1;
        else if(chan ==9) out10 = out1;
        else if(chan ==10) out11 = out1;
        else if(chan ==11) out12 = out1;
        else if(chan ==12) out13 = out1;
        else if(chan ==13) out14 = out1;
        else if(chan ==14) out15 = out1;
        else if(chan ==15) out16 = out1;
        out1 = 0;
    }

Ben Bracken's icon

Your first example will work up to 15 channels, as the gate operator only allows 15 outputs. You should be seeing a compile error with choices > 15. FE, this works:

Max Patch
Copy patch and select New From Clipboard in Max.

But if you change gate's choices to 16, it will break compilation. Is that what you see?

FWIW, we do have a ticket open to increase this limitation.

Ernest's icon

Your example works. I'm not seeing any compile errors, which is probably because it's inside an 'if' clause, as you probably know errors inside if clauses are difficult for the compiler to see. Thanks for saving your QA team.

I'm a little distracted because I recently started having another problem that random poly voices make no sound--even with only two voices, sometimes the second instance makes no sound. I'm not entirely suprised because it's a very big piece of code in the poly~, and it takes about a second to compile. All the voices work if I put the same code in an mc.poly~ object, but mc.poly~ doesn't support parallel processing so I rapidly get dropouts from dsp overloads with more than 12 voices on mc.poly~. Also, mc.poly~ makes stuttering noises if I start a browser or other app while it's running, so I'm kind of stuck with using poly~ now. Im on Windows 10. I tried Max 8.1 and the same random voices make no sound. I tried setitng 'local' but that made no differnece. I'll try commenting out things for a couple of days to see if I can find if anything in specific makes a difference.

Ernest's icon

Well I checked on an old Mac mini running Mojave and it works fine, so I could have a hardware problem. Im running memory and disk diagnostics, and if I don't find any hardware errors I'll send a trimmed version to your tech support team in a couple of days. Thanks again for the help.

Ernest's icon

Sorry about that. It was a virus using my machine to host torrent files, hiding under the audio processing. All's good now, sorry for the panic buttons!

Dominik Ostrowski's icon

I've had to immediately regress to 8.1.11
The moment I turn on audio with the bottom-right click button *everything* locks up. Audio plays, and will play out to the end of the track - but the moment I click that button, I lose *all* interaction with Max, and it does not return.

On downgrading to 8.1.11 the issue entirely disappears.

Joshua Kit Clayton's icon

@dominik Thank you for the report. Please contact support with detailed information about your platform machine and audio driver settings, so we can fix this:
https://cycling74.com/support/contact

OCH's icon

I've been experiencing ever more regular cpu usage spikes and hangs with Max 8.2. I reported yesterday to support with a video showing a (very silly, but always consistent) example of this being triggered.

(@Joshua Kit Clayton
Are you able to let us know if an update/fix is about to come out? Else I will really need to figure out downgrading Max in the next couple days.)

edit: just sent process sample following your linked instructions here.

Dominik Ostrowski's icon

@Joshua Kit Clayton - bug report filed, and in a very fast response they asked me to try out a new 8.2 Beta.

This completely fixed my issue (although being Beta it has other issues) - so I'll await an official new version.

The underlying issue is apparently Windows-only - and when using large patches (e.g. lot's of FFT's!) - causes lock-ups on 8.2