# 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. **Provenance.** Generated here: `wai_score_vectors gen` writes every score from notes authored in code. No recording. 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/.wscr` — the `WSCR` container (contract + note events). - `notes/.json` — the same score in the authoring form (score §2.3): the contract and every note field as an integer, the input of `wai score build`. - `expected_hashes.json` — per score: `notes`, `duration`, `score_hash` (identity), `mixdown_hash` (the conformance quantity), and `pcm_sha256`, the SHA-256 of the same `i16le` samples (SPEC §7 *Digests*). 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, PCM SHA-256 and score-hash equality, and each `notes/.json` exactly the vector's notes in the authoring form. With the `wai` tool (a build with `score`): ``` wai score build ../score-conformance/notes/scale.json -o scale.wscr # the committed WSCR, byte for byte wai score render scale.wscr --pcm scale.s16 --json # samples, pcm_sha256, mixdown_blake3, score_hash ``` `tests/cli_generate_score.rs` runs both over every vector.