This may be old news but I have discovered that many DAWs do not display the correct plugin version number for VST2 plugins.
I believe that number comes from this line in config.h:
#define PLUG_VERSION_HEX 0x00010203
The VST3 version number seems to come from the next line:
#define PLUG_VERSION_STR "1.2.3"
These two should match but when I check the plugin info in DAWs like Cubase and Studio One 5 the VST3 version shows correctly “1.2.3” but the VST2 plugin version shows up as “220.127.116.11”.
The instruction for PLUG_VERSION_HEX from iPlug_include_in_plug_hdr.h says,
"The hexadecimal version number in the form 0xVVVVRRMM: V = version, R = revision, M = minor revision."
and that is what I believe I am doing. Oddly, this only seems to support 3 decimal places but VST2 version numbers have 4 decimal places (i.e., “18.104.22.168”, etc.).
I’ve fiddled around with all different combinations in PLUG_VERSION_HEX including using actual hex numbers (like 7B) but still can’t get it to display properly in DAWs plugin info. Other plugins seem to be doing it right (VST and VST3 show same version) so what is wrong here? Is this a known issue in iPlug or am I doing something wrong?
Are any hosts displaying this correctly for you? Can you set a breakpoint in GetDecimalVersion() and see if it is being used in hosts that do/don’t display correctly?
It seems unlikely that this very historical code on versions is totally incorrect, but the use (or not) of GetDecimalVersion() seems like a possible source of issue. It’s also possible that the versioning has been incorrectly implemented since iplug1, but that seems a little unlikely.
OK - It looks like mEffect.version is set incorrectly using GetDecimalVersion(), which doesn’t match the expected format given the SDK. There may also be issues with effGetVendorVersion which returns the same number.
Please make an issue on Github for this and I’ll discuss with Oli. Changing GetDecimalVersion() is trivial, but I’m not yet sure of any knockon effects.
I have looked back and my older iPlug1 plugins and they display correctly so I think this may have been a migration error in iPlug2. The instructions in iPlug1 are a bit different (but still don’t work right in iPlug2):
// Format 0xMAJR.MN.BG - in HEX! so version 10.1.5 would be 0x000A0105
I’ve searched the entire project in MSVS and it doesn’t find mEffect.version or GetDecimalVersion() anywhere - where are those functions/values?
Can you tell me the last version of iplug1 you were using (and where I can find the source)?
As far as I could see looking earlier the last version of WDL-OL I was using was identical to the current code (albeit in different files). I also looked at Oli’s first commit of WDL-OL (2012) and the code looks functionally identical so I can’t see how this could have worked in iplug1 but not work now…