Logic & Dual Mono on pure Stereo effect


I have an AU audio effect, that can accept mono/stereo as input, stereo as output, both configured as such in isBusesLayoutSupported as well as in the BusesProperties of the audio processor.

No matter the BusesProperties layout I use, Logic Pro seems to be displaying a “dual mono” mode in the menu to add the plug-in to a track. The isBusesLayoutSupported() is not called until the moment I try to instantiate the plug-in, in which case, it fails as expected because output mono is not supported:

Failed to load Audio Unit “XXX”, please contact the manufacturer for an updated version or further assistance.

This doesn’t happen if isBusesLayoutSupported() accepts mono output (but it eventually crashes as my plug-in is stereo-out and tries to write to the second channel).

Is there a way to prevent this “dual mono” button to appear? I see that some built-ins AU with Logic are able to declare themselves as 100% stereo, without the “dual mono” mode in the menu. My guess is that somehow, the BusesProperties passed in the constructor needs to have this information, but I can’t see it.

Same here. Return value of isBusLayoutSupported() is totally ignored. In my eyes it makes sense that the host gathers this information when scanning the plugin to be able to show the list of available channel configs to load (before instantiation).

auval -t tells me the correct channel config. 1->2 and 2->2


Reported Channel Capabilities (explicit):
[1, 2] [2, 2]

Ok, got it. Rescanning with auval or Logic Plugin-Manager doesn’t help. Deleting the audio unit cache doesn’t help.
However, giving the plugin a new manufacturer code enforces to rescan the plugin. This helps!
Seems like there is another cache somewhere…

I think you can also try bumping the version number of your plugin to force a rescan. Easier than changing the manufacturer code around!

Yeah, that makes sense. Tried that by raising the number in the plists but that didn’t change the version number. I’m still new to JUCE. Today I found the JuceHeader.h / JucePluginDefines.h. Looks more appropriate to change it there.
[EDIT:] Changing it in Projucer is probably easiest and most sensible :man_facepalming:

Yes, especially if you’re new to JUCE, Projucer is the way to go.