`wai generate` makes a wai.generate.spectral picture with the reference generator at any size and prints its SHA-256; with --instr it makes a listed size of an instruction object of form v0, which it reads as a sink does, and --write-instr writes one. `wai score build` writes a WSCR from integer note fields only; `wai score render` prints samples, pcm_sha256, mixdown_blake3 and score_hash, and --pcm writes the samples. Vectors: tests/vectors/generate/sizes.json (256x128, 640x320) and instr-v0.json (the object, its four listed sizes and 28 objects a sink refuses); score-conformance gains pcm_sha256 for every vector and notes/<name>.json, the authoring form, which `wai score build` turns back into the committed WSCR byte for byte. Every pin was made natively and equals the shared browser binding's output. `wai wrap` refuses a wai.generate.spectral payload that is not a form-v0 object, in every build. No library source changes. Co-Authored-By: Claude Opus 5.5 <[email protected]>
23 lines
964 B
JSON
23 lines
964 B
JSON
{
|
|
"scale.wscr": {
|
|
"notes": 8,
|
|
"duration": 34000,
|
|
"score_hash": "2c8bcab4968ae5e6f0a698ddfc6c4a7bcf2395ec870767ffe09052e1e63dc10e",
|
|
"mixdown_hash": "7bf6154fe69a28f40ddda93bbdc6cf5aba597223e6b02233fb2be2771babc3dc",
|
|
"pcm_sha256": "dc3c7ef82f3a467aaf0cca42c3ab1126bf57ef9ba90a63b55ea723a1185a025f"
|
|
},
|
|
"chord.wscr": {
|
|
"notes": 3,
|
|
"duration": 10000,
|
|
"score_hash": "435a02ba398cd3370b401a9f7e8e39cdecd9e06d015387414f80d4a17e8cee24",
|
|
"mixdown_hash": "7472bf7e59de21217645873110193b3db23411b727c08f843070ed4d38e99825",
|
|
"pcm_sha256": "c4e9c4e9f3fe59b76875cd22e16a8251092a921d2ddffefc2c05aa61ef8f79b7"
|
|
},
|
|
"arp.wscr": {
|
|
"notes": 4,
|
|
"duration": 12000,
|
|
"score_hash": "6e6b0652260c535be37fde73fb49d8070f189d62abc6aeebf24ac8a9c4fb1fae",
|
|
"mixdown_hash": "559414cf8ddfd1eeb1db4d0accf0e9ae800efec9b888a6708720992572b4dfbc",
|
|
"pcm_sha256": "b8dc096cb7590d30f05dd0e4ea99af4acbd159f3d4f359c509ed07a399d80554"
|
|
}
|
|
}
|