Logic Pro macOS AUv3 - multi-bus instrument issue

Hi Folks,

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?

Best wishes, Pete

Logic is very picky… Make sure you do not override the canAddBus / canRemoveBus methods (or just let them always return false).

1 Like

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! :slight_smile:

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!

Best wishes, Pete

For the record, has anybody out there got JUCE 8 or JUCE 7 working with multibus instrument output under Logic Pro for macOS?

I can get it working for iPadOS Logic Pro (apart from it being a huge faff) - but Logic for macOS? No joy whatsoever!

Pete

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.

1 Like

Hi @reuk thanks for asking!

AUv3 app extension - latest macOS, latest Logic Pro. M1 Mac. JUCE 8.

Running this shows the channels:

auval -strict -v aumu Wj24 InMo

Interestingly enough, I’ve stripped back to pretty much to the implementation for MultiOutSynthPluginDemo … and it doesn’t work.

16 channels of stereo, but I’ve tried many different variants, e.g. 8 channels.

Best wishes, Pete

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.


1 Like

Hi @reuk

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?!

Best wishes, Pete

@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…?

Best wishes, Pete

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.

1 Like

Hi @reuk

Thanks for that!

BTW, to answer your previous question, I think DigiStix is probably JUCE based, and that works with multi-bus?

Oh, and ideally I’d like to run with 13 buses, but don’t really mind if more - 8 is a usable minimum for my use case.

Best wishes, Pete

Hi @reuk

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!)?

Best wishes,

Pete

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.

Hi @reuk,

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.

I’ll report back if I learn anything concrete.

Best wishes, Pete

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.

I’d still be interested to know which bus configurations DigiStix offers when it’s instantiated in Logic. Does it show 25x Stereo, or something else?

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?

Pete

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

  • See https://www.youtube.com/watch?v=GHePmrVk0ZA for a visual guide
  • New Projec:t MIDI
  • Hide the keyboard
  • Hide the Instrument Patches side-panel
  • in the bottom track panel, change the default synth by tapping and holding
  • select Replace…
  • select Instruments → [your plugin] → Multi-Output (16x Stereo)
  • In the tap panel, tap Sends
  • Tap + Send 1, then Select Create New Bus
  • Tap + Send 2, then Select Create New Bus
  • etc. - repeat as you wish
  • Show the Mixer panel at bottom again
  • Select Aux 1, set Bus to Inst 1 → [your plugin] 3-4
  • Select Aux 2, set Bus to Inst 1 → [your plugin] 5-6
  • etc.
  • NOTE: you can alternatively add your AUX via Mix panel
  • NOTE: the above video says you need to REPLACE your plug-in, but I’m not seeing that as a requirement
  • Start Logic playing - it plays your multi-bus AUv3 instrument, routed as expected

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.

Hi all,

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:

  1. 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 )

  2. 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 :slight_smile:

Best wishes, Pete