ГлавнаяИнструментыТюнер по микрофону и метроном

Тюнер по микрофону и метроном

Настраивает гитару, бас и укулеле через микрофон: показывает ноту, отклонение в центах и ближайшую струну выбранного строя. Рядом метроном с точным планировщиком, отбивкой темпа и пересчётом в миллисекунды. Всё считается в браузере, звук никуда не уходит.

Браузер спросит разрешение сам. Звук считается на этой странице и никуда не отправляется.
Режим
Возьмите одну ноту и держите её
−50 центов0+50 центов
Отклонение
Частота
Нота строя
Уровень
Тюнер показывает ближайшую из двенадцати нот равномерной темперации и отклонение от неё в центах.
Эталон A4, Гц

Как устроены тюнер и метроном

Две половины одного инструмента, и обе работают прямо во вкладке. Тюнер слушает микрофон и называет ноту, отклонение в центах и частоту в герцах: 82,41 Гц — это E2, нижняя струна гитары; 440 Гц — ля первой октавы. Высоту тона считает автокорреляционный метод YIN.

Простое БПФ здесь промахивается: у щипковой струны основной тон часто слабее второй гармоники, то есть удвоенной частоты, спектральный пик уезжает на октаву вверх, и тюнер начинает уверенно врать. Разностная функция с кумулятивной нормировкой берёт период целиком, поэтому нижняя ми остаётся нижней ми. Доступ к микрофону браузер спросит сам, и звук никуда не уходит: буфер, разностная функция, центы и ноты считаются на этой странице.

Эталон A4 переключается между 415, 432, 440, 442 и 444 Гц, строёв девять — от стандартного до DADGAD, баса и укулеле. Метроном щёлкает по часам звукового движка. Планировщик просыпается раз в 25 миллисекунд, заглядывает на 100 миллисекунд вперёд и ставит каждый щелчок на точное время внутри аудиоконтекста, поэтому темп держится ровно там, где обычный setInterval уже накопил бы дрейф в фоновой вкладке.

Темп 30–300 ударов в минуту, шесть размеров, четыре дробления доли, отбивание темпа пальцем и итальянское название рядом с числом. Третья вкладка переводит темп в миллисекунды по формуле «четверть = 60000 / BPM»: при 120 ударах четверть длится 500 мс, восьмая с точкой — 375 мс, восьмая триоль — 166,67 мс. Это те самые числа, которые ставят в задержку и в предзадержку реверберации.

Как считается высота тона

Спектр здесь мешает больше, чем помогает. Щипок струны возбуждает основной тон и ряд кратных ему гармоник, и вторая гармоника — та, что вдвое выше основного тона, — у гитары нередко оказывается громче него самого: пик в спектре тогда стоит на удвоенной частоте, и тюнер на простом БПФ показывает ноту октавой выше. Поэтому период ищется во временной области.

d(τ) = Σj=0…W−1 ( x[j] − x[j+τ] )²
d′(τ) = d(τ) · τ / Σk=1…τ d(k),  d′(0) = 1
первый τ, где d′(τ) < 0,12, затем спуск в локальный минимум
вершина параболы по d′(τ−1), d′(τ), d′(τ+1) → дробный период
f = sampleRate / τ

Разностная функция d(τ) показывает, насколько сигнал похож сам на себя при сдвиге на τ отсчётов: у периодического звука на истинном периоде она проваливается почти в ноль. Кумулятивная средняя нормировка d′(τ) делает функцию безразмерной и позволяет обойтись одним абсолютным порогом вместо подбора под каждый инструмент. Ключевая деталь — берётся ПЕРВЫЙ провал ниже порога. Самый глубокий провал часто приходится на удвоенный период, и погоня за ним как раз и даёт октавную ошибку. Дополнительно проверяются кратные лаги 2τ, 3τ и 4τ: если провал там заметно глубже, истинный период лежит именно там, и тюнер спускается на октаву вниз. Параболическая интерполяция вокруг минимума нужна потому, что период почти никогда не равен целому числу отсчётов: при 44 100 Гц у ля первой октавы период равен 100,23 отсчёта, и округление до 100 сдвинуло бы показание на четыре цента.

Готовое значение частоты сглаживается медианой по последним замерам. Медиана выбрана вместо среднего потому, что один сбойный кадр — щелчок медиатора, скрип пальца по обмотке — сдвигает среднее и не трогает медиану.

Ноты, центы и эталон

f = A4 × 2(n − 69) / 12   n — MIDI-номер, 69 закреплено за ля первой октавы
отклонение, центов = 1200 × log₂(f / f_ноты)

Обе формулы стоят на двух договорённостях: октава удваивает частоту, а равномерная темперация делит её на двенадцать одинаковых по отношению шагов, поэтому полутон — это множитель 2^(1/12) ≈ 1,059463. Эталон 440 Гц для ля первой октавы закреплён стандартом ISO 16. Оркестры регулярно берут выше: 442 Гц — это +7,9 цента к 440, 444 Гц — +15,7. Историческое исполнительство идёт вниз, к 415 Гц, что даёт −101,3 цента, почти ровно полутон. Эталон 432 Гц отстоит от 440 на −31,8 цента; сдвиг эталона переносит всю музыку вниз и больше ничего не меняет — ни интервалы, ни темперацию, ни соотношения обертонов внутри звука. Подробный разбор с таблицей всех 108 нот лежит на странице частоты нот и гитарные строи.

Строи, которые знает тюнер

СтройСтруны от нижней к верхнейЧастоты при A4 = 440 Гц
СтандартныйE2 A2 D3 G3 B3 E482,41 · 110,00 · 146,83 · 196,00 · 246,94 · 329,63
Drop DD2 A2 D3 G3 B3 E473,42 · 110,00 · 146,83 · 196,00 · 246,94 · 329,63
Open GD2 G2 D3 G3 B3 D473,42 · 98,00 · 146,83 · 196,00 · 246,94 · 293,66
Open DD2 A2 D3 F♯3 A3 D473,42 · 110,00 · 146,83 · 185,00 · 220,00 · 293,66
DADGADD2 A2 D3 G3 A3 D473,42 · 110,00 · 146,83 · 196,00 · 220,00 · 293,66
Полутон вниз (E♭)E♭2 A♭2 D♭3 G♭3 B♭3 E♭477,78 · 103,83 · 138,59 · 185,00 · 233,08 · 311,13
Тон вниз (D)D2 G2 C3 F3 A3 D473,42 · 98,00 · 130,81 · 174,61 · 220,00 · 293,66
Бас-гитараE1 A1 D2 G241,20 · 55,00 · 73,42 · 98,00
УкулелеG4 C4 E4 A4392,00 · 261,63 · 329,63 · 440,00

В режиме строя тюнер сам выбирает струну, к которой звучащий тон ближе по центам, и считает отклонение уже от неё. Ровно на середине между двумя соседними струнами выигрывает нижняя: у стандартного строя середина между E2 и A2 приходится на 95,21 Гц, и это +250 центов к E2 при −250 к A2.

Укулеле в списке стоит особняком: строй у него возвратный, четвёртая струна G4 звучит на 392,00 Гц, то есть выше третьей (261,63 Гц) и второй (329,63 Гц). Бас-гитара повторяет четыре нижние струны гитары октавой ниже: E1 = 41,20 Гц против E2 = 82,41 Гц, ровно вдвое. Нижняя ми баса лежит у самой границы рабочего диапазона детектора, и на встроенный микрофон ноутбука она часто просто не доходит: динамик и мембрана такие частоты передают слабо. Внешний микрофон или звуковая карта решают вопрос.

Порядок настройки гитары

Настраивают снизу вверх, от шестой струны к первой, и подходят к ноте снизу. Механика простая: колок, вал и сама струна отдают натяжение с задержкой, поэтому если перетянуть выше цели и потом отпустить, часть намотки останется подвёрнутой и уедет вниз уже во время игры. Подход снизу оставляет узел натянутым в одну сторону, и строй держится дольше. Если перетянули, опустите заметно ниже цели, примерно на четверть тона, и подтягивайте заново.

Порядок от басов к верхам важен потому, что каждая струна тянет гриф: настроили шестую — общее натяжение выросло, и первая уехала вниз. После первого прохода делают второй, а на гитаре с плавающим тремоло — третий и четвёртый, пока пружины не придут в равновесие. Новые струны просят растяжки: подтяните каждую пальцами вверх от грифа на пару сантиметров, настройте заново, и так три-четыре круга, пока нота перестанет уползать.

Отдельная вещь, которую тюнер показывает, а гитара не всегда выдерживает, — строй по ладам. Если открытая струна села в ноль, а та же нота на двенадцатом ладу уходит вверх на 10–15 центов, дело в мензуре: седло на бридже стоит слишком близко к грифу. Это регулируется винтом седла и к настройке колками отношения не имеет.

Темп: итальянские названия и числа

НазваниеУдаров в минутуХарактер
Graveдо 40очень медленно, тяжело
Largo40 – 59широко, протяжно
Larghetto60 – 65чуть подвижнее Largo
Adagio66 – 75медленно, спокойно
Andante76 – 107шагом
Moderato108 – 119умеренно
Allegro120 – 167скоро, оживлённо
Presto168 – 199быстро
Prestissimo200 и вышепредельно быстро

Границы в этой таблице условны и у разных изданий расходятся на несколько единиц: сами слова появились в партитурах задолго до чисел и обозначали характер движения. Числа к ним привязали после того, как Иоганн Мельцель запатентовал метроном в 1815 году и Бетховен начал ставить метрономические указания в нотах. Между основными степенями живут промежуточные — Andantino, Allegretto, Vivace, — и их место в шкале авторы понимают по-разному, поэтому в таблице их нет.

Темп в миллисекундах при ходовых значениях

BPMЧетвертьВосьмаяШестнадцатаяВосьмая с точкойВосьмая триоль
601000,00500,00250,00750,00333,33
80750,00375,00187,50562,50250,00
90666,67333,33166,67500,00222,22
100600,00300,00150,00450,00200,00
110545,45272,73136,36409,09181,82
120500,00250,00125,00375,00166,67
128468,75234,38117,19351,56156,25
140428,57214,29107,14321,43142,86
160375,00187,5093,75281,25125,00
174344,83172,4186,21258,62114,94

Восьмая с точкой — рабочая величина для задержки: при 120 ударах это 375 мс, и повторы ложатся мимо сетки восьмых, из-за чего рисунок кажется плотнее, чем он есть. Триольные значения дают качающееся ощущение и хорошо живут рядом с прямым битом. Предзадержку реверберации обычно берут короткой, порядка тридцать второй или шестьдесят четвёртой: при 120 ударах это 62,5 и 31,25 мс. Скорость тремоло и автопанорамы задают в герцах, поэтому миллисекунды переворачивают делением 1000 на длительность: 500 мс превращаются в 2 Гц.

Что рядом

Полную таблицу частот от C0 до B8 с MIDI-номерами, длиной волны и генератором тона держит страница частоты нот и гитарные строи. Если тюнер не слышит инструмент, начните с проверки входа: тест микрофона показывает уровень сигнала, частоту дискретизации и умеет записать десять секунд для контроля. Выход проверяют тест звука и динамиков и тест наушников — там же лежит проверка каналов и верхней границы слуха. Все расчёты идут в браузере: ни звук, ни введённые числа со страницы никуда не отправляются.

Как пользоваться

  1. Браузер спросит разрешение сам. Звук обрабатывается на месте и никуда не отправляется.
  2. Крупно показывается нота, стрелка — отклонение от −50 до +50 центов, зелёная зона ±5.
  3. В режиме строя тюнер сам находит ближайшую струну и считает отклонение от неё.
  4. Темп, размер и дробление доли меняются на ходу, сетка щелчков пересобирается сразу.

Частые вопросы

Как тюнер определяет ноту

Автокорреляционным методом YIN. Из микрофона берётся буфер на 4096 отсчётов, считается его громкость, и если среднеквадратичный уровень ниже порога, тюнер молчит: тишина не должна превращаться в случайную ноту. Дальше по буферу строится разностная функция d(τ) = Σ (x[j] − x[j+τ])²: она показывает, насколько сигнал похож сам на себя со сдвигом на τ отсчётов. У периодического звука на истинном периоде она проваливается почти в ноль. Затем идёт кумулятивная средняя нормировка d′(τ) = d(τ) · τ / Σ d(1…τ), которая приводит функцию к безразмерному виду и позволяет задать один абсолютный порог. Берётся ПЕРВЫЙ провал ниже 0,12, а внутри него — локальный минимум; вокруг минимума ставится парабола по трём точкам, и её вершина даёт дробное значение периода. Частота получается как sampleRate / τ. Поиск ограничен диапазоном 38–1350 Гц: снизу это E1 бас-гитары (41,20 Гц), сверху с запасом закрывает верхний регистр скрипки и укулеле.

Почему тюнер иногда прыгает на октаву и что с этим делать

Потому что струна звучит не одной частотой. Щипок возбуждает основной тон и ряд гармоник, кратных ему по частоте, и у гитары вторая гармоника — та, что вдвое выше основного тона, — нередко звучит громче него самого, особенно на нижних струнах, у старых струн и при игре ближе к подставке. Спектральный пик тогда приходится на удвоенную частоту, и тюнер на простом БПФ показывает ноту октавой выше. YIN защищён от этого дважды: он берёт первый провал разностной функции — самый глубокий часто приходится как раз на удвоенный период — и дополнительно проверяет кратные лаги 2τ, 3τ, 4τ — если провал там заметно глубже, истинный период лежит именно там. На практике октавные прыжки остаются в двух случаях: когда рядом гудят соседние струны и когда сигнал слишком тихий. Лечится это просто: глушите ладонью соседние струны, играйте у 12-го лада ровным щипком, поднесите инструмент ближе к микрофону и подождите полсекунды после атаки, пока щелчок медиатора не уйдёт.

Куда уходит звук с микрофона

Никуда. Страница берёт поток через getUserMedia, заворачивает его в AnalyserNode и вычитывает оттуда буфер отсчётов. Весь дальнейший счёт — разностная функция, нормировка, поиск минимума, перевод в центы — идёт в этой же вкладке. Ни одной сетевой отправки в скрипте нет, запись не ведётся, файлы не создаются. Разрешение на микрофон запрашивает сам браузер, и оно действует до конца сеанса на этой вкладке; отозвать его можно значком слева от адреса страницы. Как только вы нажимаете «Выключить микрофон» или закрываете вкладку, дорожка потока останавливается и индикатор записи у браузера гаснет. Для настройки тюнеру полезно, чтобы браузер отдал сырой сигнал, поэтому шумоподавление, эхоподавление и автоматическая регулировка усиления в запросе выключены: они портят форму волны, по которой считается период.

Почему метроном не считает время обычным таймером

Таймеры браузера для этого слишком неточны. setInterval и setTimeout обещают только минимальную задержку перед вызовом; точный момент срабатывания они не гарантируют, и сдвигает его любая работа на странице, а в фоновой вкладке браузер душит их до одного вызова в секунду и реже. Ошибка в 5 мс на каждом щелчке при 120 ударах — это уже секунда расхождения за три с половиной минуты. Здесь работает схема с опережающим планированием, обычная для Web Audio. Раз в 25 мс просыпается лёгкий цикл, смотрит на часы аудиоконтекста и ставит все щелчки, попадающие в ближайшие 100 мс, командой oscillator.start(точное_время). Дальше их отрабатывает звуковой движок по своим часам, у которых шаг равен одному отсчёту, то есть примерно 0,02 мс при 48 кГц. Таймер при такой схеме отвечает только за то, чтобы вовремя подать заявку, и опоздание на десяток миллисекунд ничего не меняет.

Что такое центы и какое отклонение считать попаданием

Цент — сотая доля полутона, в октаве их 1200. Отклонение считается по формуле 1200 × log₂(f / f_ноты): частота 445 Гц против ля первой октавы даёт +19,6 цента, 432 Гц против той же ноты — −31,8. Логарифм здесь потому, что слух воспринимает отношения частот, и одинаковый сдвиг в центах звучит одинаково в басу и в верхнем регистре. Больше 50 центов отклонение не бывает: на половине полутона ближе оказывается соседняя нота. Зелёной зоной на шкале отмечены ±5 центов — так показывают попадание бытовые тюнеры, и на слух такая разница в одиночной ноте почти неразличима. Порог различения для двух одновременно звучащих нот куда жёстче: биения от расхождения в 2–3 цента слышны отчётливо, поэтому октавы и унисоны на 12-струнке приходится доводить точнее, чем показывает зелёная зона.

В каком порядке настраивать гитару

Снизу вверх, от шестой струны к первой, и всегда подходя к ноте снизу. Причина механическая. Колок, гриф и сама струна отдают натяжение с задержкой: если подтянуть выше нужного и потом отпустить, часть намотки на валу остаётся подвёрнутой, и струна медленно сползёт вниз уже во время игры. Подход снизу оставляет узел натянутым в одну сторону, и строй держится дольше. Перетянули — опустите заметно ниже цели, на четверть тона, и подтягивайте заново. Порядок от басов к верхам важен потому, что каждая струна тянет гриф: настроили шестую — натяжение выросло, и первая уехала вниз. Поэтому после первого прохода делают второй, а на гитаре с тремоло — третий и четвёртый, пока пружины не придут в равновесие. Новые струны просят растяжки: подтяните каждую пальцами вверх от грифа на пару сантиметров и настройте снова, и так три-четыре круга.

Как перевести темп в миллисекунды и зачем это нужно

Четверть = 60000 / BPM. При 120 ударах это 500 мс, при 90 — 666,67 мс, при 174 — 344,83 мс. Дальше всё делится и умножается: восьмая вдвое короче четверти, шестнадцатая вчетверо, нота с точкой длиннее своей на половину (×1,5), триоль укладывает три ноты в место двух (×2/3). Отсюда любимая величина звукорежиссёров — восьмая с точкой: при 120 ударах это 375 мс, и задержка с таким временем даёт узнаваемый рисунок, который не совпадает с сеткой восьмых и держит движение. Восьмая триоль при тех же 120 ударах — 166,67 мс. Те же числа идут в предзадержку реверберации (обычно берут значение вроде тридцать второй или шестьдесят четвёртой), в частоту тремоло и в скорость автопанорамы; для последних значение переворачивают в герцы делением 1000 на миллисекунды.

Почему на телефоне звук иногда пропадает

Мобильные браузеры усыпляют вкладку, как только вы уходите с неё: аудиоконтекст переводится в состояние suspended, таймеры замирают, микрофонная дорожка может быть остановлена системой. Поэтому вкладка с тюнером и метрономом должна оставаться открытой и активной, а экран — не гаснуть. На этой странице звук намеренно гасится сам, когда вкладка уходит в фон: иначе метроном продолжил бы щёлкать из-под другого приложения, а микрофонный индикатор горел бы без дела. Вернувшись на вкладку, нажмите «Пуск» ещё раз. Отдельная особенность iOS: звук там включается только в ответ на касание экрана, поэтому первый щелчок метронома и первый эталонный тон появятся лишь после нажатия кнопки, при загрузке страницы звука не будет.

Похожие инструменты

Генератор QR-кода

Ссылка, текст, телефон или Wi-Fi → QR-код с настройкой размера и коррекции. Скачать PNG. Кодирование в браузере, без отправки на сервер.

Открыть
Узнать мой IP

Ваш IP, провайдер и локация + что о вас видят сайты: браузер, ОС, устройство, экран, шрифты, WebGL-видеокарта и цифровой отпечаток.

Открыть
Base64 encode / decode

Переводит текст в Base64 и обратно с корректной кириллицей (UTF-8). Построчный режим для списков значений.

Открыть
Конвертер цветов и контраст

HEX, RGB и HSL в одном окне, шкала оттенков одного тона и проверка контраста по WCAG с ответом, годится ли цвет для текста.

Открыть
Тестер регулярных выражений

Подсветка совпадений и групп, режим замены и разбор самого шаблона по-русски: что делает каждый кусок и почему выражение не сработало.

Открыть
Что выгоднее купить

Приводит цены разных упаковок к одной единице: за килограмм, литр или штуку. Учитывает скидки и акции, показывает переплату за год.

Открыть

Ещё инструменты для SEO и маркетинга

Кластеризатор запросов, генераторы sitemap и robots.txt, минус-слова, разметка Schema.org и калькуляторы — в разделе инструментов.