The Amazing Audio Engine: Funky Remote IO-based Core Audio Engine Coming Soon
Huzzah! I’m announcing a new project which will be launching over the next couple of months.
It’s called [The Amazing Audio Engine](http://theamazingaudioengine.com), and it represents the product of years of experience with iOS audio. It’s a sophisticated iOS audio engine that lets developers skip the Core Audio learning curve, and get on with writing great software.
The tech behind this is what drives [Loopy and Loopy HD](http://loopyapp.com), as well as the in-development [Audiobus](http://audiob.us) app.
[Subscribe at theamazingaudioengine.com](http://theamazingaudioengine.com) to be kept in the loop as it approaches launch time.
Some of the features:
- Automatic mixing of multiple audio signals with per-channel volume and pan controls.
- Built-in support for audio filtering and effects, including the ability to form complex filter chains, constructing channel groups, or even whole trees of groups, and filtering them as one composite signal.
- Built-in support for audio input, including optional use of the Voice Processing IO unit, for automatic echo removal – great for VoIP.
- Record or monitor the output of the whole audio system, for in-app session recording, or get the output of one channel, or any group of channels in the processing tree.
- Support for any audio format (AudioStreamBasicDescription) that the hardware supports: Interleaved, non-interleaved, mono, stereo, 44.1kHz or any other supported sample rate, 16-bit, 8.24 fixed floating-point – whatever you need for your project.
- Very light, efficient engine, designed from the ground up for speed. All Core Audio code is pure C; no Objective- C or BSD calls, no locks, no memory allocation.
- Efficient mixing of input signals, using Apple’s MultiChannelMixer.
- Fast, lock-free synchronisation mechanism, enabling developers to send messages to the main thread from the Core Audio context, and vice versa, without locking or memory allocation from the Core Audio thread. Message sending from the main thread is two-way, and can be asynchronous, with a response block, or synchronous.