Replacing an audio engine does not stop at generating sound correctly inside the game.
That sound still has to reach real hardware through the audio systems provided by each operating system. Those systems do not all work in the same way, and they do not all expect the engine to feed them audio using the same timing or buffering model.
This stage of the SereneAudio work has focused on those output paths.
SereneAudio is now running through WaveOut, RtAudio, PortAudio and PulseAudio. Linux output has also been tested and confirmed working through the new system.
During that testing, we found an underrun affecting some of the older polling-based drivers.
Part of the engine was still feeding those drivers using assumptions carried over from RageSound. That worked well enough under the old architecture, but it did not match how SereneAudio now prepares and submits audio.
The answer was not simply to increase the buffer.
Larger buffers can hide underruns, but they also increase latency and make playback less responsive. Smaller buffers reduce delay, but leave less room for the system to recover if audio is not supplied at the correct time.
We needed to fix how those drivers were being fed rather than covering the problem with additional delay.
StillRiver helped us follow the buffer activity while the engine was running. That showed where the older polling behaviour no longer matched the new audio path, and allowed us to check the result across each backend after the fix.
WaveOut is now working through SereneAudio and retains a path for Windows XP support. RtAudio, PortAudio and PulseAudio are also working, giving us tested output routes across both Windows and Linux.
This work also removes one of the restrictions inherited from RageSound.
The older system expected one driver and device to remain active for the entire session. SereneAudio is being built so that the output driver and device can be changed from within the game without restarting the engine.
There is still some cleanup remaining. The final volume-control paths owned by RageSound need to be removed so that SereneAudio handles that work in one place rather than sharing responsibility with the old system.
For players, none of this should require much thought.
Audio should start on the selected device, continue playing without stuttering or underruns, and remain responsive enough for rhythm-game playback. Older systems should continue working where we can support them, while newer devices should not be limited by assumptions from the previous engine.
SereneAudio is now working through real platform backends rather than a single development path.
That gives us the base needed to continue removing the remaining RageSound code and complete the transition cleanly.