| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 17s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Failing after 54s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Failing after 2m33s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 3m8s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
wai-audit collector and player integration / does this change touch it (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Has been cancelled
WAI operation catalogue / does this change touch it (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-quantum for JavaScript / does this change touch it (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
wai-quantum studio and desktop / does this change touch it (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-sink-android native sink library / does this change touch it (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-sink-swift native sink package / does this change touch it (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / does this change touch it (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
wai-ledger service / does this change touch it (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-ledger service / service · macos (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
wai-app and Create / wai-app · does this change touch it (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-fleet service / does this change touch it (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-fleet service / service · macos (push) Has been cancelled
The reference synthesiser gains what a short channel sting needs, all in the wai.det.fixed64 floor and trig-free, every committed score rendering byte for byte as before (the three first-revision vectors keep their mixdown hash, PCM SHA-256 and score hash): - score §2.2, §3.1: waveforms 4 to 6, the saw, square and 25 %-pulse with each step corrected by a polynomial (PolyBLEP); 7, a sine by a refined parabola; 8, noise held from a 32-bit LCG between wraps of the phase. - score §2.1, §3.4: a contract of two channels mixes down to interleaved frames; a reader refuses any count but 1 and 2; a score with no voices centres each note. - score §2.4, §3.3: an optional third section, one 73-byte voice per note: a constant-power pan by the profile's integer square root, curved attack, decay and release (the release from the level at note-off), up to four one-pole low-pass sections that follow the envelope, a linear glide, the noise seed, and up to eight echoes at alternating pans. The 65-byte note record is unchanged; the score hash binds the voices when present. - wai score build|render: channels 2, waveforms to 8, each note's optional voice; render prints frames and channels. Receipt blocks are 4096 frames. - score-conformance: five vectors at 48 kHz (band-limited, two channels, voiced in one, a two-second sting, a voiced scale); multi_verify.py's independent synth agrees with all eight. - packaging §5.8: a score of one or two channels packs beside the lead with its voices, its floor the FLAC of the mixdown in its channels; verify holds the floor to the base's channels and rate. pack-conformance/multi/multi-sting-01 is a voiced two-channel score at 48 kHz. - The composing sink synthesises and plays a score in its contract's channels; its reference package's score is now two channels at 48 kHz, voiced. Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| notes | ||
| vectors | ||
| .gitattributes | ||
| expected_hashes.json | ||
| README.md | ||
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 an
oscillator (the piecewise-linear saw / square / triangle / pulse; the
same saw, square and pulse band-limited by a polynomial step correction;
a sine by a refined parabola; noise) shaped by an envelope, all in the
wai.det.fixed64 floor. A voiced score (score §2.4) gives each note a
pan between two channels, curved envelope segments, low-pass sections
that follow the envelope, a glide, a noise seed and echoes. 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— theWSCRcontainer (contract + note events, and voices in a voiced score).notes/<name>.json— the same score in the authoring form (score §2.3): the contract and every note field as an integer, each voice member too, the input ofwai score build.expected_hashes.json— per score:notes,duration(sample frames),channels,sample_rate,score_hash(identity),mixdown_hash(the conformance quantity), andpcm_sha256, the SHA-256 of the samei16lesamples, two channels interleaved (SPEC §7 Digests).
Vectors at 22 050 Hz in one channel, of the first revision's two sections:
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.
Vectors at 48 000 Hz:
bandlimited— one channel, no voices: a high arpeggio (C6 to C7) of the band-limited saw, square and pulse and the sine, then noise.stereo— two channels, no voices: a triad of the band-limited saw and square and the sine, each centred.voiced— one channel, voiced: a plucked bass line through low-pass sections that close as each decay falls, a note that glides up a fifth, and one echoed three times.sting— two channels, voiced, two seconds: a kick that glides down, a hi-hat of seeded noise, a detuned pad spread left and right through low-pass sections that open with the envelope, a square bass, and a bell melody whose echoes cross from side to side.scale48— two channels, voiced: a C-major scale panned left to right, each note echoed once from the other side; the composing sink's reference package plays its notes up and down.
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, each
notes/<name>.json exactly the vector's notes in the authoring form,
the contract's channels and rate, and every note ending (echoes
included) within the score.
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, channels, pcm_sha256, mixdown_blake3, score_hash
tests/cli_generate_score.rs runs both over every vector.