open-standards/wai/score-conformance/README.md
Transaction Science 172b7f64e0 wai: music as instructions — wai.audio.score (Phase 6)
The deepest audio lever: a score carries no recording, only note events.
A deterministic trig-free reference synth (phase-accumulator oscillator +
linear ADSR, all in the Fx floor) reconstructs a canonical i16 PCM
mixdown; conformance is mixdown-equivalence, the music counterpart of
spatial audio. A soundfont/neural instrument is the sink's presentation.

- wai-rs `score` feature: WSCR container + reference synth + mixdown/
  score hashes; corpus (scale/chord/arp) via wai_score_vectors; registered
  + tiered Lossless.
- wai-web ScoreSink + the /score browser sink (in-tab verify + Web Audio).
- extensions/score.md, SPEC §5 row, content-taxonomy music → ✅.

Green: wai-rs all features (68 lib + integration) + clippy, wai-web wasm.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-14 04:29:10 -04:00

38 lines
1.5 KiB
Markdown

# Score Conformance Corpus
Vectors for the score extension (`wai.audio.score`). The criterion is
**mixdown-equivalence**: given the same score, a conforming sink MUST
render the identical canonical `i16` PCM via the deterministic reference
synth, hence the identical BLAKE3 — on every machine, no tolerance
parameter. The music counterpart of spatial audio's
mixdown-equivalence, with the recorded sound objects replaced by note
events.
The reference synth is trig-free: a phase accumulator drives a
piecewise-linear oscillator (saw / square / triangle / pulse) shaped by
a linear ADSR envelope, all in the `wai.det.fixed64` floor. Pitch is
carried as a per-sample phase increment authored off-line, so the floor
never evaluates an exponential. A sink with a soundfont or neural
instrument renders the same score richly — that is presentation, not
conformance.
## Layout
- `vectors/<name>.wscr` — the `WSCR` container (contract + note events).
- `expected_hashes.json` — per score: `notes`, `duration`, `score_hash`
(identity), and `mixdown_hash` (the conformance quantity).
Vectors:
- `scale` — a C-major scale ascending (saw).
- `chord` — a C-major triad held together (triangle, polyphony).
- `arp` — a four-step arpeggio that changes timbre across the phrase.
## Running
```
cd ../wai-rs
cargo run --features score --bin wai_score_vectors -- verify ../score-conformance
cargo run --features score --bin wai_score_vectors -- gen ../score-conformance # regenerate
```
Pass = mixdown-hash and score-hash equality.