fix audiospeed.SpeedChanger direct playback, fixes #11020
Fix by setting "single_buffer = false". When single_buffer = true, the DMA driver sets up a hardware loop that resets the read address back to buffer[0] at full DMA speed, never calling get_buffer again. This caused SpeedChanger to replay its first 128-frame output buffer indefinitely when connected directly to audioio/audiobusio. Setting single_buffer = false enables the double-buffering path w/ DMA interrupts, which keeps calling get_buffer() so the phase accumulator can advance through the source audio correctly. Using AudioMixer as an intermediary masks the bug since Mixer/mix_down_one_voice() calls get_buffer() on its voices directly, bypassing the single_buffer optimization.
T
Tod Kurt committed
f1a360fff56b359ffe0e329960daec2e92a74eb7
Parent: 0ec323a