[Elecraft] Noise Nuller
David Gilbert
ab7echo at gmail.com
Thu Jul 16 16:58:28 EDT 2026
Hi, Andy.
For some reason I didn't get your post via the Elecraft reflector. A
friend of mine forwarded it to me, so sorry for any delay.
1. There is a little bit of delay between what I hear from my K3
receiver's speakers and what I hear from NoiseNuller, but it is only
enough to create a slight echo effect. It would not be enough to affect
the pace of making QSOs.
2. For the Spatial processing mode, yes ... you should train the
application on noise only first. It only takes a few seconds , but if
you use a period where there is both noise and signal the reduction is
less effective. The number of seconds needed for training is mostly a
function of the noise profile. I've been able to get good results with
as few as 2 or 3 seconds if the noise is somewhat uniform even if it is
quite loud, but that nasty solar panel noise I used in the demonstration
seemed to work best with 6 to 10 seconds. When I made the recording I
used in the demonstration I simply started the recording and then waited
for several seconds before transmitting the narrative, but if the noise
covers more than just the signal you can tune off a bit to train for the
noise and then tune back to the signal. If you listen carefully to the
recording you can hear where the noise drifted and I had to retune the
transmitted frequency of the narration, but even though the noise had
shifted the training still worked. That's sort of the inverse of tuning
off frequency to train the noise, but the result is similar.
3. If the noise changes in profile too much, yes, you'd probably have
to retrain the application. But the noise I used for the video is about
as variable as I can imagine anyone having to deal with. It was pretty
nasty stuff and once the application was trained on it the reduction
captured it.
4. I've never tried training on a pre-recorded noise file before
switching to Live feed. That's an interesting idea and I think it might
work. Browsers have an annoying habit of saving stuff in a cache and I
had lots of problems when developing applications. I'd make a change to
the app but the browser was using things from the previous version
unless I remembered to always clear the cache each time using CTRL-F5.
That might work to some advantage for your suggestion ... train the
noise on the pre-recorded file and then switch to Live. Let's both give
it a try and see if it works.
5. if I understand it correctly (and I might not), the DJ5EU approach
is more traditional. It takes the signals from the two antennas,
equalizes their amplitudes, and shifts the phase of one of the signals
until it is 180 degrees out of phase of the other signal so that their
sum cancels. That works but it requires equalizing the amplitudes and
it is less effective the closer the initial phases are ... which is why
he uses the rotator to get better difference in the phases. It has the
advantage that it is less dependent upon the nature of the noise than my
NoiseNuller application is. For example, the DJ5EU approach could more
easily handle noise that changed from storm static to arc welder noise,
whereas my application would probably need to be quickly retrained. The
NoiseNuller application works completely differently. It performs FFT
processing of both signals, which results in "bins" of data for each
slice of the frequency spectrum. Each bin has both phase and amplitude
information, so NoiseNuller spends a few seconds statistically analyzing
the profile of the noise and decides which bins from each signal are
mostly associated with the resulting noise profile. When the
application performs a reverse FFT to turn the digital data back into
audio it first diminishes the amplitude of each FFT bin according to how
strongly it was associated with the noise. Bins that aligned only with
the noise get ignored completely. Bins that are associated with the
noise only some of the time during the training period get a diminished
amplitude but not deleted because the might later be part of a desired
signal. Bins that weren't part of the noise get left alone. It's pretty
sophisticated, but I can't claim any credit for it. I developed the
entire application with the help of ChatGPT ... I didn't write a single
byte of the code myself.
In my opinion, NoiseNuller does have some advantage over the DG5EU
approach. For one, it takes very little change in phase between the two
antennas for NoiseNuller to work. For example, if the difference
between the same bins from each signal is only 5 or 10 degrees, it's
easy to completely block one versus the other. It's just a decision,
not a sum/difference.
Another advantage of the FFT approach is that NoiseNuller doesn't care
in the least how the phase difference between the two signals was
created. As long as there is a phase difference it can make a
decision. In my case, I've been able to get very good separation of
noise even at lower frequencies simply using the two yagis that are only
ten feet apart (an OB2-40 10 feet above an OB16-30) on my tower. Yagis
function by manipulating phase (which can be seen by using the Far Field
tab in EZNEC) and that phase impact is of course a function of the
spatial direction, both for azimuth and for elevation.
As with most things, each approach has its advantages. My answer to
most things has always been "it depends". ;)
Best regards,
Dave
Pretty impressive Dave, thanks for sharing.
I am lately experimenting a lot with HF noise reduction by RX Ant Phasing Controller DXE NCC-2.
I know , a different story , because I am only using one RX input port only (FTDX101MP, K3S-P3).
That is main (TX/RX) and RX auxiliary antennas as input channels for the NCC-2. The antenna choices/positions are key!
When testing RM-Noise (external server processing)https://ournetplace.com/rm-noise/
it appears to be too much latency for e.g. 30WPM CW.
It is generally clear Groundwave ( constant) and Skywave ( uncontrolled variable) phasing is different.
Questions:
1.) Is there a relevant latency issue in your procedure, no internet involved ?
2.) I think you need to train your system with QRM, right, as shown ?
3.) If QRM type/QRG changes, will you have to retrain?
4.) Can you produce and store a QRM database for quick reuse?
5.) What do you think about the Dj5EU Systemhttps://www.qrz.com/db/DJ5EU, he can even minimize QRN (9th sample) by directivity.
Tnx, cu, vy 73 Andy
HB9CVQ, DK2VQ, AK4IG
More information about the Elecraft
mailing list