Forum: Digitale Signalverarbeitung / DSP / Machine Learning Automatisierte Gitarrenmelodieerkennung am PC


von Michi (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich bin gerade dabei ein Gitarrenaudiosignal zu analysieren. Ich habe 
das Signal schon abgetastet! Alle 64ms habe ich ein Hamming Fenster 
gebaut mit 512 Abtastwerten. Die Fenster sind überlappend angeordnet. 
Dieses habe ich dann mittels FFT analisiert und danach mit einer 
Spektralanalyse analysiert.

Und da ist mein Porblem, ich kann die Werte nicht interpretieren. Wie 
berechne ich aus diesem Frequenzbild die Grundfrequenz?

Im Anhang habe ich eine PDF welche die einzelnen Frames zeigen wie die 
ersten beiden Fourier Koeffizienten nach der Spektralanalyse aussehen. 
Solltet ihr merh Infos brauchen werde ich sie euch zusenden. Dazu habe 
ich noch das Signal visualisiert. Es sind drei Noten gespielt f, g und 
a!

Mein Ziel ist es die Noten zu filtern, das heißt ich will rausfinden 
wann eine neue Note gespielt wird und wann sie aufhört. Mein Ansatz 
bisher:

Ich schneide die Note ab sobald ein maximum bei einem Frame im ersten 
Fourier Koeffizient auftritt. Aber ich weiß nicht wann die Note aufhört.

Ich hoffe ihr könnt mir helfen.

von Peter K. (peter26)


Lesenswert?

Hi Michi,

Also generell, das Fachgebiet nennt sich "Music Information Retrieval" 
MIR und das was du machst ist eigentlich bekannt unter "Pitch 
detection".

Du kannst das ganze natürlich über recht viele Wege (Algorithmen 
realisiern) ... z.b mit der Autokorrelation -> 
http://cnx.org/content/m11714/latest/ ...
aber ich würde mir einfach einmal das Spektrogramm deines Signals 
anschaun d.h du nimmst dir am besten Matlab und mittels Specgramm kannst 
dir die Frequenzanteile deines Signals über die Zeit anschaun, wobei 
sich hier natürlich -> die dominanteste Frequenz ist dann deine 
Grundfrequenz. Das ganze wird natürlich richtig schwer zu analysieren 
wenn du Akkorde spielst bzw. Effekte auf dem Signal drauf hast.

Wenn du kein Matlab hast ... Audacity ist ein Open Source Recording 
Programm welches auch Spektralanalysetools enthält bzw. gibt es 
natürlich auch scho fertige Tools zur Pitch detection.

Wenn du die Grundfrequenz erhalten hast ... musst du natürlich noch auf 
deine Töne umrechnen ... http://de.wikipedia.org/wiki/Ton (Musik).

Für die Time detection d.h zu welchem Zeitpunkt ein Ton kommt ... kannst 
einfach die Leistung deines Signals berechnen -> Signal^2 und dann mit 
einem Threshold die Startwerte setzen ... wobei natürlich 
berücksichtigen ist das das Anschlagen transient ist und noch nicht 
wirklich die Grundfrequenz enthält ...


lg Peter

von Hans M. (hansilein)


Lesenswert?

Hallo Michi,
soll das ein Echtzeitsystem werden?
Verstehe ich das richtig, Du hast schon die Fourierzerlegung für jeden 
Zeitschritt?
Soll das ganze nur für einzelne Töne, oder auch für Kombinationen davon 
funktionieren?
Was hältst Du davon erstmal mit sinussignalen zu üben?

Grüße,
Hans

von Peter K. (peter26)


Lesenswert?

Hi ...

Hab gerade gesehen das der Link zu der Umrechnung zwischen Töne und 
Frequenzen aus Wikipedia nicht exakt ist ...

also nochmal: http://de.wikipedia.org/wiki/Ton_%28Musik%29

lg Peter

von Michi (Gast)


Lesenswert?

Also danke schonmal für die Antworten.

Das System stellt keinerlei Anforderung an eine Echtzeitanalyse. Ich 
analysiere das Signal das in Wave Form vorliegt.

Ich hab das Signal soweit analysiert und mit der FFT ins 
Frequenzspektrum überführt und dann die Beträge der Fourier 
Koeffizienten berechnet.

Jetzt ist meine Frage wie ich die Werte am besten verwende, da ich 
später Akkorde filtern will.

Minimum Ziel:
- Erkennung einzelner Noten

Wünschenwertes Ergebnis:
- Analyse Akkorde und die zugehörigen Noten
- Ermittlung der Notenwerte(ganze, halbe Note)
- Generierung Notenblatt
- Erkennung der Verzierungen ( Abgedämpft)

Es wäre mir sehr hilfreich wenn ihr mir helfen könnt.

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.