A long overdue release. This release's highlights include:
- Updated library codebase to C++17.
- Implemented the ALC_SOFT_system_events extension.
- Implemented the AL_EXT_debug extension.
- Implemented the AL_EXT_direct_context extension.
- Implemented speaker configuration and headphones detection on CoreAudio.
- Fixed a potential crash with some extension functions on 32-bit Windows.
- Fixed a crash that can occur when stopping playback with the Oboe backend.
- Fixed calculating the reverb room rolloff.
- Fixed EAX occlusion, obstruction, and exclusion low-pass filter strength.
- Fixed EAX distance factor calculations.
- Fixed querying AL_EFFECTSLOT_EFFECT on auxiliary effect slots.
- Fixed compilation on some macOS systems that lack libdispatch.
- Fixed compilation as a subproject with MinGW.
- Changed the context error state to be thread-local. This is technically out of spec, but necessary to avoid race conditions with multi-threaded use.
- Split the cubic resampler into 4-point spline and gaussian variants. The latter prioritizing the suppression of aliasing distortion and harmonics, the former not reducing high frequencies as much.
- Improved timing precision of starting delayed sources.
- Improved ring modulator quality.
- Improved performance of convolution reverb.
- Improved WASAPI device enumeration performance.
- Added UWP support.
- Added 'noexcept' to functions and function types when compiled as C++. As a C API, OpenAL can't be expected to throw C++ exceptions, nor can it handle them if they leave a callback.
- Added an experimental config option for using WASAPI spatial audio output.
- Added enumeration support to the PortAudio backend.
- Added compatibility options to override the AL_VENDOR, AL_VERSION, and AL_RENDERER strings.
- Added an example to play LAF files.
- Disabled real-time mixing by default for PipeWire playback.
- Disabled the SndIO backend by default on non-BSD targets.
Full Changelog: 1.23.1...1.24.0