Focusrite ASIO driver and Callback Timing error (solved)
Posted: Sat Jan 13, 2018 10:59 am
Despite Focusrite offers very good hardware audio boards, the ASIO driver (especially for USB devices) is not exactly programmed in the respect of the ASIO principles (and real time DSP rules).
Focusrite ASIO buffering is not real, and the callback mechanism does not respect buffer timing rules. It seems Focusrite ASIO driver works internally with bigger buffer than the ASIO buffer size. Then it is obliged to call the process function several times in the same time frame.
The MT32-SPLITE (and MT64 or MT128) application shows the problem in its ASIO page, when selecting Focusrite ASIO Driver. For example with Focusrite Saffire USB, even with a big buffer size (942 samples) the ASIO driver is sometimes calling the process function twice and consequently is producing timing error (red peak).
We also have Focusrite Scarlett 18i20 connected on a MT128-PRO (64bits) on WIN7 64bits. We set down the latency to 89 samples buffer size (producing a global latency of 13.9 ms which is much bigger than expected for this buffer size). And we can see that the timing errors are more important if the buffer size is smaller. (similar problem reported on Scarlett 2i4 MK2).
The consequences are usually not hearable in this case, but can disturb other streams, possibly synchronized to this main audio stream. It may concern MIDI sequencing, Display/Video and all real time slave processes based on the time regularity of the ASIO callback.
The problem is more present with Voicemeeter Virtual ASIO Drivers (allowing to connect a DAW or ASIO instrument to it), which are strictly synchronized on the Voicemeeter Main Stream (given by output A1 device), that can be driven by a focusrite ASIO driver.
Since ASIO interface is based on a double buffer swap principle, it is important to have enough time between buffer swap to process it and respect real time constraints. With Focusrite ASIO driver, the buffer swap can be done without respecting this timing and then will produce an audio cut/crack on the DAW source connected to Voicemeeter virtual ASIO driver.
Conclusion: if you have such problem with Voicemeeter or any other ASIO applications and USB focusrite audio board, you may forward this topic to Focusrite Support… Hope it will encourage them to update their ASIO driver…
Possible Workaround: the issue can be not there for some remarkable couple of values (samplerate, buffer size) for example at 48000 Hz, 240, 192 or 128 samples buffer size could work correct. At 44100 Hz i guess unusual 147 or 441 samples buffer size could work too…
SOLUTION: Voicemeeter NOV 2022 versions offer new Virtual ASIO drivers able to support this timing callback stability error.
Focusrite ASIO buffering is not real, and the callback mechanism does not respect buffer timing rules. It seems Focusrite ASIO driver works internally with bigger buffer than the ASIO buffer size. Then it is obliged to call the process function several times in the same time frame.
The MT32-SPLITE (and MT64 or MT128) application shows the problem in its ASIO page, when selecting Focusrite ASIO Driver. For example with Focusrite Saffire USB, even with a big buffer size (942 samples) the ASIO driver is sometimes calling the process function twice and consequently is producing timing error (red peak).
We also have Focusrite Scarlett 18i20 connected on a MT128-PRO (64bits) on WIN7 64bits. We set down the latency to 89 samples buffer size (producing a global latency of 13.9 ms which is much bigger than expected for this buffer size). And we can see that the timing errors are more important if the buffer size is smaller. (similar problem reported on Scarlett 2i4 MK2).
The consequences are usually not hearable in this case, but can disturb other streams, possibly synchronized to this main audio stream. It may concern MIDI sequencing, Display/Video and all real time slave processes based on the time regularity of the ASIO callback.
The problem is more present with Voicemeeter Virtual ASIO Drivers (allowing to connect a DAW or ASIO instrument to it), which are strictly synchronized on the Voicemeeter Main Stream (given by output A1 device), that can be driven by a focusrite ASIO driver.
Since ASIO interface is based on a double buffer swap principle, it is important to have enough time between buffer swap to process it and respect real time constraints. With Focusrite ASIO driver, the buffer swap can be done without respecting this timing and then will produce an audio cut/crack on the DAW source connected to Voicemeeter virtual ASIO driver.
Conclusion: if you have such problem with Voicemeeter or any other ASIO applications and USB focusrite audio board, you may forward this topic to Focusrite Support… Hope it will encourage them to update their ASIO driver…
Possible Workaround: the issue can be not there for some remarkable couple of values (samplerate, buffer size) for example at 48000 Hz, 240, 192 or 128 samples buffer size could work correct. At 44100 Hz i guess unusual 147 or 441 samples buffer size could work too…
SOLUTION: Voicemeeter NOV 2022 versions offer new Virtual ASIO drivers able to support this timing callback stability error.