MetroBeat планирует короткие синтезированные клики по AudioContext.currentTime. Таймер основного потока лишь заполняет ближайшую очередь и не служит аудиочасами.

Планируйте по аудиочасам

Запуск осцилляторов ставится в очередь по времени Web Audio, поэтому обычная нагрузка основного потока реже делает соседние клики неровными.

Планирование не равно приходу звука

Операционная система, аудиоинтерфейс, колонки и особенно Bluetooth могут добавить задержку уже после планирования клика браузером.

Считайте визуальный импульс ориентиром

Экран обновляется в основном потоке и может задерживаться из-за рендера, энергосбережения или фоновой вкладки. В тренировке ориентируйтесь на звук.

Уменьшите лишнюю задержку вывода

Для занятий на точность используйте проводные наушники или динамик устройства, закройте вкладки со звуком и оставьте браузер на переднем плане. Это не устраняет аппаратную задержку, но убирает частые переменные при сравнении вашей игры с кликом.