From ac86c8a72b1edebb232dd13b670f0239044fdf2b Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Mon, 16 Feb 2026 01:03:02 +0100 Subject: [PATCH] docs(decisions): record audio discussion outcomes D-067 through D-074 Recognition chime timing (D-067), 5-bus audio architecture (D-068), audio dip profiles (D-069), confrontation as cognitive vulnerability (D-070), monologue chime placeholder strategy (D-071), universal conversation murmur (D-072), zone crossfade (D-073), hybrid audio generation (D-074). Amends D-038 scope, resolves Q-014. Co-Authored-By: Claude Opus 4.6 --- .../skills/{asset-gen => gen-image}/SKILL.md | 0 .../references/category-templates.md | 0 .../references/dds-conversion.md | 0 .../references/style-guide.md | 0 decisions/README.md | 6 +- decisions/architecture.md | 34 +++++++++- decisions/content.md | 20 +++++- decisions/perception.md | 67 ++++++++++++++++++- decisions/questions.md | 7 +- decisions/scope.md | 7 +- 10 files changed, 126 insertions(+), 15 deletions(-) rename .claude/skills/{asset-gen => gen-image}/SKILL.md (100%) rename .claude/skills/{asset-gen => gen-image}/references/category-templates.md (100%) rename .claude/skills/{asset-gen => gen-image}/references/dds-conversion.md (100%) rename .claude/skills/{asset-gen => gen-image}/references/style-guide.md (100%) diff --git a/.claude/skills/asset-gen/SKILL.md b/.claude/skills/gen-image/SKILL.md similarity index 100% rename from .claude/skills/asset-gen/SKILL.md rename to .claude/skills/gen-image/SKILL.md diff --git a/.claude/skills/asset-gen/references/category-templates.md b/.claude/skills/gen-image/references/category-templates.md similarity index 100% rename from .claude/skills/asset-gen/references/category-templates.md rename to .claude/skills/gen-image/references/category-templates.md diff --git a/.claude/skills/asset-gen/references/dds-conversion.md b/.claude/skills/gen-image/references/dds-conversion.md similarity index 100% rename from .claude/skills/asset-gen/references/dds-conversion.md rename to .claude/skills/gen-image/references/dds-conversion.md diff --git a/.claude/skills/asset-gen/references/style-guide.md b/.claude/skills/gen-image/references/style-guide.md similarity index 100% rename from .claude/skills/asset-gen/references/style-guide.md rename to .claude/skills/gen-image/references/style-guide.md diff --git a/decisions/README.md b/decisions/README.md index aab0c6f15..2572a0042 100644 --- a/decisions/README.md +++ b/decisions/README.md @@ -10,9 +10,9 @@ Cross-domain decisions live in one file with cross-reference notes in related fi | File | Domain | Decisions | |------|--------|-----------| -| [architecture.md](architecture.md) | Technical foundation | D-008, D-009, D-010, D-012, D-020, D-026, D-030, D-031, D-041, D-042, D-054, D-055, D-066 | -| [perception.md](perception.md) | Player observation | D-011, D-015, D-016, D-017, D-018, D-019, D-033, D-035, D-043, D-044, D-045, D-046, D-047, D-048, D-049, D-052, D-056, D-057, D-058, D-059, D-060, D-061 | -| [content.md](content.md) | NPC, dialogue, templates | D-023, D-024, D-025, D-028, D-029, D-032, D-034, D-035, D-036, D-037, D-050, D-062, D-063, D-064 | +| [architecture.md](architecture.md) | Technical foundation | D-008, D-009, D-010, D-012, D-020, D-026, D-030, D-031, D-041, D-042, D-054, D-055, D-066, D-068, D-073 | +| [perception.md](perception.md) | Player observation | D-011, D-015, D-016, D-017, D-018, D-019, D-033, D-035, D-043, D-044, D-045, D-046, D-047, D-048, D-049, D-052, D-056, D-057, D-058, D-059, D-060, D-061, D-067, D-069, D-070, D-071, D-072 | +| [content.md](content.md) | NPC, dialogue, templates | D-023, D-024, D-025, D-028, D-029, D-032, D-034, D-035, D-036, D-037, D-050, D-062, D-063, D-064, D-074 | | [scope.md](scope.md) | Game concept, prototype | D-001, D-003, D-005, D-006, D-007, D-013, D-014, D-027, D-038, D-039, D-051, D-053, D-065 | | [process.md](process.md) | Team, workflow | D-004, D-021, D-022, D-040 | | [questions.md](questions.md) | Open questions | Q-001 through Q-026 | diff --git a/decisions/architecture.md b/decisions/architecture.md index 8ebb9f936..99add8d4a 100644 --- a/decisions/architecture.md +++ b/decisions/architecture.md @@ -1,6 +1,6 @@ # Architecture Decisions -Technical foundation decisions that constrain implementation: engine, client-server, ECS, simulation, testability, performance budgets. +Technical foundation decisions that constrain implementation: engine, client-server, ECS, simulation, testability, performance budgets, audio architecture. --- @@ -178,6 +178,36 @@ Technical foundation decisions that constrain implementation: engine, client-ser - **Raised by:** Team Leader (Jeroen) — proposed retina scaling analogy and 2x2 geometry constraint. Tyre (feasibility: trivial, half-day integration). Gestalt (approved with 2x2 constraint resolving LOS readability concern). Ozzie (approved: solves sprite scale without uncanny mismatch). - **Dissent:** Gestalt initially objected to dual-scale (mental model mismatch for cover/LOS). Resolved by the 2x2 geometry minimum constraint — all cover maps 1:1 at visual scale. +### D-068: 5-bus audio architecture +- **Date:** 2026-02-16 +- **Decision:** Audio uses a 5-bus architecture with player-facing volume sliders: + 1. **Music** — future/empty in v0.1. Reserved for diegetic Meridian music in social spaces. + 2. **Ambient** — station hum ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open) asset 1) + zone overlays (assets 2-4). Continuous soundscape. + 3. **World SFX** — NPC footsteps, doors, environmental events. Diegetic world sounds not caused by player. + 4. **Player Actions** — player footsteps (assets 5-6), future: combat sounds, item interactions. Sounds player directly causes. + 5. **UI Sounds** — cursor hover, implant open, monologue chimes (assets 7-8), fog recognition. Interface feedback. +- **Client implementation:** + - AudioManager GDScript autoload singleton on client branch (lives with rendering, per [D-020](#d-020-engine-and-architecture-selection--godot-client--rust-simulation-via-subprocessipc)). + - Audio assets committed to audio branch (content, not code). + - Directory-scan registry pattern: AudioManager scans `res://audio/` on startup, maps filenames to AudioStream resources. No hardcoded asset list. + - If directory empty or asset missing, all play methods no-op with visual fallback (per [D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open) architecture). + - 5 player-facing volume sliders, one per bus. Accessible via settings. +- **Bus routing dropped:** + - **Dialogue bus removed** — no voice acting in v0.1. NPC conversation murmur goes on World SFX (event-driven, per [D-072](perception.md#d-072-universal-event-driven-conversation-murmur)). +- **Rationale:** 5 buses provide player control granularity (disable UI sounds, boost World SFX for eavesdropping, mute Ambient for focus) without over-segmentation. Directory-scan registry eliminates hardcoded asset paths — audio branch can add files without touching client code. No-op fallback means client works identically with or without audio. +- **Cross-reference:** Audio assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)), audio dip ([D-069](perception.md#d-069-audio-dip-profiles-for-dialogue-and-confrontation)), client-server architecture ([D-020](#d-020-engine-and-architecture-selection--godot-client--rust-simulation-via-subprocessipc)) +- **Raised by:** Team Leader (channel split directive), Tyre (architecture), Inigo and Gestalt (bus refinement) +- **Dissent:** None + +### D-073: Zone crossfade approach — hard boundary, soft audio transition +- **Date:** 2026-02-16 +- **Decision:** Zone audio transitions use hard tile boundary triggers with 1.5-2s audio crossfade tweens. Server sends zone_id per tile in ObserverSnapshot (server-authoritative zone assignment). AudioManager receives zone changes and tweens between ambient layers. No blended overlap zones — the transition smoothness comes from audio fade duration, not spatial blending. +- **Implementation:** AudioManager stub in Sprint 7 (5-bus setup, directory registry). Full zone crossfade implementation deferred to Sprint 8+. +- **Rationale:** Hard boundaries with soft audio = predictable for simulation, pleasant for player. Avoids complex overlap zone geometry. Crossfade duration (1.5-2s) is long enough to feel smooth, short enough that walking back-and-forth across boundary doesn't create audio chaos. +- **Cross-reference:** Audio architecture ([D-068](#d-068-5-bus-audio-architecture)), client-server ([D-020](#d-020-engine-and-architecture-selection--godot-client--rust-simulation-via-subprocessipc)), ambient assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)) +- **Raised by:** Tyre +- **Dissent:** None + --- -*13 decisions. Last updated: 2026-02-14* +*16 decisions. Last updated: 2026-02-16* diff --git a/decisions/content.md b/decisions/content.md index 40d6df98d..522e57817 100644 --- a/decisions/content.md +++ b/decisions/content.md @@ -1,6 +1,6 @@ # Content Decisions -How narrative, NPCs, and world content are created: content tiers, NPC generation, templates, dialogue, population. +How narrative, NPCs, and world content are created: content tiers, NPC generation, templates, dialogue, population, audio aesthetic identity. --- @@ -142,6 +142,22 @@ How narrative, NPCs, and world content are created: content tiers, NPC generatio - **Raised by:** Paula (three phases + KG recording), Stig (WASD mechanic + 300ms fade), Ozzie (consequences), Nigel (tolerance per seed) - **Dissent:** None. +### D-074: Audio aesthetic identity — insert-tech vs organic +- **Date:** 2026-02-16 +- **Decision:** Audio design uses two sonic families with distinct aesthetic identities: + - **Insert-tech sounds:** Synthetic, precise, clinical, no reverb. Monologue chimes ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open) assets 7-8), UI feedback, future: lattice interface sounds, biometric scan confirmations. Represents neural lattice interface — artificial, computational, clinical. + - **Organic sounds:** Warm, breathy, natural decay, environmental reverb. Footsteps, ambient layers, NPC movement, environmental events. Represents human cognition and physical reality — warm, imperfect, lived-in. +- **Thematic mapping:** Insert-tech = neural lattice (computational precision, trustworthy but inhuman). Organic = human cognition and environment (warm, ambiguous, interpretive). Maps to [D-018](perception.md#d-018-three-range-sound-model) trust model: close/organic sounds = reliable, long-range/insert sounds = potentially compromised. +- **Station palette — "functional warmth":** + - Low-freq foundation (60-120Hz): station hum, span gate vibration, machinery drone. + - Mid-freq texture (200-800Hz): footsteps, object handling, conversation murmur. + - High-freq detail (2-8kHz, sparse): scanner pings, metal impacts, environmental detail. + - No harsh frequencies, no industrial brutality. The station is SETTLED — lived-in, maintained, comfortable enough to be complacent. +- **Environmental neutrality per [D-045](perception.md#d-045-art-direction--environmental-neutrality-strict-zero-shift):** Ambient audio does NOT shift with narrative state. Same station hum before and after conspiracy discovery. No music stingers for investigation progress. Emotional weight comes from monologue and player knowledge, not audio cues. +- **Cross-reference:** Audio assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)), sound model ([D-018](perception.md#d-018-three-range-sound-model)), environmental neutrality ([D-045](perception.md#d-045-art-direction--environmental-neutrality-strict-zero-shift)), setting ([D-036](#d-036-sova-transit-district--krenn-system-as-v01-setting)) +- **Raised by:** Inigo (insert-tech/organic split), Paula (cognitive architecture framing and trust model connection) +- **Dissent:** None + --- -*14 decisions. Last updated: 2026-02-13* +*15 decisions. Last updated: 2026-02-16* diff --git a/decisions/perception.md b/decisions/perception.md index 847c41072..965e4b907 100644 --- a/decisions/perception.md +++ b/decisions/perception.md @@ -1,6 +1,6 @@ # Perception Decisions -How the player observes and interacts with the world: camera, fog, line-of-sight, sound, monologue, perception modes. +How the player observes and interacts with the world: camera, fog, line-of-sight, sound, monologue, perception modes, audio dip profiles, cognitive delays. --- @@ -273,6 +273,69 @@ How the player observes and interacts with the world: camera, fog, line-of-sight - **Raised by:** Stig (UI spec + no portraits), Lead (20% height constraint + max-width directive) - **Dissent:** Stig initially proposed 25% height and 50% width centered. Lead constrained to 20% height and max-width. +### D-067: Recognition chime fires at onset of cognitive delay +- **Date:** 2026-02-16 +- **Decision:** The monologue recognition chime ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open) assets 7-8) fires at the ONSET of the cognitive delay ([D-060](#d-060-cognitive-delay-for-fog-recognition)), not at its completion. Chime duration 300-400ms, overlapping with the start of the delay. The chime is "unresolved" — it opens a question, doesn't answer one. Full sequence when recognizing an entity in fog: (1) hear/sense something → (2) chime plays → (3) 0.6s cognitive delay begins (concurrent with chime tail) → (4) monologue text appears during delay ("Those footsteps... that's Kael's walk") → (5) blob transitions to [D-033](#d-033-entity-color--relationship-to-player) color + silhouette feature → (6) recognition complete. +- **Rationale:** The chime marks the character's attention shifting, not the recognition completing. It creates an "unresolved" sensation — something is happening in the character's mind. Monologue text provides the resolution. This prevents the chime from feeling like a UI notification and instead makes it part of the character's cognitive process. +- **Resolves:** Q-014 +- **Cross-reference:** Audio assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)), cognitive delay ([D-060](#d-060-cognitive-delay-for-fog-recognition)), fog recognition ([D-059](#d-059-fog--shader-based-five-layers-knowledge-graph-driven)), monologue ([D-016](#d-016-internal-monologue-as-core-perceptionatmosphere-system)) +- **Raised by:** Gestalt (proposal), confirmed by Team Leader (Jeroen) +- **Dissent:** None + +### D-069: Audio dip profiles for dialogue and confrontation +- **Date:** 2026-02-16 +- **Decision:** Three audio dip profiles modify bus volumes during player focus states, all relative to player slider settings (proportional, not absolute): + - **Dialogue dip:** Ambient -6 to -8dB, World SFX 0dB, Player Actions 0dB, UI 0dB. 300ms ease-in, 500ms ease-out. Reduces environmental noise to foreground conversation without muting world events. + - **Confrontation dip:** Ambient -10 to -12dB + low-pass filter (20kHz → 800Hz), World SFX -4 to -6dB (graduated — loud events like sprinting footsteps break through, quiet sneaking doesn't), Player Actions 0dB, UI 0dB. 500ms ease-in, 1000ms ease-out with filter sweep. Creates emotional/cognitive muffling per [D-070](#d-070-confrontation-as-cognitive-vulnerability). + - **ListeningFocus boost:** World SFX +2 to +3dB when player is stationary for 30+ ticks (eavesdrop bonus, per [D-071](#d-071-no-ambient-dip-for-eavesdropping--listeningfocus-boost)). Expresses heightened attention as audio gain. +- **Key behaviors:** + - All dB values are proportional to player slider setting, not absolute. If player sets World SFX to 50%, the -6dB dip applies to that 50% base. + - Dips are interruptible — walk-away or stance change kills current tween, starts new tween to neutral. + - Graduated World SFX dip during confrontation: loud, urgent events (sprinting, doors slamming, alarms) break through at reduced volume. Quiet, careful movement may not be noticed. +- **Rationale:** Dips model finite attention. Dialogue suppresses ambient noise (focus on conversation). Confrontation suppresses both ambient and peripheral sounds (emotional tunnel vision per [D-070](#d-070-confrontation-as-cognitive-vulnerability)). ListeningFocus boost rewards deliberate eavesdropping. All effects proportional to user volume settings respects player accessibility choices. +- **Cross-reference:** Audio architecture ([D-068](architecture.md#d-068-5-bus-audio-architecture)), confrontation vulnerability ([D-070](#d-070-confrontation-as-cognitive-vulnerability)), eavesdropping ([D-071](#d-071-no-ambient-dip-for-eavesdropping--listeningfocus-boost)), audio aesthetic ([D-074](content.md#d-074-audio-aesthetic-identity--insert-tech-vs-organic)) +- **Raised by:** Inigo (initial spec), Gestalt (graduated approach + ListeningFocus boost), Tyre (implementation details), Ozzie (proportional dip to respect player settings) +- **Dissent:** None + +### D-070: Confrontation as cognitive vulnerability +- **Date:** 2026-02-16 +- **Decision:** Confrontation creates perceptual vulnerability through reduced ambient awareness. Design principle: "Emotional focus creates perceptual vulnerability." Player actions requiring cognitive focus (confrontation dialogue, future: deep terminal reading, complex insert queries) mechanically reduce ambient perception via audio dip ([D-069](#d-069-audio-dip-profiles-for-dialogue-and-confrontation)) and may suppress peripheral monologue triggers. This is NOT a punishment — it's a realistic consequence of finite attention. The player mitigates risk by choosing WHERE and WHEN to confront (safe location vs exposed corridor, early shift vs busy period). +- **Mechanical expression:** + - During confrontation: ambient sounds muffled, quiet NPC movement may go undetected (graduated World SFX dip means careful footsteps suppressed, sprinting footsteps still audible). + - Post-confrontation: delayed monologue may fire for missed events ("Wait — did someone just pass by?"). + - World continues per [D-045](#d-045-art-direction--environmental-neutrality-strict-zero-shift) environmental indifference — no scripted ambushes, but NPCs on routine may coincidentally pass while player is focused. + - Vulnerability is probabilistic and emergent, not scripted. +- **Consistency principle:** Connects to [D-053](scope.md#d-053-movement-as-stance-toggle-system) sprint suppressing monologue (physical focus limits interpretation). Confrontation suppresses ambient perception (emotional focus limits peripheral awareness). High-focus activities suppress peripheral cognition — this is the shared rule. +- **Must feel "felt, not computed" (Paula):** Muffling is psychological tunnel vision, not a debuff tooltip. No UI indicator. Player realizes in retrospect: "I was so focused on Sera I didn't hear Kael walk past." +- **Rationale:** Makes WHERE and WHEN to confront meaningful decisions. Confronting in a private corner = safer. Confronting in a busy corridor during shift change = riskier. Player agency through spatial and temporal choice, not RNG. +- **Cross-reference:** Audio dip ([D-069](#d-069-audio-dip-profiles-for-dialogue-and-confrontation)), confrontation UI ([D-063](content.md#d-063-confrontation--same-box-different-weight)), environmental indifference ([D-045](#d-045-art-direction--environmental-neutrality-strict-zero-shift)), stance system ([D-053](scope.md#d-053-movement-as-stance-toggle-system)), monologue ([D-016](#d-016-internal-monologue-as-core-perceptionatmosphere-system)) +- **Raised by:** Gestalt (vulnerability principle), Ozzie (graduated dip approach), Paula ("felt not computed" framing) +- **Dissent:** None + +### D-071: No ambient dip for eavesdropping — ListeningFocus boost +- **Date:** 2026-02-16 +- **Decision:** Overheard conversation (eavesdropping) does NOT apply dialogue dip ([D-069](#d-069-audio-dip-profiles-for-dialogue-and-confrontation)). Cognitive state is opposite of direct conversation: extracting signal from noise requires MORE ambient awareness, not less. Instead, eavesdrop quality improves via ListeningFocus boost (+2 to +3dB World SFX when stationary 30+ ticks). Eavesdrop information quality is: distance-dependent, stance-modified ([D-053](scope.md#d-053-movement-as-stance-toggle-system) Careful stance grants "tell notice bonus"), ListeningFocus-boosted, and ambient-noise-penalized. +- **Ambient zone affects eavesdrop difficulty:** + - Bar (high ambient) = conversations hidden in murmur, requires proximity + ListeningFocus. + - Workplace (moderate ambient) = conversations semi-conspicuous, distance-dependent. + - Corridor (low ambient) = conversations conspicuous, easy to overhear from distance. +- **Information confidence:** Overheard information enters knowledge graph at lower confidence (KnowsOf, not KnowsDetails per [D-041](architecture.md#d-041-knowledge-graph-data-model)) unless ListeningFocus + proximity allows high-quality capture. +- **Rationale:** Direct conversation = character focuses, ambient dips. Overheard conversation = character strains to hear, ambient stays or boosts. Opposite cognitive states produce opposite audio profiles. Creates meaningful difference between talking TO someone vs listening IN on someone. +- **Cross-reference:** Audio dip ([D-069](#d-069-audio-dip-profiles-for-dialogue-and-confrontation)), stance system ([D-053](scope.md#d-053-movement-as-stance-toggle-system)), knowledge graph ([D-041](architecture.md#d-041-knowledge-graph-data-model)), zone audio ([D-072](#d-072-universal-event-driven-conversation-murmur)) +- **Raised by:** Gestalt (cognitive state framing), Paula (zone-conspicuousness model), unanimously endorsed +- **Dissent:** None + +### D-072: Universal event-driven conversation murmur +- **Date:** 2026-02-16 +- **Decision:** NPC-to-NPC conversations use a single universal murmur sound asset, not zone-specific variants. Zone ambient determines conspicuousness: bar ambient (high murmur density) hides conversations, corridor ambient (low background) makes conversations conspicuous. Maps to [D-047](#d-047-art-direction--two-tier-animation-system) two-tier behavior visibility: bar conversations are Tier 1 (clearly happening, content obscured), corridor conversations are Tier 2 (ambiguous — are they talking or just standing near each other?). +- **Asset split:** + - Bar ambient murmur: baked into `amb_bar_layer.ogg` (continuous background per [D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)). + - NPC proximity murmur: separate event-driven asset, deferred to future sprint (not in Sprint 7 scope). When implemented, same asset plays everywhere; zone ambient determines audibility. +- **Rationale:** One murmur asset + zone-dependent conspicuousness creates the signal/noise dynamic naturally. Bar = high noise floor, conversations blend in. Corridor = low noise floor, conversations stand out. Simpler content production, richer emergent behavior. +- **Cross-reference:** Audio assets ([D-038](scope.md#d-038-audio-in-v01-scope--8-files-via-stable-audio-open)), two-tier animation ([D-047](#d-047-art-direction--two-tier-animation-system)), eavesdropping ([D-071](#d-071-no-ambient-dip-for-eavesdropping--listeningfocus-boost)) +- **Raised by:** Paula (zone-conspicuousness model), Inigo (scoping to future sprint) +- **Dissent:** None + --- -*23 decisions. Last updated: 2026-02-14* +*29 decisions. Last updated: 2026-02-16* diff --git a/decisions/questions.md b/decisions/questions.md index 58b5ffad4..08794567d 100644 --- a/decisions/questions.md +++ b/decisions/questions.md @@ -65,10 +65,9 @@ Tracked questions awaiting discussion or resolution. - **Source:** Content Gap Analysis Workshop (Mellanie R2) ### Q-014: Audio timing with monologue chime -- **Status:** Open -- **Question:** When does the monologue chime fire relative to text appearance? Before, simultaneous, or overlapping? Affects monologue line writing rhythm. -- **Assigned to:** Gestalt, Ozzie -- **Source:** Content Gap Analysis Workshop (Mellanie R2) +- **Status:** Resolved → [D-067](perception.md#d-067-recognition-chime-fires-at-onset-of-cognitive-delay) +- **Resolution:** Chime fires at ONSET of cognitive delay, not completion. 300-400ms duration, overlapping delay start. Chime is "unresolved" — opens a question, doesn't answer one. Sequence: hear/sense → chime plays → 0.6s delay begins → monologue text during delay → blob transitions to D-033 color → recognition complete. +- **Date resolved:** 2026-02-16 ### Q-015: Generation expansion for THE FRIEND content - **Status:** Open diff --git a/decisions/scope.md b/decisions/scope.md index 06257c9f4..fdb382d9e 100644 --- a/decisions/scope.md +++ b/decisions/scope.md @@ -114,8 +114,11 @@ What we're building: game concept, design pillars, prototype definition, map spe 7. `sfx_monologue_chime.ogg` — soft crystalline tone, "neural lattice firing" feel (0.5-1.0s, monologue appearance) 8. `sfx_monologue_chime_urgent.ogg` — sharper variant for contradiction/anomaly observations (0.5-1.0s) - **Architecture:** Event-driven with asset registry + visual fallback. Simulation emits typed sound events; client renders as audio (if asset exists) or visual indicator + monologue trigger (if not). Ambient loops managed separately from event-driven sounds. Monologue chime is a UI sound, not a simulation sound. -- **Cross-reference:** Three-range sound model ([D-018](perception.md#d-018-three-range-sound-model)), sound event architecture (Gestalt R2 section 6) -- **Raised by:** Ozzie (Round 1 minimum viable proposal, Round 2 full spec), project lead (confirmed, directives #3 and #9) +- **Amendment (2026-02-16, Audio Pipeline Kickoff):** + - **Hybrid audio generation approach:** Stable Audio Open (SAO) for sounds >200ms with organic character (footsteps, ambient layers). Manual synthesis for sounds <200ms with precise/digital character (UI clicks, scanner beeps). SAO ceiling ~47s; accept 45s loops with crossfade for ambient layers. The insert-tech/organic split ([D-074](content.md#d-074-audio-aesthetic-identity--insert-tech-vs-organic)) maps to synthesis/generation split. + - **Sprint 7 scope expansion:** Ticket #440 expanded from 6 to 8 assets, adding monologue chimes (assets 7-8) as deliberate placeholders with Sprint 8 redo mandate. Chimes are critical for [D-067](perception.md#d-067-recognition-chime-fires-at-onset-of-cognitive-delay) cognitive delay feel but acknowledged as difficult to generate correctly — manual synthesis required for production quality. +- **Cross-reference:** Three-range sound model ([D-018](perception.md#d-018-three-range-sound-model)), sound event architecture (Gestalt R2 section 6), audio aesthetic ([D-074](content.md#d-074-audio-aesthetic-identity--insert-tech-vs-organic)), recognition chime ([D-067](perception.md#d-067-recognition-chime-fires-at-onset-of-cognitive-delay)) +- **Raised by:** Ozzie (Round 1 minimum viable proposal, Round 2 full spec), project lead (confirmed, directives #3 and #9). Amendment raised by Inigo (hybrid approach), endorsed by Tyre. - **Dissent:** Mellanie and Araminta both proposed deferring audio; project lead overruled. Visual sound indicators remain complementary to audio (not replacement). ### D-039: v0.1 wow moment scope — all 6 moments