Author an Audio Test Case
Scaffold a new audio
asset-generation test case — a model authors one short game-audio clip (a sound
effect or a snatch of music) through an audio binary, one recorded operation
at a time, to match a written brief. A case is exactly one kind, fixed by
asset_kind: sfx-synth (DSP-only synth graph, no library), sfx-sample
(layer over a baked sample pack), or music (sequence notes over a baked
instrument bank, emits a .mid). This is the short version;
Authoring an Audio Test Case
covers it in full, and Manifests is the
authoritative schema.
Drawing a sprite or building a game instead? See
Author an Asset-Generation Test Case
or Author an End-to-End Test Case.
An sfx-sample or music case names a name@version palette baked into the run
image — if it does not exist yet, publish it first with
Publish an Audio Sample Pack
(today’s published palettes are combat-core and gm-lite).
Layout
Section titled “Layout”A version lives at test-cases/<type>/<difficulty>/<slug>/<version>/ and is immutable once runs
reference it — revise by adding a new version, not by editing a published one.
test-cases/<type>/<difficulty>/<slug>/<version>/ test-case.toml # manifest: type, asset_kind, audio, tool, output, the overall domain variants/ # one standalone TOML file per variant (listed in `variants`) prompt.hbs # rendered into the harness instruction (NOT seeded) specs/brief.md # what to build + how the tool behaves — SEEDEDThere is no target clip and no reference/ directory — an audio case
declares no references and is reviewed by a human (by ear) against its brief.
- Pick the
asset_kindby the skill you want to measure, plus a catalog slug andversion. Worked examples:spectra-laser(sfx-synth),thunderhead-broadside(sfx-sample, overcombat-core),thunderhead-theme(music, overgm-lite) — read the one matching your kind. - Write
specs/brief.md: describe the sound, not the operations — its character and in-game role, its envelope and timing withinmax_duration_ms, its layers/synth graph/note material conceptually, andmono/stereo. State that the binary shapes sound, renders only onrender, records the authoritative op log, and that its--helpis the operation vocabulary. Keep it self-contained. There is no operations schema. - Write
prompt.hbsusing only the documented template variables ({{variant.*}},{{#each specs}}) — it renders in strict mode — pointing the model at the brief and the binary’s--help(and, for a sampled kind, to browse the library withlist-samplesfirst). - Write
test-case.toml: metadata (name,difficulty,tags),type = "asset-generation",asset_kind, avariantslist of paths to standalone variant files (a root key, so it must precede the first table header; first = default), and the tables below.[audio]—sample_rate,channels,max_duration_ms(all required). Ansfx-samplecase addssample_pack = "name@version"; amusiccase addsinstrument_bank = "name@version";sfx-synthnames neither. An unpinned palette is a build error, not a fallback.[tool]—binary(matching the kind) and thepreviewpath (waveform + spectrogram; a piano-roll too, formusic). No operations schema.[output]— theactionsop log (authoritative).clip.wav(and.midformusic) is emitted automatically — not manifest-declared.- the single
[[domain]](overall) the reviewer rates under, and no[[review_item]]s — the clip is judged as a whole against its brief. - No
[model], no[[reference]], no[build], no[[check]]— each is rejected.
Authoring an Audio Test Case is the full procedure — read it, and the matching worked example, before you start.
Validate
Section titled “Validate”There is no separate authoring linter — validate by resolving and seeding. For every variant:
tcab prompt --test-case <slug> --version <version> --variant <variant>tcab seed --test-case <slug> --version <version> --variant <variant>prompt catches strict-mode template errors and manifest problems (a missing
[audio] field, a sample_pack on a non-sfx-sample case, an instrument_bank
on a non-music case, a stray [[reference]]/[build]/[[check]]); seed
writes the seeded set (brief + the seeded audio config) so you can confirm it is
self-contained. If you named a sample_pack/instrument_bank, double-check it is
a published, pinned name@version.
Next steps
Section titled “Next steps”- Publish an Audio Sample Pack —
if your
sfx-sample/musiccase needs a pack or bank that does not exist yet. - Run a Test Case to exercise it end to end.
- Review a Run to assess the result against the brief.