The first one is easy, you just need to set VST3_CATEGORIES at juce_add_plugin(), for example:
juce_add_plugin(
... // the following is for an EQ plugin
AU_MAIN_TYPE kAudioUnitType_Effect
VST3_CATEGORIES EQ
AAX_CATEGORY AAX_ePlugInCategory_EQ
...
)
See
The second one is a bit hard. I would guess that you need to pass the plugin name as an argument and build the plugin multiple times to get different names for VST3, AU, AAX.
I updated my worflow so that the VST3 get the proper Category “Instrument|Tools” and also the custom VST3 Plugin Name and Manufacturer Name like this. I could not get it to work with :
Because the way the JUCE Cmake works automatically put “Tools” in “Fx” even if the VST3 SDK has “Tools” in “Instrument” and this is why I struggled in the first place.
For the VST3 name specifically I went with:
if ("VST3" IN_LIST FORMATS)
set_target_properties(${PROJECT_NAME} PROPERTIES
# Overwrite the name property for VST3 compilation
JUCE_PLUGIN_NAME "CtrlrX"
# Overwrite the manufacturer property for VST3 compilation
JUCE_COMPANY_NAME "CtrlrX Project"
)
endif()
So for the category I had to patch JUCEUtils.cmake with :
# --- START PATCH: Force VST3 Category, Name, and Manufacturer Overrides ---
if ("VST3" IN_LIST active_formats)
# 1. Category: Explicitly overrides any default/incorrect category read by JUCE.
set(vst3_category_string "Instrument|Tools")
endif()
# --- END PATCH ---
It’s placed just before the VST3 variables are called in function(_juce_configure_plugin_targets target) .