Announcing Inter-App Audio (IAA) support for standalone plug-ins in JUCE 5

Hi all,

We have just released Inter-App Audio (IAA) support for standalone plug-ins on iOS as a JUCE 5 feature on the develop branch.

To make your standalone plug-in available as an IAA instrument or effect you need to compile the most recent version of the Projucer. The new Projucer provides a new plug-in configuration option, “Enable Inter-App Audio”, which does what you would expect. In many cases you will also want to enable “Microphone access” in the iOS Xcode build options.

There is a new, simple example plug-in located in examples/PlugInSamples/InterAppAudioEffect which demonstrates some IAA-specific features such as controlling the IAA host’s transport, displaying the host’s icon, and switching to the host application. As a byproduct of the work we’ve done here it is now also possible to retrieve the icon of a conventional plug-in (VST, AU, …) host on OS X via the same mechanism.

Note that if you try building the JUCE Demo Plug-in as a standalone IAA app then it will be classified as a “Remote Music Effect” - an effect (i.e. not a synth) which accepts MIDI input - which is not supported by GarageBand. Enable the “Plugin is a Synth” option to both use the plug-in as an instrument and receive MIDI messages.

Please start using the new functionality and post any feedback or issues here.

9 Likes

Hi Tom,
Did some testing today.

  • Projucer Develop Compile OK
  • Enabled Inter-App Audio (As well as Re-Enable AUV3 standalone…which I’m pretty sure was enabled in the jucer project I picked up for testing, is that normal?)
  • My Project compile OK (didn’t think it would so easily…)
  • Provisioning Target ‘ Auv3 standalone’ (MacOS Sierra, Xcode 8.2 to Ipad mini 4 iOS 10.2.1) OK
  • launching with Garageband x.Y - New Song + New Interapp Audio Track —> the Juce Plugin is visible! OK
  • selecting the Juce Plugin in the Inter-App BG track OK : ( Quite A lot of times GarageBand shows this Message :”The Inter-App Audio app you have selected is not available at this time”, but I suspect it had to do with the concurrent “trust” operation for my developer certificate on the iPad….will report if these messages persist.)
  • Audio OK !!! (BTW: what can one poor man do about the horrifying iPad Latency on Garage Band?)

Still To Be Tested : will implement the Back to host button etc. at a later time this week - but this is Awesome - great job!!! (UPDATE : tested also the IAA in the samples folder - works great: transport, icon… )

One closing question:
Is there a way to implement in juce the classic “Feedback Elimination” Use Case for an audio App?
i.e. :

  1. starting up detect if headphones are attached —> if not warn the user and get the volume down in the process block
  2. listen for a “headphone detached” event and do the same
  3. do this only in “standalone mode”, since it’s the host responsibility to manage volume when in IAA mode.

big kudos for this.
Michelangelo

Thank you for the feedback.

It’s possible to detect if headphones are attached via AVAudioSessionRouteDescription in Obj-C land and it’s something we’ll look at doing. I’ll add it to the backlog.

Hi Tom, thanks for the announcement! Would it work with Audiobus? If I remember well, AB is built on top of IAA.

Audiobus predates IAA and is a different mechanism for achieving a similar result. I don’t think there’s any interoperability, unless Audiobus does something like accept IAA MIDI.

Is IAA MIDI supported? I’ve created an app that has IAA enabled, but it doesn’t appear in other apps that list IAA MIDI targets… thx

update: looks like I’m getting confused with AB, IAA seems to be broadcast rather than specific app target

3 Likes

I don’t get any InterApp MIDI Input with the AUv3SynthPlugin in Standalone Mode using Cubasis as my host. All settings are made in Projucer (Plugin is a Synth, Plugin Midi Input). The instrument shows up and can is loaded.
This feature definitively works with other InterApp Audio Instruments like Ravenscroft275 piano. @JUCE Team: can you please have a look into this?

The new Projucer provides a new plug-in configuration option, “Enable Inter-App Audio”

Has this option been removed? Can’t find it any more

The plugin formats seem to have a collapse triangle:

HTH

1 Like

ah, thx - was looking on the iOS exporter section, not the main project section

Hi @t0m, could you just tell me, if it should be possible to receive MIDI via IAA in a Standalone Plugin Synth App? (Plugin Characteristics: “Plugin is a Synth”, “Plugin MIDI Input”)
As I mentioned in my last post, I can’t make ROLI’s example AUv3SynthPlugin receive MIDI from host (cubasis) via IAA (Standalone Plugin version) - I only can grab its audio output in the host. Maybe you have any hints to get it working? I know, that this is possible (with other iOS synths).
Thank you for clarifying. Martin

That’s not something I’ve attempted - I suspect we’re lacking a bit of internal plumbing. Does MIDI input work if you create an AUv3 plug-in, rather than using IAA?

Yes, that’s working fine!

When do you plan to start plumbing? :slight_smile:

This task is near the top of our backlog, but it’s not easy to estimate when we’ll start working on it. Experience has shown that promising things on a public forum almost always causes problems. With that caveat in place it’s possible that we’ll look at it next week.

1 Like

Great, thank you.

https://github.com/WeAreROLI/JUCE/commit/6b3f4ec0101961859136591b3ba73d573d849f70

1 Like

Thank you for enabling the MIDI connection. I can confirm, that it works now.
Some other questions about IAA will probably follow.

Hi
I’m trying to add Inter-App Audio to an existing project, which is an iOS app, started as a GUI application, not a standalone plugin. How would I need to go about this, I’m not sure where to start (the IAA option is only available for plugin projects).

Thank you