Frequenzen aus Soundfiles lesen

Liebes Forum,

Die Idee: Man summt in das Mikrofon und ein Programm soll daraus eine Notation schreiben.

Bestimmte Töne haben bestimmte Frequenzen, könnte man also die Frequenz der aufgenommenen Sound-Datei zu bestimmten Zeitpunkten ermitteln, dann könnte man diese Werte auf Noten runden und wäre mit der Notation fast am Ziel.

Also meine Frage: Kann man die Frequenz einer Sounddatei zu einem bestimmten Zeitpunkt ermitteln, und wenn ja, wie?
 

Marco13

Top Contributor
Rein theoretisch geht das soweit ich (halb)weiß mit einer FFT, Fast Fourier Transform. Damit kann man ein Signal zwischen Zeit- und Frequenzbereich hin- und her transformieren. Wenn es also wirklich so wäre, dass der Benutzer da einen Perfekten, "einfrequentigen" 1000Hz-Ton summt, sollte das durch eine FFT dann (ganz plakativ gesagt) zu einem Array werden, bei dem das Element, das den 1000Hz entspricht, einen hohen wert hat, und alle anderen den Wert 0. Die konkrete Umsetzung könnte aber ein bißchen aufwändiger werden....
 
Also bekomme ich ein "Frequenz-Array" für einen bestimmten Zeitpunkt, jeder Platz im Array stellt die Lautstärke einer Frequenz dar? Das würde ja super passen, der größte Wert müsste den gewünschten Ton darstellen.

Wie wende ich den Algorithmus an und wie übergebe ich ihm die Daten?
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Wie gesagt, das kann schon etwas aufwändiger werden. Der Wert in diesem "Frequenz-Array" wäre dann nicht .. naja, nicht direkt "die Lautstärke", nur indirekt, nämlich wie stark genau diese Frequenz zum Endergebnis beigetragen hat (bin keine Signalverarbeitungsexperte). Aber ja, der höchste Wert wäre dann der, den du suchst. Der "Algorithmus" an sich ist glaub' ich eigentlich gar nicht sooo kompliziert, aber jetzt zu versuchen, den selbst auszuprogrammieren, wäre wahrscheinlich zu aufwändig (da gibt's sicher viele Stolperfallen). Vermutlich wäre es besser, eine existierende FFT-Bibliothek zu verwenden.
Die bekannteste ist Piotr Wendykier: JTransforms , die (wie gerade gesehen habe) auch schon in einem Projekt verwendet wird, das "MusicReader" heißt und zumindest vom Namen her sowas ähnliches sein könnte, wie das, was du vorhast...
 

Ähnliche Java Themen

Neue Themen


Oben