4 value version number in AudioUnit

Hi all,

Mac OS 10.13.6
XCode 9.4.1
JUCE 5.3.2
AUVal v1.6.1a1
Logic Pro X 10.4.1

Our plug-ins use a 4 value version numbering system (eg.
This format is supported within the Projucer - the 4th value is an option as specified in the info tooltip ‘major.minor.point[.point]’

When scanning the plugin with the AUVal command line tool, we find that the version number is given as hex (0x1000000), which is then interpreted by AUVal to be component version 256.0.0, as only a 3 value version system is used.

When the plug-in is scanned by Logic Pro X (Plug-in Manager) we have found that having any version number where a point of that version is larger than 8 bits will cause an ‘invalid’ result to be shown in the Plugin Manager ‘Version’ column. This means that when the component version is declared as 256.0.0, due to the 4 values being interpreted as a 3 value version number, an ‘invalid’ version number is declared for the plug-in inside Logic Pro X.

Our current work around for this issue is to indicate whether we want a 3 value hex representation or a 4 value hex representation by using a flag in the function call ‘getVersionAsHexInteger’, and then only shift the 4th version segment in if we need it.
It seems the only place we need a 3 value version is in ‘addExtraAudioUnitTargetSettings’ and ‘addExtraAudioUnitv3PlugInTargetSettings’, when creating the plist.

Ideally we are trying to make as few modifications to JUCE as possible to make it easier to keep in sync - is there any chance this change or similar support for 4 value version numbers could be included in a future version of JUCE?

Kind regards,


I’m a little surprised this hasn’t been reported before…

Are JUCE users not using 4 segment version numbers for their plug-ins?

Yeah got bitten by this when we were in beta with a version number 0.9.x.x then went to for release and AUs started failing auval

I’m hesitant to special-case the AU behaviour - I can see potential issues when the 4th digit is bumped. In this case hosts will detect a new version for the VST and VST3 versions of your plug-in, but not for the AU.

I’ve just run into this as well… Logic will constantly rescan at startup because the version number is invalid even though the plug-in passes all tests.

    @function       AudioComponentGetVersion
    @abstract       Retrieve an audio component's version.
    @param          inComponent
                        the audio component (must not be NULL)
    @param          outVersion
                        the audio component's version in the form of 0xMMMMmmDD (Major, Minor, Dot)
    @result         an OSStatus result code.

BTW - I’d like to change the version integer value in my plist file without having to re-build my project in PJ. Is there no way for Xcode to update the version integer value when you change the Version in the Identity? I’m trying to do it manually with a clean and rebuild… but it doesn’t seem to be taking.