fix: CW decoder loses the first characters after a speed change, and splits callsigns
Both faults reported on the air, both reproduced in synthetic signals first — the existing tests all passed because each starts a fresh decoder and sends textbook spacing, which is neither of the cases that hurt. Speed change. A 32 wpm station followed by a 14 wpm reply decoded as "TTT TTTT TTTTT TT…" for most of the over. Not the element classifier: the CHARACTER-gap threshold is 2.2 dits, so at the stale fast estimate it stood at 81 ms while the newcomer's element gaps were 86 ms. Every single element was flushed as its own character, and a lone element with no contrast reads as a dah. A silence long enough to end an over now drops the estimate back to the seed, which is exactly the state a freshly started decoder is in — and that case was always fine. The threshold scales with the current estimate (12 dits, floor 600 ms) because a fixed one cannot serve both 10 and 40 wpm. Callsign split. The word boundary sits at 4.6 dits, the geometric mean of a 3-dit letter gap and a 7-dit word gap. It assumes textbook spacing; a fist leaving 5 dits between letters had every letter turned into a word, so a callsign arrived as "O Y 1 C T". The boundary now also follows the letter gaps this operator actually sends, whichever is larger. A wide sender's words may run together — a far smaller price than a callsign in pieces.
This commit is contained in:
+4
-2
@@ -6,13 +6,15 @@
|
||||
"FlexRadio: in split, OpsLog stays on the receive slice instead of following the transmitter.",
|
||||
"QSO recording works on CW again (no sidetone).",
|
||||
"Playing a recording on the air now says why when it cannot.",
|
||||
"The play-on-air button is hidden on CW."
|
||||
"The play-on-air button is hidden on CW.",
|
||||
"CW decoder: a station replying at a different speed no longer decodes as a run of dashes, and callsigns are no longer split into single letters by a wide fist."
|
||||
],
|
||||
"fr": [
|
||||
"FlexRadio : en split, OpsLog reste sur la slice de réception au lieu de suivre l'émission.",
|
||||
"L'enregistrement des QSO fonctionne à nouveau en CW (sans le signal d'écoute).",
|
||||
"L'émission d'un enregistrement indique désormais pourquoi elle échoue.",
|
||||
"Le bouton d'émission de l'enregistrement est masqué en CW."
|
||||
"Le bouton d'émission de l'enregistrement est masqué en CW.",
|
||||
"Décodeur CW : une station qui répond à une autre vitesse ne se décode plus en série de traits, et les indicatifs ne sont plus coupés lettre par lettre par un espacement large."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user