Skip to content

Crossing tones: a reflection burst must be one tone, not a storm — per-source cooldown (#397 follow-up) #503

Description

@ryan-johnson2

From Ryan's physical field test, 2026-08-30 (part of #485).

We are getting a lot of beeps on crossing … This must be a symptom of beep on every crossing, we should put a cooldown on beeping though I think, that way if we get a crossing tone, we should probably not take another tone with some number of ms.

What

#397's tone-on-every-crossing is working as designed — and the design needs one amendment: when one physical pass produces a burst of crossings (reflections milliseconds apart), the RD must hear one tone, not a serialised pip storm. RaceAudioPlayer today only staggers pips ≥80 ms apart and drops beyond a 600 ms lookahead (raceAudio.ts:76, :84) — that is queue hygiene, not a debounce; a 6-crossing burst still plays ~6 pips.

How

Suppress same-competitor crossings within a cooldown of the last sounded tone for that competitor. Best site: the sweep in useCrossingTones (lapCallouts.svelte.ts:235-239) — it already holds crossing.at, crossing.competitor and crossing.disposition in hand (disposition is on the wire: LiveCrossing.ts). #397's intent (distinct tones per case, rejected crossings audible) stands; only bursts collapse. Cooldown on the order of the enter/exit settle — start ~1 s, well under any real lap.

Note: with the min-lap floor fixed (sibling field-finding issue) the bursts become RejectedTooShort rather than counted laps, but they still each pip today — both fixes are needed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/clientsFrontends: RD console, racer/spectator PWAtype/bugDefect to fix

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions