This paper presents a device driver abstraction that exploits the low bandwidth and constant bit rate of audio to provide multiple channels of low latency audio efficiently. It provides applications with a great deal of flexibility with regards to latency, blocking behaviour and mixing. Until recently, those operating systems that provided support for audio tended to do so in a rather inflexible manner. Typically, only one client could use the audio service at once and that client was often given little information about the timeliness of the audio delivery. Some of these applications, such as most computer games, play several effects at once and so have to perform their own mixing on the various audio channels they play.
Some applications are very sensitive to latency.
Holding a conversation with audio round trip time of greater than approximately 100ms is distracting. The difference of an attack of 10ms and 50ms is perceptible in music. The delay between a sound off to one side of a human head reaching one ear and reaching the other is about 1ms, yet the brain takes this in to account when locating sound sources. General purpose operating systems are typically unable to handle audio with low latency and jitter and so are not usually used for latency critical audio applications such as musical signal processing in real time. When an application is processing an audio stream from one audio device with one clock source and playing it on one with another clock source, as will typically be the case in an audio conference, we have observed that the two clocks are not generally running at exactly the same rate.