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 reads blocks and pushes them through the measurement path a capture device drives; there is no second DSP path and no offline approximation. A test asserts exactly that, on the same samples analysed both ways.

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 carries no Flutter runtime — it is the executable and the engine as a shared library beside it, and nothing else has to be installed — 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.

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.