3 Updated library codebase to C++14.
5 Improved memory use for mixing voices.
7 Improved detection of NEON capabilities.
9 Improved handling of PulseAudio devices that lack manual start control.
11 Improved mixing performance with PulseAudio.
13 Improved high-frequency scaling quality for the HRTF B-Format decoder.
15 Improved makemhr's HRIR delay calculation.
17 Improved WASAPI capture of mono formats with multichannel input.
19 Reimplemented the modulation stage for reverb.
21 Enabled real-time mixing priority by default, for backends that use the
22 setting. It can still be disabled in the config file.
24 Enabled dual-band processing for the built-in quad and 7.1 output decoders.
26 Fixed building with the static runtime on MSVC.
28 Fixed using source stereo angles outside of -pi...+pi.
30 Fixed the buffer processed event count for sources that start with empty
33 Fixed trying to open an unopenable WASAPI device causing all devices to
36 Fixed stale devices when re-enumerating WASAPI devices.
38 Fixed using unicode paths with the log file on Windows.
40 Fixed DirectSound capture reporting the bad sample counts or erroring when
43 Added an in-progress extension for a callback-driven buffer type.
45 Added an in-progress extension for higher-order B-Format buffers.
47 Added an in-progress extension for convolution reverb.
49 Added an experimental Oboe backend for Android playback. This requires the
50 Oboe sources at build time, so that it's built as a static library included
53 Added an option for auto-connecting JACK ports.
55 Added greater-than-stereo support to the SoundIO backend.
57 Modified the mixer to be fully asynchronous with the external API, and
58 should now be real-time safe. Although alcRenderSamplesSOFT is not due to
59 locking to check the device handle validity.
61 Modified the UHJ encoder to use an all-pass FIR filter that's less harmful
62 to non-filtered signal phase.
64 Converted examples from SDL_sound to libsndfile. To avoid issues when
65 combining SDL2 and SDL_sound.
67 Worked around a 32-bit GCC/MinGW bug with TLS destructors. See:
68 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83562
70 Reduced the maximum number of source sends from 16 to 6.
72 Removed the QSA backend. It's been broken for who knows how long.
74 Got rid of the compile-time native-tools targets, using cmake and global
75 initialization instead. This should make cross-compiling less troublesome.
79 Implemented the AL_SOFT_direct_channels_remix extension. This extends
80 AL_DIRECT_CHANNELS_SOFT to optionally remix input channels that don't have
81 a matching output channel.
83 Implemented the AL_SOFT_bformat_ex extension. This extends B-Format buffer
84 support for N3D or SN3D scaling, or ACN channel ordering.
86 Fixed a potential voice leak when a source is started and stopped or
87 restarted in quick succession.
89 Fixed a potential device reset failure with JACK.
91 Improved handling of unsupported channel configurations with WASAPI. Such
92 setups will now try to output at least a stereo mix.
94 Improved clarity a bit for the HRTF second-order ambisonic decoder.
96 Improved detection of compatible layouts for SOFA files in makemhr and
99 Added the ability to resample HRTFs on load. MHR files no longer need to
100 match the device sample rate to be usable.
102 Added an option to limit the HRTF's filter length.
106 Converted the library codebase to C++11. A lot of hacks and custom
107 structures have been replaced with standard or cleaner implementations.
109 Partially implemented the Vocal Morpher effect.
111 Fixed the bsinc SSE resamplers on non-GCC compilers.
113 Fixed OpenSL capture.
115 Fixed support for extended capture formats with OpenSL.
117 Fixed handling of WASAPI not reporting a default device.
119 Fixed performance problems relating to semaphores on macOS.
121 Modified the bsinc12 resampler's transition band to better avoid aliasing
124 Modified alcResetDeviceSOFT to attempt recovery of disconnected devices.
126 Modified the virtual speaker layout for HRTF B-Format decoding.
128 Modified the PulseAudio backend to use a custom processing loop.
130 Renamed the makehrtf utility to makemhr.
132 Improved the efficiency of the bsinc resamplers when up-sampling.
134 Improved the quality of the bsinc resamplers slightly.
136 Improved the efficiency of the HRTF filters.
138 Improved the HRTF B-Format decoder coefficient generation.
140 Improved reverb feedback fading to be more consistent with pan fading.
142 Improved handling of sources that end prematurely, avoiding loud clicks.
144 Improved the performance of some reverb processing loops.
146 Added fast_bsinc12 and 24 resamplers that improve efficiency at the cost of
147 some quality. Notably, down-sampling has less smooth pitch ramping.
149 Added support for SOFA input files with makemhr.
151 Added a build option to use pre-built native tools. For cross-compiling,
152 use with caution and ensure the native tools' binaries are kept up-to-date.
154 Added an adjust-latency config option for the PulseAudio backend.
156 Added basic support for multi-field HRTFs.
158 Added an option for mixing first- or second-order B-Format with HRTF
159 output. This can improve HRTF performance given a number of sources.
161 Added an RC file for proper DLL version information.
163 Disabled some old KDE workarounds by default. Specifically, PulseAudio
164 streams can now be moved (KDE may try to move them after opening).
168 Implemented capture support for the SoundIO backend.
170 Fixed source buffer queues potentially not playing properly when a queue
173 Fixed possible unexpected failures when generating auxiliary effect slots.
175 Fixed a crash with certain reverb or device settings.
177 Fixed OpenSL capture.
179 Improved output limiter response, better ensuring the sample amplitude is
184 Implemented the ALC_SOFT_device_clock extension.
186 Implemented the Pitch Shifter, Frequency Shifter, and Autowah effects.
188 Fixed compiling on FreeBSD systems that use freebsd-lib 9.1.
190 Fixed compiling on NetBSD.
192 Fixed the reverb effect's density scale and panning parameters.
194 Fixed use of the WASAPI backend with certain games, which caused odd COM
195 initialization errors.
197 Increased the number of virtual channels for decoding Ambisonics to HRTF
200 Changed 32-bit x86 builds to use SSE2 math by default for performance.
201 Build-time options are available to use just SSE1 or x87 instead.
203 Replaced the 4-point Sinc resampler with a more efficient cubic resampler.
205 Renamed the MMDevAPI backend to WASAPI.
207 Added support for 24-bit, dual-ear HRTF data sets. The built-in data set
208 has been updated to 24-bit.
210 Added a 24- to 48-point band-limited Sinc resampler.
212 Added an SDL2 playback backend. Disabled by default to avoid a dependency
215 Improved the performance and quality of the Chorus and Flanger effects.
217 Improved the efficiency of the band-limited Sinc resampler.
219 Improved the Sinc resampler's transition band to avoid over-attenuating
222 Improved the performance of some filter operations.
224 Improved the efficiency of object ID lookups.
226 Improved the efficienty of internal voice/source synchronization.
228 Improved AL call error logging with contextualized messages.
230 Removed the reverb effect's modulation stage. Due to the lack of reference
231 for its intended behavior and strength.
235 Fixed resetting the FPU rounding mode after certain function calls on
238 Fixed use of SSE intrinsics when building with Clang on Windows.
240 Fixed a crash with the JACK backend when using JACK1.
242 Fixed use of pthread_setnane_np on NetBSD.
244 Fixed building on FreeBSD with an older freebsd-lib.
246 OSS now links with libossaudio if found at build time (for NetBSD).
250 Fixed an issue where resuming a source might not restart playing it.
252 Fixed PulseAudio playback when the configured stream length is much less
253 than the requested length.
255 Fixed MMDevAPI capture with sample rates not matching the backing device.
257 Fixed int32 output for the Wave Writer.
259 Fixed enumeration of OSS devices that are missing device files.
261 Added correct retrieval of the executable's path on FreeBSD.
263 Added a config option to specify the dithering depth.
265 Added a 5.1 decoder preset that excludes front-center output.
269 Implemented the AL_EXT_STEREO_ANGLES and AL_EXT_SOURCE_RADIUS extensions.
271 Implemented the AL_SOFT_gain_clamp_ex, AL_SOFT_source_resampler,
272 AL_SOFT_source_spatialize, and ALC_SOFT_output_limiter extensions.
274 Implemented 3D processing for some effects. Currently implemented for
275 Reverb, Compressor, Equalizer, and Ring Modulator.
277 Implemented 2-channel UHJ output encoding. This needs to be enabled with a
278 config option to be used.
280 Implemented dual-band processing for high-quality ambisonic decoding.
282 Implemented distance-compensation for surround sound output.
284 Implemented near-field emulation and compensation with ambisonic rendering.
285 Currently only applies when using the high-quality ambisonic decoder or
286 ambisonic output, with appropriate config options.
288 Implemented an output limiter to reduce the amount of distortion from
291 Implemented dithering for 8-bit and 16-bit output.
293 Implemented a config option to select a preferred HRTF.
295 Implemented a run-time check for NEON extensions using /proc/cpuinfo.
297 Implemented experimental capture support for the OpenSL backend.
299 Fixed building on compilers with NEON support but don't default to having
302 Fixed support for JACK on Windows.
304 Fixed starting a source while alcSuspendContext is in effect.
306 Fixed detection of headsets as headphones, with MMDevAPI.
308 Added support for AmbDec config files, for custom ambisonic decoder
309 configurations. Version 3 files only.
311 Added backend-specific options to alsoft-config.
313 Added first-, second-, and third-order ambisonic output formats. Currently
314 only works with backends that don't rely on channel labels, like JACK,
317 Added a build option to embed the default HRTFs into the lib.
319 Added AmbDec presets to enable high-quality ambisonic decoding.
321 Added an AmbDec preset for 3D7.1 speaker setups.
323 Added documentation regarding Ambisonics, 3D7.1, AmbDec config files, and
324 the provided ambdec presets.
326 Added the ability for MMDevAPI to open devices given a Device ID or GUID
329 Added an option to the example apps to open a specific device.
331 Increased the maximum auxiliary send limit to 16 (up from 4). Requires
332 requesting them with the ALC_MAX_AUXILIARY_SENDS context creation
335 Increased the default auxiliary effect slot count to 64 (up from 4).
337 Reduced the default period count to 3 (down from 4).
339 Slightly improved automatic naming for enumerated HRTFs.
341 Improved B-Format decoding with HRTF output.
343 Improved internal property handling for better batching behavior.
345 Improved performance of certain filter uses.
347 Removed support for the AL_SOFT_buffer_samples and AL_SOFT_buffer_sub_data
348 extensions. Due to conflicts with AL_EXT_SOURCE_RADIUS.
352 Implemented device enumeration for OSSv4.
354 Fixed building on OSX.
356 Fixed building on non-Windows systems without POSIX-2008.
358 Fixed Dedicated Dialog and Dedicated LFE effect output.
360 Added a build option to override the share install dir.
362 Added a build option to static-link libgcc for MinGW.
366 Fixed building with JACK and without PulseAudio.
368 Fixed building on FreeBSD.
370 Fixed the ALSA backend's allow-resampler option.
372 Fixed handling of inexact ALSA period counts.
374 Altered device naming scheme on Windows backends to better match other
377 Updated the CoreAudio backend to use the AudioComponent API. This clears up
378 deprecation warnings for OSX 10.11, although requires OSX 10.6 or newer.
382 Implemented a JACK playback backend.
384 Implemented the AL_EXT_BFORMAT and AL_EXT_MULAW_BFORMAT extensions.
386 Implemented the ALC_SOFT_HRTF extension.
388 Implemented C, SSE3, and SSE4.1 based 4- and 8-point Sinc resamplers.
390 Implemented a C and SSE based band-limited Sinc resampler. This does 12- to
391 24-point Sinc resampling, and performs anti-aliasing.
393 Implemented B-Format output support for the wave file writer. This creates
394 FuMa-style first-order Ambisonics wave files (AMB format).
396 Implemented a stereo-mode config option for treating stereo modes as either
397 speakers or headphones.
399 Implemented per-device configuration options.
401 Fixed handling of PulseAudio and MMDevAPI devices that have identical
404 Fixed a potential lockup when stopping playback of suspended PulseAudio devices.
406 Fixed logging of Unicode characters on Windows.
408 Fixed 5.1 surround sound channels. By default it will now use the side
409 channels for the surround output. A configuration using rear channels is
412 Fixed the QSA backend potentially altering the capture format.
414 Fixed detecting MMDevAPI's default device.
416 Fixed returning the default capture device name.
418 Fixed mixing property calculations when deferring context updates.
420 Altered the behavior of alcSuspendContext and alcProcessContext to better
421 match certain Windows drivers.
423 Altered the panning algorithm, utilizing Ambisonics for better side and
424 back positioning cues with surround sound output.
426 Improved support for certain older Windows apps.
428 Improved the alffplay example to support surround sound streams.
430 Improved support for building as a sub-project.
432 Added an HRTF playback example.
434 Added a tone generator output test.
436 Added a toolchain to help with cross-compiling to Android.
440 Implemented EFX Chorus, Flanger, Distortion, Equalizer, and Compressor
443 Implemented high-pass and band-pass EFX filters.
445 Implemented the high-pass filter for the EAXReverb effect.
447 Implemented SSE2 and SSE4.1 linear resamplers.
449 Implemented Neon-enhanced non-HRTF mixers.
451 Implemented a QSA backend, for QNX.
453 Implemented the ALC_SOFT_pause_device, AL_SOFT_deferred_updates,
454 AL_SOFT_block_alignment, AL_SOFT_MSADPCM, and AL_SOFT_source_length
457 Fixed resetting mmdevapi backend devices.
459 Fixed clamping when converting 32-bit float samples to integer.
461 Fixed modulation range in the Modulator effect.
463 Several fixes for the OpenSL playback backend.
465 Fixed device specifier names that have Unicode characters on Windows.
467 Added support for filenames and paths with Unicode (UTF-8) characters on
470 Added support for alsoft.conf config files found in XDG Base Directory
471 Specification locations (XDG_CONFIG_DIRS and XDG_CONFIG_HOME, or their
472 defaults) on non-Windows systems.
474 Added a GUI configuration utility (requires Qt 4.8).
476 Added support for environment variable expansion in config options (not
477 keys or section names).
479 Added an example that uses SDL2 and ffmpeg.
481 Modified examples to use SDL_sound.
483 Modified CMake config option names for better sorting.
485 HRTF data sets specified in the hrtf_tables config option may now be
486 relative or absolute filenames.
488 Made the default HRTF data set an external file, and added a data set for
489 48khz playback in addition to 44.1khz.
491 Added support for C11 atomic methods.
493 Improved support for some non-GNU build systems.
497 Fixed a regression with retrieving the source's AL_GAIN property.
501 Fixed device enumeration with the OSS backend.
503 Reorganized internal mixing logic, so unneeded steps can potentially be
504 skipped for better performance.
506 Removed the lookup table for calculating the mixing pans. The panning is
507 now calculated directly for better precision.
509 Improved the panning of stereo source channels when using stereo output.
511 Improved source filter quality on send paths.
513 Added a config option to allow PulseAudio to move streams between devices.
515 The PulseAudio backend will now attempt to spawn a server by default.
517 Added a workaround for a DirectSound bug relating to float32 output.
519 Added SSE-based mixers, for HRTF and non-HRTF mixing.
521 Added support for the new AL_SOFT_source_latency extension.
523 Improved ALSA capture by avoiding an extra buffer when using sizes
524 supported by the underlying device.
526 Improved the makehrtf utility to support new options and input formats.
528 Modified the CFLAGS declared in the pkg-config file so the "AL/" portion of
529 the header includes can optionally be omitted.
531 Added a couple example code programs to show how to apply reverb, and
534 The configuration sample is now installed into the share/openal/ directory
535 instead of /etc/openal.
537 The configuration sample now gets installed by default.