diff --git a/docs/presentation/AUDIO_MUSIC_AND_VOICE_CATALOG.md b/docs/presentation/AUDIO_MUSIC_AND_VOICE_CATALOG.md index a8ce5104..7bc9f230 100644 --- a/docs/presentation/AUDIO_MUSIC_AND_VOICE_CATALOG.md +++ b/docs/presentation/AUDIO_MUSIC_AND_VOICE_CATALOG.md @@ -1,6 +1,6 @@ # Aetherbound Guild: Audio, Music, And Voice Catalog -> Revision: `audio-direction-v2-r1` +> Revision: `audio-direction-v2-r2` > > Authority: music, ambience, SFX, voice, mix, caption, accessibility, audio > lifecycle, production count, and audio acceptance rules. @@ -59,35 +59,35 @@ volume. The score supports attention; it never carries a rule by itself. 8. Generated recruits never require bespoke dialogue to remain mechanically legible. -## 2. Integration Bindings +## 2. Resolved Integration Sources -Audio IDs in this file are stable audio authority. Bracketed names are required -bindings owned elsewhere. They must be resolved during integration rather than -guessed here. +Audio IDs in this file are stable audio authority. The table below binds every +cross-workstream dependency to its merged owner without redefining that owner's +rows or formulas. Compact ranges are references; their primary definitions +remain in the cited authority. -| Binding | Owning authority | Audio use | +| Dependency | Resolved source and value | Audio use | |---|---|---| -| `[REGION_01..08_ID]` | content catalog | attach eight regional audio packages to final stable region IDs | -| `[REGION_01..08_DISPLAY_NAME]` | content/localization | localized music, caption, and metadata labels | -| `[REGION_01..08_ENVIRONMENT_TAGS]` | content/art | choose matching ambience sources without changing audio identity | -| `[PROFESSION_IDS_42]` | content catalog | instantiate 42 profession signature pairs | -| `[TRAIT_IDS_36]` | content catalog | complete 36 benefit/cost audio mappings | -| `[EQUIPMENT_IDS_320]` | content catalog | complete 320 equipment audio mappings | -| `[ARTIFACT_IDS_60]` | content catalog | instantiate 60 artifact rule signatures | -| `[ENEMY_IDS_100]` | content catalog | instantiate 100 enemy forecast/resolution pairs | -| `[BOSS_IDS_16]` | content catalog | instantiate 16 five-event boss packages | -| `[STATUS_EVENT_IDS]` | core systems | map benefit, cost, tick, resist, cleanse, and expiry cues | -| `[CURRENCY_AND_COST_IDS]` | economy | select transaction material without defining currencies or prices | -| `[PARTY_CAPACITY_BINDING]` | core systems | scale density and capacity feedback to the simulated final value | -| `[BATTLE_SPEED_OPTIONS]` | core/UX | configure density tiers without pitch-shifting music or voice | -| `[SUPPORTED_VOICE_LOCALES]` | product/localization | determine `L`, the count of shipped voiced locales | -| `[BACKGROUND_SIMULATION_POLICY]` | save/lifecycle | determine whether resumption continues or reconstructs audio state | -| `[HEADPHONE_UNPLUG_POLICY]` | platform/UX | determine pause prompt behavior after private output disappears | -| `[SCREEN_AND_ACTION_IDS]` | UX screen map | bind shared events to final player-facing screens and actions | +| Region IDs | `docs/content/CONTENT_INDEX.md`, Stable ID Namespaces: `RG-01..RG-08` | attach the eight regional audio packages in stable-ID order | +| Region display names | `docs/content/REGION_CATALOG.md`, Region Matrix: Windglass Verge, Siltwake Fens, Emberloom Works, Quillroot Archive, Tideglass Reach, Skyrail Orchard, Nightcurrent Basin, Crown of Morn | localized music, caption, and metadata labels use the Region Matrix name field | +| Region environments | `docs/content/REGION_CATALOG.md`, Region Matrix: minimal framing, encounter grammar, and production-needs fields | select ambience sources and hazard contours from the owned region brief | +| Profession IDs | `docs/content/CONTENT_INDEX.md`, Stable ID Namespaces: `PF-B01..PF-B12`, `PF-A01..PF-A24`, `PF-H01..PF-H06` | instantiate 42 profession signature pairs | +| Trait IDs | `docs/content/CONTENT_INDEX.md`, Stable ID Namespaces: `TR-001..TR-036` | complete 36 benefit/cost audio mappings | +| Equipment IDs | `docs/content/CONTENT_INDEX.md`, Stable ID Namespaces: `EQ-001..EQ-320` | complete 320 equipment audio mappings | +| Artifact IDs | `docs/content/CONTENT_INDEX.md`, Stable ID Namespaces: `AR-001..AR-060` | instantiate 60 artifact rule signatures | +| Enemy IDs | `docs/content/ENEMY_CATALOG.md`, Count And Assignment Check: `EN-R1-01..EN-R1-12`, `EN-R2-01..EN-R2-12`, `EN-R3-01..EN-R3-12`, `EN-R4-01..EN-R4-12`, `EN-R5-01..EN-R5-13`, `EN-R6-01..EN-R6-13`, `EN-R7-01..EN-R7-13`, `EN-R8-01..EN-R8-13` | instantiate the 100 enemy forecast/resolution pairs from primary enemy rows | +| Boss IDs | `docs/content/ENEMY_CATALOG.md`, Count And Assignment Check: `BO-R1-01..BO-R1-02`, `BO-R2-01..BO-R2-02`, `BO-R3-01..BO-R3-02`, `BO-R4-01..BO-R4-02`, `BO-R5-01..BO-R5-02`, `BO-R6-01..BO-R6-02`, `BO-R7-01..BO-R7-02`, `BO-R8-01..BO-R8-02` | instantiate 16 five-event boss packages | +| Status events | `docs/product/SYSTEMS_AND_BATTLE.md`, Status Effects And Resolution Order: `status_id`, `stack_rule`, dispel/immunity tags, `on_apply`, `on_tick`, `on_expire`, apply-roll, resist, and expiry outcomes | map shared apply, stack, tick, resist, cleanse, and expiry cues without adding status identities | +| Resources and costs | `docs/product/ECONOMY_AND_BALANCE.md`, Resource Ledger and Sections 4-6: `coin`, `replacement_credit`, `xp`, `renown`, `clear_fact`, `discovery_fact`, plus authoritative refresh, purchase, sale, reward, and rebate receipts | select transaction material from the committed resource and receipt; audio defines no price | +| Party capacity | `docs/product/ECONOMY_AND_BALANCE.md`, Run Opening And Capacity Economy: `line_capacity(C) = min(10, 4 + floor(C/2))`, yielding `4,5,6,7,8,9,10` at clear counts `0,2,4,6,8,10,12` | scale preparation density and capacity feedback from four through the selected maximum of ten | +| Battle speed | `docs/product/SYSTEMS_AND_BATTLE.md`, Battle Control, Retreat, Timeout, And Outcome: Pause, 1x, 2x, and 4x are presentation-only | configure audio density without changing music tempo, voice speed, simulation time, or draws | +| Voice locales | `docs/product/GAME_PRODUCT_CONTRACT.md`, Commercial And Platform Boundary and Localization Rules; `docs/presentation/SCREEN_AND_STATE_MAP.md`, accessibility matrix: English (`en`) and Simplified Chinese (`zh_CN`) | ship the 32 semantic intents in both launch locales; language-neutral efforts remain shared | +| Background simulation | `docs/product/SAVE_AND_FAILURE_CONTRACT.md`, Battle Interruption And Deterministic Resume; `docs/presentation/SCREEN_AND_STATE_MAP.md`, Interruption And Save | complete the current priority batch, snapshot, advance no obscured time, return battle through `BAT-006`, and reconcile non-battle receipts | +| Headphone unplug | `docs/presentation/UI_AND_VISUAL_SYSTEM.md`, Audio-Independent And Visual Accessibility; `docs/presentation/SCREEN_AND_STATE_MAP.md` row `SET-004` | treat as output loss: stop private output before speaker reopen, raise one nonblocking notice, keep captions/geometry, pause audio tests, and continue the current screen without automatic speaker playback | +| Screen and action IDs | `docs/presentation/SCREEN_AND_STATE_MAP.md`, Input Profiles and Complete Screen Inventory: `NAV`, `LIST`, `SELECT`, `ORDER`, `BATTLE`, `MODAL`, `SETTINGS`; `SYS-001..008`, `HUB-001..002`, `SHP-001..003`, `REC-001..003`, `EQP-001..002`, `ART-001`, `PTY-001..002`, `RSK-001..002`, `BAT-001..006`, `OUT-001..005`, `PRO-001..003`, `PST-001..003`, `SET-001..009`; `docs/product/GAME_PRODUCT_CONTRACT.md`, Input Semantics: focus, inspect, compare, buy, sell, lock, refresh, equip, reorder, confirm, cancel, start, pause, speed, retreat, open event log | bind shared events to all 49 final screens, seven input profiles, and semantic actions | -Unknown bindings are integration errors and remain visible in the audio event -manifest. A missing binding cannot silently fall back to a different semantic -event. +A missing cited ID, event, receipt, or policy is an integration error in the +audio manifest. It cannot silently fall back to a different semantic event. ## 3. Routing And Priority @@ -225,11 +225,11 @@ immediate tonal marker while musical layers catch up at the next marker. | Parameter | Source binding | Music response | |---|---|---| -| shop browse/refresh/commit | `[SCREEN_AND_ACTION_IDS]` | motion layer follows active browsing; purchase handoff plays only after commit | -| affordability pressure | `[CURRENCY_AND_COST_IDS]` | sparse low pulse; no alarm for merely expensive offers | +| shop browse/refresh/commit | screen IDs `SHP-001..003` and the inspect, buy, lock, refresh, confirm, and cancel actions | motion layer follows active browsing; purchase handoff plays only after commit | +| affordability pressure | economy resources `coin` and `replacement_credit` plus the current authoritative cost receipt | sparse low pulse; no alarm for merely expensive offers | | party readiness | core validation event | ready layer enters after all blockers clear | | run risk | authoritative risk tier | pressure layer changes at next beat with a non-musical immediate cue | -| battle start/pause/speed | `[BATTLE_SPEED_OPTIONS]` | start at authored marker; pause filters; speed never changes pitch or tempo | +| battle start/pause/speed | presentation states Pause, 1x, 2x, and 4x | start at authored marker; pause filters; speed never changes pitch or tempo | | battle pressure | target danger, casualty forecast, boss phase | add or remove pressure layers with hysteresis to avoid rapid toggling | | result | authoritative victory, defeat, or retreat result | one result handoff, then the matching result bed | | region progress | region progression binding | add one stable timbre layer; never replace the region's core soundmark | @@ -240,19 +240,20 @@ consequence is imminent. ### 5.3 Eight Regional Families -Display names and environmental associations remain bound to content. These -original soundmarks establish separation without asserting biome or story. +Display names and environmental associations bind directly to the Region +Matrix. These original soundmarks establish separation while following its +minimal framing, encounter grammar, and production-needs brief. -| Audio region | Soundmark | Pulse and register | Ambience bridge | Mono rule | +| Region ID and name | Soundmark | Pulse and register | Ambience bridge | Mono rule | |---|---|---|---|---| -| `R01` | three dry cedar plucks answered by a porcelain tap | open 5/4 grouping, middle register | loose wood, close air, small ceramic movement | answer moves by octave, not pan alone | -| `R02` | bowed glass tone settling into a water-bowl knock | slow 6/8, high over low droplets | liquid resonance and soft reed friction | fundamental stays centered | -| `R03` | muted iron tongue with leather-frame reply | squared 4/4, low-mid register | hand tools, furnace breath, measured chain | transient shapes remain distinct | -| `R04` | paper rasp leading two short bamboo notes | alternating 3+3+2, light register | leaves, pages, hollow wood | paired notes use different envelopes | -| `R05` | rope tension snap followed by shell shimmer | offset 7/8, broad middle register | cordage, distant water, suspended fittings | offset is rhythmic, not stereo-only | -| `R06` | rising whistle stopped by a low skin drum | rotating 3/4 to 4/4, wide register | high air, fabric strain, hanging metal | stop gesture retains low-frequency support | -| `R07` | damped dulcimer chord with fingertip metal tick | slow asymmetric pulse, close register | cloth, quiet mechanisms, enclosed room air | tick and chord occupy separate bands | -| `R08` | eight short material attacks passed into one open cadence | additive meter resolving to 4/4 | selected layers from all prior packages | every contributing attack remains separable | +| `RG-01` Windglass Verge | breath-driven glass harmonic settling into a dry timber knock | open 5/4 grouping, middle register | terrace wind, grass, suspended mineral panes, timber fittings | glass answer moves by register, not pan alone | +| `RG-02` Siltwake Fens | reed buzz answered by a low clay drum and water slap | slow 6/8 with a displaced final beat | layered reeds, luminous sediment, wet banks, ferry fittings | drum fundamental stays centered | +| `RG-03` Emberloom Works | struck-clay triad closed by one pressure-valve click | squared 4/4, low-mid register | kiln breath, ceramic conduit, measured tools, hot-metal detail | clay and valve transients retain separate envelopes | +| `RG-04` Quillroot Archive | paper rasp leading two plucked-string notes | alternating 3+3+2, light register | leaf movement, root shelves, pages, hollow wood | paired notes use different envelopes | +| `RG-05` Tideglass Reach | water-glass phrase followed by a shorter reversed echo | offset 7/8, broad middle register | salt wind, mirror pools, beacon fittings, distant water | echo reversal is rhythmic and spectral, not stereo-only | +| `RG-06` Skyrail Orchard | rail-joint clack lifting into an airy string triplet | rotating 3/4 to 4/4, wide register | high air, fruit canopy, cable strain, freight-rail movement | rail transient supplies a centered timing mark | +| `RG-07` Nightcurrent Basin | centered low pulse answered by a delayed bright reveal ping | sparse asymmetric cycle, low-to-high register | dark water, channel flow, linked-current hum, quiet crossing hardware | reveal uses register and delay in addition to position | +| `RG-08` Crown of Morn | seven prior material attacks passed into one new open cadence | additive meter resolving to 4/4 | dawn stone, route-current layers, observatory fittings, selected prior materials | every contributing attack remains separable | Regional battle arrangements use the same soundmark under greater rhythmic pressure, not a disconnected genre switch. Boss music expands phase structure @@ -309,14 +310,15 @@ Voice consists of a small localized semantic layer plus reusable nonverbal efforts. There are no bespoke dialogue sets for individual recruits, no spoken generated names, and no content dependency on a recruit-specific performer. -Let `L` be the resolved count of `[SUPPORTED_VOICE_LOCALES]`. +Semantic voice ships in exactly two launch locales: English (`en`) and +Simplified Chinese (`zh_CN`). Nonverbal recruit efforts are language-neutral. | Voice family | Formula | Release masters | Notes | |---|---:|---:|---| -| system intents | `16 x L` | `16L` | save, input, compatibility, and unavailable-action notices | -| activity announcer intents | `16 x L` | `16L` | shop, readiness, battle, casualty, reward, and run-result notices | +| system intents | `16 x 2 locales` | 32 | save, input, compatibility, and unavailable-action notices | +| activity announcer intents | `16 x 2 locales` | 32 | shop, readiness, battle, casualty, reward, and run-result notices | | recruit effort banks | `8 banks x 8 functions x 2 variations` | 128 | language-neutral, non-lexical performances | -| **Total** | | **`128 + 32L`** | retakes and rejected takes excluded | +| **Total** | | **192** | retakes and rejected takes excluded | The 32 semantic intents are: @@ -581,7 +583,7 @@ SFX-BAT-059 elite_state_change SFX-BAT-060 boss_phase_change ``` -At higher `[BATTLE_SPEED_OPTIONS]`, simulation events remain unchanged while +At 2x and 4x, simulation events remain unchanged while routine audio density is reduced: keep every forecast, state change, casualty, retreat, and result; group attacks by source/material; keep at most one routine impact per source per 120 ms at the highest configured speed. Music tempo and @@ -675,9 +677,10 @@ offline states have distinct captions and cannot reuse the success receipt. | `R07` | `SFX-REG-019` | `SFX-REG-020` | `SFX-REG-021` | | `R08` | `SFX-REG-022` | `SFX-REG-023` | `SFX-REG-024` | -Each set uses its Section 5.3 soundmark. Hazard alert remains a semantic shell -until `[REGION_01..08_ENVIRONMENT_TAGS]` and final hazard events bind to it. -Progress resolution fires only after the persistent region change commits. +Each set uses its Section 5.3 soundmark. Hazard alert binds to the corresponding +`RG-01..RG-08` Region Matrix encounter grammar and production-needs row, then +to the final enemy or boss event instance. Progress resolution fires only after +the persistent region change commits. ### 8.9 Per-Event Priority, Replay, And Caption Policy @@ -735,17 +738,18 @@ Replay and caption policy follows priority: ## 9. Content-Bound SFX Packages -Content-bound IDs are pattern contracts. Integration expands them using final -stable IDs and retains a machine-readable mapping record. +Content-bound IDs are pattern contracts. The production manifest expands them +from the resolved stable namespaces and retains a machine-readable mapping +record. | Content scope | Event identity pattern | Identities | Minimum rendered masters | Reuse rule | |---|---|---:|---:|---| -| 42 professions | `SFX-PRO-{PROFESSION_ID}-ACTION`, `...-STATE` | 84 | 168 | two performed/rendered variations per identity; shared body/material layers allowed | -| 36 traits | map `{TRAIT_ID}` to one benefit and one cost event | 0 new mandatory | 0 | all 36 mappings required; add an identity only if shared semantics are false | -| 320 equipment items | map `{EQUIPMENT_ID}` to material, equip, and proc events | 0 new mandatory | 0 | all 320 mappings required; no rarity-only signature | -| 60 artifacts | `SFX-ART-{ARTIFACT_ID}-RULE` | 60 | 120 | one activation and one resolution render per rule identity | -| 100 ordinary/elite enemies | `SFX-ENM-{ENEMY_ID}-FORECAST`, `...-RESOLVE` | 200 | 400 | two variations per identity; forecast contour stays stable | -| 16 bosses | `SFX-BOS-{BOSS_ID}-{ARRIVE,PHASE,THREAT,OPENING,DEFEAT}` | 80 | 80 | five deterministic masters per boss; material layers may be shared | +| 42 professions | `SFX-PRO-{profession_id}-{ACTION,STATE}`, where `profession_id` is in `PF-B01..PF-B12`, `PF-A01..PF-A24`, or `PF-H01..PF-H06` | 84 | 168 | two performed/rendered variations per identity; shared body/material layers allowed | +| 36 traits | map each `TR-001..TR-036` row to one benefit and one cost event | 0 new mandatory | 0 | all 36 mappings required; add an identity only if shared semantics are false | +| 320 equipment items | map each `EQ-001..EQ-320` row to material, equip, and proc events | 0 new mandatory | 0 | all 320 mappings required; no rarity-only signature | +| 60 artifacts | `SFX-ART-{artifact_id}-RULE`, where `artifact_id` is in `AR-001..AR-060` | 60 | 120 | one activation and one resolution render per rule identity | +| 100 ordinary/elite enemies | `SFX-ENM-{enemy_id}-{FORECAST,RESOLVE}`, where `enemy_id` is an `EN-Rx-yy` primary row | 200 | 400 | two variations per identity; forecast contour stays stable | +| 16 bosses | `SFX-BOS-{boss_id}-{ARRIVE,PHASE,THREAT,OPENING,DEFEAT}`, where `boss_id` is a `BO-Rx-yy` primary row | 80 | 80 | five deterministic masters per boss; material layers may be shared | | **Content-bound total** | | **424** | **768** | every required catalog row receives a mapping | Shared and content-bound scope therefore totals **652 semantic SFX identities** @@ -836,11 +840,11 @@ to the event log without truncating the critical line. |---|---|---| | battle pause | 80 ms filter/level transition; halt scheduled transients; preserve music phase | no hidden cue advances while simulation is paused | | battle resume | discard stale queued routine cues; 150-350 ms ambience/music restore | reconstruct from current authoritative snapshot | -| app background/focus loss | fade all buses within 100 ms and cancel non-committed preview cues | follow `[BACKGROUND_SIMULATION_POLICY]` without defining it | +| app background/focus loss | fade all buses within 100 ms and cancel non-committed preview cues | complete the current priority batch, write/verify the deterministic snapshot, advance no obscured time, return battle through `BAT-006`, and reconcile any non-battle transaction receipt | | foreground return | wait for current state snapshot, then restore loops at saved or legal markers | never replay purchase, reward, casualty, or save receipts | | OS interruption | stop output, retain logical music marker, clear transient queues | resume only after interruption-ended callback and state refresh | | output route change | 50 ms fade, rebuild output graph, 150 ms fade after route is stable for 250 ms | announce/caption changed route once; no duplicate game event | -| headphone unplug | stop private output before speaker reopen | follow `[HEADPHONE_UNPLUG_POLICY]`; default to silence pending user/platform action | +| headphone unplug | stop private output before speaker reopen; do not move active audio to speakers automatically | raise one nonblocking output-loss notice, retain captions/event geometry, pause a settings test, and continue current simulation; only an independent background or input-device interruption routes through `BAT-006` | | Bluetooth latency change | adjust presentation scheduling, never simulation timestamps | captions and visuals stay authoritative | | suspend/restore | serialize suite ID, musical marker, ambience configuration, and active semantic states | do not serialize transient waveform position as game truth | | content/rules migration | use migration audio only after owning save state reports phase | failure cannot sound successful | @@ -864,7 +868,7 @@ loss, or save-success cue. | reward and progression | success bed or run suite | reward, ownership, and progression events | ownership caption only after commit | reveal, focus, compare, accept, blocked, and owned states remain distinct | | recovery after failure | loss bed/safe recovery ambience | recovery and run-end events | neutral system language; no blame performance | player hears consequence, legal recovery options, and return handoff without a celebratory cue | | save and restore | current music continues unless blocked | save, migration, conflict, rollback, and offline events | critical states captioned; system voice optional | success, failure, defer, conflict, rollback, corruption, duplicate claim, and offline state cannot be confused | -| eight-region progression | matching route/battle/boss suite and one of 64 regional configurations | regional shared family and bound content packages | regional name comes from localization binding | all eight soundmarks are identifiable in mono and progress states change a persistent layer | +| eight-region progression | matching route/battle/boss suite and one of 64 regional configurations | regional shared family and bound content packages | localized region name resolves from the `RG-01..RG-08` Region Matrix row | all eight soundmarks are identifiable in mono and progress states change a persistent layer | ## 13. Production Manifest And Evidence @@ -908,8 +912,8 @@ records are blocking manifest errors. | ambience | 410 | | shared and content-bound SFX | 1,240 minimum | | language-neutral recruit efforts | 128 | -| localized system/announcer voice | `32L` | -| **Total** | **`1,928 + 32L` minimum** | +| localized system/announcer voice | 64 | +| **Total** | **1,992 minimum** | The separate 144-recording raw SFX source library is not included in release master totals. Rejected takes, mix revisions, localization retakes, source @@ -957,7 +961,7 @@ set `human_listened`; a screenshot of a waveform cannot set even when their mapping reuses a shared event. - [ ] The 1,240 minimum SFX renders follow the declared variation classes, cooldowns, concurrency, priority, and transaction rules. -- [ ] Voice delivery is exactly `128 + 32L` release masters until a separately +- [ ] Voice delivery is exactly 192 release masters until a separately approved scope revision; generated recruits require no bespoke speech. - [ ] Shop, recruit, equipment, party order, automatic battle, casualty, reward, recovery, save, and each regional progression workflow passes the