AUDIO BIBLE — music, SFX, and voice
Audio is the game's primary dread-delivery. Music is adaptive (calm → tense → Blood Moon),
built on the existing generative WebAudio engine, layered so combat/peril fade stems in/out.
Two leitmotifs recur and finally collide in the finale: Lyra's lullaby (music-box) and **the
Ledger** (clinical music-box + cold strings, Alex's theme, "voice cool as a coin"). Lore: BOOK-CANON.md.
A. MUSIC — adaptive layers
Every track = 3 stems that crossfade by state: Calm (explore), Tense (enemies near),
Peril (Blood Moon / boss). Counting motif (3/12) seeds tempo and phrase length.
Per-action / per-state cues
- Title: "Eclipse of the New Gods" (theme; both leitmotifs hinted).
- Hearth/home: "Hearth & Ash" — cello drone + music-box lullaby + distant hammer.
- Day explore (per region): one Calm bed each (see REGIONS.md music names — 12 region themes).
- Tense (enemy near): stems add detuned strings + heartbeat drum.
- Blood Moon: "Red Tide" — driving toms, red-shift detune, choir screams; overrides region bed.
- Combat sting: short brass/percussion hit on engage; resolves on victory.
- Forging: "Black-Iron Heart" anvil-rhythm layer while at the forge.
- Farming/craft: soft Calm variant (cozy under the dread).
- Dungeon: region bed → claustrophobic remix (less melody, more breath/drips).
- Boss: Peril stem of the region + the named antagonist's motif.
- Finale: lullaby vs Ledger, colliding across Alex's 3 phases; resolves to whichever ending.
- Victory / level-up / medal: short warm rising motif (a rare moment of light).
The 12 region themes (titles fixed in REGIONS.md)
Hearth & Ash · Auditors' Quiet · Verdigris · Hours Without Sun · Black-Iron Heart · The Counting Wind ·
Liar's Weather · Bleeding Hedge · Siege of Salt · Thin Mouths · Hymn for No God · The Ledger.
B. SFX LIST (procedural where possible, samples where not)
Player/movement: footstep (grass/stone/water/snow/lava-edge), dash, hurt, low-HP heartbeat, death.
Tools: hammer-smith (multi-hit), pickaxe-mine, hoe-till, water-pour, harvest-pluck, lantern-light/extinguish, oil-refill.
Magic (nail-rites): cast-windup (counted ticks), ember-bolt, frost-crackle, root-snare, mirror-beam, hush-silence (negative-space whoosh), eclipse-boom; blood-bias "HP→ESS" wet flash.
UI: menu open/close, select (counted click), buy/sell coin, quest-accept, quest-complete chime, medal-earned (sigil ring), error/denied.
Enemies: wolf snarl/lunge, crow caw/dive, bear roar/charge, husk shamble/grab, horror static/whisper, tell-flash cue (each archetype a distinct pre-attack sound), red-eye Blood-Moon screech.
World/ambience: wind (per biome), fog hush, ember crackle, water lap, pipe hum (Harmony), bell (shrine), distant taking (counted ticks fading to silence), thunder (Stormhall), dripping (dungeons).
Companion (dog): bark (alert), low growl (danger), sniff (secret/ore found), whine (sad beat).
Stingers: Blood-Moon rise, taking discovered, boss-appear, name-restored (warm), name-erased (cold).
C. VOICE — ElevenLabs via the content-factory (rare = impact)
Use voice only for key beats so it lands. Generate through the ElevenLabs API in the content
factory; export clips to assets/voice/. Keep lines short, ritual, weary.Cast voice direction:
- Gideon — low, gravel, few words. Mantra: "A hammer and a nail, and a voice that will not beg."
- Lyra — child, growing in resolve; lullaby hums between lines.
- Keep — dry, knowing; counts breath aloud.
- Alex — "voice cool as a coin"; clinical, unhurried, never raises it.
- The dog — no voice (barks are SFX); its silence is the point.
Where voice triggers (key beats only):
- Prologue (Aurelia's death / lifting Lyra), each region-arrival one-liner, each boss intro,
Medal earned (a word, not a speech), the finale phases, and the two endings.
- Optional: a handful of NPC "barks" for the most important characters (Voss, Keep, Alex).
Pipeline: script lines in design/VOICE-LINES.md → generate per character voice id → review for
mood → place in scene triggers. Never block gameplay on voice; subtitles always on.
Implementation notes (for the autobuild task)
- Extend the WebAudio engine with a stem-crossfade state machine (calm/tense/peril) before adding
per-region beds; ship one region's audio with its region build.
- SFX: add procedurally first (oscillator/noise shaping); swap to samples only if a cue can't read.
- Voice is an offline asset (content-factory job), bundled like other assets; gate behind a flag
so the build runs silent if clips are absent (procedural fallback rule).
- All audio passes the Horror Storyteller gate (does it raise dread/mood?) and Game Director gate (mix,
no clipping, adaptive transitions clean).