https://gitlab.synchro.net/main/sbbs/-/commit/e3024f0fc318a49f4e2f0967
Added Files:
docs/superpowers/specs/2026-07-16-syncretro-lobby-enter-sound-design.md Log Message:
docs: design for a SyncRetro lobby enter_sound
SyncDuke and SyncDOOM play a one-shot, sysop-supplied sound when a player enters the lobby. The SyncRetro consoles (SyncNES, SyncIvision) don't. The mechanism is already shared -- game_lobby.js's enter_sound(), which syncretro_lobby.js already loads -- so this is a call, an ini key and docs.
Records the two decisions that took the most getting to:
- No built-in sound. A synthesized blip would need no asset and would reach
terminals that have the audio APC but no libsndfile, but A;Synth has no
envelope, and a console effect is mostly its decay. And a Synth sequence
tuned until it reproduces a specific game's sound is a derivative of that
sound -- arriving as code rather than a WAV changes nothing. Only a
generic blip is clean, and that isn't what the feature is for.
- The key is [lobby] enter_sound, not [audio]. [lobby] is game_lobby.js's
contract and matches the siblings; SyncRetro's [audio] documents the
in-game Opus stream from the core, which a one-shot lobby SFX shares
nothing with.
Also records a concern that was raised and disproved, so it isn't chased
again: enter_sound's fixed "lobby_enter" name does NOT defeat a wildcard's per-entry randomness, because enter_sound loads cterm_lib.js into a fresh
scope each call, so its upload-once cache starts empty every entry. Verified under jsexec.
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net