Add core architecture and workflow documentation
This commit is contained in:
53
docs/audio-architecture.md
Normal file
53
docs/audio-architecture.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Audio Architecture
|
||||
|
||||
## Audio Domains
|
||||
|
||||
- Voice: remote WebRTC peer audio.
|
||||
- Media: radio station streams.
|
||||
- Item: looping item emit sounds (`emitSound`).
|
||||
- World: one-shot spatial world events from others (movement/teleport and item-use spatial sounds).
|
||||
- UI: interface tones and status cues (not layer-controlled).
|
||||
|
||||
## Layer Toggles
|
||||
|
||||
Runtime toggles in normal mode:
|
||||
|
||||
- `1`: voice
|
||||
- `2`: item
|
||||
- `3`: media
|
||||
- `4`: world
|
||||
|
||||
Persisted in local storage key `chatGridAudioLayers`.
|
||||
|
||||
## Layer Off Behavior
|
||||
|
||||
Layer off prefers unsubscribe/cleanup instead of only muting:
|
||||
|
||||
- Voice: remote peer audio graph is detached; resumes by reattaching stored remote streams.
|
||||
- Media: `RadioStationRuntime.cleanupAll()` and no sync/update processing until re-enabled.
|
||||
- Item: `ItemEmitRuntime.cleanupAll()` and no sync/update processing until re-enabled.
|
||||
- World: world one-shots are not played while disabled.
|
||||
|
||||
## Item Sound Model
|
||||
|
||||
- `useSound`: one-shot played on successful `item_use` (`item_use_sound` packet).
|
||||
- `emitSound`: continuous looping spatial source attached to an item runtime.
|
||||
|
||||
Current defaults:
|
||||
|
||||
- `radio_station`: `useSound=none`, `emitSound=none`
|
||||
- `dice`: `useSound=sounds/roll.ogg`, `emitSound=none`
|
||||
- `wheel`: `useSound=sounds/spin.ogg`, `emitSound=none`
|
||||
- `clock`: `useSound=none`, `emitSound=sounds/clock.ogg`
|
||||
|
||||
`emitSound` uses a base gain multiplier of `0.3` before spatial attenuation.
|
||||
|
||||
## Spatialization
|
||||
|
||||
- Distance attenuation uses hearing radius from game state.
|
||||
- Stereo panning follows horizontal offset.
|
||||
- Mono output mode collapses pan to center.
|
||||
|
||||
## Stale Stream Mitigation
|
||||
|
||||
Radio stream startup appends a cache-busting query token on runtime creation to avoid stale buffered playback after reconnect/layer re-enable.
|
||||
Reference in New Issue
Block a user