BETA043 posted!
This one requires a bit more information. So, we found out that for MME, Wasapi, Kernel Streaming and DirectSound, the internal sound card buffer sizes (NOT the buffers that you see in Stereo Tool!) that Windows tells us to use are actually NOT always correct, and often much smaller bufffers are possible.
Here are the default buffer sizes that Windows gives us:
- MME: 90 ms for a system not running anything else, 180 ms to be safe on a system that runs more software.
- Wasapi: 3 ms for a system not running anything else, 10 ms to be safe on a system that runs more software.
- Kernel Streaming: (Sorry, I forgot the numbers)
- DirectSound: 120 ms for a system not running anything else, 240 ms to be safe on a system that runs more software.
Using the smaller numbers caused issues on some systems (that's what several people posted about in the last week). These numbers are used for both inputs and outputs, so in the safest mode, using DirectSound would give you AT LEAST 480 ms of latency.
Anyway, we've done tests on some systems and many systems can run with much smaller numbers. For example, my development system is perfectly happy with > 18 ms buffer sizes for MME. Using that, the MME latency is actually only marginally higher than that of Wasapi.
We have added sliders to control these latencies. You can find them under Audio I/O -> Miscellaneous. They are called "MME safety buffer", "Wasapi safety buffer" etc. Since theoretically Windows can give different numbers for different sound cards or Windows versions (none of the ones that we have tested so far deviates, but that doesn't mean that it can't happen), the sliders are actually multiplication values - you can multiply the safety value by these slider values. The default values if you enable them are for the "not running anything else" values, so there are at 50% (30% for Wasapi).
What I would like to know is which values for these sliders work. On my system for example, setting MME below 18 ms (10%; this value itself works on some sample rates but not on others) will completely break things. Sometimes the system recovers after a bit, but if that happens, the buffer filling is all wrong. At very low values there's almost no data at all anymore and everything comes to a halt. If this happens for other people as well, I can change the minimum value of that slider to 10 or 11%. Most others also seem to run down to about 10%, below that, there are often issues.
Please let me know how low you can go on your system, which Windows version you are using and if it's the same on all sound cards.
On my system, this setting allows me to reduce the MME latency by 170 ms compared to "safe" mode, 60 ms compared to the previous beta's. For Wasapi and Kernel Streaming, which have much smaller buffers to begin with, the difference is only a few milliseconds.