Open Audio Analyzer

Using Open Audio Analyzer

docs/site/analysing-files.md ↗

Analysing files

The report panel and the `oaa` command-line analyser.

Open Audio Analyzer measures a file the same way it measures an input, because it is the same code: the decoder pushes what it reads through the measurement path a capture device drives. There is no offline approximation, and a test holds the two readings against each other on the same samples.

Nothing is resampled and nothing is remixed. A file is measured at its own sample rate and channel count, because a converter in front of a measurement changes the measurement.

WAV, AIFF, RF64, Wave64, FLAC and MP3.

In the application

Drop a file on the analysis panel, or open it with Analyse a file (Ctrl+O / ⌘O). Pick a delivery target and the report says, line by line, what the file measured and whether it passed.

Four ways out of a report:

  • Text, for a note to yourself.
  • JSON, for a script.
  • CSV, for the loudness timeline in a spreadsheet.
  • A PNG report card, for the message where somebody asks whether the master is ready. It is drawn as a fixed layout rather than captured from the panel, so it does not inherit a scroll position or a window width — two people exporting the same report get the same picture.

A quantity nobody measured is an em dash, a null and an empty cell respectively. Never a zero.

From the command line

oaa master.wav                                 # human-readable report
oaa --target streaming-14 master.wav           # …and a delivery verdict
oaa --format json --timeline master.wav        # every measurement, for scripts
oaa --format csv -o loudness.csv master.wav    # the loudness timeline
oaa --list-targets                             # what you can measure against

oaa needs nothing installed beside it — the executable and the engine as a shared library — which is what makes it usable inside somebody else’s CI.

The exit code is the point

With --target, oaa fails a build rather than reporting to a log nobody reads:

Exit Meaning
0 Measured, and every criterion passed.
1 The file could not be read or decoded.
2 Measured, and it missed its delivery spec.
oaa --target streaming-14 master.wav || exit 1

A master that is two loudness units too loud stops the pipeline instead of shipping.

Delivery targets

--list-targets prints the built-ins. Your own live beside them as JSON in calibrations/ under the configuration directory, and the CLI reads the same library the application does — so a target you defined once in the interface is available to a build script by name.

A target that names an odr_i_min or an odr_s_min adds a line to the verdict for each: the integrated Open Dynamic Range, which falls as a master is limited harder, checked against a floor — and the lowest short-term one the programme reached, its most squeezed three seconds, checked against another. No platform publishes one, so of the built-ins only Dynamic master sets one — 8 LU on the lowest PSR, a published recommendation rather than a platform’s requirement, and its note says whose. A house standard writes its own into its file and the build fails on it like on any other line. The report states the lowest PSR whether or not a target asks about it, and prints the band word of ODR Annex A after PLR — (balanced) — in the text format alone; the JSON stays numbers, under odr_i and odr_s_min. The text report spells the pair the way the application is set to — PSR / PLR unless Settings › Dynamics says ODR-S / ODR-I — and the oaa CLI takes the same choice as --names psr or --names odr.

Reset, beside Edit in Settings → Meters, deletes every one of those files and leaves the built-ins. --target naming one it removed exits with unknown target, so a pipeline that names a target of your own stops rather than measuring against something else.

Point either at a different library with --config-dir.

The two readings agree

If a live reading and an offline reading of the same audio disagree, that is a bug and not a rounding difference — they share the DSP path by construction. Comparing them on a known-loudness reference file is part of the release check.