iOS Music App Protocols IAA, AUv3, and Link
IAA versus AUv3
IAA is Inter-App Audio, an iOS specific protocol which allows an app (host) to run IAA apps inside of it. You can only run one instance of an IAA app at a time although some apps have multiple IAA outputs like Patterning for example where there is one output available for each part of the drum kit and the main output which can be selected by the user.
IAA Host Apps
Examples: GarageBand, AUM, apeMatrix, Cubasis, Auria Pro, StageLight, Audio Evolution Mobile, and Beatmaker 3.
IAA apps can have different functionality
Generator create sounds.
Instrument can have MIDI sent to their IAA MIDI port to control them.
Effect receive an audio signal and effect it in some way.
MIDI Effect an effect app that can be controlled via MIDI sent to its MIDI port.
An IAA app may listen for MIDI or have a virtual port even though it's only an IAA app (this can be very confusing). You may setups where there can be duplicate messages being sent to the same IAA app which creates problems or you may need a third app to receive MIDI and send it on to the final destination.
IAA Host Sync an IAA host app most have implements host sync and the IAA app must have host sync to sync up to the host's transport controls. This sync is sample accurate.
Audiobus 3 Supported Apps
Audiobus 3 is an app that uses IAA to host apps provided the IAA app the developer included Audiobus support into their app for it to run inside Audiobus (using the free Audiobus supplied SDK).
- Audiobus State Saving means the IAA being hosted will have its settings saved when you save a preset for a setup in Audiobus 3. For example, a synth app would have the preset you were using saved when you save the setup as a preset in Audiobus.
- Not all apps with Audiobus support have state savings.
- Audiobus Remote is an app created by the Audiobus developers which allows you to remotely control the apps in an Audiobus setup provided the app being hosted has Audiobus Remote support.
- Some apps can be both IAA hosts and have Audiobus support so they can be hosted inside Audiobus. Example, GarageBand can only be hosted inside Audiobus as output so you can route your audio from Audiobus into it. Others like Moebius Lab and apeMatrix can only be input sources. Some like AUM, Cubasis, Audio Evolution Mobile Studio, and modstep support input and output.
IAA Zombies is a bug that occurs when you have IAA apps hosted in an IAA app host, you close the host, and the IAA app continues to run in the background. Even when you check to see if the app is open, it may not appear. The app running in the background will continue to use resources on your iOS device and can cause your iOS music setups to crash. Bringing the IAA app to the foreground and then closing it can help to minimize IAA zombies. Opening and closing the app in the setup can resolve the issue too.
AUv3 Audio Unit version 3 is another iOS specific protocol.
- AUv3 apps can be hosted inside AUv3 host apps provided the AUv3 host app supports its features. Some AUv3 hosts do not support AUv3 MIDI effect apps for example. You can run mutliple instances of AUv3 apps in a host or multiple hosts provided your iOS device has sufficient memory to support the apps running at the time and the total memory used by all AUv3 apps currently running.
- AUv3 state saving. The state of an AUv3 host will be saved by the AUv3 host a part of the AUv3 host's project or setup.
- AUv3 presets saved in the AUv3 app are available via the AUv3 app in whatever AUv3 host you use.
- AUv3 presets saved to the AUv3 host app are only available to that specific host.
- Some AUv3 apps do not support saving presets to the AUv3.
- Some AUv3 host apps do not support the ability to save presets to the host.
- AUv3 generators output audio.
- AUv3 instruments can generate sound and be controlled by MIDI routed to it by the AUv3 host app.
- AUv3 effect apps apply effects to audio routed to it and output the effected sound.
- Some AUv3 effects apps can be controlled via MIDI routed to it and output the effected sound.
- AUv3 MIDI apps output MIDI which can be routed by AUv3 host app to other hosted apps, MIDI controlled hardware (e.g. a synth like a Korg Minilogue, or non-hosted apps.
- AUv3 MIDI effect apps can receive and modify MIDI which can then be route by the AUv3 host like AUv3 MIDI apps.
- Stability, there are currently no known bugs similar to IAA zombies for AUv3 apps as all instances of an AUv3 app are closed when you closed the AUv3 host app they're hosted in.
- AUv3 apps can not be hosted inside another AUv3 app.
- AUv3 developers can choose to expose their parameter controls which can be controlled via MIDI by AUv3 host apps which host them provide this functionality is supported by the AUv3 host app.
- AUv3 parameter automation. Some AUv3 hosts support the ability to record the movements of the GUI controls (e.g. knobs and sliders) of a hosted AUv3 app. This provides a much finer level of control than MIDI which may be significant depending upon the particular apps, setup, and musical goal you're trying to achieve.
Link a sync protocol developed by Ableton which developers can add to their apps.
- Any Link enabled apps on the same network or device can be synced together including apps on different iOS devices provided they're on the same network.
- The more recent update to Link by Ableton provides the ability to have the link app respond to transport controls. Not all apps or host apps support this functionality.
- If an IAA app is synced to a host via host sync and the IAA host app is Link enabled, then the IAA is also Link synced even thoough the IAA app may not have Link or Link isn't enabled.
- A hosted IAA app can be eiher Link or IAA host synced, not both.
- An IAA host app can have hosted IAA synced apps running inside of itwhich are hosted via IAA host sync while the IAA host app itself is also synced via Link (Link enabled).
- AUv3 apps sync to the AUv3 host app which may or may not be Link enabled.
- You can set whether or not a Link enabled app notifies you when a new app joins or leaves the Link network.