Ambiguous documentation for AAX_CATEGORY


In CMake, the documentation for VST3_CATEGORIES is clear:

Should be one or more, separated by spaces, of the following: Fx, Instrument, Analyzer, Delay, Distortion, Drum, Dynamics, EQ, External, Filter, Generator, Mastering, Modulation, Mono, Network, NoOfflineProcess, OnlyOfflineProcess, OnlyRT, Pitch Shift, Restoration, Reverb, Sampler, Spatial, Stereo, Surround, Synth, Tools, Up-Downmix

The documentation for AAX_CATEGORY is not:

Should be one or more of: AAX_ePlugInCategory_None, AAX_ePlugInCategory_EQ, AAX_ePlugInCategory_Dynamics, AAX_ePlugInCategory_PitchShift, AAX_ePlugInCategory_Reverb, AAX_ePlugInCategory_Delay, AAX_ePlugInCategory_Modulation, AAX_ePlugInCategory_Harmonic, AAX_ePlugInCategory_NoiseReduction, AAX_ePlugInCategory_Dither, AAX_ePlugInCategory_SoundField, AAX_ePlugInCategory_HWGenerators, AAX_ePlugInCategory_SWGenerators, AAX_ePlugInCategory_WrappedPlugin, AAX_EPlugInCategory_Effect

It is not clear how to specify multiple AAX categories. I tried separating the categories with spaces as suggested for the VST3 key, but that generated bad data in my Xcode project.

Through some research I determined that the AAX_ePluginCategory_* entries are entries in an enum in the AAX headers. And also that they are bitfield definitions. As such, they can be combined using a bit-wise OR operator.

The following code works correctly in my CMakeLists file to specify multiple AAX Categories.

AAX_CATEGORY AAX_EPlugInCategory_Effect|AAX_ePlugInCategory_Reverb

I recommend that the documentation be updated to show the correct method for selecting multiple AAX Categories. It may also be possible to issue a warning if the developer incorrectly uses a space or other character to separate the categories, or even to allow that method.

Thank you.

Turns out that there is a 2nd bug in the documentation, this time in VST3_CATEGORIES. If you include Pitch Shift in your list of categories (separated by spaces), you had better put quotes around that string (i.e. “Pitch Shift”).

For example, VST3_CATEGORIES Fx Pitch Shift will generate "Fx|Pitch|Shift", which is incorrect.

On the other hand, VST3_CATEGORIES Fx "Pitch Shift" will generated "Fx|Pitch Shift". which is correct.