Audio export

The Audio type in the Export panel is fully built and is not connected to the graph's audio plan, so no audio file can be written today.

Pressing Export with the Audio type selected fails at once with Export failed to start: Audio export requires an audio plan. The panel builds every setting correctly and then starts the render without the plan the offline renderer needs, and there is no way to supply it by hand. The Web target's Audio Only mode fails the same way and for the same reason. Export is not a way round it: its formats are Video, Image Sequence, 3D Mesh and Splat, with no audio arm.

Everything below is real code sitting behind those two buttons. Read it as a description of what the settings mean, not as a workflow you can run. Live playback through the audio device is a separate path and does work; see Audio.

What the settings do

Set a Duration: in seconds and a Tail: to let reverbs and releases finish. The render is length-driven rather than frame-range driven, and it runs with no audio device attached, as fast as the machine allows. The audio output node in the graph is the root the plan is built from.

Format: offers WAV (PCM), FLAC (lossless), MP3 and AAC (M4A), and changing it rewrites the output path's extension. MP3 and AAC add a Bitrate: from 64 to 320 kbps.

WAV is written directly. FLAC, MP3 and AAC are piped to FFmpeg, which has to be installed and on your path. Nothing checks for it beforehand, so a missing FFmpeg would surface only at the end of a render.

Sample Rate: covers 22050 to 96000 Hz. Bit Depth: offers 16-bit Integer, 24-bit Integer and 32-bit Float, and applies to WAV only: the FFmpeg formats ignore it, and it is hidden for MP3 and AAC. Channels: is Stereo or Mono.

Normalize and dither

Normalize output scales the render so the loudest peak across both channels sits at 0 dBFS. It runs before the mono downmix, so a mono render of an unbalanced stereo pair lands below the ceiling.

Apply dither adds triangular (TPDF) noise before rounding to an integer depth. It is deterministic, seeded so two runs match. It applies to 16-bit and 24-bit WAV only: 32-bit float needs no quantisation, and the FFmpeg formats never reach the dither code even though the checkbox stays on screen for FLAC.

Audio on the web

The Audio Only web build packages the audio plan and plays it live in the browser through an AudioWorklet, rather than shipping a pre-rendered file. It is blocked by the same missing plan, and its WebAssembly runtime is not built into the repository by default, so the page it writes throws on load.

That page is the one export that ships no graph, so it cannot ask what a parameter is the way the visual builds do. Its controls are written out at export time instead, resolved once from what you have pinned in the Parameters (Pinned) panel, with each label, type and range read off the live graph as it goes. A pinned parameter the graph can no longer honour is named in the log rather than dropped in silence.

The visual Full App web build and the Web Player have no audio output at all, and no live audio input. See Web export.

Plugins and standalone builds

A CLAP plugin and a standalone audio binary both exist in the source tree and both work when built. Neither is reachable from the app: they load a .ntaudio patch file, and nothing in the editor writes one.

See also