Subj : src/sbbs3/atcodes.cpp scfgdefs.h scfglib1.c scfgsave.c To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Thu Sep 24 2026 21:22:49 https://gitlab.synchro.net/main/sbbs/-/commit/aba7793deb5ba02c61e5065b Modified Files: src/sbbs3/atcodes.cpp scfgdefs.h scfglib1.c scfgsave.c Log Message: Add @-codes for terminal sound effects and background music @SOUND:, @MUSIC:, @MUSICVOL:, @MUSICOFF@, @SOUNDOFF@ and @CACHE_AUDIO:, so a sysop can attach audio to a menu or a prompt without writing any JavaScript. Nothing reaches a terminal that cannot play it: each code returns immediately when terminal auto-detection found no libsndfile, or when the user has set NO_SOUND. Stopping sound is deliberately exempt from the latter, since the flag can be set while a loop is already playing. @SOUND: and @MUSIC: take a bare filename under text/sound, resolved in two stages so the argument cannot name anything outside that directory. @CACHE_AUDIO: uploads without playing, for a large file placed where a delay is acceptable; its type is part of the code name rather than an argument because the capability gate depends on it, and C;S is a general verb with no feature query of its own. Volume is accepted as a percentage or with a dB suffix and always reaches the wire as dB. SyncTERM's mixer is dB-native and its bare-percent path is clamped at unity and integer-only. max_sound_file_size and max_cache_file_size in main.ini bound what a display file can send. They are two separate limits because @SOUND: uploads synchronously while a display file is drawing and @CACHE_AUDIO: does not. Co-Authored-By: Claude Opus 5 (1M context) --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .