Commit graph

2 commits

Author SHA1 Message Date
The Dust Council
af51b2657d Make the simulator reproducible and widen the burst tests
A transmitter seeded itself from the builtin hash() of its label, and that
is salted per interpreter, so every run produced different synthetic
speech and keying. A test that failed could not be made to fail again --
the one thing needed to fix it. crc32 gives the same content every run.

The hang test then compounded it by listening for a 1 s burst in a 6 s
cycle over three sweeps: it is the release after the transmission that is
under test, but a missed burst failed it just the same, with "nothing
recorded". Now 2 s in 5 s over six sweeps, so only the ending can fail it.

The neighbouring test had the opposite fault: asserting only that nothing
was truncated, it passed whether or not the burst was ever heard. It now
requires the recording it is drawing a conclusion from.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 22:29:29 -07:00
The Dust Council
db3e0c79b9 Initial commit: bandsaunter, an RTL-SDR signal scanner
Sweeps any set of frequency ranges, records what it finds, and works out
what kind of signal it was.

- Frequency ranges entered by hand or picked from a 135-entry US band plan,
  including whole-band and all-CW sweeps that resolve the demodulator per
  segment.
- Detection calibrated against the peak-hold detector's own noise statistics,
  so the threshold means real margin over static rather than over the floor.
- A content gate: captures are kept only if they carry voice, decodable CW,
  or an identified digital keying scheme. Speech is recognised by a pitch
  track that drifts, which static cannot imitate.
- Identification of NFM/WFM/AM/SSB, CW with Morse decoded to text, P25, DMR,
  NXDN, D-STAR, POCSAG, FLEX, ACARS, AIS, APRS, n-FSK and n-PSK.
- Gapless streaming capture, with the signal path fast enough to keep up in
  real time, so recordings play back at the right speed.
- Optional one-file-per-frequency recording with spoken timestamps, and
  speech-to-text transcription.
- Menus and command line generated from one settings table, so neither can
  offer something the other cannot; settings persist in ~/.config.

367 tests, run against synthetic signals, a built-in receiver simulator, and
real hardware.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 20:50:20 -07:00