When a timing game measures milliseconds, your browser, audio device and input path matter. The click you hear is not always produced at the exact moment JavaScript asked for it, and the tap event is not always delivered at the exact moment your finger touched the screen.
The two moments a rhythm app cares about
A browser rhythm app has to connect at least two timelines: when audio is scheduled and when an input event is observed. The difficult part is that the user hears sound after it has travelled through the browser, operating system, audio hardware and speakers or headphones.
TempoLock therefore uses Web Audio timing information to map scheduled audio into the browser’s performance clock. During a run, the timing reference is established and kept stable so the target, sound and scoring are not constantly chasing small clock changes.
Why Bluetooth is different
Bluetooth audio usually adds more delay than phone speakers or wired output because the audio is encoded, buffered, transmitted and decoded before you hear it. Some of that delay may be reported by the browser. Some may not be represented accurately enough for millisecond scoring.
That is why TempoLock keeps separate Normal and Bluetooth output presets. The automatic timing system remains active in both. The manual preset is an extra correction for the output you are using.
What Audio Output Calibration changes
Audio Output Calibration moves scheduled audio only. A positive correction asks TempoLock to schedule the sound earlier; a negative correction moves it later. It does not move the target, change the scoring window or rewrite the visual clock.
The calibration runs inside the same Tempo Aim audio environment used during gameplay. That matters because calibrating against a separate AudioContext can give a result that looks right but does not match the game.
Make the click and visual landing feel simultaneous
Use the smallest correction that removes a consistent mismatch. Switch between the default and your correction rather than dragging the slider continuously. If both feel equally plausible, keep the smaller value.
What Tap Input Calibration changes
Tap Input Calibration is separate. It changes the timestamp used for scoring your taps without moving the audio or animation. This is useful only when the input path itself shows a stable offset after the audio output feels correctly aligned.
Because it is a scoring adjustment, a large value can make scores look better while hiding a real timing problem. Use it to correct your device, never to make scoring easier.
Why tap sounds cannot be perfectly pre-corrected
A scheduled metronome click can be placed in the future and shifted earlier to compensate for known output delay. A sound triggered after you tap cannot be played before the tap happened. That is why reactive hit sounds and scheduled beat sounds have different latency limits.
If you are judging timing, trust the scheduled reference click and the score rather than expecting every reactive confirmation sound to feel instantaneous over a high-latency Bluetooth route.
A simple troubleshooting order
- Test with the phone or computer’s built-in speaker first.
- Use the Normal preset at 0 ms extra correction.
- Run several simple timing attempts and look for a consistent direction.
- If the sound and visual clearly disagree, use Audio Output Calibration.
- If Bluetooth is the only route that feels wrong, keep that correction in the Bluetooth preset.
- Only use Tap Input Calibration when a stable scoring offset remains after the output feels aligned.
If the problem changes dramatically from run to run, calibration is unlikely to be the main answer. Browser load, device state or human timing variability may be dominating instead.