Как опредеилить темп трека?
От: Vaikea  
Дата: 08.10.10 17:51
Оценка:
Только тапками не кидайтесь
Условие: есть массив двоичных данных, в котором по очереди находятся амплитудные значения для левого и правого каналов. Если быть точнее, это ByteArray, в который выгружен sound.extract() (ActionScript 3).
Задача: определить темп (BPM) трека. С целью его последующего изменения, микширования с другим треком и т.д., и т.п.
Искал в гугле, ничего толкового не нашел. Есть ли известные обществу алгоритмы или принципы решения данного вопроса?
Пытался посчитать среднее значение амплитуды (avg) для правого и левого каналов, и отфильтровать значения по условию a > (avg+(avg/2)). Потом посчитать среднее расстояние между определенными ранее значениями. Для трека с ярко выраженным басом получается что-то похожее на желанный BPM, но решение не универсальное. Может быть, стоит предварительно обработать эквалайзером трек, оставив только часть < 500Гц?

Огромное спасибо всем, в особенности тем, кто не послал автора в известном направлении
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.