In der Code Library ist von mir eine FFT/DFT-Implementierung für Delphi. (
http://www.delphipraxis.net/internal...t.php?t=105205)
Das ganze funktioniert ungefähr so:
Du hast eine eine Reihe von Abtastwerten des Eingabetons in einem Array (wieviele Abtastwerte pro Sekunde bestimmt die Sampling-Frequenz, meistens sowas wie 11025Hz, 22050Hz, 44100Hz)
Angenommen dein Array hat die Länge n, idealerweise eine Zweierpotenz, dann gilt:
Nach der Fourier-Transformation stehen in den Indizes 1 bis n/2-1 die Anteile der Frequenz Samplingrate/n, relativ zum Maximalwert. Die Indizes dahinter sind eine Spiegelung davon, also unbrauchbar. (sg. Alias-Effekt)
Wenn du also eine höhere Auflösung willst, kannst du z.B. eine größere Menge von Eingabewerten wählen - solange es eine Zweierpotenz ist, gibt es so gut wie keinen Geschwindigkeitsverlust, da die Laufzeit dann logarithmisch ansteigt.