MetroBeat schedules short synthesized clicks against AudioContext.currentTime. A small main-thread timer only keeps the near-future queue filled; it is not the audio clock.

Schedule on the audio clock

Queued oscillator starts use Web Audio time, so ordinary main-thread work is less likely to make consecutive clicks uneven.

Scheduling is not acoustic arrival

The operating system, audio interface, speakers, and especially Bluetooth can add output delay after the browser schedules a click.

Treat the visual pulse as guidance

Screen updates run on the main thread and may be delayed by rendering, power saving, or a background tab. Listen to the click when practising timing.

Reduce avoidable output delay

For timing practice, prefer wired headphones or the device speaker, close audio-heavy tabs, and keep the browser in the foreground. These steps do not make hardware latency disappear, but they remove common variables when you compare your notes with the click.