MetroBeat планирует короткие синтезированные клики по AudioContext.currentTime. Таймер основного потока лишь заполняет ближайшую очередь и не служит аудиочасами.
Планируйте по аудиочасам
Запуск осцилляторов ставится в очередь по времени Web Audio, поэтому обычная нагрузка основного потока реже делает соседние клики неровными.
Планирование не равно приходу звука
Операционная система, аудиоинтерфейс, колонки и особенно Bluetooth могут добавить задержку уже после планирования клика браузером.
Считайте визуальный импульс ориентиром
Экран обновляется в основном потоке и может задерживаться из-за рендера, энергосбережения или фоновой вкладки. В тренировке ориентируйтесь на звук.
Уменьшите лишнюю задержку вывода
Для занятий на точность используйте проводные наушники или динамик устройства, закройте вкладки со звуком и оставьте браузер на переднем плане. Это не устраняет аппаратную задержку, но убирает частые переменные при сравнении вашей игры с кликом.