From 053380103aecd60a5f7a8d61181e61374f9c2505 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 18 Feb 2026 01:26:27 +0100 Subject: [PATCH] feat(audio): add weapon aim lock and stance change audio assets for #440 Delivers final 2/6 interaction UI audio assets, completing ticket #440: - sfx_weapon_aim_lock.ogg (0.5s, clinical targeting lock tone) - sfx_stance_change.ogg (0.35s, soft mechanical stance toggle click) Both insert-tech aesthetic, UI Sounds bus, non-positional. Generated via Stable Audio Open, trimmed, LUFS-normalized, converted to ogg. Updated docs/assets/audio/ui.md with UI-007 and UI-008 entries. Co-Authored-By: Claude Opus 4.6 --- client/assets/audio/sfx_stance_change.ogg | Bin 0 -> 13768 bytes client/assets/audio/sfx_weapon_aim_lock.ogg | Bin 0 -> 18093 bytes docs/assets/audio/ui.md | 19 +++++++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 client/assets/audio/sfx_stance_change.ogg create mode 100644 client/assets/audio/sfx_weapon_aim_lock.ogg diff --git a/client/assets/audio/sfx_stance_change.ogg b/client/assets/audio/sfx_stance_change.ogg new file mode 100644 index 0000000000000000000000000000000000000000..214d84a54a2fdcb3ad2ab34f85030bb97b40030d GIT binary patch literal 13768 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 J3VO-%zW~WmLty{_ literal 0 HcmV?d00001 diff --git a/docs/assets/audio/ui.md b/docs/assets/audio/ui.md index 8fa523211..0b883f2df 100644 --- a/docs/assets/audio/ui.md +++ b/docs/assets/audio/ui.md @@ -17,6 +17,8 @@ Interface sounds triggered by player interaction, insert systems, and cognitive | UI-004 | `weapon_aim.ogg` | draft | UI Sounds | SAO | 100-150ms | Harder click/lock for weapon aim state. Mechanical, deliberate. SKETCH ONLY — no weapons in Sprint 7. Needs trim (#453). | S7 #440 | | UI-005 | `sfx_monologue_chime.ogg` | draft | UI Sounds | SAO | 500-1000ms | PLACEHOLDER. Soft crystalline tone, neural lattice surfacing a thought. Quiet, non-intrusive. Redo in next audio sprint (#453). See design brief below. | S7 #440 | | UI-006 | `sfx_monologue_chime_urgent.ogg` | draft | UI Sounds | SAO | 500-1000ms | PLACEHOLDER. Sharper variant for contradiction/anomaly. Brighter, more insistent. Redo in next audio sprint (#453). See design brief below. | S7 #440 | +| UI-007 | `sfx_weapon_aim_lock.ogg` | draft | UI Sounds | SAO | 300-500ms | Sharp targeting lock-on confirmation for weapon aim. Clinical/dangerous, harder than general entity lock. Descending digital sweep with metallic precision click. | S8 #440 | +| UI-008 | `sfx_stance_change.ogg` | draft | UI Sounds | SAO | 200-400ms | Soft mechanical mode-switch click for stance toggle (Walk/Sprint/Careful/Crouch). Subtle digital detent, nearly subliminal. Fires frequently — fatigue-safe. | S8 #440 | ## Mix Specs (not audio files) @@ -46,6 +48,23 @@ These are AudioBus parameter changes, documented in `docs/audio/dialogue-ambient - **Integration:** Cognitive delay onset event → AudioManager.play_ui("fog_recognition") - **Cross-reference:** D-060 (cognitive delay), D-018 (three-range sound, medium range) +### UI-007: sfx_weapon_aim_lock +- **Sonic family:** insert-tech +- **Frequency range:** 1-3kHz primary +- **Design principle:** "Crosshair snapping to bone." Clinical confirmation that the weapon system has acquired a target. Harder and more aggressive than cursor_entity_lock — this is the weapon variant. Still UI feedback, not a combat sound. Should not startle. +- **Generation:** SAO 5s generation, trimmed to best 0.5s transient. Insert-tech prefix + UI template. CFG 8, 100 steps. +- **Integration:** cursor_state_machine.gd weapon_aim_lock signal → AudioManager.play_ui("sfx_weapon_aim_lock") +- **Cross-reference:** D-056 (cursor states), weapon_aim.ogg (aim enter, different from lock) + +### UI-008: sfx_stance_change +- **Sonic family:** insert-tech +- **Frequency range:** 1-2kHz primary +- **Design principle:** "A precision dial clicking one notch." Subtle neural insert feedback on stance toggle. Player may toggle stances many times while positioning — must be short, pleasant, fatigue-safe. No long tails, no reverb. Nearly subliminal. +- **Generation:** SAO 5s generation, trimmed to best 0.35s transient. Insert-tech prefix + UI template. CFG 8, 100 steps. +- **Debouncing:** AudioManager should enforce 150ms cooldown (rapid stance toggling). +- **Integration:** stance_indicator.gd stance_changed signal → AudioManager.play_ui("sfx_stance_change") +- **Cross-reference:** D-048 (neural insert feedback aesthetic), D-053 (movement stances) + ### UI-005 / UI-006: Monologue Chime Design Brief (PLACEHOLDER) **Target emotional register for Sprint 8 redo:**