feat(audio): NPC conversation murmur asset (SFX-003, #532) #45

Closed
jpmschweitzer wants to merge 0 commits from audio into main
Owner

Summary

  • Produces sfx_npc_murmur.ogg via Stable Audio Open for the universal event-driven NPC proximity murmur (D-072)
  • Organic sonic family (D-074): warm mid-freq 200-800Hz vocal texture, human voices in adjacent room, direction and cadence distinguishable, words not
  • Routes to World SFX bus; zone ambient determines conspicuousness naturally (D-072)
  • Unblocks client #533 (murmur wiring)

Generation

3 candidates generated sequentially (5s/CFG8, 6s/CFG7, 4s/CFG9). Candidate 1 selected for richest OGG texture (107KB vs 95/91KB) and clearest spatial framing. Post-processed: trim, LUFS -16, OGG encode.

Final prompt: Warm organic audio, natural sound recording, slight room ambience, lived-in industrial space, realistic acoustic properties, authentic environmental sound. Single isolated sound effect, clean recording, 5 seconds duration, clear attack and natural decay, no background noise, no reverb tail beyond natural. Human voices murmuring through a thin wall or partition, two or three people in low conversation in the adjacent room, words muffled and indistinct, direction and gentle cadence audible, warm mid-frequency vocal texture 200-800Hz, soft intimate conversation murmur, no music, no intelligible words.

Test plan

  • Verify client/assets/audio/sfx_npc_murmur.ogg loads in Godot AudioStreamPlayer2D
  • Confirm bus assignment → World SFX
  • A/B test conspicuousness: play against amb_bar_layer.ogg (buried) and against corridor baseline (exposed) — zone-dependent signal/noise per D-072
  • Verify ListeningFocus eavesdrop interaction does not require audio changes (D-071 — mechanical, not asset)
  • Loop test: does the 5s clip loop without jarring seam?

🤖 Generated with Claude Code

## Summary - Produces `sfx_npc_murmur.ogg` via Stable Audio Open for the universal event-driven NPC proximity murmur (D-072) - Organic sonic family (D-074): warm mid-freq 200-800Hz vocal texture, human voices in adjacent room, direction and cadence distinguishable, words not - Routes to World SFX bus; zone ambient determines conspicuousness naturally (D-072) - Unblocks client #533 (murmur wiring) ## Generation 3 candidates generated sequentially (5s/CFG8, 6s/CFG7, 4s/CFG9). Candidate 1 selected for richest OGG texture (107KB vs 95/91KB) and clearest spatial framing. Post-processed: trim, LUFS -16, OGG encode. **Final prompt:** Warm organic audio, natural sound recording, slight room ambience, lived-in industrial space, realistic acoustic properties, authentic environmental sound. Single isolated sound effect, clean recording, 5 seconds duration, clear attack and natural decay, no background noise, no reverb tail beyond natural. Human voices murmuring through a thin wall or partition, two or three people in low conversation in the adjacent room, words muffled and indistinct, direction and gentle cadence audible, warm mid-frequency vocal texture 200-800Hz, soft intimate conversation murmur, no music, no intelligible words. ## Test plan - [ ] Verify `client/assets/audio/sfx_npc_murmur.ogg` loads in Godot AudioStreamPlayer2D - [ ] Confirm bus assignment → World SFX - [ ] A/B test conspicuousness: play against `amb_bar_layer.ogg` (buried) and against corridor baseline (exposed) — zone-dependent signal/noise per D-072 - [ ] Verify ListeningFocus eavesdrop interaction does not require audio changes (D-071 — mechanical, not asset) - [ ] Loop test: does the 5s clip loop without jarring seam? 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpmschweitzer added 1 commit 2026-02-19 17:10:49 +01:00
Produces sfx_npc_murmur.ogg via Stable Audio Open for D-072 universal
event-driven NPC proximity murmur. Organic sonic family (D-074): warm
mid-freq 200-800Hz vocal texture, human voices in adjacent room with
direction and cadence distinguishable, words not. World SFX bus.

Generated 3 candidates (5s/CFG8, 6s/CFG7, 4s/CFG9), selected candidate
1 for richest texture and clearest spatial framing. Unblocks client #533.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Author
Owner

Review: audio -> main (PR #45)

Hoshe (QA): REQUEST_CHANGES

Well-specified asset with thorough documentation cross-referencing D-072, D-071, D-074, D-018. Naming follows established sfx_ prefix convention. One blocking issue.

# File Severity Issue
1 client/assets/audio/sfx_npc_murmur.ogg warning Missing .import file. Every other Godot-integrated SFX asset has one (sfx_monologue_chime, sfx_stance_change, etc.). Required for stable uid:// references. Commit d627c2b addressed this same issue for 8 prior assets. Run godot --headless --import and commit the generated .import file alongside the asset
2 docs/assets/audio/sfx.md table suggestion "100 steps" in SFX-003 Notes column is diffusion model jargon — reads as nonsensical for a murmur asset. Consider "SAO 5s/CFG 8" for the table row
3 docs/assets/audio/sfx.md SFX-003 suggestion D-038 not listed in Cross-reference line. Both SFX-001 and SFX-002 reference D-038. Add for consistency

Ozzie (Player Experience): APPROVE

This is exactly what D-072 asked for — a single universal murmur that lets zone ambient do the conspicuousness work. "Words muffled and indistinct, direction and gentle cadence audible" is the game. The generation approach is rigorous and the documentation is excellent.

# File Severity Issue
1 sfx.md SFX-003 integration suggestion 5s duration is "loop-capable" per docs but loop seam behavior is unvalidated. Before integration, test the loop point or commit to non-looped (fire-and-retrigger). The ambiguity will bite during ListeningFocus eavesdrop sessions
2 sfx.md SFX-003 selection suggestion Three candidates generated but selection was for "richest texture" — document whether Candidate 1 also had best loop structure, since downstream relies on loop-capability
3 sfx.md SFX-003 integration suggestion No minimum gap or cooldown defined for retriggering. Overlapping or rapid-fire triggers (two nearby NPC clusters, player walking in/out of range) would break the "adjacent room" illusion. Specify retrigger policy

Verdict: CHANGES REQUESTED

Key fix before merge:

  1. Generate and commit sfx_npc_murmur.ogg.import — run godot --headless --import to create stable UID reference
## Review: audio -> main (PR #45) ### Hoshe (QA): REQUEST_CHANGES Well-specified asset with thorough documentation cross-referencing D-072, D-071, D-074, D-018. Naming follows established `sfx_` prefix convention. One blocking issue. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | `client/assets/audio/sfx_npc_murmur.ogg` | warning | Missing `.import` file. Every other Godot-integrated SFX asset has one (sfx_monologue_chime, sfx_stance_change, etc.). Required for stable `uid://` references. Commit `d627c2b` addressed this same issue for 8 prior assets. Run `godot --headless --import` and commit the generated `.import` file alongside the asset | | 2 | `docs/assets/audio/sfx.md` table | suggestion | "100 steps" in SFX-003 Notes column is diffusion model jargon — reads as nonsensical for a murmur asset. Consider "SAO 5s/CFG 8" for the table row | | 3 | `docs/assets/audio/sfx.md` SFX-003 | suggestion | D-038 not listed in Cross-reference line. Both SFX-001 and SFX-002 reference D-038. Add for consistency | ### Ozzie (Player Experience): APPROVE This is exactly what D-072 asked for — a single universal murmur that lets zone ambient do the conspicuousness work. "Words muffled and indistinct, direction and gentle cadence audible" is the game. The generation approach is rigorous and the documentation is excellent. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | `sfx.md` SFX-003 integration | suggestion | 5s duration is "loop-capable" per docs but loop seam behavior is unvalidated. Before integration, test the loop point or commit to non-looped (fire-and-retrigger). The ambiguity will bite during ListeningFocus eavesdrop sessions | | 2 | `sfx.md` SFX-003 selection | suggestion | Three candidates generated but selection was for "richest texture" — document whether Candidate 1 also had best loop structure, since downstream relies on loop-capability | | 3 | `sfx.md` SFX-003 integration | suggestion | No minimum gap or cooldown defined for retriggering. Overlapping or rapid-fire triggers (two nearby NPC clusters, player walking in/out of range) would break the "adjacent room" illusion. Specify retrigger policy | ### Verdict: CHANGES REQUESTED **Key fix before merge:** 1. Generate and commit `sfx_npc_murmur.ogg.import` — run `godot --headless --import` to create stable UID reference
jpmschweitzer closed this pull request 2026-02-19 18:46:58 +01:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#45