So far…
I was detecting and decoding about 18% of the signals present in my recording.
The other 82%, I missed entirely.
So I went full-speed into learning how to use these advanced techniques for pulling signal out of noise:
It took me a week to learn the concepts involved well enough to write working code.
At the end, instead of simply checking a candidate signal so see if it passes a check and throwing it away if it fails, I used belief propagation and low-density parity-checks to evolve the candidate signal into one that matches the energy profile that was transmitted AND passes the parity-check.
After some debugging, I ran my new code on the full 20-minute reference recording:
Before
2026-06-29 05:40:25,809 INFO: processing time 191 seconds.
2026-06-29 05:40:25,809 INFO: 3 minutes and 11 seconds.
2026-06-29 05:40:25,810 INFO: 18 matches, 95 missed.After
2026-07-04 13:39:09,762 INFO: processing time 2450 seconds.
2026-07-04 13:39:09,762 INFO: 40 minutes and 50 seconds.
2026-07-04 13:39:09,763 INFO: 16 matches, 97 missed.Analysis
The fact that it takes 12 times as long isn’t the killer.
It’s a lot easier to performance-tune a working function than it is to write an efficient one the first time, usually, so the timing, I figured, I could fix.
Finding FEWER signals, that’s bad.
Plan going forward
Up to this point, I have been guessing a lot and being close enough to right enough of the time that I kept moving forward, but I’m pretty sure I just spent a week solving the wrong problem, and I don’t want to do that again, so I’m going to spend some time measuring the lengths of all of my lists and printing the shapes of my arrays and double-checking my code in the places where I have made guesses in the past.
Late update
It didn’t take long for me to find places where my code wasn’t doing what I thought it was doing, at all.
Like, not even close.
“How in the world could I find and decode 18% of signals and still be this far off?”
So now I’m going line-by-line, looking for assumptions, adding logging, adding test cases, and verifying that I’m doing what I think I’m doing.