[openal] OpenAL Soft 1.20.0 released!

Chris Robinson chris.kcat at gmail.com
Thu Nov 28 05:41:51 EST 2019


OpenAL Soft 1.20.0 is now available:

https://openal-soft.org/

This release presents one of the bigger changes for the codebase, as it 
switched from C to C++11 (NOTE: the library is still a drop-in 
replacement, it does not break API or ABI). As a result, building now 
requires a properly conforming compiler, such as GCC5, Clang 3.8, or 
MSVC 2015. Older versions of these compilers may claim C++11 
compatibility, but they may also have certain deficiencies that prevent 
building the library. If you're having an issue with a compiler that 
should otherwise work, please let me know or file an issue on GitHub 
<https://github.com/kcat/openal-soft> and I'll look into it.

In terms of actual features and improvements, this release improves 
efficiency for the bsinc resamplers and HRTF mixing, and adds an option 
for further improving the performance of HRTF at the cost of some 
quality (see the hrtf-mode config option). The quality of the bsinc 
resamplers is also improved to help reduce distortion peaks.

Additionally, the makemhr utility (formerly called mnakehrtf) now 
supports standard SOFA files, as described here 
<https://www.sofaconventions.org/>. Support for this depends on 
libMySOFA, available in various distro repositories or here 
<https://github.com/hoene/libmysofa/>. Note that not all SOFA files will 
work, as OpenAL Soft's HRTF currently depends on uniform HRIR layouts. 
The makemhr tool will try to work out a uniform layout if the given 
input isn't uniform, but not all datasets will have one and may fail.

For this release, there is also the addition of pop-prevention for 
sources that end prematurely on non-0 amplitude, multi-field HRTF 
support, a partial Vocal Morpher implementation, and more. See the 
ChangeLog for a more complete list of changes.

Following this release, there are a couple changes I intend on doing 
soon, including load-time HRTF resampling so you don't need an HRTF 
dataset for each playback sample rate (presuming it don't cause any 
loading performance problems). Similarly, I intend on making the HRIR 
"truncation" a load-time option, so as to not need multiple datasets to 
alter performance vs. quality with the filter size. I actually wanted 
that for this release, but I didn't want to put it off even more, so 
they'll be in an upcoming point release.

Further along, I'm going to continue trying to separate the library into 
a lower-level reusable component that the OpenAL API layer sits on top 
of. There's also ideas for a callback-based source streaming, allowing 
lower-latency output where such a thing is possible. The ability to move 
an opened device to a different output may also be considered. 
Additionally, I can hopefully finish up effect chaining extension and 
the event callback extension, after getting enough feedback for what 
exactly it can or should provide.

Thanks for reading! If there are any questions, concerns, or comments, 
please feel free to bring it up.


More information about the openal mailing list