Help! My VST3 "Synth|Instrument" plugins have turned into "Audio Module Class"?

MacOS. I just noticed this today. Back in JUCE 7.0.3, my VST3 plugins showed up as “Instrument|Synth” in the AudioPluginHost PluginList, same as they always have for the last 4 years of development.

And of course, this is how they are defined in my Projucer file:

Now, working with JUCE 7.0.5, (not on 7.0.7 yet).

I was working on my GUI App version for awhile. I just came back to the plugins today, and now I find that the ones that are compiled with this version of JUCE show up as “Audio Module Class”, and in some cases are failing when I try to load them. I changed nothing that I am aware of!

Also, the IDs under “Description” (i.e. 1.0.0) are blank.

Is this somehow related to the “juce_vst3_helper” or the new “VST3 Manifest Helper Build stage”?

I only use the Projucer and not CMAKE, by the way.

This was fixed on develop a couple of months ago:

Thanks. I am now testing with 7.0.7 develop (latest), and while the category issue has been fixed, the blank description issue has not. Newly compiled plugins are added to the list with a blank description. The description by default should add the plugin version number.

The two plugins at the bottom are a default BasicPlugin project and a simple test project compiled with 7.0.7 dev.

As you can see from the “Juce Audio Plugin Host.settings” file, the results of a scan of the default JUCE “BasicPlugin” shows a blank version field.

<PROPERTIES>
  <VALUE name="pluginScanMode" val="1"/>
  <VALUE name="pluginList">
    <KNOWNPLUGINS>
      <PLUGIN name="BasicPlugin" format="VST3" category="Fx" manufacturer="yourcompany"
              version="" file="/Users/stephen/Library/Audio/Plug-Ins/VST3/BasicPlugin.vst3"
              uniqueId="195eb1f" isInstrument="0" fileTime="18ad45d9a04" infoUpdateTime="18ad6f975e3"
              numInputs="0" numOutputs="0" isShell="0" hasARAExtension="0"
              uid="acfbcb4f"/>

However, the information is in the plugin’s JuceHeader.h file:


#if ! JUCE_DONT_DECLARE_PROJECTINFO
namespace ProjectInfo
{
    const char* const  projectName    = "BasicPlugin";
    const char* const  companyName    = "";
    const char* const  versionString  = "1.0.1";
    const int          versionNumber  = 0x10001;
}
#endif

I even added a specific entry in the Projucer’s field of “1.0.1” instead of leaving it blank.

Plugins compiled with an earlier version of JUCE show up properly.

PS. In looking at a comparison of 7.0.3 and current, it appears that the new function CreatePluginDescriptions does not call the following (while the old function does), which fills in the version? Or maybe not…

template <typename ObjectType>
static void fillDescriptionWith (PluginDescription& description, ObjectType& object)
{
    description.version  = toString (object.version).trim();
    description.category = toString (object.subCategories).trim();

    if (description.manufacturerName.trim().isEmpty())
        description.manufacturerName = toString (object.vendor).trim();
}

EDIT:
Possible fix: added the following line to CreatePluginDescriptions:

   description.version  = CharPointer_UTF8 (info.version.c_str());

Thanks, that change is now on develop:

1 Like