[Elecraft] Noise Nuller Latency
David Gilbert
ab7echo at gmail.com
Sat Jul 25 17:45:03 EDT 2026
A couple of people have privately asked me some questions about my
NoiseNuller application, but they are good questions so I'm going to
repeat my answers here.
The first question has to do with the character of the noise that
NoiseNuller can handle. Most noise reduction techniques make
assumptions about the profile of the noise, and usually give some
options or adjustments for different noise profiles. If the actual
noise fits one of the available profiles, the noise reduction works. If
not, it doesn't.
The NoiseNuller application doesn't make any assumptions about the
character of the noise. It analyzes the noise over the course of an
initial few seconds using FFT techniques, statistically generates a
phase profile of that noise for each FFT bin (i.e., frequency
component), and subtracts the noise bin by bin from whatever follows.
It doesn't even care much about the amplitude of each frequency
component since it makes its decisions only based upon phase and how
often each FFT bin shows up during the analysis period. It is therefore
theoretically applicable to almost any noise profile, although noise
that varies a lot in spectrum over time can reduce the ultimate SNR
because if the noise covers enough territory the application ends up at
least partly reducing too many of the bins in amplitude when it
reconstitutes the FFT series back to normal audio. That's why CW works
better than voice ... because CW occupies fewer FFT bins to start with,
and even if the application tries to reduce them it reduces FAR more FFT
bins that are associated with the noise. It's literally a statistical
filter.
The second question I've received has to do about latency. Today I
made a setup where I used my KX2 to periodically transmit some single
dits into a dummy load near my K3, and I set up a microphone near the K3
speaker to capture the resulting audio from the K3. The Line Out of the
K3 was fed into the Line In of the computer sound card, and the computer
was running my NoiseNuller application. I used a video screen capture
application (OBS Studio) to simultaneously record both the microphone
near the K3 speaker and the output of the NoiseNuller application. I
then extracted the audio from the video recording and inspected it in
the audio application Audacity using an expanded time scale. The
latency between what was recorded by the microphone and what was coming
out of the NoiseNuller application for each dit appeared to be about 43
milliseconds. I can send that audio file to anyone who might want to
try to determine the latency themself, or to determine if that amount of
latency would be a problem for them.
However, I don't think that 43 msec latency should be a problem even in
a contest. Our brains can distinguish 15 msec but we cannot physically
react anywhere near that fast. There are websites where you can test
your hand reaction time by pressing a mouse button in response to a
visual prompt, and if anyone can beat even 200 msec I'd be amazed. I
don't see how that kind of test is much different than pressing a paddle
lever in response to the end of a CW transmission.
Here are three online reaction tests:
https://humanbenchmark.com/tests/reactiontime
https://www.reaction-time-test.io/
https://www.mathsisfun.com/games/reaction-time.html
As always, comments (pro or con) and suggestions are welcome.
73,
Dave AB7E
More information about the Elecraft
mailing list