I’ve run into something that has been driving me nuts for the last week.
A plugin that we’ve been working on was working fine for another developer, but when I tried to build it on my M1 Mini it would refuse to show up in Live, but worked (mostly) fine in Bitwig and Logic.
To try and figure out if this was something to do with the plugin itself I created a barebones plugin with what I know to be a good setup for MIDI plugins (having developed another MIDI plugin that worked fine in all hosts before).
This is where it gets weird.
On the M1 Mini (Monterey 12.5.1 - Xcode 13.4.1) even the barebones plugin refused to show up in Live’s plugin list, but worked fine in Bitwig and Logic.
However building the same project on my Mac Pro (Big Sur 11.6.8 - Xcode 13.2.1) it works absolutely fine, on both the Mac Pro and Mac Mini, in all hosts.
I only tried building on the Mac Pro as a last resort since I knew the previous plugin I had developed worked fine from that machine, and it was the only variable remaining (just wish I’d thought of it sooner ).
I’ve no idea if this is some problem with Xcode or it’s something in JUCE, just reporting here in case anyone else either ends up going as crazy as I have been trying to get a MIDI plugin to work properly, or knows what the solution is to be able to build such a plugin on Apple Silicon.
I have an inkling that the issue lies with Xcode though, as I was experiencing a weird bug in the new plugin we’re working on that only showed up in Logic on the M1 (when built on the M1) but has since gone away with the build from the Intel machine.
I’m attaching the barebones test plugin in case anyone from JUCE team feels like looking into this madness. MidiTest.zip (5.4 KB)
I recommend checking whether the plugin is signed: codesign -dv --verbose=4 /path/to/plugin.component
On M1, the shared library must be signed in order to load. Some hosts are more picky about this, and require the entire plugin bundle (not just the shared library inside the bundle) to be signed.
I think that even in Live 11 (Universal), plug-ins must be built as universal-binaries in order to show up in the plug-in browser. When building in Debug mode, and testing in Live, make sure that the “Build Active Architecture Only” option is set to “No”.
For me ARM-only plugins show up just fine in Live 11/ARM, it used to be a problem but then fixed once you added the ad-hoc signature to the build process in JUCE.
No, I’m on 11.1.6, this is the behavior I’m seeing here on multiple M1 machines since the official release of the M1-native Live (which you might you want to check you’re running…). I’ve been constantly debugging here like that without building a universal binary which is quite a hassle as the build times are 2x…
I think you’re right, I must have tested with the Intel-only copy of Live 11 I had installed. I’d better get rid of that copy and install the newest beta so that doesn’t catch me out in the future!