У меня есть проект с требованием получить BPM волны или файла MP3 программно с использованием .Net (VB.Net или C #).
Кто-нибудь знает двоичный файл или библиотеку для этого или есть фрагмент кода, чтобы направить меня в правильном направлении?
Для части, где вы получаете образцы из WAV или MP3 в коде .NET, я использую NAudio (в CodePlex), бесплатный, пригодный для использования в коммерческих приложениях, никакой реальной документации, просто образец кода.
Во-первых, если вы хотите делать звук с .Net, я бы порекомендовал fmod, который великолепен и имеет оболочку .Net (http://www.fmod.org). Далее, чтобы получить BPM, есть несколько методов, но наиболее эффективным я считаю «спектр биений» (здесь описано: http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm). Этот алгоритм вычисляет матрицу сходства, сравнивая каждый короткий образец музыки со всеми остальными. Как только матрица подобия вычислена, можно получить среднее сходство между каждой парой выборок {S (T); S (T + 1)} для каждого временного интервала T: это спектр биений. Первый высокий пик в спектре ударов - это большая часть продолжительности ударов. Самое приятное то, что вы также можете делать такие вещи, как структура музыки или анализ ритма. Если вы заинтересованы в этой области, я бы посоветовал прочитать другие статьи Джонатана Фута.
Вот коммерческий продукт с библиотекой C #. Также доступна пробная версия: http://adionsoft.net/bpm/