Key, Camelot-код для DJ-миксов, совместимые тональности и точный темп — за секунды.
Тональность и темп — первое, что нужно для сведения треков, подбора сэмплов и записи партий. Диджею они говорят, какие композиции состыкуются без диссонанса. Продюсеру — в какой тональности писать вокал или брать луп, чтобы он не «поплыл» относительно гармонии.
Ошибиться легко: на слух тональность определяется уверенно далеко не всеми, а метки в файлах часто врут или отсутствуют вовсе.
Camelot Wheel — способ записать тональность так, чтобы совместимость читалась с одного взгляда. Каждой тональности присвоен код: цифра от 1 до 12 и буква A для минора или B для мажора. Например, ля минор — это 8A, до мажор — 8B.
Совместимы треки с тем же кодом, соседними цифрами (±1) и той же цифрой с другой буквой. Переход между 8A и 9A прозвучит гладко, а между 8A и 2A — резко и фальшиво. Поэтому диджейские программы показывают именно Camelot, а не классические обозначения.
Тональность вычисляется по хромаграмме: сигнал раскладывается на двенадцать полутонов, накопленный профиль сравнивается с эталонными профилями всех мажорных и минорных тональностей по методу Крумхансл — Шепарда. Побеждает тональность с наибольшим совпадением.
Темп определяется по автокорреляции огибающей: алгоритм ищет период, с которым повторяются всплески энергии — удары бочки и малого барабана.
Треки с модуляцией — сменой тональности по ходу — дадут усреднённый ответ: алгоритм показывает преобладающую тональность, а не каждую. То же с попурри и миксами.
Темп иногда определяется вдвое выше или ниже реального: 140 вместо 70 BPM. Это нормальная неоднозначность — с точки зрения сигнала оба варианта верны, выбирайте по ощущению доли. На материале без выраженного ритма (эмбиент, соло-инструмент) BPM может не определиться вовсе.