0 A.D. Audio Development I signed on as Sound Designer for this Historical RTS currently in production at WildFireGames called 0 A.D. ("zero ay-dee") in March of 2005.
If this is your first time here, you can start at the beginning, and then work your way forward though the archive links. -------------------------------------------------------
Tuesday, April 05, 2005
OpenAl Primer
Today, a quick OpenAl Primer.

From the OAL Fundamentals:
The AL has three fundamental primitives or objects -- Buffers, Sources, and a single Listener. Each object can be changed independently, the setting of one object does not affect the setting of others. The application can also set modes that affect processing. Modes are set, objects specified, and other AL operations performed by sending commands in the form of function or procedure calls.

Sources store locations, directions, and other attributes of an object in 3D space and have a buffer associated with them for playback. There are normally far more sources defined than buffers. When the program wants to play a sound, it controls execution through a source object. Sources are processed independently from each other.

Buffers store compressed or un-compressed audio data. It is common to initialize a large set of buffers when the program first starts (or at non-critical times during execution -- between levels in a game, for instance). Buffers are referred to by Sources. Data (audio sample data) is associated with buffers.

There is only one listener (per audio context). The listener attributes are similar to source attributes, but are used to represent where the user is hearing the audio from. The influence of all the sources from the perspective of the listener is mixed and played for the user.

Some of the base functionality/parameters in the OAL Engine aside from the playing of multiple audio files & above mentioned positional audio would include:


Along with the inherent abilities of OpenAL, there is also the extensibility of adding various "plug in's" to add functionality like EAX and Ogg vorbis support.

Working with the programmer to determine whether there is an elegant solution to the idea of randomizing source start time to allow for further variability.
At one point there was also OpenAL support for loop point specification, but it has since lapsed into the dysfunctional/ experimental category in the documentation. We'll see if that continues to be a possibility.

That’s all for today...more comments on the project soon.