Oui, c'est bien la FFT! Pour vous donner le spectre de fréquence des données que vous alimentez. La partie difficile est les détails de mise en œuvre, comme vous l'avez mentionné.
Selon ce que vous voulez faire, exactement, change la réponse.
Si vous souhaitez simplement analyser votre propre musique, il existe déjà des logiciels pour le faire. Vous pouvez regarder les égaliseurs qui montrent la réponse (essentiellement la FFT), ou obtenir un "égaliseur musical" qui montre également les hauteurs. Vous pouvez obtenir de l'audio en MIDI VST qui convertissent ce que vous jouez en notes MIDI correctes. Si votre clavier est midi, sautez simplement les VST et enregistrez le midi directement.
Si vous voulez vous apprendre la FFT et comment elle se rapporte à la musique, mieux vaut obtenir quelque chose comme Matlab où vous pouvez calculer la FFT de toutes les données. Il a la capacité d'enregistrer et de lire avec la lecture de fichiers wav et autres. Celles-ci doivent alors être très faciles à utiliser. Vous pouvez représenter graphiquement l'audio et effectuer toutes sortes d'analyses assez rapidement si vous connaissez la syntaxe.
Si vous voulez construire un appareil pour faire une telle chose, c'est assez complexe. Vous aurez besoin d'un uC / dsp / fpga / etc pour faire les calculs. La plupart des appareils populaires sont déjà livrés avec du code FFT, vous n'aurez donc pas à le coder vous-même (aussi compliqué).
Vous aurez besoin de construire les circuits et tout ça. Ce n'est pas difficile, mais selon votre expérience / vos connaissances, cela peut prendre un certain temps et avoir une courbe d'apprentissage abrupte. Cela dépend également de la qualité du produit final.
Mathématiquement, une note de musique idéale consiste en une série géométrique du "fondamental".
Supposons que F0 soit la fréquence fondamentale, alors la plupart des notes de musique seront approximées par F (t) + F0 * sum (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 +. ...
Les a_k ne sont que la force de ces fréquences plus élevées F_k et F_k n'est qu'un multiple de F0. Si a_k = 0 pour tout k, alors nous avons une sinusoïde pure. La hauteur de celui-ci est facile à détecter. Il suffit de trouver le maximum de la FFT et cette fréquence est le fondamental du ton = la note de musique.
Lorsque vous prenez la FFT, vous vous retrouvez avec des données et faites simplement des calculs. C'est essentiellement du calcul.
Tout cela est relativement simple.
Certains problèmes que vous devrez résoudre. Notez que tous ces problèmes ne sont pas "résolus".
Latence - Si vous allez faire n'importe quel type de choses en temps réel, cela peut devenir un problème.
Notes multiples - Il est difficile de déterminer le groupe de notes en raison de toutes les harmoniques supplémentaires. Si vous jouez A = 440 Hz et A '= 880 Hz, la plupart des harmoniques se chevaucheront. Vous pouvez facilement obtenir le A = 440 Hz, mais obtenir le A '= 880 Hz est plus difficile. Lorsque vous pensez à des accords, à des exécutions rapides, etc., il peut être très difficile d'obtenir précisément toutes les informations (notes). Bien que tout soit généralement mathématiquement possible, les données elles-mêmes comportent des erreurs et des aberrations, et les équations sont sous-définies dans certains cas.
Bruit - Le bruit dans le signal peut vous donner de faux résultats. Si un bruit musical se produit, il peut gâcher vos résultats. De meilleurs algorithmes seraient alors nécessaires = temps + argent + connaissances.