https://gitlab.synchro.net/main/sbbs/-/commit/edca025fc0a6ba1a425c8c8f
Modified Files:
src/conio/cterm.c cterm.h cterm_cterm.c cterm_cterm.h sdl_con.c src/syncterm/CHANGES ripper.c src/xpdev/sdlfuncs.c xpbeep.c xpbeep.h
Log Message:
xpdev: S16 stereo 44100 audio with streaming mixer
Phase 1: format upgrade to signed 16-bit stereo 44100 Hz across all 7
backends (CoreAudio, PulseAudio, PortAudio, SDL, Win32 waveOut, ALSA,
OSS). SINE/SAWTOOTH/SQUARE become ideal native S16; the noisy shapes
(SINE_HARM / SINE_SAW / SINE_SAW_CHORD / SINE_SAW_HARM) preserve their intentional U8 numeric artifacts by computing in U8 then expanding.
Phase 2: xp_audio_* streaming API with per-stream ring buffers,
per-channel volume, dB-linear fade in/out, and crossfade.
Phase 3: unified pull-based mixer. Pull-native backends (SDL,
CoreAudio, PortAudio, PulseAudio async) drive xp_mixer_pull from
their own callback; push-native backends (Win32 waveOut, ALSA, OSS)
run a single device thread that pulls and writes.
Phase 3d: ANSI music (MML) rewritten around xp_audio_append;
note_params / tone_or_beep / cterm_playnote_thread scaffolding
deleted from cterm.c / cterm_cterm.c.
PortAudio: dropped v1.8 pablio support, v19 callback API only.
PulseAudio: converted from libpulse-simple to libpulse async with pa_threaded_mainloop, now pull-native.
Win32 waveOut: pre-allocated 4-buffer ring with CALLBACK_EVENT.
SDL audio: sdlfuncs.c libnames now lists SDL2 first.
Co-Authored-By: Claude Opus 4.7 (1M context) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net