JUCE iOS inter-app audio channel configuration (bug?)

Hi all,

I’ve been experimenting with the inter-app audio feature of JUCE and observing some unexpected behavior re channels.

If I simply create a new example project from the JUCE examples (the InterAppAudioEffectPluginDemo) and run it on the iPad, I always get a mono (one channel) input signal and a stereo output (of which the right channel is always silent), if I insert it on a stereo track in various hosts (Cubasis, Evolution Mobile Studio).

The isBusesLayoutSupported function from the demo project supports both mono and stereo I/O. Moreover, if I set the channel configurations in the Projucer more explicitly to stereo only {2,2}, I still get a silent second channel even though the app connects to a stereo track in the host.

Is this known or expected behavior? Or perhaps IAA can only support a mono channel? Or is it a bug in the two host programs (Cubasis, and AEM Studio)?

FYI if I take the exact same project and use the AUv3 version, I do get the expected stereo channel in the plugin. So these observations seem to relate to the IAA wrapper specifically?

This is actually a quirk in IAA. When an IAA app is started with no audio interface present, the graph reports the iPad’s “idle” audio state, which is mono (mic) in, and stereo out. For a fun experiment, do your exact same test regimen with a 2x2 audio interface connected; you’ll see a fully correct stereo path throughout the process. When the IAA connection is made, which is after the app has fully come to life, the I/O changes to whatever the graph hooked up, and the channel config updates accordingly, but the process loop’s buffer never gets the second channel.

Two things:

  1. If you’re serious about doing iOS releases, you should not use the old {N,N} channel config mechanism. It is the stuff from which nightmares are made. Leave that field blank in ProJucer and handle all your channel config in the new method.

  2. IAA is marked deprecated in iOS 13 and iPadOS 13, and will go away shortly.

In any event, this is a well-known quirk, and not something to lose sleep over. IAA is a fairly brutal hack, and has received its much-deserved death stroke. Concentrate on making the AUv3 as good as it can be, with a standalone as fallback if you have to. You can get away with leaving IAA out entirely now, as you have a perfect excuse for complaining customers.

Thanks for the extensive response; exactly what I was looking for.

Good to hear that IAA will go away over time