Что делает метроном
Метроном — устройство для отсчёта ровного темпа. Музыканты используют его при разучивании новых произведений: помогает играть в чёткое время, не «съезжать» на ускорение в трудных местах, не «затягивать» на лёгких. Также — для игры под программные drum-машины и синтезаторы.
Этот метроном даёт точный звуковой тик через Web Audio API, поддерживает 6 размеров такта с акцентом на первой доле, диапазон BPM от 30 до 300. Работает в браузере, без задержек, без сторонних библиотек.
Как выбрать темп
Главный совет: начинайте медленнее чем хотите играть. На 60-80 BPM играйте до полной чистоты, потом ускоряйте на 5-10 BPM. Прыжок с 60 на 120 даст ошибки и frustration. Постепенный рост даёт стабильный результат.
- Изучение новой пьесы: 60-80 BPM, концентрация на нотах и аппликатуре.
- Работа над техникой: 80-100 BPM, чистота движений важнее скорости.
- Подготовка к концерту: темп оригинала, отработка нюансов.
- Разогрев: 100-120 BPM, простые упражнения.
- Барабанщики: 60-180 BPM в зависимости от стиля. Для рудиментов — медленно (60-80), для double bass — быстро (180+).
- Гитаристы: риф или соло сначала на 50% темпа, потом до 100%.
Если вы можете сыграть пассаж 5 раз подряд без ошибок на 80 BPM — поднимайте до 84. Если из 5 раз 1 с ошибкой — оставайтесь на 80 ещё 5 минут. Это «правило 5».— Сравнение скорости игры с метрономом, среднее по всем стилям
Web Audio API внутри
Стандартный JavaScript-таймер (setInterval, setTimeout) ненадёжен для метронома: drift до 50ms на загруженной системе, что слышно как «дрожание» темпа. Этот метроном использует look-ahead scheduling: каждые 25ms скрипт планирует все клики, попадающие в окно следующих 100ms. AudioContext имеет sample-accurate timing — клик произойдёт ровно в указанное время.
Алгоритм:
- Старт:
nextBeat = audioCtx.currentTime + 0.05(через 50ms). - Каждые 25ms (через setInterval) проверяем:
nextBeat < currentTime + 0.1? - Если да — планируем oscillator на
nextBeat, увеличиваемnextBeatна60/BPM. - Так в очереди всегда минимум один-два будущих клика, дрифт = 0.
Это стандартная техника из статьи Криса Уилсона «A Tale of Two Clocks» (Web Audio API best practices).
- A Tale of Two Clocks — Web Audio Scheduling. Chris Wilson. web.dev/articles/audio-scheduling. 2013.
- Web Audio API specification. W3C. webaudio.github.io/web-audio-api. 2024.
- Music tempo glossary. Various. wikipedia.org/wiki/Tempo. 2024.
