VST2 plugin forward compatibility

I noticed that JUCE plugins won’t load their chunks when a project in Cubase/Nuendo or Studio One is saved with a later version. So if I create a project with MyJucePlugin 1.5.0, save it and load it on a different machine where only MyJucePlugin 1.4.0 is installed, the saved settings won’t be loaded.

I was able to track down this behavior to the number set in AEffect::version which is set in JUCE’s VST2 wrapper to the plugin version number.
Is this something that should be fixed in JUCE or is it a bug in Cubase/Nuendo and Studio One?

Also, since there is AEffect::version and AudioEffectX::getVendorVersion() (the latter seems to be used for the version shown in Cubase’s Plugin Manager), is there any difference between the two?

Check out this thread in the JUCE forum:

I believe JUCE added my suggested fix to the develop branch in September 2016, which requires defining a JucePlugin_VSTChunkStructureVersion pre-processor macro.

Thanks for the link, I haven’t seen this on the JUCE forum. We’re on an older JUCE but will maybe adopt this workaround.

While the fix certainly works I’m not sure whether this is rather a bug in Cubase/Nuendo/Studio One. From the documentation (Line 213 in aeffect.h/VST3 SDK 3.6.7) the field should contain the plugin version. But I can’t see any reason why a host should decide to disable plugin forward compatibility for a plugin.