We’re trying to support old pre-JUCE plug-ins, but (among other things) I’ve found a problem with the manufacturer IDs. Apparently, the same ID is used for all plugin types. However, our old AAX plugins used ‘Antr’, and our old AU plugins used 'VST ’ for that field. So now, using ‘Antr’ breaks compatibility with old AU sessions, but using 'VST ’ breaks compatibility with old AAX sessions. Is there any way to define different manufacturer IDs for different plugin types? All I see is the #define for JucePlugin_ManufacturerCode, which is used by all plugin types.
JucePlugin_AAXManufacturerCode defines, which are set to the value of
JucePlugin_ManufacturerCode if they’re not already defined (this all happens in the
You could supply custom values for these in the global
Preprocessor Definitions section in the Projucer and it should work out
Ok, that will work, I guess. I’ll have to add APpConfig.h to an exception for my git ignore files, but I should do that, anyway (for my AAX page tables file).
this suggestion keeps your source control clean and less error prune.
That sounds good, but when I use the following, I get a compile error that ‘Antr’ is an unknown identifier. It’s a long integer expected there, so ‘Antr’ should work, but it doesn’t for some reason. Maybe the single quote gets mangled somehow when put into the preprocessor macros in Xcode?
(Sorry, but this forum appears to mangle my single quotes as well. They are normal single quotes in my .jucer project file. )
I found a way to do it. If you convert the four character code to an integer, you can specify the integer in the project. I found this website that will convert those for you: https://ubershmekel.github.io/fourcc-to-text/
Projucer can also do it for you. Change the manufacturer code four chars in the Projucer UI, save the project and then copy-paste the new manufacturer code integer from the AppConfig.h header.
Ok, something broke. Now for some reason when I export to Xcode, the AU manufacturer code is back to the original code Plugin Code value, instead of this one:
The JucePlugin_AUManufacturerCode is getting placed in all the sub-projects’ GCC_PREPROCESSOR_DEFINITIONS fields, but the AU .plist file is getting ‘Antr’ instead of 'VST ’ (1448301600). I tried deleting the entire Builds and JuceLibraryCode folders and regenerating from Projucer, but I get the same result now. Why isn’t Projucer using JucePlugin_AUManufacturerCode to set the .plist value any more? How can I fix it?
Info-AU.plist file generated by Projucer has no reference to any preprocessor definition. Projucer simply writes the value from the “Plugin Manufacturer” field:
You need to use
VST as the project “Plugin Manufacturer” (so it is written as-is in
Info-AU.plist), and then set the preprocessor definition
Great, thanks! (Would be nice if those had separate values in the xml, and entries in Projucer.)