Обнаружение ритма путем анализа звукового спектра
Я строю игру, основанную на ритме, и сталкиваюсь с множеством проблем с обнаружением ритма. Я получаю текущий спектр играющей песни. Это похоже на массив с 512 поплавками. 256 для представления левого и правого канала. БПФ также доступна. Но я не знаю, как работать с этими данными, я провел несколько экспериментов с визуализацией, но это дало мне очень мало информации. Я гуглил некоторые готовые алгоритмы, но ничего нет. Пожалуйста, кто-нибудь может мне помочь, может быть, с некоторыми ссылками, материалами, статьями, связанными с обнаружением ритма, работой со звуковым спектром. Код также будет очень полезен. Благодарю.
3 ответа
Возможно, вы не использовали правильные условия поиска. Попробуйте Google "Обнаружение темпа" или "Обнаружение ударов" вместе с "Код" или "алгоритм". Есть много статей, ссылок, примеров кода и т. Д.
Всего несколько хитов:
http://www.cs.princeton.edu/~lieber/cos325/final/
http://www.clear.rice.edu/elec301/Projects01/beat_sync/beatalgo.html
Возможно, вы захотите проверить исходный и проектный отчет для проекта Dancing Monkeys. Танцующие обезьяны автоматически генерируют пошаговые файлы для DDR, и делают это, используя довольно сложное обнаружение ударов. Это написано в Matlab.
Вам следует взглянуть на алгоритм спектра биений: http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm.
Он извлекает информацию о ритме и музыкальной структуре, вычисляя сходство спектрограмм небольших выборок. Это относительно легко реализовать и позволяет получать надежную информацию.