Make the aircraft breathe, and send a ring out from each of them

Two things that move on their own, on the window and in the animated
pictures alike, and both turned off with a flag.

An aircraft swells from bright to dim and back.  At the top of the swell it
burns: drawn in a set of peak colours and wearing a halo, which is what a
phosphor does when the beam sits in one place a little too long.  The halo
is the aeroplane's own shape spread outward a pixel at a time rather than a
circle drawn round it -- the first attempt did draw a circle and it looked
exactly like what it was, a ring of dots -- so the glow has the shape of the
thing casting it.  It goes only where the picture was still empty, over the
ground and the grid and the background and never over another aircraft,
since a halo is what light does to the dark around a thing.

And a ring leaves each aircraft and travels outward, growing and dimming as
it goes.  What a radar repeater does, and what the eye reads as this thing
is transmitting -- which is exactly what an aeroplane on this picture is
doing, twice a second, and is how it got on the picture at all.  One ring at
a time per aircraft: a new one leaves as the last reaches the end of its
reach, so the sky has one ring per aeroplane rather than a stack of them to
read through.

Five settings, in a group of their own because the others were already at
eight: whether to pulse, how long a swell takes, whether to echo, how long
between rings, and how far a ring gets.  Both times are seconds of watching
rather than of flying, so the rhythm looks the same whatever speed an
evening is being run through.

Two decisions worth naming.  Each aircraft is offset by its own address, so
a sky full of them swells and rings separately rather than beating as one,
which would read as a display flashing rather than as a lot of separate
things transmitting; the offset comes from the address, so an aeroplane
keeps its rhythm from one frame to the next and from one drawing of the same
log to the next.  And only an aircraft still being heard pulses: one that
has gone quiet is already fading, and a thing that is fading and beating at
once says two contradictory things about itself.

The window can blend and its swell is continuous.  The animation cannot, a
GIF being indexed colour, so there the swell is the steps a palette allows
-- which family of colours the aeroplane is drawn from, and how far its halo
reaches, which is six between them and reads as a swell at a couple of
seconds a cycle.  The peak has sixteen colours of its own, sixteen being
exactly what was left of the palette once 255 is set aside as the
transparent index.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PsWPTweCT6pwxKngvVxcg
This commit is contained in:
The Dust Council 2026-09-06 17:03:16 -07:00
parent 8ed01f991f
commit f01de4117f
10 changed files with 907 additions and 16 deletions

View file

@ -1097,6 +1097,49 @@ which leaves the coastline faintly visible through it, where a flat wash would
not. The animated pictures had **no card at all** before this, so `0` is what
they used to look like.
### Pulsing and echoes
Two things that move on their own, both on the window and in the animated
pictures, and both turned off with a flag.
**`--pulse`** swells each aircraft from bright to dim and back. At the top of
the swell it burns: drawn in a set of peak colours and wearing a halo grown
out of its own shape, which is what a phosphor does when the beam sits in one
place a little too long. A halo drawn as a *circle* round it would be a ring
of dots; this one is the aeroplane itself, spread outward a pixel at a time,
so the glow has the shape of the thing casting it. It goes only where the
picture was still empty — over the ground, the grid and the background, and
never over another aircraft.
**`--echo`** sends a ring travelling outward from each aircraft, growing and
dimming as it goes. What a radar repeater does, and what the eye reads as
*this thing is transmitting* — which is exactly what an aeroplane on this
picture is doing, twice a second, and is how it got on the picture at all.
One ring at a time per aircraft: a new one leaves as the last reaches the end
of its reach.
`--pulse-rate SECONDS` (2.2), `--echo-every SECONDS` (3) and `--echo-size
PIXELS` (46) set the rest. The two times are **seconds of watching, not of
flying**, so a pulse looks the same whatever speed an evening is being run
through.
**Each aircraft is offset by its own address**, so a sky full of them swells
and rings separately rather than beating as one — which would read as a
display flashing rather than as a lot of separate things transmitting. The
offset comes from the address, so an aeroplane keeps its own rhythm from one
frame to the next and from one drawing of the same log to the next.
**Only an aircraft still being heard pulses.** One that has gone quiet is
fading, and a thing that is fading and beating at once says two contradictory
things about itself.
The window can blend, so its swell is continuous. The animation cannot — a GIF
is indexed colour — so there the swell is the handful of steps a palette
allows: which family of colours the aeroplane is drawn from, and how far its
halo reaches. Between them that is six steps, which at a couple of seconds a
cycle reads as a swell rather than as a blink. The peak has sixteen colours of
its own, sixteen being what was left of the palette.
**Range rings** put faint discs at a quarter, a half and three quarters of the
radius, concentric on the receiver and each labelled with its distance. They
are translucent and they stack, so the ground inside the innermost is lifted
@ -1657,7 +1700,7 @@ entirely.
## Every ADS-B option
Thirty-four of them, in the six groups the menu shows. Each is a flag on the
Thirty-nine of them, in the seven groups the menu shows. Each is a flag on the
command line and a line in `bandsaunter` → 5, and both are generated from one
table in the source, so they cannot disagree. `man bandsaunter` has the long
form of every one.
@ -1726,6 +1769,16 @@ form of every one.
| Label the aircraft | `--labels` `--no-labels` | `yes` | write the callsign, height and speed beside each aircraft |
| Speed in | `--speed-unit` | `knots` | what to show speeds and distances in |
**effects**
| option | flag | default | what it does |
| --- | --- | --- | --- |
| Pulsing aircraft | `--pulse` `--no-pulse` | `yes` | swell each aircraft from bright to dim and back, over and over |
| Pulse takes | `--pulse-rate` | `2.2 s` | how long one swell from dim to bright and back again takes |
| Echo circles | `--echo` `--no-echo` | `yes` | rings travelling outward from each aircraft, growing and dimming |
| Echo every | `--echo-every` | `3 s` | how long between one ring leaving an aircraft and the next |
| Echo reaches | `--echo-size` | `46 px` | how far a ring gets from its aircraft before it has faded away |
**Where they live.** Saved with `s` in the menu to
`~/.config/bandsaunter/aircraft.yaml`, which is plain YAML you can edit or
copy between machines. API keys are deliberately **not** kept there — see