An option to allow multi-processing doesn’t by itself distribute a process across all available cores.
There are three ways multiple cores can be used:
-
At the operating system level, the operating system itself and all the launched applications could use different cores so they’re not competing for one while leaving others idle. The OS will do this on its own. So having Firefox run at the same time isn’t that bad, as the OS likely keeps it on a different core than Nuendo. Unless the system is totally maxed out. But I have yet to max out my Mac Studio, it’s not that easy.
-
Large applications like Nuendo often spawn multiple background processes to do certain tasks. These are literally separate processes and can easily be put on a different core by the operating system. That’s what background renders, and all kinds of things like wave form generation fall into.
-
The main process (or any background process) can decide to start multiple threads for a certain task. There’s no limit how many threads a process can spawn and give work to do in parallel, with each of those threads running on different cores.
The first caveat is that this is on a per task basis. So each task (a plugin algorithm like reverb), the main render engine that coordinates a render, and individual track render that processes all the automation for volume, pan, etc. are all tasks. Just because you allow the application to multi-process, doesn’t automatically make each task multi-threaded. A software developer actually has to think about how to best do it and write the code for it. As some applications and plugin go way back, that may not have been done for all. So only some tasks will take advantage of multi-threading, and there is no way to force them, unless the developer sets it up that in the first place.
The second caveat is that not all tasks can benefit from multi-threading, as they may have steps that depend on each other. Or the overhead of managing multiple threads and re-combine results may actually be bigger than any potential benefit. In an audio render for example, you need to process plugin A before you can process plugin B which comes after it in the signal chain. Can’t process them in parallel. But you can render track 1 and track 2 separately as you process the main bus, because they don’t share any common data.
There’s much more to that, going into which won’t help the discussion. The main take away is that unless an application lends itself to massive multi-threading by its nature, and the programmers went through the effort coding it for that, it won’t happen just because you said it’s ok by click ‘enable multi-processing’. Audio applications are actually harder to multi-thread than video applications which of can render each pixel independently.
Also there will be a big difference between some plugin suppliers and others, both in how well they’re done, and how much they’ve been optimized. By their nature some plugins are heavier than others. If you have a few heavy, low optimization plugins in your signal chain, your renders will most likely be very sluggish, regardless of core count.
One thing to watch out on the MacStudio (and also newer Intel CPUs) is that not all cores are created equal. The M1/2 chips now have efficiency cores and high performance cores. That is meant to allow your system to run on less power and cooler when it’s not busy doing a heavy workload. That means however that the OS and the application needs to understand that and schedule cores accordingly, or you could end up with an important task at a lower performance core. I assume that Nuendo took care of that as part of their M1 port. But then one should never assume.
(I was a software engineer in a former career)