Mach1 has announced an update to the Mach1 Spatial SDK. More readable, easier to use, and with improved performance, version 3.0 of software development kit features higher order Mach1Spatial vector formats: Mach1Spatial-12, Mach1Spatial-14, Mach1Spatial-32, Mach1Spatial-36, Mach1Spatial-48, Mach1Spatial-60 for better quality transcoding, and introduces continuous integration and deployment (CI/CD) to make it easier for the community to maintain the SDK for interoperability between all multi-channel and spatial audio formats.

“We want to participate in building a world that values artists and craftsmanship”, says Mach1 founder Dražen Bošnjak.

Unlike other spatial formats, with Mach1 Spatial, all surround and spatial rendered sound field formats are ingestible without alteration to the sound field. Mach1 Spatial achieves a perfect 1:1 with what the audio producer or engineer created. Mach1 Spatial is transparent; there are no processing or filtering effects to simulate directionality at the expense of quality. With Mach1, your creative mix is the technical mix.

Mach1 Spatial SDK Version 3 removes some old deprecated variables and focuses on clearer and more concise function/variable terminology; and introduces CI/CD to make it easier in the future for community contributions to this project allowing the codebase to self test and distribute with the goal of becoming easier to maintain over time.

Major changes for each API are as follows:

  • All APIs: Use specific vector based `Mach1Spatial-n` formats where `n` is the number of channels in the configuration of that format, typically derived or inspired by from platonic solid shapes.
  • Mach1Encode API: Azimuth, Elevation and Diverge are the only terms used for setting a source sound’s direction and signal distribution.
  • Mach1Decode API: Verbose description of orientation data is required within function name.
  • Mach1Transcode API: Swapped inputs/outputs of matrix columns/rows, inputs are now rows to allow inline description of an input channel’s “location” via Mach1Encode API style Azimuth/Elevation/Diverge as well as the coefficients directly to the output channels.


  • Change commandline examples to compile with cmake for easier access.
  • Fixed setup for ofxMach1 addon.


  • Updated and overhauled.

Improvements to all APIs:

  • Removed all old and deprecated functions for clarity.
  • Introduces higher order Mach1Spatial vector formats: Mach1Spatial-12, Mach1Spatial-14, Mach1Spatial-32, Mach1Spatial-36, Mach1Spatial-48, Mach1Spatial-60.
  • Renames Mach1Horizon to Mach1Spatial-4.
  • Renames Mach1Spatial to Mach1Spatial-8 which remains as the default format for Mach1Encode and Mach1Decode.
  • Improved format testing for stability.
  • All APIs designed for better usage with cmake and removed all 3rd party cmake toolchain dependencies.
  • Libraries are built with CI and deployed via CD.

API Specific Improvements:

  • Mach1Encode API:
    • Improved panning performance matching for all format configurations.
  • Mach1Transcode API:
    • Inverted conversions matrices for readability, inputs are rows and outputs are columns.
    • Reduced transcode recipes for easier maintenance, only the conversions for the closest multichannel resolution are needed for definitions now.
    • Added many missing transcode recipes including higher order vector Mach1Spatial configurations.
    • Introduces concept for describing transcode channels by ::Panner instead of only by ::Coeff.
    • Designed for Mach1Spatial-12/Mach1Spatial-14/Mach1Spatial-32 to be the default processing configurations (convert using closest multichannel order).
    • Introduced better naming conventions for Surround formats.
    • Introduced header for Mic Array formats.
  • Mach1Decode API:
    • Redefined `getFormatChannelCount()` and added `getFormatCoeffCount()` for clearer usage.

More information: Mach1