Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

16ms crackling but DAW saves #187

Open
SAARussian opened this issue Apr 29, 2021 · 9 comments
Open

16ms crackling but DAW saves #187

SAARussian opened this issue Apr 29, 2021 · 9 comments

Comments

@SAARussian
Copy link

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?

@mdias
Copy link
Owner

mdias commented Apr 29, 2021

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.

@SAARussian
Copy link
Author

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?

@mdias
Copy link
Owner

mdias commented Apr 29, 2021

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

@SAARussian
Copy link
Author

So, its says 16 frames, just like I set in my asio driver and daw (48 khz - 16 samples)
RS_ASIO-log.txt

@SAARussian
Copy link
Author

It looks like I hacked the system.

@mdias
Copy link
Owner

mdias commented Apr 29, 2021

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.

@SAARussian
Copy link
Author

Another riddle for which we will never get an answer) And what should I do now? Run any daw before playing?

@mdias
Copy link
Owner

mdias commented Apr 30, 2021

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.

@L0FKA
Copy link

L0FKA commented Oct 24, 2022

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants