Ja, darum geht es in der FFT! Geben Sie das Frequenzspektrum der von Ihnen eingegebenen Daten an. Der schwierige Teil sind die Implementierungsdetails, wie Sie bereits erwähnt haben.
Je nachdem, was Sie genau tun möchten, ändert sich die Antwort.
Wenn Sie nur Ihre eigene Musik analysieren möchten, gibt es bereits Software dafür. Sie können sich EQs ansehen, die die Antwort anzeigen (im Grunde genommen die FFT), oder einen "musikalischen EQ" erhalten, der auch die Tonhöhen anzeigt. Sie können Audio zu MIDI-VSTs übertragen, die das, was Sie spielen, in die richtigen MIDI-Noten umwandeln. Wenn Ihr Keyboard MIDI ist, überspringen Sie einfach die VSTs und nehmen Sie das MIDI direkt auf.
Wenn Sie sich die FFT beibringen möchten und wissen möchten, wie sie sich auf Musik bezieht, sollten Sie sich Matlab zulegen, mit dem Sie die FFT aller Daten berechnen können. Es hat die Fähigkeit, aufzunehmen und auch wiederzugeben, zusammen mit dem Lesen von WAV-Dateien und dergleichen. Diese sind dann wirklich einfach zu bedienen. Sie können das Audio grafisch darstellen und alle Arten von Analysen ziemlich schnell durchführen, wenn Sie die Syntax kennen.
Wenn Sie ein Gerät bauen wollen, das so etwas macht, dann ist es ziemlich komplex. Sie benötigen eine uC / dsp / fpga / etc, um die Berechnungen durchzuführen. Die meisten gängigen Geräte sind bereits mit FFT-Code ausgestattet, sodass Sie ihn nicht selbst codieren müssen (auch kompliziert).
Sie müssen die Schaltung und all das bauen. Es ist nicht schwierig, aber abhängig von Ihren Erfahrungen / Kenntnissen kann es einige Zeit dauern und es gibt eine steile Lernkurve. Dies hängt auch von der Qualität des Endprodukts ab.
Mathematisch gesehen besteht eine ideale Musiknote aus einer geometrischen Reihe des "Grundtons".
Angenommen, F0 ist die Grundfrequenz, dann werden die meisten Noten durch F (t) + F0 * sum (a_k e ^ (2 ^ k ) angenähert F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 +. ...
Die a_k sind nur die Stärke dieser höheren Frequenzen F_k und F_k ist nur ein Vielfaches von F0. Wenn a_k = 0 für alle k, dann haben wir eine reine Sinuskurve. Die Tonhöhe ist leicht zu erkennen. Finden Sie einfach das Maximum der FFT und diese Frequenz ist die Grundlage des Tons = der Musiknote.
Wenn Sie die FFT nehmen, erhalten Sie diese Daten und können einfach weiter rechnen. Es ist im Grunde genommen Kalkül.
Das ist alles relativ einfach.
Einige Probleme, mit denen Sie sich befassen müssen. Beachten Sie, dass nicht alle von diesen "gelöst" sind.
Latenz - Wenn Sie irgendwelche Echtzeitaufgaben ausführen, kann dies zu einem Problem werden.
Mehrere Noten - Es ist schwierig, die Notengruppe zu bestimmen, da alle zusätzlichen Harmonischen vorhanden sind. Wenn Sie A = 440Hz und A '= 880Hz spielen, überlappen sich die meisten Harmonischen. Sie können leicht die A = 440Hz bekommen, aber die A '= 880Hz zu bekommen ist schwieriger. Wenn Sie an Akkorde, schnelle Läufe usw. denken, kann es sehr schwierig sein, alle Informationen (Noten) präzise abzurufen. Während im Allgemeinen alles mathematisch möglich ist, weisen die Daten selbst Fehler und Aberrationen auf, und die Gleichungen sind in einigen Fällen unterdefiniert.
Rauschen - Rauschen im Signal kann zu falschen Ergebnissen führen. Wenn ein Musikgeräusch auftritt, kann es Ihre Ergebnisse verfälschen. Dann wären bessere Algorithmen erforderlich = Zeit + Geld + Wissen.