Add a manual page, and explain every setting in plain words

Every setting now carries a paragraph saying what it is in everyday terms
and why someone who does not already speak radio would turn it up, down,
on or off: what the squelch knob actually is, why automatic gain is a bad
idea for scanning, why a bias tee can damage equipment, why setting the
transcription language matters on noisy audio. The menus and
`config --describe` show it alongside the existing technical detail.

packaging/make-man.py generates bandsaunter(1) from that same table, so the
manual cannot document a setting the program lacks or miss one it has --
tests check both, that the page renders through groff without a single
warning, and that the guidance survives into the rendered output. Around
it are hand-written sections on the commands, entering frequencies, the
band plan, lock-outs, the keys during a scan, HF, single sideband, files,
environment variables and worked examples.

The .deb regenerates and installs it rather than shipping a copy, so an
installed manual always matches the installed program.

The README picks up what the last few commits added: the plain display as
a saved setting, what the settings tests now guarantee, and where to read
the manual before installing.

Version is the day's build: 2026-08-22_01.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
The Dust Council 2026-08-22 00:01:00 -07:00
parent 44c98b11e3
commit ba6c925351
8 changed files with 1711 additions and 4 deletions

View file

@ -296,6 +296,16 @@ bandsaunter scan -p local
bandsaunter profiles
```
Everything that can be given as a flag can be saved, and everything that can be
saved can be given as a flag — both front ends are generated from one table, so
they cannot drift apart. A profile written by an older version still loads: keys
it does not have take their defaults, and keys that no longer exist are reported
and ignored.
Every setting is explained in plain language — what it is, and when you would
change it — in three places: `bandsaunter config --describe <name>`, `?N` in the
settings menu, and `man bandsaunter`.
## Entering frequencies
**By hand** — repeat `-r` as many times as you like; there is no limit on the
@ -826,6 +836,11 @@ since that is the command to run when something is wrong, and
| `l` | lock out this frequency — for this run and every later one |
| `+` / `-` | adjust the squelch threshold |
There is no live display over ssh, in a log file, or piped to another program:
`--plain` prints one line per recording instead, and is chosen automatically
whenever output is not a terminal. It is a saved setting like any other, so a
headless machine can be told once and never asked again.
### Lock-outs
A pager transmitter down the road, or a birdie the receiver makes itself, is
@ -858,6 +873,23 @@ there explains that setting instead.
From the command line, `bandsaunter config --describe <setting>` does the same,
and `bandsaunter scan --help` lists every flag grouped the same way as the menus.
### The manual page
`man bandsaunter` documents every command, option and setting, each with a
plain-language note on what it is and why you would turn it up, down, on or
off — written for someone who does not already speak radio.
It is generated from the same settings table the menus and the flags come from,
so it cannot describe a setting the program does not have, or miss one it does:
```bash
./packaging/make-man.py # regenerate packaging/bandsaunter.1
man -l packaging/bandsaunter.1 # read it without installing
```
The `.deb` installs it; installing from source does not, so read it from the
source tree with `man -l`.
## HF
Frequencies below 24 MHz need direct sampling, which most RTL-SDR dongles
@ -911,7 +943,19 @@ audio, IQ and metadata are correct.
The simulator's voice transmitters carry synthesised speech -- glottal pulses
through moving formants, compressed the way a real transmitter compresses,
then gated into syllables and phrases -- because sine tones would not exercise
the speech detector at all.
the speech detector at all. SSB transmitters are filtered to their audio
passband first, since that filter is what makes a signal single-sideband, and
without it the simulated signal was several times wider than anything on the
air.
Its transmitters seed themselves deterministically, so a test that fails can be
made to fail again -- the one thing needed to fix it.
Settings have their own tests: every one is set to something other than its
default, saved, loaded back and compared, so nothing can quietly fail to
persist. Every setting must also be reachable from both the command line and
the menus, be read somewhere in the program, display a value that can be typed
straight back in, and appear in the manual page.
## Legal note