Forum: Digitale Signalverarbeitung / DSP / Machine Learning Abtastrate für FFT bei Klavierstück


von Pianolo (Gast)


Lesenswert?

Guten Tag! Ich bin zu faul mir ein Klavierstück herauszuhören und 
deshalb wollte ich mich mal an der FFT versuchen. Nun hab ich noch nicht 
alles daran verstanden, hätte allerdings mal eine Frage. Der höchste Ton 
auf einem Klavier ist ja ein A mit der Frequenz 4186,01 Hz. Das heißt 
doch, dass eine Abtastrate von 2*4186,01 Hz = 8372,02 Hz ausreicht oder 
hab ich da was am Abtasttheorem falsch verstanden?
Falls das Stimmt, warum haben dann zum Beispiel mp3s eine Abtasrate von 
44100 Hz? Das scheint mir dann ja sehr hoch zu sein wenn ich mir anhöhre 
wie hoch schon das A ist.

von Stefan M. (Gast)


Lesenswert?

Schau Dir mal das Spektrum einer Klaviernote an. Es sind nicht nur reine 
Sinus-Töne, die das Klavier erzeugt.

mfg, Stefan

von Pianolo (Gast)


Lesenswert?

Aber wenn die Obertöne bei der Analyse "abgeschnitten" werden wäre es ja 
nicht schlimm, da ich diese ja eh nicht erkenne will. Oder funktioniert 
das so nicht?

von nicht-"Gast" (Gast)


Lesenswert?

>Guten Tag! Ich bin zu faul mir ein Klavierstück herauszuhören

schon mal was von Melodyne gehört? Viel Spaß damit.

von faustian (Gast)


Lesenswert?

Weil mp3s auch geeignet sind fuer absolut klavierlose Musik. Die 22050 
Hz Bandbreite ergeben sich aus dem Frequenzgang des Ohres, plus ein 
bisschen Sicherheitsabstand (Wenn Du wirklich bis ganz knapp an die 
obere Granzfrequenz filtern willst beim Aufnehmen brauchst Du einen 
ziemlich schwierig zu implementierenden (und erst recht in Masse zu 
produzierenden! Abgleich notwendig....) analogen Filter.

von Pianolo (Gast)


Lesenswert?

Ok dann hab ich es aber soweit verstanden denke ich. Danke für die 
Antworten

von Tilo (Gast)


Lesenswert?

Die Oberwellen sind auch noch zu berücksichtigen. Da es sich nicht nur 
im saubere Sinusschwingungen handelt, wird es schwer herauszufiltern, ob 
es sich im z.B. um ein c' oder g' handelt.
Eine FFT wird auch deshalb nicht so der bringer sein, weil der Zeitliche 
zusammenhang nicht mehr so klar ist. Da sind short time fourier, 
wavelets etc besser.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Wie schon genannt, Melodyne ist das richtige Stichwort:
http://www.heise.de/newsticker/meldung/Melodyne-Erfinder-Peter-Neubaecker-Was-der-Mensch-kann-965452.html
gibts allerdings nicht für umsonst, da stand irgendwo etwas von 333€ 
oder noch mehr

von P. M. (o-o)


Lesenswert?

Tilo Lutz schrieb:
> Eine FFT wird auch deshalb nicht so der bringer sein, weil der Zeitliche
> zusammenhang nicht mehr so klar ist. Da sind short time fourier,
> wavelets etc besser.

Oh ja...da habe ich mir gewaltig die Finger verbrannt für einen 
einfachen grafischen Spektrumanalysator. Mit FFT sieht das ganze höchst 
unmusikalisch aus, z.B. sind pulsierende Bässe überhaupt nicht als 
springende Balken zu sehen o.ä. Falls jemand Erfahrung mit sowas hat, 
wäre ich um ein paar Tipps sehr froh ;-)

von Ralf (Gast)


Lesenswert?

Die FFT ist doch die Basis für jeden Spektrumanalyzer und da springen 
die Bässe aber ganz gewaltig.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Die Fouriertransformation und auch die FFT, sind mathematische 
Verfahren, bei denen zunächst eine bestimmte Datenmenge in einer 
bestimmten Zeit gesammelt wird. Erst dann wird berechnet – und zwar die 
Amplituden- und Phasenanteile- aller in dieser Erfassungszeit 
vorkommenden Frequenzen. Die Information wann eine spezielle Frequenz 
aufgetreten ist, ist im Spektrum nicht mehr enthalten, d.h. die 
zeitliche Tonauflösung geht verloren.
Beispiel:
Abtastrate 1 ms
Anzahl der Daten pro FFT Berechnung 2048
Messzeit 2.048 Sekunden
Wenn ich also innerhalb dieser Messzeit von 2 Sekunden 10 
unterschiedliche Töne habe, kann ich im Spektrum zwar ihre Frequenz 
bestimmen, aber nicht wann genau sie innerhalb der 2 Sekunden 
aufgetreten sind.

von J. S. (engineer) Benutzerseite


Lesenswert?

> ber nicht wann genau sie innerhalb der 2 Sekunden aufgetreten
Das kann man dann wieder, wenn man mehrere FFTs interlaced, also auf 
verschiedene Bereiche der Samples bezieht und aus der Amplitude 
ermittelt, welche am Besten getroffen hat.

Für ein gute Audio FFT zu MEszwecken braucht man eine sehr hohe 
Frequenzauflösung, wenn man Feinheiten abbilden will, da die Instrumente 
leicht gegeneinander verstimmt sind und nicht auf den chromatischen 
Frequenzen sitzen, die im Buch stehen.

Um kleine Hübe leicht zu erkennen, sind Auflösungen von 0,5 Hz nötig -> 
2*32k FFT @ 31,5kHz. Für so ein typisches Audiospektrum reichen 8k@44,1

von Jen Aer (Gast)


Lesenswert?

Jürgen Schuhmacher schrieb:
>> ber nicht wann genau sie innerhalb der 2 Sekunden aufgetreten
> Das kann man dann wieder, wenn man mehrere FFTs interlaced, also auf
> verschiedene Bereiche der Samples bezieht und aus der Amplitude
> ermittelt, welche am Besten getroffen hat.
Das bringt einem aber noch nicht die hüpfenden Bässe.

>Für so ein typisches Audiospektrum reichen 8k@44,1
Die Audioprogramme, die ich kenne gehen da aber eher in Richtung 16k, 
192kHz. Wieso wohl?

von J. S. (engineer) Benutzerseite


Lesenswert?

Jen Aer schrieb:
> Jürgen Schuhmacher schrieb:
>>> ber nicht wann genau sie innerhalb der 2 Sekunden aufgetreten
>> Das kann man dann wieder, wenn man mehrere FFTs interlaced, also auf
>> verschiedene Bereiche der Samples bezieht und aus der Amplitude
>> ermittelt, welche am Besten getroffen hat.
> Das bringt einem aber noch nicht die hüpfenden Bässe.
Es ging bei diesem Beispiel ja um eine hochgenaue Messung. Um dies zu 
realisieren braucht die FFT eine gewisse Datenzahl. Will man nur den 
Frequenzbereich grob abtasten, geht es auch mit weniger. In jedem Fall 
lässt sich der von Dir gewünschte Effekt des "hüpfenden Basses" dadurch 
erzeugen, dass man die Abtastperiode der Anzeige (ms-Bereich) anpasst 
und genügend stark überlappt. Die erfassten Bassfrequenzen drängen sich 
dann mal mehr und dann wieder weniger in das FFT-Fenster. Wichtig ist 
dabei aber auch eine gute Fensterfunktion! Blackman-Harris wäre das zu 
nennen.

>>Für so ein typisches Audiospektrum reichen 8k@44,1
>Die Audioprogramme, die ich kenne gehen da aber eher in Richtung 16k,
>192kHz. Wieso wohl?
Nun die professionellen Tools arbeiten sogar mit 128k-FFTs. Das müssen 
sie allerdings auch, weil mit steigender Abtastfrequenz auch die 
Punktezahl steigen muss, sonst geht Auflösung verloren.

Dein Beispiel 192/16k wäre dann schon ungenauer, als meine 44,1k/8k.

: Bearbeitet durch User
von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Ich komme von dem Thema

Beitrag "Frequenzen erkennen und Abweichungen messen"

hierher und hätte dazu eine Frage:

Offenbar hat der TE dasselbe Problem, eine Frequenz genau zu bestimmen.

Wie berechne ich exakt die benötigte Länge der FFT, um eine bestimmte 
Frequenzauflösung zu bekommen?

Kann ich einfach sagen 100 kHz Abstastrate durch 100 Punkte sind 1 Hz?

Wie wird dann z.B. 3.75 einsortiert? Sind das 75% bei 4Hz und 25% bei 3 
Hz?

Wie genau ist der Zusammenhang zwischen der angesprochenen Überlappung 
der einzelnen FFTs und der Auflösung?

Ich möchte das gerne mit einer FFT lösen und hätte auch genügend Zeit, 
da es nicht in Echtzeit laufen muss. Ich brauche zwar kontinuierliche 
Werte, aber Latenz wäre akzeptabel.

von Mark B. (markbrandis)


Lesenswert?

Martin K. schrieb:
> Kann ich einfach sagen 100 kHz Abstastrate durch 100 Punkte sind 1 Hz?

Im Prinzip ja. Wobei weder 100 kHz eine übliche Abtastrate für Audio 
sind (eher 96 kHz), noch 100 Punkte üblich für eine FFT sind (hier hat 
man Zweierpotenzen).

von Martin K. (mkmannheim) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das ist schon klar, ich kann mir bei mir aber die Rate ausuchen. Ich 
denke, ich könnte auch 102,4 kHz hinbekommen, um 1024 FFTs zu machen und 
bei 0,1 Hz zu landen.

Wichtiger wäre die andere Frage nach der Verteilung einer Frequenz.

Wir haben heute mit dem Analyzer gemessen und die Sache sieht eher nicht 
so aus, als ob es eine eindeuttige oder leicht zu analysierende 
Zuordnung der Frequenzen gäbe. Es sieht etwa so aus:

Eine FFT mit 0,1 Hz Auflösung offline sieht für 80,1 Hz genauso aus wie 
bei 80.0 Hz - nur ist die Kurvenform etwas verschoben.

Schwerpunktbestimmung liefert falsche Werte.

Wie geht man da vor?

von Nop (Gast)


Lesenswert?

Wenn Du einfach nur immer 1024 aufeinanderfolgende Werte des Signals im 
Zeitbereich durch eine FFT ziehst, dann ist Deine Fensterfunktion im 
Zeitbereich eine Rechteckfunktion. Will sagen, im Frequenzbereich 
faltest Du mit einer si-Funktion. Das erklärt, wieso ein Sinus 
"verschmiert" aussieht, wenn er nicht exakt auf einem der FFT-Bins 
liegt. Sprich, wenn in 1024 Werte im Zeitbereich keine ganzzahligen 
Perioden des Sinus reinpassen.

von mads (Gast)


Lesenswert?

Hallo,

>
> Wie berechne ich exakt die benötigte Länge der FFT, um eine bestimmte
> Frequenzauflösung zu bekommen?
>
> Kann ich einfach sagen 100 kHz Abstastrate durch 100 Punkte sind 1 Hz?
>
> Wie wird dann z.B. 3.75 einsortiert? Sind das 75% bei 4Hz und 25% bei 3
> Hz?

Leider nicht, du holst dir da, wenn nicht schön periodisch in Bezug aufs 
Sample-Window (also mit Sprüngen) Artefakte, die du nur mit genannter 
Fensterung kleinkriegst, aber dabei geht natürlich Information verloren.
Ansonsten ist deine Annahme so in etwa korrekt, kommt noch der Faktor 
zwei rein (positive/negative Frequenzen) und N=Zweierpotenz gilt auch 
noch für die FFT.

Mal ganz davon abgesehen ist das immer eine Heisenbergsche Geschichte, 
die zeitliche Auflösung der Frequenz geht invers mit der Auflösung im 
Frequenzraum. Für eine gewisse Frequenz kannst du schon die optimale 
Window-Grösse bestimmen, aber für die andern nimmer.

>
> Wie genau ist der Zusammenhang zwischen der angesprochenen Überlappung
> der einzelnen FFTs und der Auflösung?
>
> Ich möchte das gerne mit einer FFT lösen und hätte auch genügend Zeit,
> da es nicht in Echtzeit laufen muss. Ich brauche zwar kontinuierliche
> Werte, aber Latenz wäre akzeptabel.

Ich würde mir mal die Sliding DFT-Methoden ansehen. Für optimale 
laufende Detektion einer Frequenz oder mehrerer Frequenzen ist die ev. 
passender.
Auch mit ganz einfachen IIR-Filtern ist man u.U. schneller und kann 
genau solche Frequenzabweichungen in wenigen Prozent sehr gut bestimmen.

Eine Abweichung von einer Referenzfrequenz kannst du als solche ansehen, 
oder als laufende Phasenschieberei. Hatte nich mal jemand schon die 
digitale PLL genannt? Auch da musst du natürlich wieder ein Fenster 
definieren (sinnvolle Intervalle in Bezug auf die Änderung der 
Frequenz), aber nicht dasselbe für alle dich interessierenden 
Frequenzen.
Bei der Sliding-Geschichte kannst du rechnerisch viel Information 
mitführen (Frequenz/Phasen-Redundanzen a la Wavelet), die dir 
nachträglich erlaubt, die wichtigen Details zu erkennen.
Grade bei Obertönen oder speziell geformten Radar-Pings erleichtert das 
eine Erkennung z.b. eines Klaviertons beziehungsweis 
Materialcharakteristik
oder sogar Flugzeugform. Das was Fledermäuse schon lange können :-)

FFT ist für eine breitbandige Diagnose gut, aber für solche Zwecke muss 
man gehörig frickeln und kommt mit der Standardlösung (Matlab u.a. 
Libraries) nicht unbedingt weiter.

von Horst (Gast)


Lesenswert?

Martin K. schrieb:
> Wie geht man da vor?

Naja, wenn man sich die Kurve anschaut würde ich ja als erstes mal 
Gauß-fitting machen und darüber die Mitte der Verteilung bestimmen.

Was aber hier noch garnicht genannt wurde, ist die 
Wigner-Ville-Distribution. Liefert einen guten Kompromiss aus Zeit- und 
Frequenzauflösung. Leider gibt es dabei Interferenzphänomene, die 
gegebenenfalls störend sein könnten. Dann kann man wieder 
Fensterfunktionen anwenden, und ist dann bei der Reduced Intereference 
Distribution gelandet.

von Programmierer (Gast)


Lesenswert?

Martin K. schrieb:
> Wie geht man da vor?

Du musst vor der FFT eine Fensterfunktion anwenden. Ein guter Start ist 
das Hamming-Fenster.

Außerdem solltest/kannst Du mehrere FFTs überlappend kombinieren, z.B. 
50%. Du brauchst dann natürlich entsprechend mehr Sampling-Material.

von Spektra (Gast)


Angehängte Dateien:

Lesenswert?

So sieht ein Klavier im Spektrum aus.

von Dergute W. (derguteweka)


Lesenswert?

Spektra schrieb:
> So sieht ein Klavier im Spektrum aus.

Ein Klavier, ein Klavier - Mutter wir danken dir!
https://www.youtube.com/watch?v=Lbz5sy8jPXA

Gruss
WK

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Hallo,

naja, das sieht doch sehr geregelt aus, würde ich sagen. Schön die 
Harmonischen und auch das Abklingen der Saiten sieht man sehr schön. 
Interessant.

Ich habe hier
http://privatfrickler.de/der-klang-der-schnecken-beim-fressen/

vor langem mal ein solches Spektrogramm der Fressgeräusche von 
Weinbergschnecken gemacht, deutlich weniger aussagekräftig leider, im 
Vergleich zu dem Klavier sieht man allerdings deutlich weniger Sustain 
:-)

Vlg

 Timm

von J. S. (engineer) Benutzerseite


Lesenswert?

Spektra schrieb:
> So sieht ein Klavier im Spektrum aus.

Da sind aber recht aggressive Obertöne im 3k+ Bereich bei den 
Basssaiten. Ungewöhnlich. Ist das ein echtes Klavier oder was aus dem 
Sampler? Oder klingt da gleichzeitig der Diskant mit?

von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Spektra schrieb:
> So sieht ein Klavier im Spektrum aus.
Fensterung und so ist mir bekannt. Die Frage ist überhaupt, wie genau 
man auflösen muss, um einen Klavierton eindeutig zu identifizieren.

Horst schrieb:
> Was aber hier noch garnicht genannt wurde, ist die
> Wigner-Ville-Distribution. Liefert einen guten Kompromiss aus Zeit- und
> Frequenzauflösung.
Danke für den Tipp.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.