Along with a variety of workflow improvements including launching into the background, the main new addition in Audiobus 3 is MIDI routing.
You can now send, filter and receive MIDI just like you can with audio, using the three new classes:
Here's what you need to do to update your existing Audiobus 2 integration to Audiobus 3.
First you need to download the Audiobus 3 SDK. Simply replace the previous Audiobus 2 SDK with the new one.
Additionally you need to link libz.tbd
to your project, from your app target's "Link Binary With Libraries" build phase.
Audiobus 3 clearly distinguishes between audio and MIDI ports. Therefore you need to rename all occurrences of ABSenderPort, ABFilterPort and ABReceiverPort to ABAudioSenderPort, ABAudioFilterPort and ABAudioReceiverPort, respectively.
If you want to save time, the migrateAudiobus3.py script (also contained in the Audiobus SDK folder) will perform all required renaming for you. Here's how to use it:
migrateAudiobus3.py
(e.g. the Audiobus 3 SDK folder)python migrateAudiobus3.py YOURSOURCEFOLDER
To ease the integration of the Audiobus SDK we have introduced a new API key format. With the help of the new API key we are now able to check if the ports declared in your app match the ports declared in the Audiobus registry. If this is not the case a detailed error message is printed to the console, helping you to identify and fix the issue as quickly as possible. To update the API key of your app please follow these steps:
If your app interacts with Core MIDI directly, then it's important that you disable any Core MIDI functionality in your app when connected to Audiobus. This will prevent your app from receiving Core MIDI events twice, once via Audiobus and once from the Core MIDI system itself.
Please read and implement the chapter Disable Core MIDI in the MIDI guide. Audiobus will tell you when to enable and disable sending and receiving Core MIDI.
If your app shows an Inter-App Audio transport panel, you will need to hide it while participating in an Audiobus session. See Show and hide Inter-App Audio Transport Panel in the audio integration guide for more info.
Audiobus provides a number of hidden intermediate sender ports. These ports are only used internally by the Audiobus SDK. If your app is an Inter-App Audio host you should hide these ports in the list of available Inter-App Audio nodes. For more information read the section entitled If your app is an IAA host, do not show Audiobus' hidden sender ports in the audio integration guide.
There are some important differences between the way inputs and filters are connected to outputs. If your app offers an ABAudioReceiverPort, please read the chapter Differences between Audiobus 2 and Audiobus 3.