- BufferedStreamer wraps resampled streamer with 2s read-ahead buffer - Speaker buffer increased from 100ms to 200ms for secondary protection - Close old BufferedStreamer on track change and unload to prevent goroutine leaks - Streamer chain: decode -> resample -> BufferedStreamer -> ctrl -> volume -> speaker