Cannot change bus options without changing AU subtype

I have a commercial plug-in product, for which I would like to offer a paid upgrade from the present stereo-only version (single stereo output bus) to a multi-output version, without changing the AU subtype code (so DAW projects saved with the earlier version will continue to load with the upgraded version).

This proves difficult under MacOS 10.13.6, but impossible under MacOS 10.15.6 “Catalina”. I have prepared the simplest possible illustrative code example and Projucer files in this new GitHub repo. The README file in the repo includes additional details.

I’m hesitant to take this up with Apple before seeking help from the JUCE team and community first, because it will be too easy for Apple to blame JUCE otherwise. Please note the code I’m presenting has been developed in consultation with Fabian Renn-Giles, who is aware of the AU subtype issue, but does not know of a solution. I am quite confident that my JUCE code is correct; this is strictly an AU/MacOS issue.

UPDATE: This appears to be a bug in Logic 10.5.1. Logic 10.4.8 works correctly, even under MacOS Catalina. I have brought this to the attention of some folks at Apple, and with luck this bug may get fixed. Stay tuned…

1 Like

UPDATE 2: The answer turns out to be ridiculously simple. Logic 10.5.1 is the first version to use an OS service (presumably AudioComponentRegistrar) to detect changes in plug-ins, and you must change the plug-in version number (while keeping the AU subtype code and bundle identifier the same) or it won’t work correctly. If you do not, it gets confused.

Maybe it’s enough to just restart the service so that it rescans, instead of having to update the version number

Maybe… but unfortunately, no. I tried that early on. What happens is that the service does re-scan the plugin, but doesn’t update the cached plugin I/O definition unless it sees a version-number change.