Wire the whole toolkit into your pipeline — generate reference material, compare, roll up results, and gate the build on a real exit code.
wavgen and wavchan are conditional — most pipelines generate reference material once and cache it, and only need wavchan for multichannel content. wavscan isn't part of the gated flow; it's for ad-hoc single-file inspection outside CI. wavelens, wavsummary, and the gate itself are the only steps every pipeline needs.
The whole chain, as a single job:
# .github/workflows/nightly-regression.yml name: Nightly audio regression on: [push] jobs: regression: runs-on: ubuntu-latest steps: - run: | # reference material is generated once and cached elsewhere -- # this step only runs the comparison and the CI gate wavelens analyze --ref reference.wav --dut build/output.wav \ --out reports/output.html --json wavsummary ./reports --json
A failed comparison stops the job — no separate script to interpret output, no report anyone has to remember to open by hand.
Not every check failure should block a merge. A codec round-trip that reliably fails Bit-Exactness but passes everything else isn’t a regression — it’s expected behavior for a lossy pipeline. See Wiring wavsummary into a CI pipeline for the full walkthrough, including what to gate on and how to archive reports as build artifacts.
For every flag, every command, and the complete list of what each tool does — see the docs.