Input-rate adjustment methods for crackling & tearing avoidance

RetroArch features a real-time solution (dynamical input-rate adjustment), while bsnes features a precalculated settings-based solution, to the potential audio-crackling and video-tearing issue.

Be this a thread concerning the difference between both of those implementations.

(Which one do you find the most convenient to use?) (Which one do you believe produces the best results?)

I prefer the method in RetroArch, personally, since it’s rock-solid no matter what. Purists may not like the fact that it distorts the audio, but the distortion level is, by default, below the threshold of human detection, which is good enough for me.

While bsnes’ method will get close enough to only produce a crackle/stutter every once in a while, it still happens, and even an ideal frequency would be susceptible to variance brought about by other factors, like cpu spikes from other processes.

That’s not meant to rag on byuu’s method, though. Having the built-in analyzer is pretty freakin’ cool.

Maister’s (RetroArch’s) method is more modern and crackle-free, plus it faithfully records bit-perfect audio when recording, so I consider it superior in all ways.

Overall, I think the method used by PCSX2 (PlayStation 2 emulator) by default is the best. It’s called “TimeStretch”. It does something similar to what RetroArch does, but when it changes the length of an audio sample, it avoids distorting the pitch, which is a little more advanced. This sort of method is much more useful for an emulator like PCSX2 which may drop far below the maximum frame rate, causing the distortion to be easily audible. Until RetroArch has emulator cores that don’t always run at full speed on modern PCs, the method employed by RetroArch is sufficient for avoiding crackles.

Informative answers. Thanks for the input! :slight_smile:

I am getting aware that there is room for improvement, in both approaches… interesting.

this method with retroarch is juste the best of word of universe !!! do not change ^^