Audio Unit v3 in Logic and GarageBand (mac)


#1

Hello,
I am investigating a little bit into Audio Unit v3 (extensions) development and whether or not it is viable to switch from AUv2 to AUv3 for Mac. following the discussions at the apple forum and looking into their sample code as well as the one provided by you (AUv3Synth), it seems to me that the only hosts in question (GarageBand and Logic Pro X) who support AUv3 on Mac are still not supporting the new API fully, leading to many headscratching on my part.

I tested the AUv3Synth demo and it seems there is some misbehaviour:
preset handling/management

  • If I load the AUv3Synth sample in Logic Pro X (10.3.0) for the first time, the 4 factory presets (that come with the AUv3Synth) load correctly. If I then save a custom preset and load it, the factory presets don’t load anymore.

getting the musicalContext (or transportContext)

  • I could not be able to get the hostMusicalContextCallback or hostTransportStateCallback. This could be because Logic doesn’t privode it for the AUv3 API? In the AUv3Wrapper during the allocateRenderResourcesAndReturnError call, the corresponding musicalContextBlock and transportStateBlock are initialized with nil.

Also I noticed that the AUv3Wrapper is not using any parameter grouping with AUParameterGroup, so you just get a flat list of all parameters. Is this intended?

According to my research, at least the second problem seems to be on account of Logic. Can you confirm these Bugs or do you have any other information concerning the status of the AUv3 API in hosts on macOS?
Thanks for replies!


#2

This seems like a JUCE bug. I’ll investigate…
 

This is a known bug in Logic and has been reported to Apple.


#3

it seems to me that the only hosts in question (GarageBand and Logic Pro X) who support AUv3 on Mac are still not supporting the new API fully, leading to many headscratching on my part.

I agree the partial support on macOS is a weird, but I think that’s because AUv3 was targeted more toward iOS than macOS with the point being to add the ability for iOS apps to cleanly host audio plugins rather than having to use audiobus or the like.


#4

Is there any update on this or can anyone confirm these problems?
Factory presets are not working on the JUCE AUv3 Synth example in Logic Pro X (10.3.0).


#5

we are experiencing the same problem with logic 10.3.1/garage band for auv3 :confused:


#6

Hmmm, first of all, I can seem to load AUv3s in GarageBand for macOS. I always see this window:

I’m using the newest version of GarageBand (10.1.6).

In Logic (10.3.1), everything seems to work fine. The audio playhead seems to update and i can change programs just fine:


#7

Hello! Thanks for your reply.
Garageband problem: I am experiencing the same behaviour in Garageband.

MusicalContext/TransportState: I can’t seem to get into the getCurrentPosition() call, but during the getting of both variables in the allocateRenderResourcesAndReturnError() function call both are not set and stay NULL, so it seems to be some problem there (maybe/probably on the host side).

Factory presets: Yes on my Machine I can select the factory presets too but changing them has no impact. Are you experiencing the same behaviour?


#8

I think GarageBand on macOS just doesn’t support AUv3?
 

Just use the AudioPlayHead in your AudioProcessor (AudioProcessor::getPlayHead).
 

Well, that’s expected as the AUv3Synth example doesn’t do anything when the presets are changed. You need to respond to the setCurrentProgram callback in your AudioProcessor and do something useful.


#9

ok thank you, totally missed the factory preset / setCurrentProgram implementation.

As for GarageBand on Mac, I can however load different AUv3 Plugins (I am developing a native AUv3 implementation which seems to work).

Thanks for your replies and help, much appreciated!