[New Update: Realtime Audio Multicore Issues for Apple Silicon: End of the Story?]
After a first round of tests when MacOS Sonoma was released, we were very excited by the multicore performance that seemed to be fixed for real time audio threads on Apple Silicon processors with this new release (see all the details here).
Well, unfortunately… It seems that I was wrong, and that it was actually a side-effect of another bug in this new OS :-(!
Indeed, with MacOS 14 (and still with the latest 14.1 update), graphical user interface (GUI) performance is very poor, because the operating system tells the applications to redraw the entire area of their windows even if only a small portion should be refreshed (as detailed in this thread on the Apple developers forum). Several bugs have already been filed to Apple, but since a similar problem already occurred with MacOS 11 (codename Big Sur) and I don’t think it has been fixed (all developers including ourselves are still using workarounds), there is not much hope to have it fixed shortly. So we have implemented yet another workaround to avoid relying on the refresh area provided by Apple to fix these GUI performance issues (software updates pending) once again…
And… SURPRISE! With the GPU and CPU less busy with refreshing the GUI, multicore issues for real time audio are back… the real time audio threads are randomly missing their deadlines again.
So it looks like the journey is not over, and there’s still work on our plate to find a way to fix this problem! 🙁
Did you eventually try the Mac OS audio workgroups API. Unfortunately it doesn’t help for VST3 though currently as that API (at least via JUCE) doesn’t appear to provide a way to query the current audio device workgroup.
(It was a real pain for me too when Apple customers started reporting audio glitches with my multi-threaded synth implementation, but seems OK (for AU and Standalone) after I added the necessary thread workgroup registrations.)
Yes that’s indeed in the works, we are getting there. The lack of support for other plugins formats is a pain (but we may have found a trick!), and it is crazy that this “new feature” actually breaks the usual threading priority mechanism: it only happens in Core Audio apps that use it (which is the default behavior with Core Audio). Pro Tools for example is not showing this issue.
Here you go! https://www.bluecataudio.com/Blog/preview/realtime-audio-multicore-issues-for-apple-silicon-end-of-the-story/