Тюнер по микрофону и метроном
Настраивает гитару, бас и укулеле через микрофон: показывает ноту, отклонение в центах и ближайшую струну выбранного строя. Рядом метроном с точным планировщиком, отбивкой темпа и пересчётом в миллисекунды. Всё считается в браузере, звук никуда не уходит.
| Длительность | Обычная, мс | С точкой (×1,5), мс | Триоль (×2/3), мс | Обычная в герцах |
|---|
восьмая = 30000 / BPM шестнадцатая = 15000 / BPM
нота с точкой = обычная × 1,5 триоль = обычная × 2/3
восьмая с точкой = 45000 / BPM восьмая триоль = 20000 / BPM
Как устроены тюнер и метроном
Две половины одного инструмента, и обе работают прямо во вкладке. Тюнер слушает микрофон и называет ноту, отклонение в центах и частоту в герцах: 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′(τ) = 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 сдвинуло бы показание на четыре цента.
Готовое значение частоты сглаживается медианой по последним замерам. Медиана выбрана вместо среднего потому, что один сбойный кадр — щелчок медиатора, скрип пальца по обмотке — сдвигает среднее и не трогает медиану.
Ноты, центы и эталон
отклонение, центов = 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 E4 | 82,41 · 110,00 · 146,83 · 196,00 · 246,94 · 329,63 |
| Drop D | D2 A2 D3 G3 B3 E4 | 73,42 · 110,00 · 146,83 · 196,00 · 246,94 · 329,63 |
| Open G | D2 G2 D3 G3 B3 D4 | 73,42 · 98,00 · 146,83 · 196,00 · 246,94 · 293,66 |
| Open D | D2 A2 D3 F♯3 A3 D4 | 73,42 · 110,00 · 146,83 · 185,00 · 220,00 · 293,66 |
| DADGAD | D2 A2 D3 G3 A3 D4 | 73,42 · 110,00 · 146,83 · 196,00 · 220,00 · 293,66 |
| Полутон вниз (E♭) | E♭2 A♭2 D♭3 G♭3 B♭3 E♭4 | 77,78 · 103,83 · 138,59 · 185,00 · 233,08 · 311,13 |
| Тон вниз (D) | D2 G2 C3 F3 A3 D4 | 73,42 · 98,00 · 130,81 · 174,61 · 220,00 · 293,66 |
| Бас-гитара | E1 A1 D2 G2 | 41,20 · 55,00 · 73,42 · 98,00 |
| Укулеле | G4 C4 E4 A4 | 392,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 | очень медленно, тяжело |
| Largo | 40 – 59 | широко, протяжно |
| Larghetto | 60 – 65 | чуть подвижнее Largo |
| Adagio | 66 – 75 | медленно, спокойно |
| Andante | 76 – 107 | шагом |
| Moderato | 108 – 119 | умеренно |
| Allegro | 120 – 167 | скоро, оживлённо |
| Presto | 168 – 199 | быстро |
| Prestissimo | 200 и выше | предельно быстро |
Границы в этой таблице условны и у разных изданий расходятся на несколько единиц: сами слова появились в партитурах задолго до чисел и обозначали характер движения. Числа к ним привязали после того, как Иоганн Мельцель запатентовал метроном в 1815 году и Бетховен начал ставить метрономические указания в нотах. Между основными степенями живут промежуточные — Andantino, Allegretto, Vivace, — и их место в шкале авторы понимают по-разному, поэтому в таблице их нет.
Темп в миллисекундах при ходовых значениях
| BPM | Четверть | Восьмая | Шестнадцатая | Восьмая с точкой | Восьмая триоль |
|---|---|---|---|---|---|
| 60 | 1000,00 | 500,00 | 250,00 | 750,00 | 333,33 |
| 80 | 750,00 | 375,00 | 187,50 | 562,50 | 250,00 |
| 90 | 666,67 | 333,33 | 166,67 | 500,00 | 222,22 |
| 100 | 600,00 | 300,00 | 150,00 | 450,00 | 200,00 |
| 110 | 545,45 | 272,73 | 136,36 | 409,09 | 181,82 |
| 120 | 500,00 | 250,00 | 125,00 | 375,00 | 166,67 |
| 128 | 468,75 | 234,38 | 117,19 | 351,56 | 156,25 |
| 140 | 428,57 | 214,29 | 107,14 | 321,43 | 142,86 |
| 160 | 375,00 | 187,50 | 93,75 | 281,25 | 125,00 |
| 174 | 344,83 | 172,41 | 86,21 | 258,62 | 114,94 |
Восьмая с точкой — рабочая величина для задержки: при 120 ударах это 375 мс, и повторы ложатся мимо сетки восьмых, из-за чего рисунок кажется плотнее, чем он есть. Триольные значения дают качающееся ощущение и хорошо живут рядом с прямым битом. Предзадержку реверберации обычно берут короткой, порядка тридцать второй или шестьдесят четвёртой: при 120 ударах это 62,5 и 31,25 мс. Скорость тремоло и автопанорамы задают в герцах, поэтому миллисекунды переворачивают делением 1000 на длительность: 500 мс превращаются в 2 Гц.
Что рядом
Полную таблицу частот от C0 до B8 с MIDI-номерами, длиной волны и генератором тона держит страница частоты нот и гитарные строи. Если тюнер не слышит инструмент, начните с проверки входа: тест микрофона показывает уровень сигнала, частоту дискретизации и умеет записать десять секунд для контроля. Выход проверяют тест звука и динамиков и тест наушников — там же лежит проверка каналов и верхней границы слуха. Все расчёты идут в браузере: ни звук, ни введённые числа со страницы никуда не отправляются.
Как пользоваться
- Браузер спросит разрешение сам. Звук обрабатывается на месте и никуда не отправляется.
- Крупно показывается нота, стрелка — отклонение от −50 до +50 центов, зелёная зона ±5.
- В режиме строя тюнер сам находит ближайшую струну и считает отклонение от неё.
- Темп, размер и дробление доли меняются на ходу, сетка щелчков пересобирается сразу.
Частые вопросы
Как тюнер определяет ноту
Автокорреляционным методом 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: звук там включается только в ответ на касание экрана, поэтому первый щелчок метронома и первый эталонный тон появятся лишь после нажатия кнопки, при загрузке страницы звука не будет.
Похожие инструменты
Ссылка, текст, телефон или Wi-Fi → QR-код с настройкой размера и коррекции. Скачать PNG. Кодирование в браузере, без отправки на сервер.
ОткрытьУзнать мой IPВаш IP, провайдер и локация + что о вас видят сайты: браузер, ОС, устройство, экран, шрифты, WebGL-видеокарта и цифровой отпечаток.
ОткрытьBase64 encode / decodeПереводит текст в Base64 и обратно с корректной кириллицей (UTF-8). Построчный режим для списков значений.
ОткрытьКонвертер цветов и контрастHEX, RGB и HSL в одном окне, шкала оттенков одного тона и проверка контраста по WCAG с ответом, годится ли цвет для текста.
ОткрытьТестер регулярных выраженийПодсветка совпадений и групп, режим замены и разбор самого шаблона по-русски: что делает каждый кусок и почему выражение не сработало.
ОткрытьЧто выгоднее купитьПриводит цены разных упаковок к одной единице: за килограмм, литр или штуку. Учитывает скидки и акции, показывает переплату за год.
ОткрытьЕщё инструменты для SEO и маркетинга
Кластеризатор запросов, генераторы sitemap и robots.txt, минус-слова, разметка Schema.org и калькуляторы — в разделе инструментов.