Open John-KC2QMA opened 2 years ago
I do understand that “technically” an ASIO driver already has basic support through Windows OS audio stack. Is ESDR3 coded to have direct access to the ASIO driver in “Exclusive Mode”?
"The best alternative for applications that need low latency is to use the ASIO (Audio Stream Input/Output) model, which utilizes exclusive mode. After a user installs a 3rd party ASIO driver, applications can send data directly from the application to the ASIO driver. However, the application has to be written in such a way that it talks directly to the ASIO driver."
I have been thinking about how having Direct ASIO audio driver support coded into ESDR3 could make a big improvement in audio latency.
What Is ASIO? ASIO stands for Audio Stream Input/Output.
ASIO is a sound card driver protocol created by the German music company Steinberg. The reason ASIO was created was out of necessity, when a musician wants to record with a computer if there is too much latency there will be such a delay in the audio the drummer would not be able to keep time or the singer would be out of time basically just a mess. What was needed was Real-Time audio with negligible latency. That’s where the ASIO driver comes in.
One of the biggest issues we have with computer based SDR radio is latency. Latency can come from many areas in the system such as Video, CPU utilization and so on but for the most part most of the latency is caused by the audio stack in an OS like Windows. None of this latency matters when you are listening to music or getting a notification sound when you get an email. But when you need the audio to be Real-Time the old MME, WASAPI drivers just won’t work.
Now since ESDR3 is an SDR application running on a personal computer it makes sense to me to add ASIO driver support right into ESDR3 so users can add a low latency ASIO audio interface to their system for the lowest possible latency and the highest audio fidelity. The added benefit to very low latency is even more apparent with CW, SO2R, QSK and Digital modes where low latency and wide audio frequency response is critical.
The best alternative for applications that need low latency is to use the ASIO (Audio Stream Input/Output) model, which utilizes exclusive mode. After a user installs a 3rd party ASIO driver, applications can send data directly from the application to the ASIO driver. However, the application has to be written in such a way that it talks directly to the ASIO driver.
The image below shows why there is so much latency on for example a Windows PC. Look at all the steps the audio has to pass through the Windows Audio Stack. But with ASIO audio is sent directly the ASIO driver.
The following diagram shows a simplified version of the Windows audio stack![low-latency-audio-stack-diagram-1](https://user-images.githubusercontent.com/97036459/149397795-fe881104-b4a4-4cda-b20f-195fb0199091.png)
Here is a summary of the latencies in the render path:
Here is a summary of latency in the capture path:
Thanks KC2QMA