# Projucer: VST3 Category Order and Missing Category

**URL:** <https://forum.juce.com/t/projucer-vst3-category-order-and-missing-category/27267>\
**Category:** The Projucer\
**Created:** [April 16, 2018, 9:30pm UTC](https://forum.juce.com/t/projucer-vst3-category-order-and-missing-category/27267 "2018-04-16T21:30:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![alassandro](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/alassandro/32/4297_2.png) [@alassandro](https://forum.juce.com/u/alassandro)\
**Post date:** [April 16, 2018, 9:30pm UTC](https://forum.juce.com/t/projucer-vst3-category-order-and-missing-category/27267/1 "2018-04-16T21:30:15Z")

</div>

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:

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

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

    return categories.joinIntoString ("|");
}

```

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

---

<div class="post-metadata">

**Author:** ![ed95](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/ed95/32/7635_2.png) [@ed95](https://forum.juce.com/u/ed95)\
**Post date:** [April 17, 2018, 8:49am UTC](https://forum.juce.com/t/projucer-vst3-category-order-and-missing-category/27267/2 "2018-04-17T08:49:36Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![alassandro](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/alassandro/32/4297_2.png) [@alassandro](https://forum.juce.com/u/alassandro)\
**Post date:** [April 17, 2018, 3:32pm UTC](https://forum.juce.com/t/projucer-vst3-category-order-and-missing-category/27267/3 "2018-04-17T15:32:40Z")

</div>

Thanks @ed95, that will work out great! 🙂

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](https://sdk.steinberg.net/viewtopic.php?f=4&t=213)), 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!
