https://gitlab.synchro.net/main/sbbs/-/commit/8c09a2f494a1ce9ec0df1166
Added Files:
src/doors/termgfx/test/test_stream_volume.c
Modified Files:
src/doors/syncretro/README.md main.c syncretro_audio.c syncretro_audio.h test_audio_bytes.c test_audio_bytes.golden src/doors/termgfx/audio_stream.c audio_stream.h src/doors/termgfx/test/CMakeLists.txt
Log Message:
syncretro: step the volume in percent, and fix a mute with no way out
The channel level stepped in 6 dB increments and snapped to full mute
below -36 dB, but applied that snap in BOTH directions: from the -60 dB
mute floor, '+' landed at -54 dB, still inside the snap zone, and bounced straight back to mute. Volume down was a one-way trip. The same trap
caught any configured level inside -36..-60 dB, audible but unable to
climb out. Reported by nelgin on IRC; the behavior dates from b226d59546 (lite-11-farm, 2026-07-17), which made the stream dB-native.
The ladder a player walks now lives in the door, in percent: it holds
0..100, steps by 10, and converts at the seam. That is the unit the
sysop's [audio] volume knob is already in and the unit the on-screen
readout now uses ("Volume 70%", "Volume 0% (off)"), so nothing a player
or a sysop touches speaks decibels, and the keys reach as far per press
as SynchroLand's do. A clamped 0..100 ladder is symmetric by
construction, which leaves the failure no place to hide.
termgfx accordingly takes an absolute level, termgfx_stream_set_volume(),
and loses termgfx_stream_volume_step() along with the snap-to-mute floor
that existed only to shorten a dB ladder no door offers now. Zero percent converts to the silence floor, which is a real mute: the door stops
encoding and sending, flushes the channel, and re-primes the cushion on
the way back up.
A new termgfx unit test covers the level and its clamps, and a step added
to syncretro's audio-transcript golden pins the round trip on the wire, including that chunks fed at 0% emit nothing at all. That re-prime path
off mute was unreachable before this, so it had never run.
The door keys the README lists never included '+' and '-' at all.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net