AU & VST version number confusion

What’s going on here?

  • Projucer, Project version: 0.920

  • my JuceHeader.h:
    versionString = "0.920"
    versionNumber = 0x39800

  • auval: Component Version: 3.152.0 (0x39800)

  • PluginHost:
    AU version: 3.152.0
    VST version: V1.8.2.0

Is there a reason/fix for this? What am I doing wrong?

That looks right… what do you expect? What’s in your AppConfig file?

0x039800…

0x03 = 3 decimal
0x98 = 152 decimal
0x00 = 0 decimal

Rail

I expected that all hosts would report the same version regardless of plugin format. Silly me.

My AppConfig.h file shows:

#define JucePlugin_Version 0.920
#define JucePlugin_VersionCode 0x39800
#define JucePlugin_VersionString “0.920”

But then why does PluginHost show V1.8.2.0 for the VST version?

I guess I would expect JUCE to handle the differences here to make this a no-brainer.

How did you come up with the number 0x39800 I’m guessing from decimal 920 – The version number won’t support a value above 0xFF (255)? Can you reduce your version number to Major.Minor.SubMinor ?

Rail

1 Like

That’s the thing, I didn’t come up with 0x39800…JUCE filled that in. The only version number I’ve maintained is the Project Number in Projucer.

My mistake…I didn’t realize that the format of that number had ramifications down the line.

And I just checked…the Projucer does state that the number should be in major.minor.point[.point] format.

perhaps the projucer should check a bit the version number?
something like
version.matchesWildcard ("*.*.*", false)

That would not catch every mistake, but most of them I guess

1 Like

This is not enough: the original 0.920 would have been easily made compliant with this rule by simply adding a “.0” at the end (0.920.0), but this still would have given the wrong version in hex format.

An additional check is required to ensure that each of the values is less than 256.