Input is one of the most important parts of a rhythm-game engine.
Every step, key press, panel hit, MIDI message and controller action has to reach the game accurately and consistently. Small problems in that path can become missed inputs, duplicated events, uneven polling or devices behaving differently between operating systems.
For many years, StepMania and Project OutFox handled this through RageInput.
RageInput supported an enormous range of devices across several generations of hardware and operating systems. Over time, OutFox extended it with additional drivers, MIDI support and compatibility work for newer controllers.
That kept more hardware working, but it also exposed the limits of the original design.
Different platforms handle input in very different ways. Some devices produce buffered events, others need to be polled, and specialist arcade hardware may require its own timing and device behaviour. As support expanded, RageInput accumulated more platform-specific paths and assumptions, making the system increasingly difficult to maintain and improve safely.
SereneIO is our replacement for that architecture.
Rather than forcing every device through the same model, SereneIO allows OutFox to use the input method best suited to each platform and device family.
On Windows, this includes buffered DirectInput, polled XInput, MIDI support and dedicated handling for specialist controllers. On Linux, SereneIO supports evdev, with additional platform work continuing for modern display and input environments. The wider architecture is designed so that platform-specific improvements can be added without turning the entire input system into another maze of exceptions.
This is not simply a change of name.
SereneIO gives us clearer separation between device discovery, event collection, polling and game-facing input. It reduces dependence on inherited assumptions and makes it easier to diagnose where a problem occurs when a device does not behave as expected.
Compatibility remains central to the work.
OutFox still needs to support ordinary keyboards and controllers, dance pads, arcade I/O, MIDI devices, legacy hardware and unusual community-built equipment. Modernising the input system is not useful if it narrows the hardware players can use.
For players, the result should be straightforward: devices connect reliably, inputs are handled consistently, and specialist hardware can be supported without compromising the rest of the engine.
RageInput carried the engine across many years of hardware change.
SereneIO gives us a cleaner and more adaptable foundation for what comes next.