Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

Question on Audio Delay when using DAX

If I send audio into the computer sound card (Mic In) and pass it to the audio out of the sound card and then into the back of the 6600 using a cable, the audio delay is unperceivable. If I use DAX to make the audio transfer from the sound card to SmartSDR rather than a cable, there seems to be hundreds of ms of audio delay. I expected once into the PC sound card the DAX transfer to have less delay. My question is why is this the case and what Hardware or software component adds this delay. (LAN delay is only 1-2 ms and the PC is a 4 core with low CPU and graphics utilization). Thanks for any info.


  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin

    Great question and I don't have a solid answer.

    I think that in your test, Windows just routes it directly back out, like for a system monitor type solution.

    However, in any other path, it has to run through all Windows 5 subsystems which I discussed here. https://community.flexradio.com/discussion/8023291/rx-audio-latency


  • Jeff_W4DD
    Jeff_W4DD Member ✭✭

    Thanks for the information Mike. 

    I thought it would be worthwhile to quantify what the latency is.  Since WWV has a one second time tick, that makes a good pulse to kick off the measurement process.  I measured the Rx delay, but suspect the Tx delay would be similar as transmit likely goes through similar processes.  I listed my setup below in case others wish to duplicate it and do further testing.

    Test Setup:

    I used a Tektronix dual channel oscilloscope to do the measurement. The built-in time base should be accurate enough for measuring the audio delay to within 10ms.

    Channel 1 of the oscilloscope gets an audio signal from an analog transceiver, in this case an old Kenwood TS-690 tuned to WWV at 10MHz.  I triggered the scope off of this channel so it triggers every one second when it sees the WWV tick tone.  WWV cycles through various tic tones every 60 seconds.  For measurement purposes, it is best to use the plain tic tone that does not have other tones superimposed on it.  I assume the old analog receiver has a very short delay, perhaps under a millisecond (ms).  I found it useful to feed the audio signal to both the scope and an external speaker using a Y cable.  Pick a frequency and time when WWV has a solid signal.

    Channel 2 of the oscilloscope gets the Flex audio signal, first from the back of the Flex 6600, then in the second test from the Audio output jack (speaker) on the desktop PC.  I found it useful to feed the audio signal to both the scope and a set of headphones using a Y cable.  Depending on how much audio level your PC audio card produces, you may or may not be able to add in the headphones as that tends to reduce the audio level.


    Results – Flex Audio Jack: I measured 160ms of audio delay compared to the analog receiver.  I'm not sure where this delay originates in the Flex, from the ADC, FPGA, or the baseband processor. My guess is the baseband processor, which does the demodulation function.

    Results – Desktop PC Speaker Audio Output Jack: I measured 630ms of audio delay compared to the analog receiver, an increase of 470ms.  My Dell PC has a 3.3GHz Intel i5 CPU which runs about 10% CPU utilization and 20% graphics utilization so PC loading would not seem to be the cause.  It uses a built-in sound card identified as a Realtek chipset.  I ran this test on my LAN which has 1-2ms of network delay (RRT).  If you are operating remotely, with say 200ms of round tip delay, you would need to add half of that to come up with the total audio latency you would encounter when remote.

    There was mention in an earlier posting of the subsystems of the Windows audio stack.


    The summary of that stack (below the graphic) indicates “In Windows 10, the latency has been reduced to 1.3ms for all applications”. So it’s not clear as to where the latency is generated in Windows, assuming Microsoft’s summary is correct. If someone has a deep understanding of the Windows Audio Stack (WAS), feel free to enlighten us.


  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin


    Your test is well thought out and similar to mine. Excellent job to eliminate many variables.

    For test 1 160ms sounds long. Is that with the default Filter settings and what mode. You should see numbers similar to these:

    Test 2 is a bit longer than what I measured a year ago and it doesn't matter how fast the PC is. My guess is it is related to a buffer size issue. The bigger buffers take longer to fill but are more reliable. Smaller buffers are faster but drop more packets.

    Thanks for reposting that link. I need to go digest it again, but I have yet to seen any Windows 10 application that is that fast.

  • Jeff_W4DD
    Jeff_W4DD Member ✭✭

    Yes, In Settings/Filters they are all set to AUTO.

    Another way do the test would be to record L and R channels on a separate pc with a good timestamp. Analog radio to one channel, Flex to the other channel. That way the data could be saved.

  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin

    I agree about your other test, but Windows is part of the problem. :) I might use a MAC or a Linux box first.

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.