Tune detection

ToneWatch first marks a spectrum frame as tonal when its purity is at least purity_min and its level is at least level_min_dbfs. The analyzer defaults are purity_min: 0.6 and level_min_dbfs: -45. A tonal frame's frequency is then grouped into a segment and matched against each tone set.

Tone-set settings

Setting Default Effect
tol_pct 1.5 Frequency tolerance around each tone, as a percent.
min_s required Minimum duration for that tone to match.
max_s unlimited Maximum duration for that tone; longer audio is reported as excess.
max_gap_s 0.5 Largest gap allowed between adjacent tones in a sequence.
cooldown_s 60 Time after a match before the same tone set can alert again.

freq_hz must be between 250 and 3000 Hz. A tone set can contain one to eight ordered tones. min_s must be positive, and max_s, when supplied, must be at least min_s.

Symptoms and adjustments

If a page is missed, first check that the source is receiving audio and that the tone is inside the 250–3000 Hz analysis band. Then consider lowering purity_min for noisy or distorted audio, lowering level_min_dbfs for a quiet feed, increasing tol_pct for frequency drift, or lowering min_s when the beginning of a tone is consistently clipped. Increase max_gap_s when the gap between tones is longer than the configured value.

If you get false positives, raise purity_min or level_min_dbfs, reduce tol_pct, increase min_s, or reduce max_gap_s. Use max_s to reject a tone that stays present too long. Keep cooldown_s long enough that repeated matches from one page do not alert again immediately.

Make one change at a time and validate it with a saved recording using the analyzer workflow.

Squelch

Software squelch marks a source as active when its level rises above the open threshold and keeps it active through the configured attack and hang times. The level mode uses fixed dBFS thresholds; noise_floor tracks the quietest roughly ten percent of levels in a rolling window and applies floor_margin_db. Hysteresis prevents chatter between the open and close thresholds.

Squelch controls activity display and future live audio gating only. It does not affect detection: the matcher, discovery, ring buffer, and recorder always receive the raw audio, including while squelch is closed.