A Real-Time Audio Scheduler for Pentium PCs
Camille Goudeseune Michael Hamman
Univ. of Illinois at Urbana-Champaign Univ. of Illinois at Urbana-Champaign
603 W. Nevada #1 705 W. Nevada #4
Urbana, IL 61801 Urbana, IL 61801
cog @uiuc.edu m-hamman @uiuc.edu
The Audio Rendering Engine And Library (AREAL) offers a set of tools for developing realtime audio applications for Pentium computers running Windows 95/NT. It consists of a
real-time scheduler and a framework for developing sound synthesis classes. AREAL lets
composers and sound designers develop applications which address research into audio algorithms, their control in real time, and their correlation with non-audio processes. It emphasizes efficiency and low CPU overhead, coexisting well with other graphics and modeling
computation possibly sharing its CPU. We briefly describe AREAL's design goals, architecture, and use.
AREAL does software synthesis of audio in C/C++. It is intended more as a programmer's tool than a user's
tool. It assumes no special (costly) hardware beyond current desktop computers, distinguishing it from DSP- and
other hardware-based synthesizers. It is similar in intent to Aura and Nyquist [Dannenberg 96] but uses a more
universal language than Lisp, and instead of striving for portability it runs on a platform with enough users to
ensure longevity. Again, Max and its successor Pd [Puckette 97] emphasize connecting pre-existing objects and a
graphical programming environment more than working at the C/C++ level. The feature sets of real-time Music-N
languages, even those that encourage C programming, still reflect batch-mode use; AREAL has no such backwardscompatible ties. Finally, AREAL is well suited for audio applications where the limited timbral control and limited
data bandwidth of MIDI hardware (and more recent software emulators) present difficulties [Moore 88]. Areal is
small enough to be easily integrated into existing applications. It can use applications' own interfaces to networks,
file I/O, and GUI instead of requiring its own. AREAL's small set of compositional assumptions lends itself to a
wide variety of compositional techniques. For data sonification applications, AREAL allows for a "model-based"
[Bargar 94] approach to audio in which auditory events are generated in real time as a direct mapping of a dynamically evolving data set or process.
AREAL is a C-language API wrapped around a C++ library that handles real-time scheduling of audio samples to a standard sound card on a Pentium PC running Windows 95 or NT. AREAL incorporates (1) a real-time
scheduler for managing uninterrupted playback of computed audio samples, and (2) an extendible sound synthesis
AREAL is targeted for composers and sound designers who wish to take a "roll-your-own" approach to computer music. Using AREAL, composers and audio researchers can develop audio software applications for sound
synthesis and music composition, by adding synthesis libraries to AREAL and writing application code for implementing control interfaces. Composers and audio researchers desiring modest synthesis methods can build applications using synthesis objects already built into AREAL. These objects are initialized and controlled via the C API,
an interface to code in AREAL's dynamically linked library (DLL). For composers who have developed synthesis
algorithms which they would like to execute in a real-time application environment, AREAL provides a robust
though easy-to-understand framework for folding that synthesis code into AREAL's real-time scheduler. The builtin synthesis algorithms then serve as models for incorporating these other algorithms into AREAL.
AREAL uses version 5.0 of Microsoft's Visual C++ compiler, which we chose over others for its good support
tools, documentation, and speed of generated code. Even so, AREAL adds little overhead to the actual computation
of audio data. Sample computation is done a block at a time ("vectorized", according to [Freed 92]); multi