Audiobus Documentation

Introduction

If you're already familiar with Audiobus and are integrating the 3.x version of the Audiobus SDK, then check out the 3.x Migration Guide to find out what's changed.

Audiobus is an SDK and accompanying controller app that allows iOS apps to stream audio and MIDI to one another. Just like audio and MIDI cables, Audiobus lets you connect apps together as modules, to build sophisticated audio and MIDI production and processing configurations.

The Audiobus SDK provides all you need to make your app Audiobus compatible. It's designed to be extremely easy to use: depending on your app, you should be up and running with Audiobus well within a couple of hours.

The SDK contains:

  • The Audiobus library and headers
  • An Xcode project with a number of sample apps that you can build and run
  • A README file with a link to this documentation

Don't Panic!

We've worked hard to make Audiobus a piece of cake to integrate. Most developers will be able to have a functional integration within thirty minutes. Really.

If your app's based around Remote IO audio units, then there's very little you'll need to do, particularly if it just produces audio and doesn't record it. This document will take you through the process of integrating Audiobus.

The process involves:

Easy-peasy.

If you wanna do some more advanced stuff, like receiving individual audio streams separately, allowing your app to be controlled remotely, or implementing state saving then this document will explain how that's done, too.

Finally, if you need a little extra help, or just wanna meet and talk with us or other Audiobus-compatible app developers, come say hello on the developer community forum.

Capabilities: Audio Sending, Filtering and Receiving

Audiobus defines three different audio capabilities that an Audiobus-compatible app can have: sending, filtering and receiving. Your app can perform several of these roles at once. You create audio sender, receiver and/or filter ports when your app starts, and/or as your app's state changes.

Audio senders transmit audio to other apps (audio receivers or filters). A sender will typically send the audio that it's currently playing out of the device's audio output device. For example, a musical instrument app will send the sounds or the notes the user is currently playing.

Audio filters accept audio input, process it, then send it onwards to another app over Audiobus. This allows applications to apply effects to the audio stream. Audio filters also behave as inputs or receivers, and can go in the "Input" and "Output" positions in Audiobus.

Audio receivers accept audio from audio sender or filter apps. What is done with the received audio depends on the app. A simple recorder app might just save the recorded audio to disk. A multi-track recorder might save the audio from each sender app as a separate track. An audio analysis app might display information about the nature of the received audio, live.

Audio receiver apps can receive from one or more sources, and audio filters can accept audio from multiple sources.

Audio receivers can receive audio from connected source apps in two ways: mixed down to a single stereo stream, or with one stereo stream per connected source.

By setting the receiveMixedAudio property of the port to YES (the default), the port will automatically mix all the sources together, giving your application one stereo stream.

If you set the property to NO, the port will offer you separate streams, one per connected app. This can be useful for providing users with per-app mixing controls, or multi-track recording.

Capabilities: MIDI Sending, Filtering and Receiving

MIDI routing in Audiobus works in the same way audio routing does: There are MIDI senders, MIDI filters and MIDI receivers.

MIDI Senders transmit MIDI to other apps (MIDI receivers or filters). A Keyboard app for example is a typical MIDI sender. The notes played on the UI are transformed into MIDI message and sent out to other apps.

MIDI Filters accept MIDI input, process it, then send it onwards to another app over Audiobus. This allows applications apply effects to the MIDI stream. Typical MIDI filter apps are arpeggiators, chord or time quantizers, etc.

MIDI Receivers accept MIDI from MIDI sender or filter apps. What is done with the received MIDI depends on the app. A simple MIDI recorder might just save the MIDI to disk. A synthesizer could transform the MIDI into audible sounds. An audio effect could use the MIDI to change its effects parameters.

More Help

If you need any additional help integrating Audiobus into your application, or if you have any suggestions, then please join us on the developer community forum.