AudioUtilsaudio-utils.com

Command Palette

Search for a command to run...

Детектор BPM

Принимает: 9 форматов· Показать все

Также принимает MP4, MOV, WebM, AVI — аудио извлекается автоматически.

Перетащите трек и получите его темп в BPM. Чистый TS-анализ работает в вашем браузере — без загрузок, без регистрации.

Ваш файл никогда не покидает ваше устройство. Вся обработка происходит в этой вкладке браузера.

BPM (ударов в минуту) — это пульс трека. Промахнётесь на один удар — ремикс не «защёлкнется»; промахнётесь на октаву — DJ-сет рассыплется. Этот детектор использует автокорреляцию огибающей онсетов с поправкой на октавную ошибку, чтобы прочитать темп любого аудиофайла прямо в вашем браузере. Бросайте файл — получаете число, обычно с точностью до ±2 BPM на ритмичном материале.

Что на самом деле измеряет детекция BPM

Детекция BPM ищет периодичность в энергетической огибающей сигнала. Классический подход: посчитать RMS на коротком окне, взять полуволновое выпрямление производной, чтобы получить сигнал онсетов, и автокоррелировать его, отыскивая наиболее вероятный период удара. Среди сложных случаев — темпы, не попадающие на целочисленные границы кадров (174 BPM известны капризностью), треки с сильным акцентом на полтакта, заставляющим детектор выдавать половину темпа, и треки без явной ритмической составляющей. Распространённую октавную ошибку мы смягчаем: проверяем, есть ли сильный пик автокорреляции и на удвоенном темпе — если есть, выбираем более быстрое чтение, ведь субъективно воспринимаемый темп обычно лежит в диапазоне 100-180 BPM.

Как работает этот детектор

Аудио декодирует Web Audio API и сводит в моно. Мы считаем RMS-огибающую с частотой кадров 100 Hz (шаг 10 ms, окно 20 ms), потом полуволной выпрямляем первую разность, чтобы выделить онсеты. Автокорреляция проходит по задержкам, соответствующим 60-200 BPM. После выбора самого сильного пика применяем апостериорную октавную поправку: если на полузадержке (= удвоенный темп) пик не ниже 45 % от выбранного, переключаемся на более быстрое чтение. Параболическая интерполяция вокруг выбранного пика даёт BPM с подкадровой точностью. Всё работает на TypeScript в браузере поверх Float32Array — без внешних библиотек, без сервера.

Когда пригодится этот инструмент

  • Битматчинг для DJ-сетов и живых выступлений
  • Подгонка ремиксов и стемов к темпу референсного трека
  • Установка темпа проекта в DAW перед импортом записанного дубля
  • Аудит барабанных сэмплов и лупов, чтобы убедиться в правильной разметке
  • Быстрая проверка ритма в треке, к которому не получается сразу прихлопать

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

Насколько точна детекция?
На ритмически ясном материале (большая часть попа, дэнса, хип-хопа, рок с барабанами) ожидайте ±2 BPM. На материале со слабой или отсутствующей перкуссией (оркестр, эмбиент, акустические баллады) алгоритму не за что зацепиться, и он может сообщить половину или удвоенный темп. Рядом с BPM выводится уверенность — если она низкая, относитесь к результату осторожно.
Почему иногда выдаёт половину ожидаемого BPM?
Детекция BPM — задача с врождённой неоднозначностью, когда периодичность есть на нескольких гармонически связанных скоростях. Этот случай мы распознаём и предпочитаем более быстрое чтение, но на очень медленных треках (60-80 BPM) с сильным дроблением детектор всё равно может выбрать удвоенный темп. Сравните с собственным tap-tempo, если результат кажется странным.
Справляется ли он с треками с переменным темпом?
Не очень. Интегрированное чтение отражает средний темп по всему треку. Для треков, где темп меняется от секции к секции, нужный инструмент — алгоритм beat-tracking с покадровым выходом, но он намного тяжелее и плохо подходит к бесплатной браузерной утилите.
Что если в моём треке нет барабанов?
Акустический / эмбиент / неперкуссионный материал — самый сложный случай. Огибающая онсетов улавливает атаки тональных нот, но они куда слабее ударов барабанов. Уверенность будет низкой, а результат — ненадёжным. В таких случаях зачастую разумнее ввести BPM вручную, исходя из замысла композитора.

Конфиденциальность

Ваш файл анализируется целиком в этой вкладке: декодируется через Web Audio API, обрабатывается браузерным TypeScript и никогда не загружается. Закроете вкладку — всё рабочее состояние удаляется.