currently migrating some of the older plugins to the latest tip using projucer. There is a version number in Projucer, but it seems that it’s not possible to ever update the plugin version because some hosts like cubase only load presets that mach that number.
But we have a lot of minor updates and it would be handy to manage the vendor plugin version in the projucer UI. Is there a way to do this?
This should allow you to change plugin version numbers via the Projucer UI and only break preset compatibility when you intentionally change the JucePlugin_VSTChunkStructureVersion define in AppConfig.h.
Just made some more tests and it looks that at least cubase 5 accepts higher version numbers. It only avoids to load presets from a smaller version. I forgot to set the JUCE_VST_RETURN_HEX_VERSION_NUMBER_DIRECTLY flag for older migrated plugins. The version was smaller because of this. Not sure how other hosts do this. It maybe would be useful anyway for some special cases. But it’s not an issue for us anymore at the moment as most hosts ignore the version anyway.
Yes, without the workaround I proposed Cubase will load VST2 presets from lower version numbers but not higher. The biggest problem is that it fails silently - the DAW doesn’t even tell the user that, say, it failed to restore the state of a particular VST2 plug while loading a session because it was saved with a newer version than is currently installed. With the workaround, it is up to the developer to create a break in compatibility by incrementing the VSTChunkStructureVersion.
Basically, without the fix you get backwards compatibility but zero forward compatibility. With it, you get both forward and backward compatibility. If your chunk format isn’t changing, the lack of forward compatibility is completely arbitrary and only a side effect of using the plugin version as the chunk version.
I’ve added support for the JucePlugin_VSTChunkStructureVersion pre-processor macro to the develop branch. However, I did not add support for this in the Projucer as we want to add more robust version information to audio processors in future versoin of JUCE. You’ll need to add the JucePlugin_VSTChunkStructureVersion macro definition to the custom pre-processor macro field in the Projucer.