Untersuchung verschiedener Verfahren zur Grundfrequenzbestimmung mit Einstellung einer Applikation zur Midi-Konvertierung
- Art: Diplomarbeit
- Autor: Stefan Huber
- Abgabedatum: Juni 2003
- Umfang: 125 Seiten
- Dateigröße: 1,3 MB
- Note: 1,7
- Institution / Hochschule: Hochschule für Technik und Wirtschaft Berlin Deutschland
- ISBN (eBook): 978-3-8324-7698-4
-
ISBN (Paperback) :
978-3-8324-7698-4 P - ISBN (CD) :978-3-8324-7698-4 CD
- Sprache: Deutsch
- Prämierung:
- Arbeit zitieren: Huber, Stefan Juni 2003: Untersuchung verschiedener Verfahren zur Grundfrequenzbestimmung mit Einstellung einer Applikation zur Midi-Konvertierung, Hamburg: Diplomica Verlag
- Schlagworte: Wave, PDA, Tiefpass, Spektrum, Korrelation
In den Warenkorb
74,00 €
Diplomarbeit von Stefan Huber
Einleitung:
In den letzten Jahrzehnten wurden viele Verfahren zur Grundfrequenzbestimmung erfunden. Es wurden verschiedene Versuche unternommen, die Grundfrequenz eines periodischen bzw. pseudoperiodischen akustischen Signals zu bestimmen. Dabei kommen Algorithmen im Zeitbereich sowie im Frequenzbereich zur Transformation zum Einsatz.
Die physikalischen Ansätze der Algorithmen weisen Stärken aber auch Schwächen auf. Keiner davon ist in der Lage, hundertprozentig akkurat und zuverlässig zu arbeiten. Bis heute existiert keine Formel, kein Modell und kein universeller Algorithmus, der die wahrgenommene Tonhöhe eines komplexen Tonales genau und fehlerlos bestimmen kann.
In dieser Arbeit werden verschiedene Verfahren zur Grundfrequenzbestimmung untersucht und versucht, die gewünschten Eigenschaften aller unterschiedlichen Algorithmen zu kombinieren, um ein bestmögliches Resultat bei einer Wandlung von analogen bzw. digitalisierten Audio-Signalen in das komprimierende Audio-Format Midi zu erzielen.
Die Idee dazu entstand aus der alltäglichen Praxis heraus. Beim Komponieren von Musik hat man schnell einen einfachen Rhythmus aus Schlagzeug und Bass zusammengestellt, die Komposition komplexerer, bereits im Kopf vorgedachter Melodien ist jedoch schwierig und zeitaufwendig.
Bei Melodieverläufen, die aus mehr als fünf Noten bestehen, kann man mittels einer Gitarre oder einem Klavier meist schnell die ersten drei bis fünf Noten bestimmen. Bei höherer Notenanzahl hören sich die ersten Noten oft nach dem gewünschten Melodieverlauf an, weitere Noten stehen aber oftmals in Dissonanz zur anfänglichen Notensequenz. Der bereits erstellte Melodieverlauf aus den ersten Noten muss wieder verworfen werden, um die im Gehirn vorhandene Melodie komplett im Einklang aller Noten zueinander komponieren zu können.
So erhöht sich der Zeitaufwand beim musikalischen Komponieren exorbitant, die anfängliche Euphorie durch das im Kopf gespeicherte Musikstück verliert sich mit der Zeit im Komponieren der gewünschten Melodie. Da es dem Menschen um ein Vielfaches leichter fällt, die Melodie im Kopf zu singen, zu pfeifen oder zu summen, soll die Applikation zur Midi-Konvertierung dem Musiker helfen, schnell und einfach ohne unnötige Hindernisse sein Ziel zu erreichen.
Der Fokus der Diplomarbeit liegt bei der Verarbeitung monophoner Audiosignale, da sich die Erkennung von mehreren Melodieverläufen, zusätzlichen Rhythmusstrukturen und anderen polyphonen Sounds weitaus schwieriger gestaltet. Die erstellte Anwendung Pitch2Midi ist auf menschlichen Gesang optimiert, kann aber auch zur Konvertierung von Instrumentenklängen angewandt werden.
Inhaltsverzeichnis:
| 1. | Einleitung | 6 |
| 1.1 | Schall | 7 |
| 1.2 | Erzeugen von Sprache und Gesang | 7 |
| 1.3 | Wahrnehmung durch Hören | 8 |
| 1.4 | Aufbau von Tönen und Klängen | 9 |
| 1.5 | Klangeigenschaften | 11 |
| 1.6 | Auftretende Probleme bei der Grundfrequenzerkennung | 11 |
| 2. | Technische Grundlagen | 14 |
| 2.1 | Digitales Audio | 14 |
| 2.2 | Filter | 15 |
| 2.3 | Das Dateiformat Wave | 18 |
| 2.3.1 | Das Dateiformat RIFF | 18 |
| 2.3.2 | Chunk Architektur | 18 |
| 2.3.2.1 | Wave- oder Header-Chunk | 19 |
| 2.3.2.2 | Format-Chunk | 19 |
| 2.3.2.3 | Daten-Chunk | 20 |
| 2.3.2.4 | Waveheader | 20 |
| 2.3.2.5 | Weitere Chunkarten | 21 |
| 2.3.3 | Speicheranordnung | 22 |
| 2.4 | Der Standard MIDI | 22 |
| 2.4.1 | Vergleich mit Waveformat | 22 |
| 2.4.2 | MIDI Hardware | 23 |
| 2.4.3 | MIDI Systeme | 24 |
| 2.4.4 | MIDI Sequenzer | 25 |
| 2.4.5 | MIDI Noten | 26 |
| 2.4.6 | MIDI Dateien | 27 |
| 2.4.6.1 | Header-Chunk | 28 |
| 2.4.6.2 | Zeitformat | 28 |
| 2.4.6.3 | Track-Chunk | 28 |
| 2.4.7 | MIDI Events | 29 |
| 2.4.7.1 | Status- und Datenbytes | 29 |
| 2.4.7.2 | Befehlskategorien | 30 |
| 2.4.7.3 | NoteOn Befehl | 30 |
| 2.4.7.4 | NoteOff Befehl | 31 |
| 2.4.7.5 | Programm Change Befehl | 31 |
| 2.4.7.6 | End of Track Befehl | 33 |
| 2.4.7.7 | MIDI Text und Copyright | 33 |
| 2.4.7.8 | Noten- und Pausenlängen | 33 |
| 2.4.8 | Delta-Time Kommando | 33 |
| 2.4.9 | MIDI Tempo | 34 |
| 2.4.10 | General MIDI | 35 |
| 2.4.11 | Little und Big Endian Datenformate | 36 |
| 2.5 | Faltung | 37 |
| 2.6 | Korrelation | 38 |
| 2.7 | Fourier-Transformation | 39 |
| 2.7.1 | Fourier-Integral | 39 |
| 2.7.1.1 | Definition | 39 |
| 2.7.1.2 | Veranschaulichung | 40 |
| 2.7.1.3 | Inverse Fourier-Transformation | 42 |
| 2.7.1.4 | Parseval´sches Theorem | 42 |
| 2.7.2 | Fourier-Reihe | 43 |
| 2.7.3 | Diskrete Fourier-Transformation, DFT | 43 |
| 2.7.3.1 | Definition | 43 |
| 2.7.3.2 | Komplexe Koeffizienten | 44 |
| 2.7.3.3 | Korrelation | 45 |
| 2.7.3.4 | Symmetrie | 46 |
| 2.7.3.5 | Zeit- und Frequenzauflösung | 46 |
| 2.7.4 | Inverse DFT | 47 |
| 2.7.5 | Fast Fourier-Transformation, FFT | 47 |
| 2.7.5.1 | Schnelle Berechnung | 47 |
| 2.7.5.2 | Zerlegung der Transformationslänge | 48 |
| 2.7.5.3 | Architekturen der FFT | 49 |
| 2.7.5.4 | Butterfly | 50 |
| 2.8 | Analyse | 51 |
| 2.9 | Energieberechnung | 51 |
| 2.10 | Fensterung aufgrund Spektralverbreiterung | 52 |
| 3. | Verfahren zur Grundfrequenzbestimmung | 54 |
| 3.1 | Zeitbereich | 54 |
| 3.1.1 | Nulldurchgangsrate | 54 |
| 3.1.2 | Spektraltransformation mittels Bandpässen | 56 |
| 3.1.2.1 | Definition | 56 |
| 3.1.2.2 | Parallelschaltung | 56 |
| 3.1.2.3 | Umsetzung | 56 |
| 3.1.2.4 | Nachteile | 57 |
| 3.1.2.5 | Maximumerkennung | 57 |
| 3.1.3 | Autokorrelation | 59 |
| 3.1.3.1 | Einführung | 59 |
| 3.1.3.2 | Formel | 59 |
| 3.1.3.3 | Berechnung | 59 |
| 3.1.3.4 | Bestimmung der Grundperdiode | 60 |
| 3.1.4 | Betragsdifferenzfunktion AMDF | 62 |
| 3.2 | Zeit- und Frequenzbereich kombiniert | 63 |
| 3.2.1 | Autokorrelation im Zeit- und Frequenzbereich | 63 |
| 3.2.1.1 | Vorteile | 64 |
| 3.2.1.2 | Nachteile | 64 |
| 3.2.1.3 | Autokorrelation mit Center-Clipping | 65 |
| 3.2.2 | Cepstrum | 66 |
| 3.3 | Frequenzbereich | 68 |
| 3.3.1 | Spektrale Kompression | 68 |
| 3.3.2 | Spektrale Autokorrelation | 71 |
| 4. | Pitch2Midi Konverter | 73 |
| 4.1 | Philosophie | 73 |
| 4.2 | Dialogumgebung und Klassenhierarchie | 73 |
| 4.3 | Benutzerführung | 74 |
| 4.4 | Definitionen.h | 77 |
| 4.5 | Die Klasse Wave | 78 |
| 4.5.1 | Headerdatei | 78 |
| 4.5.2 | Funktionen | 79 |
| 4.5.2.1 | Wavedatei öffnen und lesen | 80 |
| 4.5.2.2 | Wavedatei normalisieren | 81 |
| 4.5.2.3 | Dateipfad speichern | 82 |
| 4.5.2.4 | Wavedatei erstellen | 82 |
| 4.5.2.5 | Wavedatei prüfen | 83 |
| 4.5.2.6 | FOURCC Feld kopieren | 83 |
| 4.5.2.7 | Tiefpass-Filterung | 83 |
| 4.5.2.8 | Fensterfunktionen | 86 |
| 4.6 | Die Klasse Midi | 87 |
| 4.6.1 | Headerdatei Midi.h | 88 |
| 4.6.2 | MIDI Notenberechnung | 88 |
| 4.6.3 | Initialisierung im Konstruktor | 89 |
| 4.6.4 | Funktionen | 90 |
| 4.6.4.1 | Word Bit-Reverse | 90 |
| 4.6.4.2 | DoubleWord Bit-Reverse | 90 |
| 4.6.4.3 | Deltatime schreiben | 91 |
| 4.6.4.4 | Zeit- und Frequenzauflösung setzen | 92 |
| 4.6.4.5 | MIDI-Datei schreiben | 92 |
| 4.7 | Die Klasse FourTrans | 93 |
| 4.7.1 | Komplexe Arithmetik | 93 |
| 4.7.2 | Koeffizienten in vorberechneten Arrays | 94 |
| 4.7.3 | Die Funktion Bit-Reverse | 95 |
| 4.7.4 | Die Funktionen FFT und InverseFFT | 95 |
| 4.8 | Spektrale Gewichtung | 96 |
| 4.8.1 | Erklärung | 96 |
| 4.8.2 | Implementation | 97 |
| 4.9 | Klassen zur Grundfrequenzbestimmung | 98 |
| 4.9.1 | MIDI Konvertierung | 98 |
| 4.9.2 | Die Klasse AMDF | 101 |
| 4.9.3 | Die Klasse Autokorrelation | 102 |
| 4.9.3.1 | MIDI Konvertierung | 102 |
| 4.9.3.2 | PufferProzess der schnellen AKF | 102 |
| 4.9.3.3 | PufferProzesse der geklippten AKF | 103 |
| 4.9.3.4 | PufferProzess der AKF im Zeitbereich | 104 |
| 4.9.3.5 | PufferProzess der AKF im Frequenzbereich | 104 |
| 4.9.4 | Die Klasse Cepstrum | 105 |
| 4.9.5 | Die Klasse ErstesMaxima | 105 |
| 4.9.6 | Die Klasse FrequenzAbstand | 106 |
| 4.9.7 | Die Klasse SpektraleKompression | 107 |
| 4.9.8 | Die Klasse SpektralerIntervall | 107 |
| 4.10 | Die Pitch2Midi Dialog-Klasse | 107 |
| 4.10.1 | OnKonvertieren() | 107 |
| 4.10.2 | Kombinierer | 110 |
| 4.11 | MFC-spezifische Hinweise | 111 |
| 4.11.1 | Schrift und Hintergrund in Dialogen färben | 111 |
| 4.11.2 | Mehrere Registerkarten | 111 |
| 4.11.3 | Bitmap Buttons | 114 |
| 4.11.4 | Textausgabe | 115 |
| 4.11.5 | CFileDialog | 115 |
| 4.11.5.1 | Wave öffnen | 115 |
| 4.11.5.2 | Speichern unter | 116 |
| 4.11.6 | Globaler Zugriff | 116 |
| 4.11.7 | Normalisierungs-Dialog | 117 |
| 5. | Auswertung | 117 |
| 6. | Zusammenfassung | 120 |
| 7. | Literaturverzeichnis | 121 |
Die resultierenden Audiodaten weisen wenig hochfrequente Signalanteile und wenig Signale niedriger Amplitude auf. Übrig geblieben sind amplitudenstarke Signalanteile niederer Frequenz, die den bisherigen Signalverlauf massgeblich beeinflussten und somit grösstenteils von der Grundschwingung stammen. Weitere Anteile im beschnittenen Ergebnis sind auf Oberwellen der Grundperiode zurückzuführen. Vorteil gegenüber der normalen Autokorrelation ist die bessere Erkennbarkeit der AKF-Koeffizienten und somit der Grundfrequenz. Die Amplituden der Maximalwerte sind stärker voneinander getrennt und lassen sich leichter detektieren. Vor allem die Unterscheidung zwischen der Grundperiode und der Schwingungsperiode des ersten Formanten wird verbessert. Bei der normalen Autokorrelation traten zwischen den Signalspitzen weitere Maximalwerte auf, die die Grundfrequenzbestimmung erschwerten. Der Schwellwert sollte für jedes Analysefenster neu berechnet werden, um Lautstärkeunterschiede im Signalverlauf auszugleichen. Wird ein konstanter Schwellwertpegel für die gesamte Analyse verwendet, verschlechtert dies das Ergebnis. Bei zu h ohen Threshold-Werten werden Datenblöcke niedriger Amplitude nicht bewertet. Bei zu niedrigem Threshold werden hochfrequente Anteile mitbewertet, was der normalen Autokorrelations-Funktion entspricht. Ein getrennte Berechnung der Schwellwerte im positiven und negativen Bereich und eine getrennte Beschneidung der Signalspitzen in beiden Bereichen brachte keine nennenswerte Verbesserung gegenüber der Verwendung eines Threshold-Wertes. [...]
Eine verbessernde Variante der Autokorrelation erreicht man durch Center-Clipping, der Abtrennung der Signalspitzen überhalb eines Schwellwertes im Zeitbereich vor der Transformation in den Frequenzbereich. Alle Werte unterhalb des Schwellwertes werden Null gesetzt. Von allen Werten überhalb des Schwellwertes wird der Schwellwert-Betrag abgezogen, sodass sich die resultierende Nullinie aus den Schwellwertlinien im positiven und negativen Bereich ergibt. Die Threshold-Werte werden für positive und negative Amplitudenwerte getrennt berechnet, da Audio-Signalen beim Aufnehmen oftmals eine Gleichspannung hinzugefügt wird. Diese bewirkt die Anhebung oder Absenkung aller Amplituden um den gleichen Gleichspannungsbetrag, sodass Amplitudenspitzen im einen Bereich im Mittel höher sind als im entgegengesetzten Bereich. Der Signalausschnitt in Abbildung 3.1.3.4 a) ergibt bei Abtrennung aller Samples unterhalb des positiven oder negativen Threshold-Wertes folgenden Signalverlauf. [...]
Bei Signalen mit hohem Obertongehalt können harmonische Vielfache der Grundfrequenz die abschliessende Auswertung der AKF-Koeffizienten behindern, da nach dem ersten Maximum, entsprechend der Grundfrequenz, weitere Maxima folgen, die gegenüber dem ersten Maximum kaum abgeschwächt sind. Sind die Obertöne in ihrer Amplitude sogar noch stärker als die Grundfrequenz, kann dies zu Fehlern führen. Insbesondere das zweite Maximum im Spektrum, der am Besten erkennbare Formant bei Sprache, verursacht diese Schwäche des Verfahrens. Daher neigt die Autokorrelation zu falschen Interpretationen des Klangs, wodurch nur die halbe Frequenz anstatt der ursprünglichen Frequenz als erkannte Frequenz ausgegeben wird. Dieses Fehlverhalten ist nicht nur bei Übergängen zwischen einzelnen Noten und Frequenzbereichen der Fall, sondern auch während einer Notenerkennung, wenn mehrere Abtastintervalle hintereinander beispielsweise 182 Hertz bewerten, ein Abtastintervall 90 Hertz ergibt, und die folgenden wiederum 182 Hertz ausgeben. Eine offensichtliche Note von 182 Hz wird von einer Note mit 90 Hertz unterbrochen, was in einer unschönen Melodieverformung resultiert. Inharmonische Klangerzeuger mit physischen Vibratoren, wie etwa eine AkustikGitarre, erzeugen Sounds, deren Obertöne im Bereich der theoretischen Vielfachen liegen, den exakten Wert aber verfehlen. Dies erschwert das Erkennen hoher Töne und erzeugt Fehler bei Durchführung einer Autokorrelation. Die Autokorrelation ist eine gerade Funktion und gilt somit auch für den negativen Bereich. Es ist somit nicht von Tragweite, ob das zweite Analysefenster nach links oder rechts verschoben wird. r(n)=r(- n) [...]
In den Warenkorb
74,00 €
Link zur Arbeit:
http://www.diplom.de/ean/9783832476984
Arbeit zitieren:
Huber, Stefan Juni 2003: Untersuchung verschiedener Verfahren zur Grundfrequenzbestimmung mit Einstellung einer Applikation zur Midi-Konvertierung, Hamburg: Diplomica Verlag
Schlagworte:
Wave, PDA, Tiefpass, Spektrum, Korrelation



