Guten Abend, Ich habe ein wave Datei die verschiedene Gitarrennoten enthält, jetzt will ich die Noten einzeln ausschneiden, so das ich ermitteln kann wielange die Note gespielt wurde und wielange die Pausen waren. Ich habe die Wav Datei bereits mit 8Khz abgetastet. Jedoch sind meine Versuche die Noten zu filtern mehr schlecht als recht. Ich habe gemwessen inwieweit die Pauseschwingungen auschlagen. Danach habe ich nach dem ersten Maximum gesucht im Signal und dann die darauffolgenden Werte mit den Pausenwerten verglichen, sobald die Werte eine gewisse Zeit nicht über die Pausegrenze kamen, hatte ich eine Note, Jedoch liefert der Algo nur fehlerhafte Ergebnisse. Dazu müsste es doch ein Algorithmus geben? Inwiefern hilft mir die Autokorrelationsfunktion?
Hi Michi, wenn du dein Signal Fourier transformiert erhälst du ein Frequenzspektrum. Über die Zeit betrachtet solltest relativ leicht die Dauer einzelner Noten, welche ja auch eine(mehrere) Frequenz(en) ist, erkennen können.
ja hmm ich will halt später anaysieren aus welchen bestandteilen die Note (akkord, Otave) besteh, dazu benutze ich die FFT, mache ich diese aber übers ganze Signal bekomm ich überallstörfrequenzen rein!
.. was ich vorhin meine nennt sich Spektrogramm. Kannst du vielleicht ein kleines Beispiel geben? vielleicht ein Bild oder Ähnliches
Michi schrieb: > ja hmm ich will halt später anaysieren aus welchen bestandteilen die > Note (akkord, Otave) besteh, dazu benutze ich die FFT, mache ich diese > aber übers ganze Signal bekomm ich überallstörfrequenzen rein! Womöglich ist die Abtastrate mit 8 kHz zu niedrig? Wie sieht es mit der Fensterung aus?
Also das Signal ist aufgenommen mit 8kHz, deshalb taste ich es auch miot 8Khz ab! Ich wills nicht über die FFT machen, da ich es da schwerer finde es rauszufiltern, weil ab welchem Ausschlag ist die Note angeschlagen und ab welchem Wert hört sie auf Ich wills im zeitdiskreten Bereich machen, da man da schon deutlich sieht wann eine Note anfängt und wann aufhört. Irgendwie kann ich keine Anhänge hochladen!
Bingo. Abtasttheorem beachten, dann sollte es klappen. Um Anhänge hochzuladen, muss man glaube ich im Forum angemeldet sein?
Ein bischen Werbung in eigener sache, schau mal hier, da siehst Du was gemeint ist: www.christoph-lauer.de Ich kann dir aber jetzt schon sagen das es mit einfacher Short-Time-Fourier-Transfomation alleine nicht getan ist.
Hab da mal so was mit hidden markov models (HMMs) gemacht. Einfach mal googeln. mfg
Hi ... Ich habe mich ein wenig gespielt und eine Signal mit irgendeinem Leadsynth generiert -> timesignal zeigt dir das Signal im Zeitbereich dabei sind die ersten 5 Peaks die interessanten (also die ich wirklich angeschlagen habe) ... die nächste Datei zeigt das Spektrogram (Frequenz/Zeitanalyse) wobei man recht schön die 5 Anschläge bzw. auch die dominante (Grundfrequenz) anhand der dunkelroten Färbung erkennt. Um nun die Anschläge zu detektieren kann man z.b die spectral difference verwenden wobei eigentlich nur die Differenz (zeitlich) nachfolgender Frequenzbins gebildet wird und dann durch Aufsummieren wieder in den Zeitbereich gewechselt wird (Parsevals Theorem) -> http://www.elec.qmul.ac.uk/people/markp/2006/DaviesPlumbley06-eusipco.pdf Im file spectral difference ist dieses dargestellt jedoch immer mittels 2 Peaks d.h einmal der Anschlag und einmal das Loslassen -> d.h du musst dann einfach nur einen geeigeneten Algorithmus anhängen der nach erstem Überschreiten einer Treshold eine flag setzt während dieser Zeit bis zum nächsten Überschreiten das Maximum in der STFT abliest -> also die Grundfrequenz und danach die flag wieder zurücksetzen ... in meinem Plot sind die Detektionen (cyan) gekennzeichnet. lg Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.