OpenAL Soft

Contents:



Overview

OpenAL Soft is an LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API. It's forked from the open-sourced Windows version available originally from openal.org's SVN repository (now defunct).

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.

About This Project

This library is a compatible update/replacement to the deprecated OpenAL Sample Implementation (the SI). It is a fork of the old Windows software driver, modified to be cross-platform with multiple output backends: PulseAudio, ALSA, OSS, MMDevAPI, DirectSound, CoreAudio, Solaris, QSA, SoundIO, OpenSL, WinMM, PortAudio, "Null" Output, and a .wav writer are currently implemented.

OpenAL Soft has been further improved to support mono, stereo, 4-channel, 5.1, 6.1, 7.1, HRTF, and B-Format output. It does not support the Vorbis and MP3 extensions however, these are considered deprecated. It does, though, support many extensions like AL_EXT_FLOAT32 and AL_EXT_MCFORMATS for multi-channel and floating-point formats, as well as ALC_EXT_EFX for environmental audio effects, and others.

If you need support, feel free to send a message to the OpenAL mailing list:

http://openal.org/mailman/listinfo/openal

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

OpenAL Soft 1.20.1 is now available!

Implemented the AL_SOFT_direct_channels_remix extension.

This extends AL_DIRECT_CHANNELS_SOFT to optionally remix input channels that don't have a matching output channel.

This extends AL_DIRECT_CHANNELS_SOFT to optionally remix input channels that don't have a matching output channel. Implemented the AL_SOFT_bformat_ex extension.

This extends B-Format buffer support for N3D or SN3D scaling, or ACN channel ordering.

This extends B-Format buffer support for N3D or SN3D scaling, or ACN channel ordering. Fixed a potential voice leak when a source is started and stopped or restarted in quick succession.

Fixed a potential device reset failure with JACK.

Improved handling of unsupported channel configurations with WASAPI.

Such setups will now try to output at least a stereo mix.

Such setups will now try to output at least a stereo mix. Improved clarity a bit for the HRTF second-order ambisonic decoder.

Improved detection of compatible layouts for SOFA files in makemhr and sofa-info.

Added the ability to resample HRTFs on load.

MHR files no longer need to match the device sample rate to be usable.

MHR files no longer need to match the device sample rate to be usable. Added an option to limit the HRTF's filter length.

Converted the library codebase to C++11.

A lot of hacks and custom structures have been replaced with standard or cleaner implementations.

A lot of hacks and custom structures have been replaced with standard or cleaner implementations. Partially implemented the Vocal Morpher effect.

Fixed the bsinc SSE resamplers on non-GCC compilers.

Fixed OpenSL capture.

Fixed support for extended capture formats with OpenSL.

Fixed handling of WASAPI not reporting a default device.

Fixed performance problems relating to semaphores on macOS.

Modified the bsinc12 resampler's transition band to better avoid aliasing noise.

Modified alcResetDeviceSOFT to attempt recovery of disconnected devices.

Modified the virtual speaker layout for HRTF B-Format decoding.

Modified the PulseAudio backend to use a custom processing loop.

Renamed the makehrtf utility to makemhr.

Improved the efficiency of the bsinc resamplers when up-sampling.

Improved the quality of the bsinc resamplers slightly.

Improved the efficiency of the HRTF filters.

Improved the HRTF B-Format decoder coefficient generation.

Improved reverb feedback fading to be more consistent with pan fading.

Improved handling of sources that end prematurely, avoiding loud clicks.

Improved the performance of some reverb processing loops.

Added fast_bsinc12 and 24 resamplers that improve efficiency at the cost of some quality.

Notably, down-sampling has less smooth pitch ramping.

Notably, down-sampling has less smooth pitch ramping. Added support for SOFA input files with makemhr.

Added a build option to use pre-built native tools.

For cross-compiling, use with caution and ensure the native tools' binaries are kept up-to-date.

For cross-compiling, use with caution and ensure the native tools' binaries are kept up-to-date. Added an adjust-latency config option for the PulseAudio backend.

Added basic support for multi-field HRTFs.

Added an option for mixing first- or second-order B-Format with HRTF output.

This can improve HRTF performance given a number of sources.

This can improve HRTF performance given a number of sources. Added an RC file for proper DLL version information.

Disabled some old KDE workarounds by default.

Specifically, PulseAudio streams can now be moved (KDE may try to move them after opening).

Download

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.20.1, and is available in source form. Please try it out and let me know how it works. :-)

openal-soft-1.20.1.tar.bz2

Win32 and Win64 binaries are also provided

openal-soft-1.20.1-bin.zip

A more up-to-date Git repository is available at repo.or.cz and GitHub.

Note that you will need to install Git to download it.

Older releases can be found here, and older binaries can be found here.

Source Install

To install OpenAL Soft, first extract it. It will automatically extract itself into the openal-soft-1.20.1/ directory. Using your favorite shell, go into the build/ directory, and run:

cmake ..

Assuming configuration went well, you can then build it, typically using GNU Make (KDevelop, MSVC, and others are possible depending on your system setup and CMake configuration).

Click here to go back.