Projucer: VST3 Category Order and Missing Category

When saving projects with the Projucer’s new VST3 category section, the order of the category string is alphabetical. In certain hosts (such as Bitwig and Cubase) the plugin won’t show up in the correct category unless a certain order is preserved. In the VST3 documentation Fx is always the first item in a category string (however they don’t seem to state an order requirement).

For example, creating a project that is Fx, Distortion, and Filter will result in a string of Distortion|Filter|Fx but shows up in Bitwig under a category of Filter/Fx. If I change the string in AppConfig.h so that the category order is Fx|Distortion|Filter I get a proper category of Distortion/Filter.

Similarly Cubase would put a plugin of category EQ|Fx|Mastering into Other, but put the plugin correctly into EQ once the category string was reordered to Fx|EQ|Mastering.

Other hosts like Reaper can parse the string fine and put it into the correct categories regardless of order.

Could the Projucer be updated to ensure that Fx is the first item in the VST3 category string? This help in these host discrepancies with Bitwig & Cubase. Essentially:

static String getVST3CategoryStringFromSelection (Array<var> selected) noexcept
    StringArray categories;

    for (auto& category : selected)
        if (category == "Fx")
            categories.insert (0, category);
            categories.add (category);

    return categories.joinIntoString ("|");

The Projucer also seems to be missing the Dynamics option for VST3 categories entirely.

Thanks, I’ve added the “Dynamics” category.

I’ve also changed the getVST3CategoryStringFromSelection() method so that the priority of categories is “Fx” > “Instrument” > everything else but I can’t find any official documentation on the order that categories should be in. Confusingly, ivstaudioprocessor.h defines a few categories that can be used and kSpatialFx is defined as “Spatial|Fx” which implies that “Fx” shouldn’t always be first?! If there is some canonical way of ordering the categories then I’d be very grateful to hear it but for now I think this way makes sense, does it work for you?

1 Like

Thanks @ed95, that will work out great! :slight_smile:

I’ve been trying to wrap my head around it myself… The spatial categories seem to have their own order and meanings (all I could find on it was this), but if need be there’s always the option of defining a custom JucePlugin_Vst3Category in the preprocessor defs.

The VST3 spec is a little ambiguous, so hosts will probably all have varying implementations of how they apply these categories… however I think keeping with Steinberg’s general convention of keeping Fx or Instrument at the beginning is probably the best bet for host compatibility!