Welcome, Guest
Username: Password: Remember me
This category was created to discuss various questions and topics regarding ExpertSDR3 operation.

TOPIC: Low Latency audio in various OS and correlation with ESDR2/ESDR3 environment

Low Latency audio in various OS and correlation with ESDR2/ESDR3 environment 28 Feb 2023 02:18 #1

  • VK6NX
  • VK6NX's Avatar
  • OFFLINE
  • Posts: 245
  • Thank you received: 195
With migration from ESDR2 (based on Qt5 framework) to ESDR3 (based on Qt6 framework) it is important for ESDR3 user to understand the fundamentals of default audio drivers and codecs within various OS, alongside with existing cross-dependencies.

This understanding might be able to help the user to set the correct expectations and select the proper (both) ESDR version and computer platform/OS for his needs in HAM radio.

In general, the topic about "audio" should be split in two major parts:
- OS (Linux/OS X/Win) audio, and
- Qt versions (Qt5 and Qt6) differences in delivering audio within ESDR2 and ESDR3


OS ( Linux | OS X | Win ) audio

Windows

Windows, certainly, the popular one OS in ESDR/SunSDR world. Also, historically ESDR was started as Windows-only, then became cross-platform in latest versions of ESDR2 and full cross-platform in ESDR3.

Through the years of ESDR2-3 development, Windows users also have been moving between OS versions. Older Windows versions were "known" for much higher audio latency, compared to Linux and macOS. To improve the audio experience, the proprietary Audio Stream Input/Output (ASIO) sound card driver protocol was often in use in prior Win10/11 (including earlier versions of Win10).

Clearing misunderstanding and misinterpretation of ASIO in correlation with ESDR2/3.
Warning: Spoiler! [ Click to expand ]


Summary for Windows:
ASIO is a valid way to obtain low latency audio, when ESDR2 and earlier versions of Windows OS (including Win10 prior 20H2) are in use. Still, you can easily use MS in-build audio. The way how you are setting up your Windows is really dependent from your HAM tasks.

With ESDR3 and latest Win10/Win11 the WASAPI is the preferred audio option.

Links to expand your knowledge and understanding of Windows Audio in Win10/11:
Windows Audio Architecture
Audio Devices Design Guide
WASAPI
Low Latency Audio
Some discussions on MS forums in regard to ASIO (also feel free to use search on MS forums)

OS X (Mac)

In a nutshell - Mac devices are low latency by nature. (The payback for such comfort - is the device's price. And much less 3rd party available software, in comparison to Win, however this is changing over last years).

Apple is using native Core Audio set of frameworks. The frameworks are integrating application audio with the OS itself and the platform Hardware Abstraction Layer (HAL). In-build Mac devices audio hardware addresses the HAL before hitting the OS, providing "true on playback".

The above described architecture has an advantage of using Core Audio device's ability to address multiple applications simultaneously.

There are practically nothing need to be adjusted in latest OS X versions - 9,10 (ESDR2) and 11,12,13(ESDR2/3) - to make them work with ESDR2/3, it is pretty much plug-and-play functionality out of the box with majority of microphones, headphones, etc.

Links to expand your knowledge and understanding of OS X audio:
Core Audio Overview
Core Audio Essentials
Core Audio in iOS and OS X

Linux

With ESDR2 (latest versions) and ESDR3 currently supported by Ubuntu only, we are focusing on this OS only.

And, usually, Linux active users of ESDR2/3 are already across audio details and setup nuances - this is pretty much led by Linux OS nature.

Linux is kind of "in between" Win and Mac in terms of audio low latency: it is certainly capable to provide with perfect audio results much cheaper (in device cost) that same on Mac; however it requires really deep knowledge and understanding - of the OS kernel, various audio libraries and HW compatibility - from its user.

Linux is predominantly found in use within developers; this is, certainly, true about EE development team and wide range of 3rd party developers.

If you are new to Linux and still evaluating whether you wish to start using Ubuntu, you may like the idea to kind of "test" your level of knowledge by reading the following official blog. The expected outcome - if you have no problem in understanding blog's provided information/terminology/etc., then you're pretty much "ready to go":

Low latency Linux for industrial embedded systems – Part I
Low latency Linux for industrial embedded systems – Part II
Low latency Linux for industrial embedded systems – Part III



Qt5 and Qt6 frameworks: "how it works" with OS's audio

The key points to understand are around those two below:
  • 1. ESDR2 is build with Qt5. ESDR3 is build with Qt6.
  • 2. There is massive difference between Qt5 and Qt6 in terms of how each framework version works with different OSes audio. Hence, there is massive difference how ESDR2 works with OS audio in comparison with ESDR3.
The key output from two key points above: when running ESDR2 and ESDR3 on the same hardware PC and same OS, you may get very different results in terms of low latency audio. The difference is much bigger under Windows, less in Ubuntu and practically nil in Mac.

There are heaps of information about the difference between Qt5 and Qt6 in "Qt Multimedia" (the part of Qt framework, responsible for audio interaction between application and OS). In a nutshell - and directly related to ESDR2/3 topic:
- Qt5 is using complex plugin and OS dependent infrastructure for audio backend and practically non-consistent frontend API; and those issues led to inconsistent cross-platform support.
- Qt6 is using an architecture of "no plugin" and "one backend for all multimedia" (including audio), providing unified cross-platform support within single code.

To simplify the understanding of the Qt5 vs Qt6 difference in Multimedia, it is, pretty much:

"have driver for each and every OS separately build into application code" (Qt5 way)
vs
"pass the audio stream from application directly to OS API" (Qt6 way).

(Perhaps now, it is more clear why someone may struggle with re-using ASIO with ESDR3 and Win11, when it still perfectly works with ESDR2 and Win7 - it is because there is no API for ASIO in Win11. Another "knowledge" from above - when something is not working in the OS audio, it is not, per se, ESDR3 - it is OS.)

Further knowledge expansion: 30-min video
Last Edit: 28 Feb 2023 09:09 by Rome.
The administrator has disabled public write access.
The following user(s) said Thank You: Rome, SM0JCA, EA5ML
Time to create page: 0.286 seconds