This work began with a BMS chart that was not loading correctly.
What looked like a small detection problem led us into several older parts of the BMS and PMS support inside OutFox. Some chart types were not being classified correctly, and the engine did not always have a clear answer for how their audio should be handled once they had loaded.
The BMS family includes BMS, BME and BML files, alongside related formats such as PMS. These formats have existed for a long time and have been used in many different ways. That flexibility is one of their strengths, but it also means that older and newer charts do not always expect the same playback behaviour.
Some older charts rely on traditional BMS multiplexing, where background sounds and keysounds are arranged and played according to the assumptions of the original format. Newer content often expects a cleaner separation between background music and individual keysounds.
OutFox needs to support both.
Under the old audio system, responsibility for those decisions was spread across several parts of the engine. The loader, song data, music object and audio system could all become involved. That made it difficult to tell which part of the engine should own the behaviour, and made apparently small fixes much riskier than they needed to be.
SereneAudio has allowed us to separate that work more clearly.
OutFox now has an option for traditional BMS multiplex playback, allowing older charts that depend on it to behave more closely to how they were authored. Modern playback remains available for content that expects background music and keysounds to be handled separately.
For now, the option is available through the experimental settings while the new theme work is completed.
The same investigation also uncovered problems with chart detection.
Some 5-key BMS charts were not being recognised correctly, while older four-panel dance charts stored in BMS files could also be missed or classified incorrectly. Those charts now appear and load as expected, including DDR-style charts written using the BMS format.
This was also one of the first opportunities to test SereneAudio under the pressure of dense keysound playback.
BMS content can schedule a large number of short sounds in a very small amount of time. That makes it useful for checking whether the audio transport, sound scheduling and playback path remain stable during real gameplay.
StillRiver was running throughout the tests, giving us measurements from the audio system while the charts were being played. We checked scheduling behaviour, runtime stability, soundcard latency and clipping rather than relying only on whether the result sounded better.
The results were consistent enough for SereneAudio to reach its first Silver grade.
Silver does not mean the audio system is finished. It means this part of the new audio path has reached a measured and repeatable level of stability that we are comfortable continuing to build upon.
The important result for players is much simpler.
Older charts can use the playback behaviour they were written for. Newer charts are not forced through old assumptions. Missing chart types are being detected correctly, and dense keysound content can be tested with a clearer view of what the audio engine is doing.
This is the benefit of replacing the older foundations properly.
The BMS fixes were not only easier to make. They were easier to understand, test and verify without several parts of the engine fighting over the same decision.
Patreon support gives us the time and hardware needed to follow work like this beyond the first visible bug. That is often where the useful fixes are hiding. We thank you a lot for your support!