Version number and VST plugins

Hi Jules,

JUCE sets the plugin version number at two places for VST plugins:

  • in the wrapper constructor: cEffect.version = (long) (JucePlugin_VersionCode);

  • and this AudioEffectX method: VstInt32 getVendorVersion() { return JucePlugin_VersionCode; }

In fact, those two seem to have different meanings, at least for some hosts. The second one is the one reported to the users as the plugin current version, for example by Cubase in its Plugin manager window.

Hosts like “TopTen Cantabile” do use the first one (cEffect.version) as the version number embedded in FXP files, and perform compatibility checks based on this number: it refuses to load patches who were saved with a different version number, saying “Failed to load preset - version mismatch”. So each time I upgrade my plugin from version X.Y.Z to X.Y.Z+1 , users cannot load their patches saved with version X.Y.Z . I think it would be best to just not edit at all the cEffect.version , that would prevent breakage with cantabile and maybe some other hosts

What is the correct method for a host to read a plugin's version number?

The demo host reads the East West Play plugin as V2. when it is actually 4.1.6.

Tracktion get its right.  Base 16 or base 10 or what?

Are you trapping exceptions or some tricky algorhythm?


Tracktion uses the latest code from juce - it just tries to guess which base it's in.