8
votes

Obtenez de manière programmable BPM d'une vague ou d'un mp3 de .net

J'ai un projet avec une obligation d'obtenir le BPM d'une vague ou d'un fichier MP3 à l'aide de .NET (VB.NET ou C #).

Est-ce que quelqu'un connaît-il d'une binaire ou d'une bibliothèque pour cela ou d'un extrait de code pour diriger-moi dans la bonne direction?


2 commentaires

Ce n'est pas spécifique .NET, mais il y a beaucoup d'informations utiles et d'algorithmes suggérées sur cette question: HOW-détecter-détecter-bpm-of-the-chanson par-programmation


@Bs: C'est très simple: vous faites simplement une FFT (transformée FRANDER FOURIER) et analysez vos données transformées (une recherche triviale dans un tableau, à la recherche d'une valeur maximale). J'ai écrit ma propre FFT en Java dans environ 40 lignes de code environ (je ne me souviens pas exactement car c'était il y a longtemps, mais c'était court). Ceci est similaire à la recherche à laquelle RPM Un moteur tourne en analysant le bruit d'une voiture (comme, par exemple, une voiture de formule une [mais dans l'étui de moteur de la voiture, vous devez savoir combien de bouteilles ont la voiture]). Été là, fait cela, à la fois pour déterminer .wav BPMS et RPM de moteurs de voiture, en Java, au siècle dernier;)


3 Réponses :


1
votes

Voici un produit commercial qui a une bibliothèque C #. Un essai est également disponible: http://adionsoft.net/bpm/


0 commentaires

2
votes

Pour la partie où vous obtenez les échantillons de WAV ou MP3 dans le code .NET, j'utilise Naudio (sur CodePlex), GRATUITEMENT, utilisable dans les applications commerciales, aucune documentation réelle, juste exemple de code.


0 commentaires

2
votes

Premièrement, si vous voulez faire du bruit avec .NET, je recommanderais FMOD qui est génial et comporte un wrapper .NET (http://www.fmod.org).
Ensuite, pour obtenir le BPM, il existe plusieurs méthodes, mais celle que je trouve le plus efficace est le "Spectacle de battement" (décrit ici: http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm ).
Cet algorithme calcule une matrice de similarité en comparant chaque échantillon court de la musique avec tous les autres. Une fois que la matrice de similarité est calculée, il est possible d'obtenir une similitude moyenne entre chaque paire d'échantillons {s (t); s (t + 1)} pour chaque intervalle de temps T: c'est le spectre de battement. Le premier pic important dans le spectre de battement est la plupart du temps la durée du battement. La meilleure partie est que vous pouvez également faire des choses comme une structure de musique ou des analyses de rythme.
Si vous êtes intéressé par ce domaine, je suggère de lire d'autres papiers Jonathan Foot.


0 commentaires