docs: resolve integrated audio bindings

This commit is contained in:
2026-08-11 00:24:15 +08:00
parent 3676b9f51b
commit f0095af902
@@ -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