I’ve been adding multi-bus support to the Wotja Plug-in (AUv3/macOS/iOS, VST3/Windows).
All working fine for iOS (AUM), Windows (Cubase, Reaper, Ableton), macOS (Ableton).
However, I simply can’t get the macOS AUv3 multi-bus to work with Logic Pro for macOS.
Symptom 1: Logic Pro shows Stereo (great) and 25x Stereo (not great).
The first option works fine (uses the main stereo bus)
Symptom 2: the second option (which represents my 15 other buses) simply shows an alert “Failed to load audio unit “Wotja”, please contact the manufacturer for an updated version or further assistance.”
I’ve tried pretty much everything to figure this out, and am stuck. Anybody else experienced something like this?
Thanks @jpo … that gives me some hope to keep trying.
I’ve tried so many permutations along the lines of overriding those methods, returning false, etc. There must be a “JUCE sweet spot” but I’ve not found anything that works … yet.
I’m pretty certain that DigiStix is based on JUCE, and that runs OK on Logic iPad, so I’m sure it is possible.
Logic Pro macOS is a pig to debug - the need to turn-off SIP (I have an M1 Mac), the need to Force Logic Pro to do a full audio unit reset and then rebooting every time I want to try a new config … it is kind of wearing!
If I find a solution, I’ll be certain to share it on the forum. I wouldn’t want anybody else out there to go through my pain with this!
What bus config are you aiming for? 16 stereo outputs?
Are you aware of any other plugins that use the desired bus format, and which load successfully on Logic for macOS?
Would also be interesting to know which Logic version, macOS version, and architecture you’re using for testing, since all of these can have an effect on how AUv3 plugins behave.
It’d be helpful to know concrete versions - “latest” is difficult to determine if this thread appears in internet search results in the future!
I’m testing on the JUCE 9 preview branch with Logic 12.3 and macOS 27 developer beta 3.
I can’t get it to work with the MultiOutSynthPluginDemo either.
I commented out the loadNewSample line, since the AUv3 doesn’t have the right path to the resource file. After that, I see options to load the plugin as either Stereo or 25x Stereo. Stereo works (UI is shown), 25x Stereo does not (“Failed to load Audio Unit…”).
Then, I tried deleting the MultiOutSynthPlugin.app, and building the AUv2 instead. Once I’d convinced Logic to rescan it, the AUv2 showed up as either Stereo or 16x Stereo, and both versions loaded without issues.
I tried switching back to AUv3 and attaching a debugger while loading the plugin as 25x Stereo. When I do this, I don’t see any assertions or suspicious console output. In fact, the MultiOutSynthPlugin process keeps running happily in the debugger, even after Logic has displayed the “Failed to load Audio Unit…” message. Therefore, I’m inclined to think that the problem is actually something in Logic itself. I don’t think there’s much we can do in JUCE.
On a hunch, I tried switching the MultiOutSynthPlugin to add another 9 buses, bringing the total to 25. After I do this, I am able to load the AUv3 as 25x Stereo in Logic. So I guess there’s a bug in Logic where it’s not respecting the declared bus layouts of AUv3 plugins.
I’d recommend reporting this to Apple, since it’s almost certainly a bug on their side.
Many thanks for investigating! I’m only just replying as I didn’t see a mail notification from the JUCE forum.
My macOS version is Tahoe 26.5.2 (25F84)
I’ll certainly raise it as a bug with Apple. That said, the last time I did that, I got a response back after something like a year (it was a bug in their Text to Speech engine on macOS). Eventually it got fixed… and then they broke again a few months later. So, we’ll just have to see what happens this time out.
On the off chance that anybody else out that has any suggestions to help @reuk and me out, please don’t hesitate to post on this thread! Surely I’m not the only JUCE developer trying to do multi-bus out with an AUv3?!
@reuk that said - do you think this is a macOS/iOS bug (as Logic Pro iPad also fails), or a Logic bug …? I ask, as Wotja multi-bus AUv3 works with (say) Ableton Live 12 on macOS - I know, having tested it!
And if so - do you happen to know how to report a bug with Logic…?
Difficult to say, but Logic is more likely given that auval reports the correct bus layouts. So, I don’t think the AUv3 hosting machinery in the system is broken.
I believe there’s an option to submit an issue against Logic in Feedback Assistant.
I have some great news to report - that magic number of 25 works for iPadOS and Logic Pro, when using the latest JUCE 8 code.
I’ll try to see what happens with macOS tomorrow.
Might I suggest that you modify MultiOutSynthPluginDemo.h to reflect that Logic bug, for iOS builds (and maybe macOS, depending on what I find tomorrow!)?
Does it export 25 buses, or some other number? Unfortunately there doesn’t seem to be a free version or demo, so I can’t test it myself.
If it works with a bus count other than 25, that would indicate that it’s possible to work around Logic’s behaviour on the plugin side, which would be a useful datapoint. Of course, we’d still need to investigate how to construct the workaround, which will be especially challenging without access to a copy of DigiStix.
We could add a comment explaining that certain Logic versions need a bus count of 25 in order to function correctly, but it’d be good to know whether DigiStix has found a workaround before we do that. If we can fix things in the AUv3 wrapper that would be a preferable solution.
Just for the record, I’m pulling my proverbial hair out - the code that worked last night on iPadOS / Logic Pro (+ JUCE 8) is no longer working. I work tightly with git, so I am reasonably certain that this reveals unpredictable behaviour in Logic, rather than it being due (specifically) to alterations in my code, or the JUCE code.
Update: it turns out that I actually got it working with JUCE 7 on iPad / Logic (not my JUCE 8 experiment) - I must have switched branches very late at night from JUCE 7 to JUCE 8 and lost track!
I’ve spend hours today trying to get it working with JUCE 8, and failed. I just reverted back to my other branch that uses JUCE 7, and it worked. Still required the “magic 25” change from you.
I’ll report back further if I learn anything useful. NB in my JUCE 7 version, I found that all 25 buses needed to be added (via withOutput or addBus, depending on how you do it) with the last argument set to true.
Hi @reuk it is an iOS only plug-in. That said, I’ve been able to install “DigiStix Drummer AUv3 Plugin” on my mac via the Mac App Store - wasn’t able to use it from Logic / Garage Band on my Mac. I looked in the appex Info.plist settings - there are two “types” in there; one is aumf (for MIDI fx), and one is aumu (for MIDI synth).
On the other hand, I have found that I have a concrete instance of a 3rd party AU Instrument installed on my Mac - miRack. That is reported by Logic Pro as “miRack > Stereo” and “miRack 16 ch > Stereo”. The Info.plist settings are different. There are two separate aumu entries, differently named, with different sub-types. They all share the same factory function. I don’t know if this is part of the magic?
miRack is a free install from the Mac App Store, might be worth your taking a look?
Updated notes on how to get this working with a multi-bus AUv3 instrument using Logic Pro on iPadOS - NB my experiments currently use JUCE 7, as I’m struggling to get it working at all with JUCE 8
NB: for iPad OS, JUCE 7, I’ve verified that I must create 25 buses, c.f. the JUCE team’s discovery, or the AUv3 plug-in synth won’t load within Logic. Logic reports as “Multi-Output (16x Stereo)” for reasons best know to itself…!
As noted above, in my JUCE 7 version, I found that all 25 buses needed to be added (via withOutput or addBus, depending on how you do it) with the last argument set to true.
If you’re following my adventures with multi-bus AUv3 instruments (haha!) I’ve found the “special sauce” that lets my AUv3 run as a multi-bus instrument in JUCE 7.
This now works for both iPadOS (Logic Pro) and macOS (Logic pro).
The key points from what I found:
in my JUCE 7 version, I found that 25 buses need to be added (via withOutput or addBus, depending on how you do it) with the last argument set to true (thank you @reuk )
any variation of the logic in the methods below will screw things up, from what I’ve found. They’re hyper-sensitive. And whatever you do, don’t attempt to override canApplyBusCountChange for macOS, but you must override that method for iOS.
bool isBusesLayoutSupported (const BusesLayout& layout) const override {
const auto& outputs = layout.outputBuses;
return layout.inputBuses.isEmpty()
&& 1 <= outputs.size()
&& std::all_of (outputs.begin(), outputs.end(), [] (const auto& bus)
{
return bus.isDisabled() || bus == juce::AudioChannelSet::stereo();
});
}
bool canAddBus (bool isInput) const override {
return ! isInput;
}
bool canRemoveBus (bool isInput) const override {
return ! isInput;
}
#ifdef IM_TARGET_IOS
bool canApplyBusCountChange (bool isInput) const {
// Without this code, the AUv3 plug-in fails to load under Logic!
// However, if you implement this code for macOS, the AUv3 fails to load!
return false;
}
#endif // IM_TARGET_IOS
I’ll give JUCE 8 another bash in a couple of days, and share what I find.
Edit - unbelievably, there is a subtle issue in canApplyBusCountChange where the implementation must be overridden for the AUv3 to work in iOS; and not overridden, if you want it to work for macOS. I’ve updated the code above to reflect this.
It really isn’t surprising that I’ve found it so difficult to get this working