Библиотека обнаружения битов c ++ FFT?

В настоящее время я ищу хорошую универсальную библиотеку / исходный код обнаружения биений на C ++, так как я обнаружил, что очень сложно добиться удовлетворительных результатов с кодом обнаружения биений, который я написал сам с помощью этого учебника: http://www.gamedev.net/reference/programming/features/beatdetection/

Это особенно сложно, если вы хотите заставить его работать с любой музыкой, поэтому мне было интересно, есть ли что-то уже пригодное для использования?

Спасибо!


person user240137    schedule 14.02.2010    source источник


Ответы (5)


Вы можете попробовать Aubio: http://aubio.org/

Кажется, это не работает (по крайней мере, для меня сегодня) в Windows, но это работает в OS / X

person user1804862    schedule 07.11.2012

Посмотрите на систему подключаемых модулей Vamp и доступные подключаемые модули (http://vamp-plugins.org/).

(с веб-сайта) Vamp - это система подключаемых модулей обработки звука для подключаемых модулей, которые извлекают описательную информацию из аудиоданных

Набор подключаемых модулей QM кажется особенно актуальным (http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html).

person Taybin    schedule 08.03.2010
comment
Да, они созданы именно для этого. - person James Morris; 06.06.2010

Возможно, мне что-то не хватает, но я не понимаю, почему вы не можете использовать процедуру БПФ Научной библиотеки GNU (или любую другую, подобную тем, что включены в BOOST)?

person dangerstat    schedule 14.02.2010
comment
Я ищу определение ритма, которое использует БПФ в качестве входа и определяет, есть ли новый ритм в определенном диапазоне или нет. Предоставленные вами библиотеки - это просто процедуры БПФ, если я не ошибаюсь? - person user240137; 14.02.2010
comment
Все, что вам нужно, чтобы обнаружить биение или периодический всплеск, - это БПФ? - person dangerstat; 14.02.2010
comment
да, во всех реализациях обнаружения биений, которые я видел до сих пор, вы в основном сравниваете БПФ с предыдущим кадром и, возможно, запускаете на нем некоторые функции сглаживания, чтобы устранить любой вид шума. тогда, если разница превышает определенный динамический порог, у вас есть биение. - person user240137; 14.02.2010
comment
Точно. То, на что вы смотрите, должно быть периодограммой, всплески предполагают биения. Это легко сделать, но отправной точкой является использование подпрограмм БПФ в BOOST или GNU GSL. - person dangerstat; 14.02.2010
comment
да, в основном это то, что я уже делаю, хотя использую FFTW. В любом случае проблема в том, что очень сложно заставить его работать в общем виде, поэтому мне было интересно, есть ли что-то готовое, что могло бы работать лучше. в любом случае спасибо за вашу помощь! - person user240137; 14.02.2010

Ах, Вамп. Если бы только интересные работали в реальном времени.

user240137, я не знаю, действительно ли вы так любите "принимать ответы", но после изучения Vamp я нашел Aubio (aubio.org) и обнаружил, что легче внедрить его функции в мои проекты, чтобы они работали в реальном времени работа (если это то, что вам нужно).

И последнее: если вы действительно хотите обрабатывать собственное БПФ, используйте kissFFT как более простую альтернативу БПФ.

person buildsucceeded    schedule 12.07.2011

OnsetsDS - библиотека C / C ++ для обнаружения музыкальных нот в реальном времени. http://onsetsds.sourceforge.net/

person dasar    schedule 04.06.2015