Noten aus Audiosignal ausschneiden

Gast #1501347
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?
#1501381
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.
Gast #1501393
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.