Только тапками не кидайтесь

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