OpenAL (Open Audio Library) Charter =================================== The Open Audio Library (OpenAL) is intended to provide an open, cross-platform audio capability suitable for professional game development purposes (it may well be applicable to many other application domains). It is a mid-level library primarily intended to utilize existing low-level sound APIs, although it seems promising that audio hardware IHVs may write to a real OpenAL driver layer. Initial implementations will focus on sound output capabilities (sampled, MIDI and CD audio), but the architecture will be designed to support sound input, filtering and other capabilities in the future. In other words, an open, extensible architecture is the goal. OpenAL uses a C API for portability and cross-language capability. This API reflects the OpenGL design philosophy as much as is reasonably possible given the different topic areas. OpenAL is thread safe on those platforms that support threads. OpenAL provides a native driver layer where IHV support exists. Otherwise, it will use platform-native libraries as an adapter layer, falling back to straight software as a last resort. OpenAL will initially use sound format(s) native to the target platform. At some point its hoped that an open, flexible, cross-platform sound format will become available. PCM support may be a reasonable compromise. OpenAL provides mixing of sampled audio. OpenAL places no limit on the number of possible mixing channels, though there may be platform-specific limitations. OpenAL will provide a way to determine the number of available channels for a particular output. OpenAL provides the following capabilities for outputs (devices): o Volume control o Panning o Control of device bit rate where applicable OpenAL provides the following 2D capabilities for mixed sampled sounds: o Volume control o Panning o Looping o Chaining o Priority o Channel groups o Filters o Sample bit rate OpenAL provides the following 3D capabilities for mixed sampled sounds: o Absolute volume control o 3D position relative to listener o Velocity relative to listener (Doppler) o Looping o Chaining o Priority o Channel groups o Listener position and velocity. o Filters o Sample bit rate o Audio scene geometry specification o Materials OpenAL provides a mechanism for flexibly associating input sounds from whatever source with outputs of whatever type. A mechanism for applying sound filters to inputs will be provided as well. OpenAL supports MIDI and CD audio playback on systems with appropriate hardware. All inputs and outputs (in the audio sense) may be queried for current status information. Event based callbacks are provided.