Skip to main content

Developer

Go Search
Home
ALchemy
Beta - Audigy [CLOSED]
Beta - Linux
Beta - Windows
Developer
E-MU
MarCom
OpenAL
Open Source
  
Creative Labs: Connect > Developer > Wiki > Introduction to OpenAL  

Introduction to OpenAL

Overview

OpenAL is a cross-platform 3D Audio API designed to be used by games, music and multimedia applications. The OpenAL library enables the application to model a collection of sound sources moving in a 3D space as heard by a listener in that space. With extensions such as EAX, realistic environments can be created using environmental reverberation and low-pass filtering effects. But that's not all, the OpenAL API includes support for streaming and audio capture too.

OpenAL is a proven, cost-effective technology. Its ease of use, and robust features lead to its becoming a well established audio API that has been used in many commercial games and other multimedia applications (please see Shipping titles section below).

OpenAL benefits from having an active and supportive developer community. Engaging developers to participate in the API's specifications paves the way for innovations to happen at a faster rate than in most closed systems.

The number of platforms that are supported by OpenAL continues to grow, with a recent addition being Microsoft's XBox360 platform (please see Cross-Platform section below for a full listing). A new version of OpenAL, version 1.1, has recently been specified and has launched for several platforms, with the rest to follow soon.

If you are interested in a cost-effective, community focused method for adding 3D Audio with cross-platform support then OpenAL is your answer!

Features

Device Enumeration
OpenAL allows an application to detect and enumerate all of the available playback Devices on the user's system, along with the capabilities of each Device. This enables the application to present the user with playback device selection.

Fully-featured 3D Audio API
Simple, small, fast and powerful, OpenAL has the functionality you need to create great sounding 3D environments.

Separation of Samples and Hardware Voices
In OpenAL terminology, audio samples are known as Buffers, and voices, used to play Buffers, are known as Sources. An application can create many Buffers (usually only limited by the availability of RAM) to store all the samples needed. The number of Sources will be limited to the number of samples that can be played simultaneously by the playback device. For example, on the Sound Blaster X-Fi card, up to 128 Sources can be created, so they can all play at once, with hardware acceleration of the mixing and sample-rate conversion process.

Streaming
Streaming audio into OpenAL involves a simple process of buffer queuing. There are no circular buffers or play and write cursors to worry about. An OpenAL Source can be given a list of OpenAL Buffers to play one after another. When a Buffer in the queue finishes playing, it can be un-queued, filled in with new audio data, and re-queued!

Cross Platform
OpenAL implementations are available for many different platforms including:
Windows 98SE, ME, 2000, and XP
Mac OS 8, 9, X
Linux
Unix
XBox
XBox360

Compatibility
On the Windows platform there are 3 different types of OpenAL devices available. The Generic Software device runs on any soundcard, with or without Direct X support. This device is the fallback solution that will be used if no other devices are available. The Generic Hardware device provides an emulation of OpenAL on top of Direct Sound 3D, and provides hardware acceleration on any soundcard that has Direct Sound 3D drivers, and supports a minimum of 16 Hardware 3D Voices. Finally, there are Native OpenAL drivers available for soundcards such as the Sound Blaster Audigy and X-Fi series of cards. The native devices offer the best in terms of performance and features.

Easy To Use
The OpenAL API is easy to use while giving programmers the control they need to create interactive 3D environments. Anyone familiar with OpenGL will feel right at home with style of the function names and types definitions.

Audio Capture
OpenAL version 1.1 includes support for audio capture. A simple set of function calls can be used to capture audio enabling applications to handle tasks such as Voice Over IP.

EAX Support
The Window's implementations of OpenAL support Creative's EAX technology. In fact EAX versions 2, 3, 4 and 5 are all supported! The Generic Software mixer includes a high-quality reverb algorithm too, so you can be guaranteed to always have reverb!

EFX Extension
The Effects Extension is designed to provide a generic, cross-platform framework for adding advanced DSP effects to OpenAL. This framework offers the OpenAL programmer two new ways to process audio. Firstly, Sources can be processed through filters. Secondly, Auxiliary Effect Sends are introduced, so that effects processing can be applied to groups of Sources. The output of the Auxiliary Effects is fed into the final mix. It is also possible to filter Sources as they are fed into each Auxiliary Effect.

3D Attenuation Models
OpenAL supports several Distance Models that control the algorithms used to calculate the way that sounds attenuate over distance, including the ability to switch attenuation off, so the application can control levels itself. There is also a per-Source Roll-Off factor that can be used to tweak each Source individually.

Playback Status
You can monitor the playback position of playing Sources, and you can also specify offsets into Buffer to start playback in the middle of the sample.

Support

A key consideration for selecting any audio API is the availability of support. OpenAL support is primarily through the use of active OpenAL discussion boards, which are populated by Creative Software Engineers, and hundreds of OpenAL users.

In addition direct access to Creative Software Engineers is available to any developers who have joined Creative's Developer Relations Program.

Cost

There is no charge for using OpenAL and free support is available on the mailing lists!

Availability

OpenAL SDKs and run-time components are available for immediate download for most supported platforms. Please refer to the OpenAL downloads area for links to the different implementations of OpenAL.

For Windows, the OpenAL SDK and OpenAL runtime can be downloaded here.

For the XBox360 and XBox implementations, please contact your Creative Digital Media Relations account representative (where your status as a registered XBox developer will be verified).

Shipping Titles

OpenAL is the API of choice for many recent games and game engines, including:

Doom 3 Engine
Unreal 3 Engine
Torque Engine
Quake 4
Doom 3
Cold War

For a more complete list please visit http://connect.creativelabs.com/openal/OpenAL%20Wiki/Games.aspx.

Last modified at 5/29/2008 1:01 PM  by Administrator