portable audio engine

description

As part of Emagic‘s flagship product, Logic Audio, I developed a portable audio engine. This audio engine (nicknamed PAD) powered Logic Audio from 1996 to 2000. In addition, it was used in VMR and WaveBurner. The following key objectives have been followed during the design:
 
At the time of design, typical audio engines were usually specifically tailored to the hardware/ operating system. As Emagic was a small company, an effort to increase the amount of code shared across platforms was more than welcome. The bottleneck of an audio engine was mainly the disk access. This was solved by intensive caching with intelligent read-ahead schemes. Realtime DSP processing was in its infancy, dominated by the process of mixing the output tracks. Memory access was already an issue here, but due to limited DSP processing, the focus was laid on implementing a scatter-gather scheme throughout the complete engine to avoid superfluous copying of data. Logic Audio was a Win 16 application at that time, programmed with Watcom‘s 32-bit extender. Windows 95, especially in conjunction with 16-bit applications had unpredictable real-time behavior. PAD reduced latency to about 200ms, which was an excellent value in 1996.
PAD entity-relationship-diagram

features

The PAD audio engine implements the following features:

PAD-delta

Since the design of PAD several things have changed. With increasing power of host CPUs, the focus shifted more and more to host-based DSP processing. This also shifted the bottleneck of the audio engine to memory bandwidth. Another thing we learnt was, that class hierarchies with lots of abstraction layers are not as maintenance friendly as believed, and that restructuring such a hierarchy is a major pain.
PAD-delta entity-relationship-diagram
PAD-delta was a redesign of PAD from 1999 to 2000, in an attempt to overcome these issues by taking the following approach:
 
While PAD-delta remained the best performing audio engine in the music industry, it was replaced by an engine nicknamed MD in 2000 due to company internal political reasons and licensing issues.