Audiobus Documentation

Introduction

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

Audiobus is an SDK and accompanying controller app that allows iOS apps to stream audio to one another. Just like audio cables, Audiobus lets you connect apps together as modules, to build sophisticated audio 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: Inputs, Effects and Outputs

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

Senders transmit audio to other apps (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 the user is currently playing.

Receivers accept audio from 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.

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. Filters also behave as inputs or receivers, and can go in the "Input" and "Output" positions in Audiobus.

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

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.

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.