The format

SMX — Spatial Meta eXchange.

An open, licence-free format for immersive audio with real, discrete objects. We hold no patents on it, charge nothing per unit shipped, and place no restriction on commercial use. Here is what it does and how it is built.

Three natures

Deliberately more than a file format.

object audio

Every track stays a track

Each source is a discrete audio track with its own metadata — not an offset applied to a downmix. Nothing is merged early, and nothing is merged at all until the listener's device does it.

Codec agnostic: Opus, AAC, FLAC, WAV
live reactive

Rules travel with the audio

Objects carry triggers and can change their behaviour at runtime — reacting to sensors, biometrics, environment or session state, resolved on the device rather than baked in months earlier.

sensor. · bio. · env. · session.
streamable

Addressable per object

Each object can be fetched, prioritised and delivered in adaptive quality on its own. Silence costs nothing, and the render always happens locally on the client.

Sparse segments · hashID delivery

The whole point

Where the mix gets folded.

Every immersive format ends up as channels for speakers. The question is when — and everything else follows from the answer.

Where the mix is folded down In a rendered format the objects are folded into fixed channels in the studio, and everything after that carries channels. In saimox the objects stay objects through delivery and are folded on the listener's own device. IN THE STUDIO IN DELIVERY ON THE DEVICE AT THE EAR Rendered folded here saimox folded here

Rendered: the objects are folded into fixed channels in the studio, for a layout somebody guessed at. Everything after that carries channels. The room the listener is actually sitting in never enters the calculation.

saimox: the objects stay objects through delivery and arrive as objects. The fold happens on the listener's own device, for the speakers that are actually there — which is also the only place where a trigger can know that a head just turned.

Core principles

The decisions behind it.

An open format is not the same as open content. The specification is free for anyone to implement. Individual pieces can still be protected — exactly as an open ZIP may contain encrypted files.

Under the lid

A plain container, no magic.

Both files are ordinary ZIP archives. You can open one with any unzip tool and read what is inside — that is a design goal, not an oversight.

InsideWhat it holds
manifest.jsonIdentity, version, codec, catalogue metadata, loudness across five folds
spatial.jsonEvery track: position over time, movement, gain, triggers, reactions
AudioOne stream per object, or independently addressable blobs for delivery
envelope.binDirectional energy over time, so a player can draw the piece before decoding it
CoverArtwork, 600 × 600, carried inside the file
.smxthe working master
.smxdthe streamable delivery
v1.5.1current specification
0 €to read, write and ship

MIME type application/vnd.smx+zip  ·  Apple UTI com.desteba.smx

libsaimox

You do not have to implement it yourself.

The reference implementation is one small portable library written in Rust. Every player we ship — macOS, iOS, Android, browser — runs the same one, which is how a piece sounds identical across platforms rather than approximately similar.

portable

Builds where you need it

A C ABI plus a WebAssembly door, no exotic dependencies and no runtime to install. It already runs on Apple silicon, on ARM Android, and in every current browser.

Rust core · C header · WASM module
small

Sized for embedded targets

The whole renderer, including the Opus decoder, is measured in a couple of megabytes. Memory scales with how many objects are actually playing, not with how many the file contains.

Fixed-point friendly · no allocation in the audio path
verifiable

Provably identical

Each build reports a conformance fingerprint derived from the movement formulas themselves. Two devices reporting the same fingerprint compute the same positions — not close, identical. You can check your integration against ours in one call.

One number, comparable across platforms
free

No fee per unit

Ship it in a million devices and you owe us nothing. There is no decoder licence to buy from us, no certification programme to join and no logo you have to pay to print on the box.

The whole point of the format

Rendering always happens locally. The library takes a saimox file and a description of the speakers actually present — any geometry, any channel count — and produces the output for that specific room. Nothing is pre-rendered for a layout somebody guessed at in a studio.

For manufacturers and integrators

What integration actually involves.

Shorter than you expect, because the hard part is already done.

You provideThe library does
A file, or a stream of blocksParses the container and the spatial description
Your speaker layout, in coordinatesRenders every object to those exact positions by distance-based panning
An audio callbackFills it, with no allocation and no locks in the hot path
Sensor values, if you have themResolves the triggers the author attached to each object
Nothing elseLoudness, downfolds, silence skipping and cover art come with it

Head tracking, adaptive quality and per-object streaming are all in there and all optional. Take the parts you need.

The full specification

Want the whole document?

The complete specification runs to a few hundred pages across two documents — the container and spatial description, plus the trigger and reaction contract. It is free to implement, with no licence to sign and no fee at any point.

We are not publishing it as a download yet, because it is still moving and we would rather talk to the people building against it than watch an outdated PDF circulate. Write to us and say what you are building — you get the current documents and a direct line to the person who wrote them.

Who this is for

Nothing here is gated.

Hear it in your browser →  ·  See what already plays it →  ·  How it compares to ADM and IAMF →  ·  How to author with it →