open-standards/wai/score-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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
..
vectors wai: music as instructions — wai.audio.score (Phase 6) 2026-06-14 04:29:10 -04:00
expected_hashes.json wai: music as instructions — wai.audio.score (Phase 6) 2026-06-14 04:29:10 -04:00
README.md wai: music as instructions — wai.audio.score (Phase 6) 2026-06-14 04:29:10 -04:00

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.