Audio Units OS X 10.7 lib changes / iLok problem


#1

Hi people,

I’m not convinced that everyone on here (and I’m thinking especially of Jules) has taken on board the significance of the changes to the Audio Units libs that came in with OS X 10.7. The changes are detailed in this tech note http://developer.apple.com/library/mac/#technotes/tn2276/_index.html

This has already been referred to in a couple of other threads:
http://www.rawmaterialsoftware.com/viewtopic.php?f=2&t=9028
http://www.rawmaterialsoftware.com/viewtopic.php?f=8&t=9546

but I want to highlight that this is not just a compilation issue. The Juce AU wrapper only exports _MyPluginEntry and _MyPluginViewEntry. These old Component Manager based plugins are deprecated but Juce_AU_Wrapper.mm is still producing them because it emulates the old COMPONENT_ENTRY macro from older versions of ComponentBase.h. It should behave like the new AUDIOCOMPONENT_ENTRY macro, which exports _MyPluginFactory as well. For the moment the plugins seem to work OK, at least on 10.7, but I bet this won’t be the case for much longer.

Jules, please could you take a look at /Developer/Extras/CoreAudio/AudioUnits/AUPublic/AUBase/ComponentBase.h and search on AUDIOCOMPONENT_ENTRY to see what you should be doing in the wrapper.

Another problem for us is that we need to iLok our plugins, and MasterMaker keeps failing with error 25143. The response from Pace is that MasterMaker is detecting the plugin type but not finding the expected entry points. I suspect it’s the same problem but I’m still awaiting clarification from Pace.

Rupert


#2

Thanks for the heads-up - I’ve quickly added the new factory functions but haven’t tested it, would appreciate if you’d have a go and see if it helps!

(You’ll need to re-save your project with the introjucer for it to work BTW)


#3

Thanks for the rapid turnaround.

I can’t test the Introjucer changes because the project I’m working on wasn’t created with the Introjucer for various reasons. However, looking at your commit on github I don’t think you’ve added the AU characteristics to the Info.plist file. As well as the resource file, they now have to appear as a dictionary inside an array called AudioComponents in Info.plist like the example in the tech note. I suppose this would get done by writeInfoPlistFile() in jucer_ProjectExport_XCode.h

With the code changes everything seems to work after manually adding the two Apple files to my project and changing Info.plist, but it’s hard to tell since the plugin worked already (besides iLok wrapping).

edit: I’ve now confirmed that my iLok problem is that you can’t wrap 64-bit binaries with the old wrapping method (pre iLok2).