Separate AAX and AU manufacturer IDs?

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.

1 Like

There are JucePlugin_AUManufacturerCode and JucePlugin_AAXManufacturerCode defines, which are set to the value of JucePlugin_ManufacturerCode if they’re not already defined (this all happens in the AppConfig.h).

You could supply custom values for these in the global Preprocessor Definitions section in the Projucer and it should work out

2 Likes

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).

@HowardAntares

this suggestion keeps your source control clean and less error prune.

2 Likes

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?

JucePlugin_AAXManufacturerCode=‘Antr’

(Sorry, but this forum appears to mangle my single quotes as well. They are normal single quotes in my .jucer project file. :slight_smile: )

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/

1 Like

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.

2 Likes

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:

JucePlugin_AUManufacturerCode=1448301600

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?

The 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 JucePlugin_AAXManufacturerCode=0x416e7472 (i.e Antr).

2 Likes

Great, thanks! (Would be nice if those had separate values in the xml, and entries in Projucer.)