Noten aus Audiosignal ausschneiden

Gast #1501347
Lesenswert?

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?
Gast #1501393
Lesenswert?

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!
#1501433
Lesenswert?

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?
Gast #1502677
Lesenswert?

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!
Gast #1502843
Lesenswert?

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.
#1504028
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren