External ASIO/WASAPI_EXCLUSIVE backend for low-latency and safe osu! audio playback experience.
While osu's original audio system has a latency for about 40 ms, this program can provide extremely low latency to as low as 0.6ms (Verified by EmertxE, determine by your devices, from tapping to hearing), and for most players the latency can be lower than about 8-15ms (with no professional soundcard, from tapping to hearing).
We have been waiting for the very near future for several years, but it looks like that the dev team has been stopped supporting such heavy development for legacy osu. So there are many nice external community audio tools before like REAL, osu-External-ASIO-Sound, AsioHookForOsu, etc. But:
This project born to resolve these problems. As default, this program enables RealtimeMode
in the configuration, which will use OsuRTDataProvider to read osu's memory without modifying. The OsuRTDataProvider is commonly used for broadcasting tools (like RTPP Displayer), and it looks safe because it was approved by peppy. But nothing will be guaranteed, so I should still say please do at your own risk.
Benifits of KeyASIO.Net
Overview
Realtime options
The KeyASIO.Net supports FullMode
(EnableMusicFunctions
in configuration), which can also synchronize the music, that will completely replace osu's sounds. This will make you much easier to start, but it has irresolvable problems. For players who has only one soundcard, you can try the fullmode. Otherwise, I only suggest with this option off.
Prerequisites
Advanced Options
and adjust the options to lower the latency (Check latency at the software GUI)VB-CABLE Input
This is because of whether the same audio device in game settings is used exclusively in other applications. In case of exclusive using, the osu game's time synchronization may stuck while game playing, so the hitbox check will always fail.
VB-CABLE Input
, and add the VB-CABLE Output
as second audio output device in your livestream software.Prerequisites
- Make sure you have at least 2 audio output devices (including HDMI Audio). An HDMI decoder with audio port is required if your monitor doesn't have audio port.
- A standalone mixer. Low-end device is just ok, since they are always very cheap. DO NOT USE WINDOWS MIXER SOFTWARES, since they will only increase the latency.
- Install ASIO4ALL / Just use WASAPI_EXCLUSIVE
HDMI Out
with others deselected. Press Advanced Options
and adjust the options to lower the latency (Check latency at the software GUI)Auto
mod and adjust the software's offset and osu!'s offset.Prerequisites
- Install VB-CABLE
VB-CABLE Input
This is because of whether the same audio device in game settings is used exclusively in other applications. In case of exclusive using, the osu game's time synchronization may stuck while game playing, so the hitbox check will always fail.
VB-CABLE Input
, and add the VB-CABLE Output
as second audio output device in your livestream software.Prerequisites
- Check if your soundcard has original ASIO driver. If no, install ASIO4ALL / just use WASAPI_EXCLUSIVE
- If your soundcard driver doesn't support ASIO concurrency, a standalone mixer is needed. Low-end device is just ok, since they are always very cheap. DO NOT USE WINDOWS MIXER SOFTWARES, since they will only increase the latency.
Auto
mod and adjust the software's offset and osu!'s offset.Full options in appsettings.yaml : (Modify after program closed) |
Item | Description |
---|---|---|
Debugging | Show debug logs. | |
Device | Device configuration (Recommend to configure in GUI). | |
HitsoundPath | Default hitsound path (relative or absolute) for playing. | |
Keys | Triggering keys. See https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=windowsdesktop-6.0 for more inforamtion. | |
RealtimeMode | If true, the software will enable memory scanning and play the right hitsounds of beatmaps. | |
RealtimeMode.AudioOffset | The offset when RealtimeMode is true (allow adjusting in GUI). |
|
RealtimeMode.BalanceFactor | Balance factor. | |
RealtimeMode.IgnoreBeatmapHitsound | Ignore beatmap's hitsound and force using user skin instead. | |
RealtimeMode.IgnoreComboBreak | Ignore combo break sound. | |
RealtimeMode.IgnoreSliderTicksAndSlides | Ignore slider's ticks and slides. | |
RealtimeMode.IgnoreStoryboardSamples | Ignore beatmap's storyboard samples. | |
RealtimeMode.SliderTailPlaybackBehavior | Slider tail's playback behavior. Normal: Force to play slider tail's sounds; KeepReverse: Play only if a slider with multiple reverses; Ignore: Ignore slider tail's sounds. | |
SampleRate | Device's sample rate (allow adjusting in GUI). | |
SkinFolder | The skin folder when RealtimeMode is true. |
|
VolumeEnabled | Software volume control. Disable for extremely low latency when RealtimeMode is false |
|
Volume | Configured device volume. |
This is because of whether the same audio device in game settings is used exclusively in other applications (like KeyASIO). In case of exclusive using, the osu game's time synchronization may stuck while game playing, so the hitbox checking will always fail.
Currently it's a software limit, please open offset guide by clicking Offset...
button first before playing with auto.
If you're sure it's a bug and have steps to reproduce, please open Github issue. For any other problems please reply in the forum page or Github's discussion page.