feat: Implemented UDP Outbound Adif message, freq to pstrotator

This commit is contained in:
2026-07-05 18:17:30 +02:00
parent a8b3269b1e
commit 4f32012930
16 changed files with 704 additions and 123 deletions
+5 -8
View File
@@ -325,15 +325,12 @@ func (d *Decoder) endMark(hops int) {
}
// adaptDot nudges the dot-length estimate toward an observation (EMA, clamped
// to ~5100 WPM). The first marks of a new signal adapt FAST so the WPM (and
// therefore the character/word gap thresholds) converge within the first
// character or two — otherwise a wrong seed mis-times early gaps and runs
// characters/words together.
// to ~560 WPM). The EMA is deliberately GENTLE (0.2) and NOT accelerated on the
// opening marks: a fast alpha let short noise blips (misclassified as dots) drag
// the dot-length down to the clamp within a few marks — the "60 WPM, all dits"
// garbage. The slow EMA is self-correcting because genuine marks pull it back up.
func (d *Decoder) adaptDot(obs float64) {
alpha := 0.2
if d.markCount < 6 {
alpha = 0.5 // fast convergence on the opening marks
}
const alpha = 0.2
d.markCount++
d.dotHops = d.dotHops*(1-alpha) + obs*alpha
if d.dotHops < 5 { // 5 hops ≈ 60 WPM ceiling — never 100