This release is a huge evolution for libspatialaudio from its origin as a Higher Order Ambisonics library.
This new release expands functionality to include object-based audio, additional loudspeaker layout support, binauralizations and many more new features that makes this library ready for rendering all type of spatial audio.
This is all unified in a Renderer class for Ambisonics, object-based audio, speaker layouts and binauralization. This makes it a much more comprehensive and easier to use library for immersive audio. The Renderer is designed to adapt easily to ADM and IAMF next‑generation audio workflows.
Object-Based Audio: Position and render individual sources dynamically in 3D space, compatible with ITU ADM and AOM’s IAMF immersive audio standards.
Unified Renderer Class: Seamlessly process HOA, object signals, speaker feeds, and binaural output under one API.
Cross-Platform Builds: Modernized build system with Meson and CMake, ensuring reproducibility across different operating systems.
Robust Documentation: Expanded theory, DSP background, and code examples for both newcomers and advanced developers.
Real-time Improvements: The code is now more efficient and real-time safe, making it suitable for AR/AR and gaming applications.
Higher Order Ambisonics (HOA): Efficiency and real-time improvements, as well as now supporting decoding to ITU standard loudspeaker layouts (5.1, 7.1.4, etc.)
- This is an API and ABI breaking release.
- Move Classes to the
spaudionamespace. - Simplified class names:
CAdmDirectSpeakersGainCalctoAdmDirectSpeakersGainCalcCAdmRenderertoRendererCAllocentricExtenttoAllocentricExtentCAllocentricPannerGainCalctoAllocentricPannerGainCalcCAmbisonicAllRADtoAmbisonicAllRADCAmbisonicBasetoAmbisonicBaseCAmbisonicBinauralizertoAmbisonicBinauralizerCAmbisonicDecodertoAmbisonicDecoderCAmbisonicEncodertoAmbisonicEncoderCAmbisonicEncoderDisttoAmbisonicEncoderDistCAmbisonicMicrophonetoAmbisonicMicrophoneCAmbisonicOptimFilterstoAmbisonicOptimFiltersCAmbisonicPolarExtentHandlertoAmbisonicPolarExtentHandlerCAmbisonicProcessortoAmbisonicProcessorCAmbisonicRotatortoAmbisonicRotatorCAmbisonicShelfFilterstoAmbisonicShelfFiltersCAmbisonicSourcetoAmbisonicSourceCAmbisonicSpeakertoAmbisonicSpeakerCAmbisonicSpreadPannertoAmbisonicSpreadPannerCAmbisonicZoomertoAmbisonicZoomerCBFormattoBFormatCDecorrelatortoDecorrelatorCGainCalculatortoGainCalculatorCGainInterptoGainInterpCIIRFiltertoIIRFilterCLinkwitzRileyIIRtoLinkwitzRileyIIRCPointSourcePannerGainCalctoPointSourcePannerGainCalcCPolarExtentHandlertoPolarExtentHandlerCPolarExtentHandlerBasetoPolarExtentHandlerBaseCScreenEdgeLocktoScreenEdgeLockHandlerCScreenScaleHandlertoScreenScaleHandlerCSpreadPannertoSpreadPannerCSpreadPannerBasetoSpreadPannerBase
- Changed LFE handling for the Renderer (formerly AdmRenderer) when rendering
to binaural. Before, LFE channels would be discarded when rendering to
binaural, following the ADM specification. Now they are included and
a new argument
useLfeBinauralwas added toConfigure, to change this behaviour if necessary. OutputLayoutmoved to theLoutspeakerLayout.hheader.- Removed/replaced some OutputLayout entries:
- Replaced
OutputLayout::ITU_0_2_0, useOutputLayout::Stereo - Replaced
OutputLayout::ITU_0_5_0, useOutputLayout::FivePointOne - Replaced
OutputLayout::ITU_2_5_0, useOutputLayout::FivePointOnePointTwo - Replaced
OutputLayout::ITU_4_5_0, useOutputLayout::FivePointOnePointFour - Replaced
OutputLayout::ITU_4_5_1, useOutputLayout::FivePointOnePointFourPlusLow - Replaced
OutputLayout::ITU_3_7_0, useOutputLayout::SevenPointOnePointThree - Replaced
OutputLayout::ITU_3_7_0, useOutputLayout::SevenPointOnePointThree - Replaced
OutputLayout::ITU_4_9_0, useOutputLayout::ThirteenPointOne - Replaced
OutputLayout::ITU_9_10_3, useOutputLayout::TwentyTwoPointTwo - Replaced
OutputLayout::ITU_0_7_0, useOutputLayout::SevenPointOne - Replaced
OutputLayout::ITU_4_7_0, useOutputLayout::SevenPointOnePointFour - Replaced
OutputLayout::_3p1p2, useOutputLayout::ThreePointOnePointTwo - Replaced
OutputLayout::_2_7_0, useOutputLayout::SevenPointOnePointTwo - Removed
OutputLayout::FivePointZero - Removed
OutputLayout::SevenPointZero
- Replaced
- CMake: Removed the
BUILD_STATIC_LIBSoption. Use theBUILD_SHARED_LIBSoption to control if share or static libraries should be built. If both are needed, build twice explicitly. - The
config.hheader file was removed in favor ofSpatialaudioConfig.hwith properly prefixed defines to prevent name clashes.