Question

Je développe actuellement un programme de tutoriel de percussion. Le programme exige que je puisse déterminer ce que le tambour est en cours de lecture, pour ce faire, j'allais analyser la fréquence de l'enregistrement du tambour et voir si la fréquence se situe dans une plage donnée.

J'utilise la mise en œuvre des communes de mathématiques pour Apache FFT jusqu'à présent (http://commons.apache.org/math/) mais ma question est, une fois que je préforme la FFT, comment puis-je utiliser le tableau de résultats calculer les fréquences contenues dans le signal?

Note: J'ai aussi essayé d'expérimenter avec l'aide Autocorrélation, mais il ne semble pas fonctionner à bien avec l'échantillon d'un kit de batterie

Toute aide ou d'autres suggestions sur la façon de déterminer ce que le tambour est frappé serait grandement appréciée

Edit: Depuis la rédaction de ce que j'ai trouvé une grande leçon en ligne sur la mise en œuvre FFT en Java pour les transformations temps / fréquence Analyse du spectre en Java

Était-ce utile?

La solution

Dans le domaine de la recherche d'information musicale, les gens utilisent souvent une mesure connue comme (liée MFCCs) coefficients mel fréquence cepstral .

Pour tout segment N-échantillon de votre signal, prendre la FFT. Ces N échantillons résultants sont transformés en un ensemble de MFCC contenant, par exemple, 12 éléments (à savoir, des coefficients). Ce vecteur 12-élément est utilisé pour classer l'instrument, y compris lequel tambour est utilisé.

Pour la classification supervisée, vous pouvez utiliser quelque chose comme un support machine vecteur (SVM). LIBSVM est une bibliothèque couramment utilisée qui a une compatibilité Java (et bien d'autres langues ). Vous formez le SVM avec ces MFCCs et leurs étiquettes d'instruments correspondants. Ensuite, vous tester en alimentant un vecteur MFCC de requête, et il vous dira quel instrument est.

Ainsi, la procédure de base, en résumé:

  1. Get FFT.
  2. Get MFCCs de FFT.
  3. Train avec SVM MFCCs et étiquettes d'instruments.
  4. Requête la SVM avec MFCC du signal d'interrogation.

Vérifier les packages Java qui font ces choses. (Ils doivent exister. Je ne sais pas.) Relativement, la transcription du tambour est plus facile que la plupart des autres groupes d'instruments, donc je suis optimiste que cela fonctionnerait.

Pour en savoir plus, il y a tout un tas de articles sur transcription du tambour.

Autres conseils

Quand je fait un programme à l'aide d'un DFT, je l'avais créer un tableau de fréquences et Amplitudes pour chaque fréquence. Je pourrais alors trouver les plus grandes amplitudes, et les comparer à des notes de musique, obtenir une bonne compréhension de ce qui a été joué. Si vous connaissez la fréquence approximative du tambour, vous devriez être en mesure de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top