Is there any way to enable JUCE_VST3_CAN_REPLACE_VST2 after release?

With the announcement that Cubase is dropping VST2 support (, it seems that VST3 replaces VST2 is going to be important going forward. However, I had it disabled in the initial release of my VST3 plugin.

Unfortunately there is this comment:

    Enable this if you want your VST3 plug-in to load and save VST2 compatible
    state. This allows hosts to replace VST2 plug-ins with VST3 plug-ins. If
    you change this option then your VST3 plug-in will be incompatible with
    previous versions.

Is it just the saved chunks that are incompatible? Is it possible to work around that?

Or is it because getFUIDForVST2ID is used for the plugin ID instead of DECLARE_CLASS_IID?

So once the decision is made, there is no way to change your mind later.

1 Like

Changing this define will make your plugin appear as a different plugin to the Host, so this will be a session breaking change. I remember having a hard time figuring out why a plugin wasn’t recognized anymore after porting it from a Projucer project to CMake a while ago and in the end I found out that it was because of both projects defining JUCE_VST3_CAN_REPLACE_VST2 different. This topic is about exactly that :wink:

So, better don’t do this

Short answer - no.

The main difference besides general plug-in Id is different parameter ids (and maybe also ranges? But I didn’t look into this code for a while now).

The best you can offer is ability to export states by internal preset manager (assuming your product got one) and load them on the different format.

This brings up another problem.

Do hosts allow a session saved with a VST2 to be loaded with a VST3 version of the same plugin (let’s say you do set up as correctly as possible on the plugin dev side)?

as with hosts… each one decides how they handle the situation.

Steinberg’s and Studio One easily switch them and if everything is set correctly (within the plug-in) also automation is restored properly.

For a few years now they also prefer the VST3 counterpart (so you won’t see the VST2 if they’re interchangeable).

I’m not sure about other hosts. I remember Ableton Live doesn’t support interchanging them. but I haven’t tested this for a while.