JUCE and macOS 11 / ARM

You’re mostly correct. You don’t have any choice right now. There is no Logic ARM currently. (Although I assume that will change before they deploy to retail.) When you double-click the Logic icon, it is an Intel version running in Rosetta2. It can load Intel plugins.

When you get the UB version of Logic, it will only run ARM plugins, unless you specifically order it to run in Rosetta2 (there will be a checkbox in the get info panel), in which case it will only run Intel plugins. This will be the same for any host that does not have a separate process for plugins. So basically any of the major hosts except Bitwig. I expect that Bitwig will be able to run both Intel and ARM plugins.

Assuming this goes about like the PPC->Intel switch did, you’ll get about 6 months worth of very confused customers, then shit will settle out, and after about 3 years of it, you won’t have to build Intel plugins any more.

1 Like

If you ship your stuff as UB the day the first consumer ARM Mac is out, you’ll have very few issues. People will just need to install your updated versions and those will load in all hosts as ARM or intel. I think I’ll put up a banner next to my contact form to make users get the ARM updates before they contact me.

I’m sure intel macs will be around for much longer than 3 years though. This CPU switch once again has the potential to make all big host developers charge extra for an update… This will make an ARM machine more pricey for audio people and slow down adoption in the audio sector.

1 Like

Yeah, of course. As long as you’re UB, the customer shouldn’t know or care what host is doing what, as long as they remain current. That’s the concept, anyhow. Our experiences with the OSX, Intel, and 64-bit switches show that it is not that simple. tl;dr: ain’t our first rodeo, and trust me when I say that the default setting for customers in the next few months will be “confused.” They just want to make dope beats on their new laptop. They could give a fuck about our problems.

Having said that, Intel Macs will be around for a long time, because Apple makes hardware that lasts, in general. But there will be a point not long after they stop shipping Intel Macs (which will take about a year or two) where there are diminishing returns for shipping a UB, and a point not long after that where you can’t even make a UB any more. The way Apple does things now, that point will come sooner than it did after the Intel switch, as they are more actively pruning legacy than they were then.

1 Like

O/T, but this winds me up : Could NOT give a fuck. Or “couldn’t”.
“Could give a <X>” literally changes the meaning of the sentence to the opposite of what is intended. :joy:

3 Likes

Somebody needs a lesson in American idiom.

2 Likes

Hi Markus here – from the MusicApps Team at Apple,

I’ve tried to contact as many Audio Unit developers as possible before WWDC to get your contact information. I’ve gotten a lot, but obviously not all. We have started a brand new ProAudio Seed program last week and if you were contacted by me or we already had your contact info, you should have received an invitation to the seed program. Some did not, simply because your email provider considers invite emails from Apple spam. We are not sure, how we can resolve that on our side.

We are seeding universal versions of Logic Pro, MainStage and GarageBand build against the macOS 11 SDK, which should help you significantly to test your Audio Units. The seed program also allows you give direct feedback to the MusicApps team. For Apple Silicon development and testing you need the DTK. But for Big Sur compatibility testing on Intel, the seed is also extremely helpful.

I am sorry, but I am not able to provide support or answer questions here. If you are an Audio Unit developer, please contact me with your website, some of the AUs you are working on, your full name, and preferable the Apple ID email used for your developer account at mfritze@apple.com. I know, that might sound like phishing, but it is not – maybe some people here can back me up on that :slight_smile:

Thanks,
Markus Fritze

19 Likes

There, see, @asimilon. They could give a fuck, as it turns out.

2 Likes

Are you using the American idiom now, and they could not give a fuck?

For what it’s worth I’ve received the email from you and you were very helpful in responding to the question I had, so I’m pretty sure you’re legit :slight_smile:

getMsgSendSuperFn() (&s, @selector (keyUp:), ev);

Crashes on BigSur with EXC_BAD_ACCESS on keyUp. So I can’t log into Projucer.

SystemStats::getOperatingSystemType() needs updates. It doesn’t have macOS 10.15, and it fails if the major OS version is 11.0 and instead returns the OS version as 10.0.

1 Like

So macports doesn’t seem to have too much of its build tools and related ports arm64 ready. How does it compare to brew? Any experience?

I finally got brew working. They have an issue here with the state of all the packages: https://github.com/Homebrew/brew/issues/7857

Just a warning, do not ask the Brew team for any help with Big Sur, they will delete your comments.

3 Likes

Thanks to everyone who has already tried out JUCE on macOS11/ARM and raised issues on this topic.

I’ve pushed some initial changes to develop which should make it possible to build and test ARM binaries without needing to tweak JUCE itself. In particular, I’ve fixed the getMsgSendSuperFn segfault, getOperatingSystemType, and jassertfalse.

Edit: the link above is just the first commit in a series of several commits that improve compatibility with the new OS + hardware. Please check out the current state of develop if you’re interested in using JUCE on macOS/ARM.

3 Likes

Having some crashes when touching the keyboard in plugins and the AudioPluginHost sample. It’s fine if I do a universal and select Rosetta, but crashes when running natively on Apple Silicon, all I did here was build, run, touch a keyboard button and it fell. (I incorporated the latest changes above.)

Crashed Thread:        0  JUCE Message Thread  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000001
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [1720]

VM Regions Near 0x1:
--> 
    __TEXT                        102100000-102dcc000        [ 12.8M] r-x/r-x SM=COW  /Volumes/*/AudioPluginHost.app/Contents/MacOS/AudioPluginHost

Thread 0 Crashed:: JUCE Message Thread  Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib               	0x00000001d3388f48 objc_msgSend + 8
1   com.apple.AppKit              	0x00000001916f58e0 -[NSView _nextResponderForEvent:] + 60
2   com.apple.AppKit              	0x00000001916f57b4 forwardMethod + 84
3   com.juce.pluginhost           	0x00000001028eae04 juce::JuceNSViewClass::keyDown(objc_object*, objc_selector*, NSEvent*) + 284 (juce_mac_NSViewComponentPeer.mm:1780)
4   com.apple.AppKit              	0x000000019166f840 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 5644
5   com.apple.AppKit              	0x000000019166dfd4 -[NSWindow(NSEventRouting) sendEvent:] + 352
6   com.apple.AppKit              	0x000000019166cdac -[NSApplication(NSEvent) sendEvent:] + 2512
7   com.apple.AppKit              	0x000000019192d4ac -[NSApplication _handleEvent:] + 76
8   com.apple.AppKit              	0x00000001914e17b4 -[NSApplication run] + 640
9   com.juce.pluginhost           	0x0000000102652fe0 juce::MessageManager::runDispatchLoop() + 164 (juce_mac_MessageManager.mm:348)
10  com.juce.pluginhost           	0x0000000102652ea4 juce::JUCEApplicationBase::main() + 364 (juce_ApplicationBase.cpp:262)
11  com.juce.pluginhost           	0x0000000102652ccc juce::JUCEApplicationBase::main(int, char const**) + 68 (juce_ApplicationBase.cpp:240)
12  com.juce.pluginhost           	0x00000001022337f4 main + 56 (HostStartup.cpp:155)
13  libdyld.dylib                 	0x00000001d44e2844 start + 4

Is this using the absolute latest develop? This crash looks very similar to an issue I thought I’d fixed yesterday.

1 Like

It’s the public download of Juce 6.0.1, and I manually added the fixes you posted 3 hours ago.

Update: pulled the latest from develop, it’s fixed there.

Glad to hear it’s working now. I should have made it clearer in the earlier post that the fixes were spread over a few commits, sorry for any confusion.

1 Like

Thanks @mfritze ,

I sent you a mail 2 days ago to enroll but didn’t get a reply and was wondering if maybe if it went to you spam folder.

Thanks,
Lorcan Mc Donagh

Beeping keystrokes:

  • Build and run DemoRunner.
  • WidgetsDemo > Misc
  • Type in text box
  • Beep, beep, beep, beep

Anybody else hear that? Or just me because I’m using screen sharing?

I was hearing random beeps when entering my JUCE login and password.