www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Automatisierte Gitarrenmelodieerkennung am PC


Autor: Michi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter K. (peter26)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans Mayer (hansilein)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter K. (peter26)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.