OpenAL Soft is an LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API.
OpenAL provides capabilities for playing audio in a virtual 3D environment. Distance attenuation, doppler shift, and directional sound emitters are among the features handled by the API. More advanced effects, including air absorption, occlusion, and environmental reverb, are available through the EFX extension. It also facilitates streaming audio, multi-channel buffers, and audio capture.
If you need support, feel free to send a message to the OpenAL mailing list:
There is also an issue tracker on the GitHub repository, if you wish to report a bug or make a feature request.
You can ask for help in IRC, #openal on irc.freenode.net
This library is multi-platform, with support for Linux, Windows, Android, OS X, iOS, and more. Audio backends for PulseAudio, ALSA, WASAPI, OpenSL, CoreAudio, OSS, JACK, DirectSound, WinMM, Solaris, SoundIO, PortAudio, SDL2, "Null" Output, and a .wav file writer are currently implemented. Loopback devices are also supported for playback to interface with other audio systems.
OpenAL Soft supports many extensions, including but not limited to AL_EXT_MCFORMATS and AL_EXT_FLOAT32 for multi-channel and floating-point formats, AL_EXT_BFORMAT for B-Format (ambisonic) soundfield audio buffers, and ALC_EXT_EFX for environmental audio effects such as reverb, occlusion, and obstruction. It supports mono, stereo, 4-channel, 5.1, 7.1, HRTF, UHJ, and B-Format output.
OpenAL Soft 1.21.1 is now available!
The changes from 1.21.0 include:
The changes from 1.20.1 include:
- Improved alext.h's detection of standard types.
- Improved slightly the local source position when the listener and source are near each other.
- Improved click/pop prevention for sounds that stop prematurely.
- Fixed compilation for Windows ARM targets with MSVC.
- Fixed ARM NEON detection on Windows.
- Fixed CoreAudio capture when the requested sample rate doesn't match the system configuration.
- Fixed OpenSL capture desyncing from the internal capture buffer.
- Fixed sources missing a batch update when applied after quickly restarting the source.
- Fixed missing source stop events when stopping a paused source.
- Added capture support to the experimental Oboe backend.
- Updated library codebase to C++14.
- Implemented the AL_SOFT_effect_target extension.
- Implemented the AL_SOFT_events extension.
- Implemented the ALC_SOFT_loopback_bformat extension.
- Improved memory use for mixing voices.
- Improved detection of NEON capabilities.
- Improved handling of PulseAudio devices that lack manual start control.
- Improved mixing performance with PulseAudio.
- Improved high-frequency scaling quality for the HRTF B-Format decoder.
- Improved makemhr's HRIR delay calculation.
- Improved WASAPI capture of mono formats with multichannel input.
- Reimplemented the modulation stage for reverb.
- Enabled real-time mixing priority by default, for backends that use the setting.
It can still be disabled in the config file.
- Enabled dual-band processing for the built-in quad and 7.1 output decoders.
- Fixed a potential crash when deleting an effect slot immediately after the last source using it stops.
- Fixed building with the static runtime on MSVC.
- Fixed using source stereo angles outside of -pi...+pi.
- Fixed the buffer processed event count for sources that start with empty buffers.
- Fixed trying to open an unopenable WASAPI device causing all devices to stop working.
- Fixed stale devices when re-enumerating WASAPI devices.
- Fixed using unicode paths with the log file on Windows.
- Fixed DirectSound capture reporting bad sample counts or erroring when reading samples.
- Added an in-progress extension for a callback-driven buffer type.
- Added an in-progress extension for higher-order B-Format buffers.
- Added an in-progress extension for convolution reverb.
- Added an experimental Oboe backend for Android playback.
This requires the Oboe sources at build time, so that it's built as a static library included in libopenal.
- Added an option for auto-connecting JACK ports.
- Added greater-than-stereo support to the SoundIO backend.
- Modified the mixer to be fully asynchronous with the external API, and should now be real-time safe.
Although alcRenderSamplesSOFT is not due to locking to check the device handle validity.
- Modified the UHJ encoder to use an all-pass FIR filter that's less harmful to non-filtered signal phase.
- Converted examples from SDL_sound to libsndfile.
To avoid issues when combining SDL2 and SDL_sound.
- Worked around a 32-bit GCC/MinGW bug with TLS destructors.
- Reduced the maximum number of source sends from 16 to 6.
- Removed the QSA backend.
It's been broken for who knows how long.
- Got rid of the compile-time native-tools targets, using cmake and global initialization instead.
This should make cross-compiling less troublesome.
Building OpenAL Soft needs CMake version 3.0 or newer (older versions may possibly work as well, but are untested). Autotools is not supported. It should build on most compilers.
The latest release is 1.21.1, and is available in source form.
Win32 and Win64 binaries are also provided.
A more up-to-date Git repository is available at GitHub and repo.or.cz.
Note that you will need to install Git to download it.
Older releases can be found here, and older binaries can be found here.
To install OpenAL Soft, first extract it. It will automatically extract itself into the openal-soft-1.21.1/ directory. Using your favorite shell, go into the build/ directory, and run:
Assuming configuration went well, you can then build it, typically using GNU Make (MSVC, KDevelop, and others are possible depending on your system setup and CMake configuration).
Click here to go back.