rs_asio
rs_asio copied to clipboard
16ms crackling but DAW saves
I have noticed when I launch game at 64 samples, its good, but when 16 samples - its crackle. But when Im launch my daw at 16 sample asio before RS with asio, there is no crackling. So why is that? RS can't start asio for full power or what, or DAW just prepare asio engine?
There are several reasons that will lead Rocksmith + RS ASIO to be unable to achieve a buffer as small as other native ASIO apps.
- RS ASIO is still a translation layer, so it does additional work that native software doesn't need to do. For example we need to use signal events to notify the game's WASAPI audio path that there's new data available for it. We also need convert between interleaved <-> non-interleaved wave data as that's just another difference between WASAPI and ASIO etc.
- RS ASIO does some minor sound processing at buffer switch time along with possible sample format conversions depending on your hardware; this also means that there's an additional copy for each buffer swap that happens
- The whole game of Rocksmith and it's processing etc is running while doing the ASIO audio streaming
The only thing that could be done to help this a bit would be to move the processing of the audio to different threads to avoid blocking the ASIO streaming thread. This wouldn't be a very simple task, and it's hard to say if it would help at all. In any case a 64 sample buffer is already a 1.3ms buffer only, so you're really entering diminishing returns here since the bulk of you latency is likely coming from elsewhere.
Since I am weak in English. I didn't understand much. But the bottom line is that if before starting RS with RS_ASIO, you start any other application running on ASIO (DAW, BIAS FX etc), then rocksmith will be without crackling. Or do you mean that perhaps nothing actually changes between 16 and 64? But for some reason, if you just run the game on 16 without a DAW, then there will be crackling. Is there any method to check why this is happening?
But the bottom line is that if before starting RS with RS_ASIO, you start any other application running on ASIO (DAW, BIAS FX etc), then rocksmith will be without crackling.
Oh, I see what you mean now. This is weird indeed.
Or do you mean that perhaps nothing actually changes between 16 and 64?
You can check RS_ASIO-log.txt to see the actual buffer size used. It is possible that your DAW is locking your interface into a bigger size and even though you're requesting 16, it may actually be using something else.
Is there any method to check why this is happening?
Look for RSAsioAudioClient::Initialize - actual buffer duration: in RS_ASIO-log.txt
So, its says 16 frames, just like I set in my asio driver and daw (48 khz - 16 samples) RS_ASIO-log.txt
It looks like I hacked the system.
Very weird. The log does have the buffer underrun messgaes, so you should be having sound issues. However they're sometimes many seconds apart, so it could be almost imperceptible.
In any case it's odd indeed that you get better performance with the DAW running in the background. The OS may be doing something that creates a better environment for low latency audio. Perhaps it's the CPU scheduler behavior that changes or something. It's hard to tell.
Another riddle for which we will never get an answer) And what should I do now? Run any daw before playing?
Another riddle for which we will never get an answer
This is what will always happen when we're working with closed-source software unfortunately.
And what should I do now? Run any daw before playing?
You're probably focusing too much on numbers. A 64 sized buffer is 1.3 milliseconds already, it's unlikely that going for 16 will make a big difference in your playing, specially when we already measured the big chunk of latency coming from elsewhere (like the game and the USB stack etc).
If you enjoy the game with a 64 buffer, I would say that going through the effort of opening the DAW to play at 16 is not worth it.
I'm here for same quest for holy grail of 16 samples buffer my system capable of, but RS being willy-nilly and running 128 out 64 in buffers. Through, compiling with all possible /O flags and enabling avx2 extension helps a notch (forcing 48 buffer but it still logs as 64). I find interesting you've got decent audio, since it's not exclusive asio and pre-setup from your daw rsasio shouldn't be able to alter it's real configuration. If it is rsasio mishap we could fix it (assuming it is), but if it's Rocksmith being weird (Im sure) we may need to debug rocksmith behaviour?