I updated from JUCE 8.0.8 to 8.0.9, and now my VST3 plug-in can no longer load in Pluginval or AudioPluginHost.
The problem seems to be a mismatch of IDs in the VST3 wrapper findClassMatchingDescription.
My guess is that the new VST3 helper in 8.0.9 doesn’t fill the moduleinfo.json file correctly, because if I delete the file, the plug-in loads perfectly.
Also, setting JUCE_VST3_CAN_REPLACE_VST2=1 seems to fix the issue. But I don’t think I can change that afterwards without breaking existing sessions, right?
I was just about to create a BR on this and then saw your message. We see the same issue too. When JUCE_VST3_CAN_REPLACE_VST2 is set to “Default (Enabled)” or to “Enabled” in the Projucer, the VST3 ID that is generated in the moduleinfo.json is different.
Moreover: when using '“Enabled” explicitly, the moduleinfo.json file validates perfectly fine using the VST3 SDK moduleinfotool, while when set to “Default (Enabled”), the ID is different and the plugin no longer validates. I was expecting the exact same result whether the Projucer setting is either explicitly set to “Enabled” or “Default (Enabled)” but it doesn’t appear to be the case.
The consequence we see is that VST3 plugins with the wrong ID no longer load in certain hosts, which isn’t limited to the JUCE hosts but also affects loading of the plugin in 3rd party hosts.
Second change I had to make to get the ID that is in he moduleinfo.json file to be validated is to set ‘Use Global AppConfig Header’ to ‘Disabled’ (while the default behavior is ‘Enabled’).
@reuk I managed to reproduce the VST3 moduleinfo.json problem containing an erroenous ID with the JUCE “Hello World’ demo plugin using the Projucer as workflow, on both Windows as well as macOS. If I build the demo plugin with JUCE 8.0.9, the ID in the manifest file doesn’t get validated by the VST3 SDK moduleinfotool, unless I make the aforementioned changes in the Projucer, which will change the ID:
‘Use Global AppConfig Header’ to ‘Disabled’
‘JUCE_VST3_CAN_REPLACE_VST2’ to ‘Enabled’ instead of ‘Default (enabled)’