BeatScopeBeatScopeEN

Как BeatScope определяет тональность и темп

Автор: команда разработки движка анализа BeatScope · обновлено 14 июля 2026 · время чтения ~5 мин

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

Когда мы делали BeatScope, задача звучала просто: за секунды и без интернета выдать диджею три числа по треку — BPM, тональность и энергию — и сделать это достаточно точно, чтобы им можно было доверять в живом сведении. За «просто» здесь стоит классический цифровой анализ сигналов. Вот наш пайплайн честно, по шагам.

Как мы определяем темп (BPM)

Темп — это периодичность в потоке энергии трека. Мы не «слушаем бас-бочку» напрямую, а ищем регулярность в моментах, когда в звуке что-то происходит.

  1. Спектральный поток → онсеты. Считаем, насколько сильно меняется спектр между кадрами. Резкие приросты энергии — это онсеты (атаки бочки, снейра, синтов). Из них собираем огибающую онсетов.
  2. Автокорреляция. Автокоррелируем огибающую: на каком сдвиге сигнал сильнее всего похож на себя — там и период доли.
  3. Комб-оценка кратных периодов. Проверяем не только базовый период, но и кратные (½, 2×), чтобы не спутать темп с его гармониками.
  4. Октавная свёртка + приоритет диапазона. Сворачиваем кандидатов в диапазон 60–180 BPM и мягко предпочитаем типичные для танцевальной музыки значения — так реже возникает классическая ошибка «174 против 87».
  5. Медианное сглаживание. Финальное значение сглаживаем по медиане, чтобы одиночные всплески не сбивали оценку.

Для самого бит-грида (где именно стоят доли на волне) мы используем подход динамического программирования в духе бит-трекера Дэна Эллиса[3]: он ищет такую расстановку долей, которая одновременно ложится на онсеты и держит ровный интервал — поэтому сетка не «плывёт» по треку.

Как мы определяем тональность

Тональность мы оцениваем по распределению энергии между 12 полутонами — это называется хромаграммой.

  1. Хромаграмма. Сворачиваем спектр (диапазон ~55–2000 Гц) в 12 классов высоты и накапливаем через утечковый интегратор с памятью около 8 секунд — получаем усреднённый «профиль нот» трека.
  2. Корреляция с профилями Крумхансла–Шмуклера. Сравниваем этот профиль с 24 эталонными профилями тональностей (12 мажорных + 12 минорных). Лучшее совпадение — искомая тональность.
  3. Перевод в Camelot. Отдаём результат и в нотах, и в коде Camelot — так гармоничное сведение сводится к арифметике по колесу.

Этот подход восходит к libKeyFinder Ибрагима Ша'ата[2] и к работам Кэрол Крумхансл по восприятию тональности[1] — тем же методом пользуются студийные ключ-детекторы. Мы портировали его в чистый расчёт на устройстве, без обращения к серверу.

Почему офлайн и на устройстве

Никакой загрузки треков на сервер: анализ идёт локально. Это быстрее (нет сети в цикле), приватнее (музыка не покидает устройство) и работает в клубе без интернета. И это принципиально бесплатно — незачем платить за облачные вычисления, которых нет.

Как мы считаем энергию

«Энергия» — это ощущение напора трека. Мы оцениваем её по громкости (RMS) и спектральному балансу и приводим к простой шкале, чтобы в библиотеке можно было выстраивать сет по нарастанию.

Точность и честные ограничения

На материале с внятной ритм-секцией и стабильной тональностью оценки надёжны. Где метод объективно сложнее:

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

Итог

BPM — из онсетов и автокорреляции с октавной свёрткой; тональность — из хромаграммы и профилей Крумхансла–Шмуклера с переводом в Camelot; бит-грид — динамическим программированием. Всё считается на Mac и iPhone офлайн, за секунды, бесплатно.

Открыть BeatScope →

Источники

  1. Krumhansl C. L. Cognitive Foundations of Musical Pitch. Oxford University Press, 1990.
  2. Sha'ath I. Estimation of Key in Digital Music Recordings. MSc thesis, Birkbeck College, University of London, 2011 (libKeyFinder).
  3. Ellis D. P. W. Beat Tracking by Dynamic Programming. Journal of New Music Research, 36(1), 2007.

Мы используем только необходимые локальные данные — язык и ваш выбор про cookie. Аналитические cookie подключаются лишь с вашего согласия. Политика cookie