Skip to content

No More Resampling

Compare
Choose a tag to compare
@arodland arodland released this 16 Nov 00:38
· 21 commits to master since this release

This release changes from using PulseAudio's module-null-sink for TX and RX audio to using module-pipe-sink for TX and module-pipe-source for RX. This has some advantages, namely:

  • The [INTERNAL] Flex RX Loopback and [INTERNAL] Flex TX Loopback devices, which used to be necessary, no longer exist and no longer clutter up your audio device selection.
  • nDAX is no longer in charge of synchronizing clock domains between the rate that audio samples arrive from the rig and the rate that PulseAudio consumes samples from the null-sink and makes them available to the monitor device.
  • Several hundred lines of code were removed, including the resampler PLL algorithm (which was complicated, received many tweaks, and was never quite right).
  • CPU usage is lower as nDAX no longer does floating-point math on each block of samples.
  • Users of SSTV and MFSK image modes should notice less "wobbling" in received images.

A few small configuration changes may be necessary upon upgrading to this release:

  • The -source and -sink option names have swapped places. They were originally (questionably) named from nDAX's perspective based on the loopback devices, instead of the user's perspective. Now there is only one perspective. If you are using the default flexdax.rx and flexdax.tx you don't have to change anything, but if you are starting nDAX with a script you will have to adjust your options. I felt it was better to break things a little bit now than to keep the confusing names forever.
  • The source device for received audio is no longer forced to have .monitor at the end — e.g. the default PulseAudio source will now be flexdax.rx, not flexdax.rx.monitor. You will likely have to re-select your audio source in wsjt-x etc., since the remembered source name won't exist anymore.
  • The -debug-timing option has been removed since it controlled something that no longer exists.
  • The -latency option probably doesn't do anything anymore — your apps are now in charge of the size of their own audio buffers. This is generally a good thing. The option is retained in case tweaking the source-side buffer size is useful for debugging, but you are recommended to leave it at the default.

Thanks for coping with these changes and as always please report any problems using the Issues tab.