Although OpenAL provides a number of sophisticated 3D aural effects such as distance based roll-off, directivity and Doppler Shift, it lacks some very important environmental effects: reverberation, reflections, and sound occlusion or obstruction by intervening objects. Without these environmental effects, a listener can tell the direction of each sound source, but has a more difficult time pin-pointing how far away the sources are. Also, the listener has no idea of the environment where the sources are located.
This is where the concept of environmental audio comes in. Until now, EAX has been the standard way of adding environmental audio effects to OpenAL, but EFX provides a much more elegant solution.
EFX Vs EAX
The EAX API was designed around the DirectSound3D property set mechanism, and thus the EAX interface does not take full advantage of OpenAL's extension system, and EAX extensions all exist solely on PC.
The Effects Extension (EFX) on the other hand, was designed specifically 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.
Effects Extension Objects
The Effects Extensions introduce a number of new objects to OpenAL. In summary they are:
For full documentation including code examples, check out the OpenAL SDK.