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

Огромное спасибо всем, в особенности тем, кто не послал автора в известном направлении
Re: Как опредеилить темп трека?
От: silent_bob  
Дата: 08.10.10 18:06
Оценка:
Здравствуйте, Vaikea, Вы писали:

V>Искал в гугле, ничего толкового не нашел.



Обзоры/обсуждения:
http://stackoverflow.com/questions/657073/how-to-detect-bpm-of-the-song-by-programming
http://www.mmartins.com/mmartins/bpmdetection/bpmdetection.asp (крутить до низу)

OpenSource реализации:
http://bpmdj.yellowcouch.org/index.html
http://gjay.sourceforge.net/
http://www.surina.net/soundtouch/README.html

Описание алгоритмов:
http://www.gamedev.net/reference/articles/article1952.asp
http://www.clear.rice.edu/elec301/Projects01/beat_sync/beatalgo.html
Re[2]: Как опредеилить темп трека?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 09.10.10 09:41
Оценка:
silent_bob давно ждал этого вопроса.
Re[2]: Как опредеилить темп трека?
От: Vaikea  
Дата: 09.10.10 11:57
Оценка:
silent_bob, Спасибо большое! То, что нужно!
Re[3]: Как опредеилить темп трека?
От: silent_bob  
Дата: 12.10.10 19:20
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>silent_bob давно ждал этого вопроса.


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