Automatisiertes Motivsuchen in Musikwerken im MusicXML Format

Werbung
Mathematisch-Naturwissenschaftliche Fakultät II
Institut für Informatik
Automatisiertes Motivsuchen
in Musikwerken im MusicXML Format
von Andreas Lehmann
Gutachter:
Prof. Dr. Wolfgang Coy
Prof. Dr. Reiner Kluge
Datum:
12. Juni 2009
Betreuer:
Dr. Jochen Koubek
SELBSTSTÄNDIGKEITSERKLÄRUNG
Ich erkläre hiermit, dass ich die vorliegende Arbeit selbstständig und unter Verwendung der angegebenen Quellen und Hilfsmittel angefertigt habe.
Berlin, den 12. Juni 2009
Andreas Lehmann
2 INHALTSVERZEICHNIS Vorwort ......................................................................................................................................................... 5
1
2
3
4
Musikalische Grundlagen zu Motiven und Motivverarbeitungen ................................................ 7
1.1
Der Motivbegriff ......................................................................................................................... 7
1.2
Motivverarbeitungsformen ...................................................................................................... 11
1.3
Manuelle Suche nach Motiven und Motivverarbeitungen in drei Beispielwerken ......... 15
Das MusicXML-Format ................................................................................................................... 21
2.1
Die Beschreibungssprache MusicXML ................................................................................. 21
2.2
Abbildungsform der Noteninformationen in MusicXML .................................................. 22
2.3
Aufbau einer MusicXML-Datei .............................................................................................. 24
2.4
Validität eines MusicXML-Dokuments je nach Erstellungsart .......................................... 28
Das Konzept des Motivanalysealgorithmus ................................................................................. 31
3.1
Die Idee der Konturanalyse zur Erweiterung des MusicXML-Datenbestands .............. 31
3.2
Konzept zur separaten Abspeicherung der Noteninformationen ..................................... 36
3.3
Systematischer Bezug der Motivverarbeitung zum Originalmotiv .................................... 38
3.3.1
Originalmotiv / Wiederholung ....................................................................................... 38
3.3.2
Imitation ............................................................................................................................. 39
3.3.3
Sequenz .............................................................................................................................. 39
3.3.4
Umkehrung ........................................................................................................................ 42
3.3.5
Krebs .................................................................................................................................. 46
3.3.6
Spiegelkrebs ....................................................................................................................... 50
3.3.7
Intervallweitung ................................................................................................................ 52
3.3.8
Intervallengung ................................................................................................................. 53
3.3.9
Augmentation .................................................................................................................... 54
3.3.10
Diminution ........................................................................................................................ 55
3.3.11
Weitere Formen ................................................................................................................ 56
Der Algorithmus................................................................................................................................ 57
4.1
Das Einlesen und Abspeichern der Quelldaten ................................................................... 57
4.1.1
Einlesen genereller Informationen: Notenschlüssel, Tonart und Taktart ................ 60
4.1.2
Einlesen der Tonhöhe ...................................................................................................... 63
4.1.3
Einlesen und Berechnen der Notenwerte ..................................................................... 66
3 4.2
Problem- und Sonderfälle beim Einlesen aus MusicXML .................................................. 71
4.2.1
Betrachtung von Akkorden vor der Konturanalyse .................................................... 71
4.2.2
Instrumente mit zwei Systemen in MusicXML ........................................................... 74
4.2.3
Überbindungen.................................................................................................................. 77
4.2.4
Punktierte Noten............................................................................................................... 78
4.2.5
Vorschlagsnote .................................................................................................................. 80
4.2.6
Alterationen ....................................................................................................................... 80
4.3
Erweiterung des MusicXML-Datenbestands für die Konturanalyse ............................... 82
4.3.1
Indizierung der Notenlage ............................................................................................... 82
Die chromatische Notenlage ....................................................................................................... 82
Die diatonische Notenlage ........................................................................................................... 85
4.3.2
Implementierung der Musikalischen Konturen............................................................ 86
Der Parsons-Code ......................................................................................................................... 86
Die diatonische Kontur ................................................................................................................ 87
Die Chromatische Kontur ........................................................................................................... 87
Die Pause und deren Auswirkung auf die Motivkontur .......................................................... 87
5
4.4
Allgemeine Funktionsweise des Motivanalyseprogramms .................................................. 89
4.5
Extraktion der Daten je nach Verbindungstyp ..................................................................... 92
4.6
Erstellung eines Strings aus dem multidimensionalen Array .............................................. 96
4.7
Kriterien zum Auffinden von Motiven ................................................................................. 98
4.8
Die Motivsuche ......................................................................................................................... 99
4.9
Berechnung der Motivverarbeitungsformen ....................................................................... 102
4.10
Reduktion und Transformation der Noteninformationen ................................................ 104
4.11
Die Motivanalysefunktion ...................................................................................................... 110
4.12
Die Einordnung der Ergebnisse zu möglichen Motivverarbeitungsformen .................. 112
Fazit und Ausblick ........................................................................................................................... 116
Anhang ...................................................................................................................................................... 122
1 Noten der Musikbeispiele................................................................................................................ 122
2 Quellenverzeichnis ........................................................................................................................... 142
4 VORWORT
„Wenn Ihnen ‘Mein kleiner grüner Kaktus‘ von den Comedian Harmonists gefällt, dann könnten
Ihnen auch folgende Lieder gefallen.“ Hinter solchen Sätzen, die CD-Verkäufe von OnlineMusikshops ankurbeln sollen, steckt neuerdings eine Software, die musikalische Ähnlichkeiten
zwischen Musikwerken erkennt. Eine solche Software ist beispielsweise Pandora, die auf Basis
von über 400 zugewiesenen subjektiven Attributen wie „Sax playing“, „Slow moving Bass Line“
oder „Emotional Female Lead Vocal Performance“ Ähnlichkeiten zwischen Musikwerken aus
einer Datenbank abfragt. Diese Attribute werden von Experten des „Music Genome Project“
ständig ergänzt.1 Eine Alternative stellt der vom Fraunhofer-Institut entwickelte MPEG7Standard dar. Eine Komponente von MPEG7 ist die Analyse einer Melodiekontur z.B. in einer
Audio-Datei. So können Gemeinsamkeiten zwischen Musikstücken gefunden werden. Die Firma
mufin von Magix bietet eine Software mit der MPEG7-Implementierung an.
Dieser Diplomarbeit liegt ein Algorithmus zugrunde, welcher die Idee des MPEG7-Standards −
die Suche nach einer Melodiekontur − aufgreift und erweitert. Grundlage der Musikanalyse ist
eine MusicXML-Datei. MusicXML ist ein Dateiformat zur Beschreibung von Musiknoten sowie
deren Darstellung in einer Partitur. Es basiert auf der Auszeichnungssprache XML und besitzt
eine eigene Dokumenttypdefinition (DTD).
Das Ziel dieser Arbeit ist das automatisierte Finden von Motiven und deren Motivverarbeitungen
innerhalb eines Musikwerkes. Ein Motiv ist die kleinste musikalische Zelle, der Grundbaustein
eines Musikstückes: ein Melodiefragment aus wenigen Noten. Aus mehreren zusammengesetzten
Motiven bzw. Motivverarbeitungen entstehen Phrasen und später ganze Melodien. Motivverarbeitungen sind Möglichkeiten, ein Motiv so umzugestalten, dass ein Musikstück interessant bleibt
und stets in sich geschlossen wirkt. Als bekannteste Motivverarbeitungen sind die Sequenz
(Wiederholung auf einer anderen Tonstufe) und Krebs (das Rückwärtssetzen des Motivs) zu
nennen.
Als Weiterentwicklung der Ergebnisse der Diplomarbeit kann eine Datenbank mit Motiven und
Motivverarbeitungen erstellt werden, die zur Plagiatssuche dient oder Empfehlungen gibt, welche
Musikwerke zu anderen Musikwerken ähnlich klingen.
Das erste Kapitel der Diplomarbeit befasst sich mit den musikalischen Grundlagen rund um den
Begriff Motiv sowie Motivverarbeitungsformen. Unterschiedliche Definitionen werden zu einer
neuen Motivdefinition zusammengefasst. Die wichtigsten Motivverarbeitungsformen werden
vorgestellt.
Im zweiten Kapitel wird das MusicXML-Format sowie die Beschreibung von musikalischen
vgl. Pandora Radio - Listen to Free Internet Radio, Find New Music: "The Music Genome Project". URL:
http://www.pandora.com/mgp.shtml [Stand: 8. März 2009]
1
5 Elementen mit MusicXML behandelt. Hier werden alle relevanten Elemente vorgestellt, die in
MusicXML für die Motivanalyse benötigt werden.
Es folgt im dritten Kapitel die Vorstellung des Konzepts des Motivanalysealgorithmus. Dabei ist
vor allem der für den Algorithmus benötigte Datenbestand von Interesse. Zu jeder Motivverarbeitungsform werden Abbildungsvorschriften aus mathematischer Sicht erstellt, um aus
einem Motiv Motivverarbeitungen ableiten zu können.
Schließlich wird der Motivanalysealgorithmus selbst vorgestellt. Im Mittelpunkt steht dabei die
Extraktion des Datenbestands aus einem MusicXML-Dokument, auf welche Weise ein Motiv
von einem Algorithmus gefunden werden kann und wie Motivverarbeitungen durch den Algorithmus identifiziert werden können. Außerdem erfolgt die Auseinandersetzung mit verschiedenen Problemen, die mit einer automatisierten Motivsuche und -analyse in Verbindung stehen.
Im letzten Kapitel werden schlussendlich Anwendungsmöglichkeiten für den Algorithmus vorgestellt. Außerdem werden Möglichkeiten, den Algorithmus zu erweitern, betrachtet.
6 1 MUSIKALISCHE GRUNDLAGEN ZU
MOTIVEN UND MOTIVVERARBEITUNGEN
Musikalische Motive sind Hörern im Alltag sehr bekannt. Sei es das markante Anfangsmotiv der
„5. Sinfonie” von Ludwig van Beethoven, das auffällige Gitarrenriff in „Smoke on the water“
von Deep Purple oder das Mundharmonika-Motiv von „Spiel mir das Lied vom Tod“ aus dem
gleichnamigen Spielfilm.
Nachdem der Motivbegriff erklärt wird, soll eine Analyse an drei gewählten Musikbeispielen erfolgen, um die Existenz von Motiven und Motivverarbeitungen zu verdeutlichen.
1.1 DER MOTIVBEGRIFF
Der dtv-Atlas zur Musik beschreibt das Motiv als „kleinste, meist melodische Sinneinheit, ein typisches
und einprägsames Gebilde, definiert durch die Kraft der Verselbstständigung.“ 2
Im ABC Musik wird Motiv als kleinster Baustein bezeichnet, der eine „unverwechselbare, musikalisch
sinnvolle Einheit“ 3 darstellt.
Theodor Wiehmayer erklärt in seiner Publikation „Musikalische Formenlehre in Analysen“, die
sich zu einem großen Teil mit der Thematik Motiv beschäftigt, dass das Motiv der kleinste organische Bestandteil der Tonsprache ist und sich Urformen des musikalischen Rhythmus in griechischen Versfußformen befinden.4
Michels, U. (2005): Musiklehre/Form II, dtv-Atlas Musik, Band 1, Systematischer Teil Musikgeschichte von den
Anfängen bis zur Renaissance. München: Deutscher Taschenbuch Verlag GmbH & Co. KG, 106.
3 Ziegenrücker, W. (1997) Das Motiv, ABC Musik – Allgemeine Musiklehre. Leipzig: Deutscher Verlag für Musik, Wiesbaden: Breitkopf & Härtel, 173 f.
4 vgl. Wiehmayer, T. (1927) Grundfragen der metrischen Analyse, Musikalische Formenlehre in Analysen. Magdeburg:
Heinrichshofen’s Verlag, 1 ff.
2
7 Die Motiverklärungen lassen sich zu folgender Motivdefinition zusammenfassen:
Ein Motiv ist der kleinste Baustein der musikalischen Sprache, der melodisch und
rhythmisch prägnant ist und die Kraft hat, sich zu verselbstständigen.
Die Elemente eines Motivs sind der Rhythmus sowie der Melodieverlauf, welcher sich in Intervallen widerspiegelt. Die Analyse dieser beiden Elemente wird im Motivanalysealgorithmus
wesentlich sein. Daher ist zunächst der Begriff Intervall zu klären.
Der Abstand zwischen zwei zeitlich hintereinander gespielten Noten wird als melodisches Intervall bezeichnet. Erklingen zwei Noten gleichzeitig, ist der Abstand zwischen diesen beiden Noten
als ein harmonisches Intervall zu bezeichnen.5 Es werden Intervalle des diatonischen und des
chromatischen Raumes unterschieden. Im diatonischen Raum werden immer nur Noten aus dem
Tonvorrat der gerade vorherrschenden Tonart verwendet.6 Der gesamte Tonvorrat besteht aus
zwölf Tönen (Halbtonschritten) − c, cis/des, d, dis/es, e, f, fis/ges, g, gis/as, a, ais/b und h. Innerhalb einer Tonart werden aber nur sieben Töne verwendet, die je nach Tongeschlecht
(Dur/Moll) aus einer speziellen Verteilung an aufeinanderfolgenden Ganz- bzw. Halbtonschritten gebildet werden.7
Im Gegensatz dazu werden im chromatischen Raum alle zwölf Halbtöne betrachtet. Die folgenden tabellarischen Auflistungen benennen die Intervalle im diatonischen und chromatischen
Raum.
Notenabstand zwischen zwei Noten in der Diatonik
0
1
2 (Bsp. c´ – e´)
3
4 (Bsp. f´ – c´´)
5
6
7 (Bsp. g´ – g´´)
8
9
10
11
12
13
14
Tabelle 1 - Intervallbezeichnungen für Ganztonschritte
Intervallbezeichnung
Prime
Sekunde
Terz
Quarte
Quinte
Sexte
Septime
Oktave
None
(Oktave + Sekunde)
Dezime
(Oktave + Terz)
Undezime
(Oktave + Quarte)
Duodezime
(Oktave + Quinte )
Terzdezime
(Oktave + Sexte)
Quartdezime
(Oktave + Septime)
Quintdezime
(Oktave + Oktave)
5 vgl. Ziegenrücker, W. (1997) Das Motiv, ABC Musik – Allgemeine Musiklehre. Leipzig: Deutscher Verlag für Musik,
Wiesbaden: Breitkopf & Härtel, 77.
6 vgl. Amon, R. (2005) Tonsysteme, Lexikon der Harmonielehre. Wien-München: Doblinger Metzler Verlag, 299.
7 So besteht eine Dur-Tonleiter aus Halbtonschritten zwischen dem 3. und 4. sowie zwischen dem 7. und 8. Ton, die
restlichen Tonabstände sind Ganztonschritte. Eine reine Moll-Tonleiter hingegen hat ihre Halbtonschritte zwischen
dem 2. und 3. sowie zwischen dem 5. und 6. Ton 8 Notenabstand zwischen zwei Noten in der Chromatik
0
1
2
3
4
5
6
7
8
9
10
11
12
Tabelle 2 - Intervallbezeichnungen für Halbtonschritte
Intervallbezeichnung
Prime
Kleine Sekunde
Große Sekunde
Kleine Terz
Große Terz
Reine Quarte
Tritonus
Quinte
Kleine Sexte
Große Sexte
Kleine Septime
Große Septime
Reine Oktave
In einem Notensystem ist zwischen zwei Ebenen zu unterscheiden. In der vertikalen Ebene werden synchrone Momente wie Harmonik (auch harmonische, also gleichzeitig erklingende Intervalle) sichtbar. Die Horizontale hingegen repräsentiert ein Motiv oder Melodie hinsichtlich seiner
zeitlichen Struktur − also den Rhythmus, z.B. durch Pausenzeichen oder durch Notenwerte.
Werden beide Ebenen gleichzeitig betrachtet, so ist zu beobachten, dass die melodischen Intervalle immer eine Richtung besitzen: von einer zur nächsten Note ist das Intervall entweder aufwärts oder abwärts strebend oder gleichbleibend (Prime). Die Angabe der Intervallrichtung wird
später für den Algorithmus essenziell wichtig sein.
In der horizontalen Ebene geben Notenwerte Aufschluss über die relative Dauer der Noten zueinander. Die gängigen Notenwerte sind ganze Note (
), halbe Note ( ), Viertelnote ( ), Ach-
telnote ( ) und Sechszehntelnote ( ). Die exakte Dauer eines Notenwertes hängt hingegen von
dem Tempo eines Musikstückes ab.8
Eine genauere Unterteilung von Notenwerten kann durch Überbindungen von zwei oder mehreren Noten oder durch Punktierungen (Verlängerung der Note um jeweils die Hälfte des angegebenen Notenwertes) geschaffen werden. Eine weitere rhythmische Besonderheit ist die X-tole,
die die Begriffe Duole, Triole, Quartole usw. zusammenfasst. So nehmen beispielsweise bei einer
typischen Triole drei Viertelnoten die Zeit von zwei Viertelnoten ein.
Die beiden folgenden Darstellungen geben Aufschluss über einige Notenwerte und ihre Dauern.
Eine Zählzeit bzw. ein Schlag entspricht hier einer Viertelnote. Das Tempo wird durch die Angabe bpm − beats per minute − (1 beat entspricht in der Regel einer Viertelnote −
bei 120 bpm dauert eine Viertelnote demzufolge eine halbe Sekunde), oder durch MM − Mälzels Metronom − angegeben. Vgl. Erpf, H. (1967) Formenlehre heute – Form und Zeitablauf, Form und Struktur in der Musik. Mainz: B.
Schott’s Söhne, 10.
8
9 Schlag
m
m+1
m+2
m+3
m+4
2x Ganze Note
3x Halbe Note
5x Viertelnote
Einfach punktierte halbe Note, 2x Viertelnote
Abbildung 1 - Übersicht der Notenwerte und ihre Zählzeiten
Notenwert
Ganze Note
Halbe Note
Viertelnote
Achtelnote
Sechszehntelnote
Einfach punktierte Viertelnote
1 Vierteltriole auf zwei Viertelnoten verteilt
Tabelle 3 - Beschreibung der Dauer von Notenwerten
Dauer
Schlagm bis Schlagm+4
Schlagm bis Schlagm+2
Schlagm bis Schlagm+1
(Schlagm bis Schlagm+1)/2
(Schlagm bis Schlagm+1)/4
(Schlagm bis Schlagm+1)+(Schlagm zu Schlagm+1)/2
(Schlagm bis Schlagm+2) /3
Diese musiktheoretischen Grundlagen zu Rhythmus und Intervallen sollen genügen, um ein Motiv zu erklären und später mathematisch zu erfassen.
10 1.2 MOTIVVERARBEITUNGSFORMEN
Jede motivthematische Arbeit besitzt einen Bezug zum Originalmotiv. Einige Motivverarbeitungen sind sehr einfach zum Originalmotiv zurückzuführen, bei anderen Motivverarbeitungen ist
der Bezug nicht ganz so offensichtlich.
Die wichtigsten Motivverarbeitungen werden in diesem Abschnitt erarbeitet. Für das Beschreiben
der Motivverarbeitungen wird ein selbst komponiertes Motiv betrachtet, welches in Abbildung 2
dargestellt ist. Dieses Motiv ist speziell für den Motivanalysealgorithmus aufbereitet, indem es
Noteninformationen enthält, die der Algorithmus verarbeiten kann. Auch im weiteren Verlauf
dieser Arbeit wird dieses Motiv zur Veranschaulichung herangezogen werden.
Abbildung 2 - Beispielmotiv
Die bekannteste musikalische Verarbeitungsform ist keine Verarbeitung im eigentlichen Sinn: es
ist die Wiederholung des Motivs. Die Wiederholung ist für den Hörer ein sehr wichtiges
musikalisches Ereignis.9 Musik wird in einer zeitlichen Abfolge wahrgenommen. Das Werk ist in
seiner Gesamtheit erst nach dem Verklingen des letzten Tones erfassbar. Daher fügen erst Motivwiederholungen die einzelnen Abschnitte zu einem zusammenhängenden Werk zusammen.
Nach Aktivierung der Aufmerksamkeit wird mit Hilfe der Wiederholung ein Motiv im Gedächtnis verankert. Die „Wiederholung ist somit ein obligatorisches Element für die Bildung eines (Leit-)motivs“.10
Trivial betrachtet sorgt die häufige Anwendung von Motivwiederholungen für die OhrwurmQualität.
Die erste tatsächliche Motivverarbeitungsform ist die Imitation. Bei der Imitation wird das vorliegende Motiv in einer anderen Stimme nachgeahmt und meist nach einigen Noten variiert.11
Geschichtlich gesehen stammt die Imitation aus der Kirchenvokalmusik, bei der nacheinander die
Vokalstimmen Bass, Tenor, Alt beziehungsweise Sopran einsetzten. Die erste Gesangsstimme
singt die ersten Noten einer Melodie, die zweite Stimme setzt ein und imitiert diese Melodie in
der eigenen Gesangslage. Die Imitation der zweiten Stimme setzt meist in der Oktave oder im
9 vgl. Amon, R. (2005) Motiv – Motivisch-thematische Arbeit, Lexikon der Harmonielehre. Wien-München: Doblinger
Metzler Verlag, 193 f.
10 Flückiger, B. (2007) Leitmotive, Sound Design – Die virtuelle Klangwelt des Films. Marburg: Schüren Verlag, 186 f.
11 vgl. Holst, I. (1992) Die Anfänge der Kontrapunktik, Das ABC der Musik. Stuttgart: Phillip Reclam jun. GmbH, 72.
11 Quintton zur ersten Stimme ein.12 In Abbildung 3 ist eine Imitation des Beispielmotivs aus Abbildung 2 in der darunterliegenden Oktave dargestellt.
Abbildung 3 - Imitation des Beispielmotivs
Eine ähnliche Motivverarbeitung wie die Imitation ist die Sequenz. Eine Sequenz ist eine Wiederholung des Motivs auf einer anderen Tonstufe13 und kommt in der Regel etwa so häufig wie
die Wiederholung selbst vor. Bei der Sequenz wird im Gegensatz zur Imitation das Motiv nicht
variiert. Es werden zwei Ausprägungen der Sequenz unterschieden: die tonale Sequenz und die
reale Sequenz. Bei einer tonalen Sequenz werden die Intervalle zwischen den Noten diatonisch
beibehalten, d.h. die Intervalle in der Sequenz werden der Tonart angepasst. Dadurch kann beispielsweise eine große Terz aus dem Originalmotiv zu einer kleinen Terz in der tonalen Sequenz
werden. Bei einer realen Sequenz hingegen bleiben alle Intervalle zwischen den Noten exakt erhalten. Abbildung 4 zeigt beide Versionen ausgehend vom Beispielmotiv.
Kompositorisch ermöglichen die Formen der Sequenz einen Ausbruch aus dem bestehenden
kompositorischen Material, um neues Musikmaterial zu schaffen:14 so führt eine reale Sequenz zu
anderen Tonarten, während durch eine tonale Sequenz neue harmonische Verbindungen erschlossen werden.
Abbildung 4 - Tonale (links) und reale Sequenz (rechts) des Beispielmotivs
Eine vollkommen neue Melodiekontur entsteht mit der Umkehrung. Die Umkehrung wird auch
als Inversion oder Spiegel bezeichnet. Sie entsteht durch das beliebige Anlegen einer gedachten
horizontalen Achse an einer Notenlinie oder an einem Notenlinienzwischenraum. So führt beispielsweise eine Terz aufwärts im Originalmotiv zu einer Terz abwärts in der Umkehrung. Auch
vgl. Lemacher, H., Schroeder, H. (1977) Der zweistimmige Satz, Lehrbuch des Kontrapunktes. Mainz: Schott Musik
International, 21.
13 vgl. Ziegenrücker, W. (1997) Das Motiv, ABC Musik – Allgemeine Musiklehre. Leipzig: Deutscher Verlag für Musik,
Wiesbaden: Breitkopf & Härtel, 175.
14 vgl. Amon, R. (2005) Motiv – Motivisch-thematische Arbeit, Lexikon der Harmonielehre. Wien-München: Doblinger
Metzler Verlag, 194.
12
12 im Fall der Umkehrung gibt es zwei Ausprägungen: die tonale und die reale Umkehrung. Hierbei
gelten für die Intervalle die gleichen Bedingungen wie für die Sequenz. In Abbildung 5 sind wiederum beide Varianten der Umkehrung anhand des Beispielmotivs dargestellt.
Abbildung 5 - Tonale und reale Umkehrung
Eine Spiegelung eines Motivs kann nicht nur in der Horizontalen, sondern auch in der
Vertikalen, erfolgen. Diese Form der Motivverarbeitung wird Krebs15 genannt. Beim Krebs befindet sich die Spiegelachse parallel zu den Taktstrichen: der Krebs entspricht also dem rückwärts
gelesenen Originalmotiv. Durch diese Art der Motivverarbeitung werden Intervalle zwischen den
Noten nicht verändert. Das Krebsmotiv gibt es in zwei Ausprägungen. Bei der ersten Form,
Krebs I, wird das gesamte Motiv 1:1 gespiegelt. Bei der Form Krebs II werden alle Intervalle
gespiegelt, der Rhythmus aber bleibt wie bei dem Originalmotiv (siehe Abbildung 6).
Abbildung 6 - Krebs I (links) und Krebs II (rechts)
Bei den Motivverarbeitungsmöglichkeiten Augmentation und Diminution nimmt ein Motiv
neue Notenwerte an.
Die Augmentation streckt das Motiv in die Länge. Aus mathematischer Sicht werden die Notenwerte mit dem Faktor Zwei multipliziert: so wird z.B. aus einer halben Note eine ganze Note und
aus einer Achtelnote eine Viertelnote.
Die Diminution ist das Gegenstück der Augmentation. Hier werden die Notenwerte halbiert.
Vom Hörerlebnis können diese Motivformen so betrachtet werden, als ob das Motiv schneller
oder langsamer gespielt wird.
Abbildung 7 - Augmentation und Diminution
vgl. Lemacher, H., Schroeder, H. (1977) Der zweistimmige Satz, Lehrbuch des Kontrapunktes. Mainz: Schott Musik
International, 21.
15
13 Eine Dehnung oder Stauchung eines Motivs ist nicht nur in der Horizontalen − also der zeitlichen Ebene − möglich, sondern auch in der Vertikalen. Hierzu zählen die Motivverarbeitungsformen Intervallweitung und Intervallengung (siehe Abbildung 8). Bei der Intervallweitung
werden die Intervalle beliebig größer gesetzt, beispielsweise wird aus einer Terz eine Sexte. Die
Intervallrichtung (auf- oder abwärts) muss allerdings gleichbleiben. Entsprechend verhält es sich
bei der Intervallengung, nur dass die Intervalle kleiner gesetzt werden. So wird beispielsweise eine
Terz im Originalmotiv zu einer Sekunde verarbeitet.
Abbildung 8 - Intervallweitung und Intervallverengung
Eine weitere sehr vielseitige Motivverarbeitungsform ist die Variation. Hierbei werden einzelne
Motivelemente wie etwa Rhythmus oder Melodie so belassen, andere Elemente hingegen werden
variiert. So bleiben beispielsweise bei einer rhythmischen Variation Melodie und Harmonie
gleich, während der Rhythmus variiert wird. Demgegenüber werden bei einer melodischen Variation lediglich die Tonhöhen verändert, der Rhythmus aber bleibt bestehen.
Kurz erwähnt sei als motivthematische Verarbeitungsmöglichkeit abschließend die Abspaltung,
bei der ein Teil des Motivs in einem neuen musikalischen Kontext gestellt wird.
Bei den genannten Beispielen handelt es sich um die am häufigsten auftretenden Motivverarbeitungsformen. Durch Kombination entstehen noch diverse weitere Möglichkeiten, ein Motiv zu
verarbeiten.
14 1.3 MANUELLE SUCHE NACH MOTIVEN UND
MOTIVVERARBEITUNGEN IN DREI
BEISPIELWERKEN
Die behandelten Motivverarbeitungsformen sollen nun in drei Musikwerken auf deren Vorkommen hin beleuchtet werden, um vorweg zu prüfen, auf welche Besonderheiten der MotivsucheAlgorithmus ausgelegt sein muss. Hierzu werden Musikwerke aus verschiedenen Epochen und
Stilen gewählt, um einen möglichst breiten Anwendungsbereich abzudecken. Zu den ausgewählten Musikstücken gehört ein Choralwerk, ein Stück einer Filmmusik und ein Popsong aus den
90iger Jahren.
Zunächst muss das Originalmotiv anhand von markanten und wiederkehrenden Notenverläufen,
Rhythmen und Intervallen ausfindig gemacht werden. Erst wenn ein mögliches Motiv im Musikwerk gefunden wurde, können motivthematische Verarbeitungen identifiziert werden. Diese
Vorgehensweise ist vergleichbar mit dem zu implementierenden Algorithmus.
Die vollständigen Musikwerke befinden sich im Anhang dieser Diplomarbeit. Das Musikwerk
„Exsultate Deo“ B-Teil von Alessandra Scarlatti befindet sich im Anhang 1, „Solange“ (aus 007James Bond Casino Royale) von David Arnold befindet sich im Anhang 2 und „When we dance“
von Sting befindet sich im Anhang 3. Die in diesem Abschnitt abgebildeten Partituren sind zusammengesetzte Ausschnitte aus dem Werk, welche ein herausragendes Motiv und seine Verarbeitungen hintereinander zeigt.
Exsultate Deo B-Teil von Alessandra Scarlatti
Exsultate Deo ist ein Choralwerk für vier Stimmen, komponiert von Alessandra Scarlatti. Scarlatti
lebte von 1660 bis 1725 und schuf vor allem in der Zeit des Barock viele Musikwerke.16 Interessant am vorliegenden Werk ist der B-Teil, da hier das Anfangsmotiv von zwei weiteren Vokalstimmen imitiert wird.
Abbildung 9 zeigt diverse Motivverarbeitungsformen aus dem Choralwerk als Auszug aus allen
vier Stimmen. Die Motive und Motivverarbeitungen sind beschriftet und durchnummeriert.
16
Dürr, W. (2005) Scarlatti, Pietro Alessandro Gaspare, Musiklexikon. Stuttgart, Weimar: Verlag J.B. Metzler, 168
15 Abbildung 9 - Exsultate Deo B-Teil in Motivauszügen aus allen Stimmen
Tabelle 4 soll die in Abbildung 9 durchnummerierten Motive einigen Motivverarbeitungsformen
zuordnen und deren Vorkommen zusammenfassen.
16 Motiv
1
Originalmotiv
2
3
4
X
Imitation
X
X
Sequenz
X
X
Variation
X
X
Rhythmische Verschiebung
Abspaltung
5
6
X
X
8
9
10
11
12
13
14
15
16
∑
3
X
3
X*
X
X
X*
6
X
X
X
X
X*
X
Rhythmische Augmentation
7
5
3
X
X
X
X
Rhythmische Diminution
Umkehrung
2
X
3
X
1
X
Entfernt verwandtes Motiv
Melodische Variation
1
X
1
X
X
2
Tabelle 4 - Zusammenfassung der Motive für das Werk Exsultate Deo B-Teil
Die mit einem Stern (*) notierten Motive in Tabelle 4 sind nicht motivthematische Verarbeitungen des Originalmotivs, sondern eines bereits verarbeiteten Motivs.
Die Tabelle verdeutlicht, wie vielschichtig Scarlatti Gebrauch der motivthematischen Arbeit gemacht hat. Sehr viele Motivverarbeitungen treten hier auf − allerdings nie alleinstehend und vollständig. Vielmehr handelt es sich stets um Mischformen, die ineinander übergehen. Sollen die
zuvor besprochenen Motivverarbeitungsmöglichkeiten alleinig in ihrer reinen vollständigen Form
betrachtet werden, so müssten das gesuchte Originalmotiv auf die vier Anfangsnoten beschränkt
werden. Von diesen vier Noten wiederum wäre es erst möglich, vollständige Verarbeitungen zu
finden.
Solange (aus 007-James Bond Casino Royale) von David Arnold
Filmmusik, wie beispielsweise in einem James Bond-Film, wird oftmals mit Hilfe der Leitmotivtechnik gestaltet.17 Diese Technik beinhaltet, dass den Protagonisten, Orten, Handlungen, Zeiten
oder anderen Objekten jeweils ein markantes musikalisches Motiv zugeteilt wird. Immer wenn
ein Objekt auf der Leinwand erscheint, dem ein Leitmotiv zugeordnet ist, erklingt „sein“ Motiv.
Auf diese Weise erhält der Zuschauer einen markanten auditiven Bezug zu einem sichtbaren Objekt. Abbildung 10 zeigt einen Auszug mit den Motiven und Motivverarbeitungen aus „Solange“,
einem Musikstück aus dem Soundtrack zum James Bond-Film Casino Royale. Das Musikstück
enthält das Leitmotiv, welches immer wiederkehrt, sobald das Bond-Girl Solange Dimitrios auftritt.
17
vgl. Spehr, G. (2007) Audio-Branding – alles neu?, Audio-Branding. München: Verlag Reinhard Fischer, 38.
17 Abbildung 10 - „Solange“ in Motivauszügen
Motiv
Originalmotiv
Sequenz
1
2
Rhythmische Variation
4
5
X
6
X
X
Melodische Variation
Abspaltung
3
8
9
X
X
∑
3
X
X
X
7
2
X
3
X
2
X
X
2
Tabelle 5 - Zusammenfassung der Motive für das Werk „Solange“ aus 007-James Bond Casino Royale Tabelle 5 fasst wiederum die Motive aus „Solange“ zu Motivverarbeitungsformen zusammen. Es
zeigt sich, dass hier wenige Mischformen der Motivverarbeitungen auftreten. Da der Motivanalysealgorithmus nur die Motivverarbeitungen findet, welche ihm in Reinform hinterlegt sind, sind
die Motive im Werk „Solange“ vom Algorithmus gut aufzufinden.
18 When we dance von Sting
In der Popmusik ist die Wiederholung von Motiven bzw. Melodien ein beliebtes Mittel, um den
musikalischen Eindruck im Ohr des Hörers zu festigen. In Abbildung 11 wird dies durch die
Markierung und Benennung der Motive in dem Popsong „When we dance“ von Sting deutlich.
Abbildung 11 - „When we dance“ in Motivauszügen
19 Motiv
Originalmotiv
Sequenz
Variation
Erweiterung
1
X
2
X
3
X
4
X
5
6
X
7
X
8
X
9
10
X
X
X
X
X
X
X
X
12
13
X
X
X
11
X
X
X
X
X*
X
X
∑
8
4
10
3
Tabelle 6 - Zusammenfassung der Motive in „When we dance“
Tabelle 6 veranschaulicht wie in den vergangenen Musikbeispielen das Vorkommen einzelner
Motivverarbeitungsformen. Es zeigt sich hier ein ähnliches Bild wie bei dem Choralwerk von
Scarlatti. Die meisten Motivverarbeitungen sind Mischformen. Auch hier würden die reinen, vollständigen Motivverarbeitungen erst auffindbar, wenn als Originalmotiv eine kürzere Notenfolge
betrachtet würde.
Es kann zusammengefasst werden, dass es von großer Bedeutung ist, wie lang ein Motiv für die
Analyse ist. Ist es zu kurz gewählt, werden zu viele Motivverarbeitungen in die Ergebnismenge
aufgenommen. Dies schließt die Gefahr ein, dass Motivverarbeitungen in die Ergebnismenge
aufgenommen werden, die in keinem motivthematischen Zusammenhang zum Originalmotiv
stehen. Ist das Motiv jedoch zu lang gewählt, besteht die Möglichkeit, dass die Ergebnismenge
unbefriedigend gering ist. Die Problematik kann auf den ersten Blick nur durch den menschlichen Eingriff gelöst werden. Deswegen gehört zur Programmieranforderung, dass die Motivanalysesoftware nicht nur eigenständig Motive zur Analyse auswählt, sondern der Mensch die Möglichkeit hat, ein Motiv von Hand einzugeben. Somit ist es möglich, dass ein Motiv beliebig gekürzt oder verlängert wird bis die Ergebnismenge zufriedenstellend ist.
20 2 DAS MUSICXML-FORMAT
2.1 DIE BESCHREIBUNGSSPRACHE
MUSICXML
Das MusicXML-Datenformat ist eine Beschreibungssprache für Musik. Sie ist abgeleitet von
XML, der Extensible Markup Language. XML ist wiederum aus der SGML, Standard
Generalized Markup Language, entstanden. SGML sowie XML bieten systemunabhängige und
strukturierte Repräsentationen von Texten. Diese Sprachen sind Metasprachen, mit der eine Auszeichnungssprache, auch Markup Language genannt, definiert werden kann.
Es sind drei Eigenschaften zusammenzufassen:



Markup Language-Dokumente werden auf Basis von Elementen gegliedert. Diese besitzen einen vordefinierten Namen und sind vordefinierten Typen zugeordnet.
In einer zusätzlichen Datei, der DTD-Document Type Definition, werden die für die in
XML zulässigen Dokumenttypen Namen für die Elemente und Verschachtelungsreihenfolgen festgelegt. Für die Interpretation ist ein entsprechender Parser oder eine Programmiersprache nötig, die mit Hilfe der DTD das XML-Dokument analysiert und darstellt.
XML-Dokumente sind wohldefiniert. Die Dokumente sind an lokale Zeichensätze anpassbar, ohne dass das Dokument selbst geändert werden muss. Mit XML-Dokumenten
lassen sich maschinenunabhängige Dokumente erstellen.18
Der übliche Weg eine MusicXML-Datei zu erstellen, ist es, ein Notationsprogramm zu verwenden, das die Partitur in Form einer MusicXML-Datei speichern kann. Die bekanntesten Notationsprogramme dieser Art sind Sibelius19 und Finale.20
Im MusicXML-Format sind die Informationen zu einer Note in Elementen eingebettet. Die
Struktur ist dabei <element>Elementinhalt</element>. Elemente können in MusicXML ineinander
verschachtelt sein. So ist das äußerste Element für das Beschreiben einer Note das Element
vgl. Ferber, R. (2003) Explizit strukturierte Elemente - XML, Information Retrieval. Heidelberg: dpunkt Verlag, 255.
vgl. Sibelius: "Was ist neu". URL: http://www.sibelius.com/products/sibelius/ [Stand: 1. Februar 2009]
20 vgl. Klemm Music & Makemusic: "Notensatz und Notenschreibprogramme Finale". URL: http://www.klemmmusic.de/coda/ [Stand: 1. Februar 2009]
18
19
21 <note>.
Innerhalb dieses Elements umschließt das Element <pitch> die Elemente
21
<step>Notenname</step>, <alter>Alteration </alter> und <octave>Oktavlage</octave>. Es ist zu
erkennen, dass diese drei Elemente für die Beschreibung der vertikalen Ebene einer Note zum
Element <pitch> zusammengefasst sind.
Für die Darstellung der horizontalen Ebene existieren u.a. die Elemente <duration> für die relative Notenlänge und <type> als englische Bezeichnung des Notenwertes.
Das folgende Beispiel zeigt die eben beschriebenen MusicXML-Elemente, angewendet auf ein
eingestrichenes Ces.
<note>
<pitch>
<step>C</step>
<alter>-1</alter>
<octave>4</octave>
</pitch>
<duration>4</duration>
<type>quarter</type>
</note>
Quelltext 1 - vereinfachtes MusicXML-Beispiel für die Beschreibung der Note Ces'
Die im Quelltext 1 mittels Zahlen bzw. Buchstaben codierten Noteninformationen sollen im
folgenden Abschnitt erläutert werden.
2.2 ABBILDUNGSFORM DER NOTENINFORMATIONEN IN MUSICXML
Wieder soll das selbst komponierte Beispielmotiv aus dem ersten Kapitel zur Veranschaulichung
dienen. Die Notenreihe ohne Beachtung der Vorzeichen lautet: E, G, B22, D, C, B, D, E, C, A.
Diese Buchstaben werden in MusicXML für die Darstellung der Notennamen direkt so verwendet.
Das Motiv enthält an der Position der Note g eine Alteration. Die typischen Hochalterationszeichen sind Kreuz ( ) für eine Anhebung um einen Halbtonschritt aufwärts und Doppelkreuz ( )
für eine Anhebung um zwei Halbtonschritte aufwärts. Für das Tiefalterieren von Noten wird das
b ( ) für eine Verminderung um einen Halbtonschritt abwärts und das Doppel-b ( ) für eine
Erhöhung bzw. Erniedrigung der Note um einen oder auch mehreren Halbtonschritte mit Hilfe eines Vorzeichens
Für eine einheitliche Konvention zum MusicXML-Format wird fortwährend statt der deutschen Notenbezeichnung h der englische Notenname b verwendet.
21
22
22 Verminderung um zwei Halbtonschritte abwärts verwendet. In MusicXML wird eine Note ohne
Alteration mit 0 gekennzeichnet, eine Note mit Kreuzvorzeichen
mit +1, eine Note mit dem
Doppelkreuz mit +2, eine Note mit dem -Vorzeichen mit -1 und mit dem - Vorzeichen
mit -2. Für das verwendete Beispielmotiv ergibt sich somit die Alterationsfolge: 0, +1, 0, 0, 0, 0,
0, 0, 0, 0.
Eine weitere Noteninformation eines Motivs ist die Oktavlage einer Note im Notensystem.
Durch die Anwendung eines Notenschlüssels im Notensystem, typischerweise ein Violinschlüssel
oder ein Bassschlüssel, wird die genaue Tonhöhe und auch die Oktavlage auf den Notenlinien
bestimmt. Eine Übersicht über die Oktavlagen ist in Abbildung 12 dargestellt.
Abbildung 12 - Darstellung der Oktavlagen
Die Oktavlagen werden in MusicXML wie folgt abgebildet:
Subkontra-Oktave
=0
Kontra-Oktave
=1
große Oktave
=2
kleine Oktave
=3
eingestrichene Oktave = 4
zweigestrichene Oktave = 5
dreigestrichene Oktave = 6
usw.
23 Insgesamt lässt MusicXML für die Oktavlage einen Wertebereich von 0 bis 9 zu.23
Für das gewählte Beispielmotiv ergibt sich die folgende Oktavlagenreihe: 4, 4, 4, 5, 5, 4, 4, 4, 4, 3.
Mit den beschriebenen drei Parametern Notenname, Alteration und Oktave ist die vertikale
Ebene von Noten innerhalb eines Notensystems beschrieben.
Für die horizontale, zeitliche Ebene ist der Notenwert das entscheidende Kriterium. Der Notenwert, der aus der Form der Note (gefüllt/leer, mit/ohne Hals, mit/ohne Fähnchen) hervorgeht,
wird in einer Zahl kodiert. Diese setzt sich aus mehreren Werten zusammen und ist abhängig von
der Taktart. Es können aber auch zusätzliche Zeichen erscheinen, die den Notenwert verändern
und als eigene Noteninformation in MusicXML auftreten. Zum einen ist es die Punktierung, bei
der der ausgeschriebene Notenwert um nochmals die Hälfte des eigenen Notenwertes verlängert
wird. Zum anderen verändert auch eine X-tole (z.B. eine Duole oder Triole) den Notenwert. Nur
wenn Punktierungen oder X-tolen vorliegen, wird dies in MusicXML angegeben.
2.3 AUFBAU EINER MUSICXML-DATEI
Um das MusicXML-Datenformat konkret zu beschreiben, wird hier ein sogenanntes „Hello
World“-Beispiel (siehe Quelltext 2) zur Veranschaulichung genommen. Das Beispiel beschreibt
Grundelemente von MusicXML und die Dokumentstruktur anhand eines eingestrichenen C (siehe Abbildung 13). Die Analyse eines MusicXML-Dokuments ermöglicht das Verständnis, wie ein
Algorithmus alle notwendigen Elementinhalte aus MusicXML herauslesen kann.
Abbildung 13 - Ein eingestrichenes C
Recordare: Internet Music Publishing and Software: "MusicXML 1.0 Alphabetical Index". URL:
http://www.recordare.com/dtds/1.0/musicxml-index.html [Stand: 2. Februar 2009]
23
24 1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
"http://www.musicxml.org/dtds/partwise.dtd">
3. <score-partwise>
4.
<identification>
5.
<encoding>
6.
<software>Finale for Windows</software>
7.
<software>Dolet Light for Finale 2006</software>
8.
<encoding-date>1900-00-00</encoding-date>
9.
</encoding>
10.
</identification>
11. <part-list>
12.
<score-part id="P1">
13.
<part-name>Violine</part-name>
14.
<score-instrument id="P1-I1">
15.
<instrument-name>Violine</instrument-name>
16.
</score-instrument>
17.
<midi-instrument id="P1-I1">
18.
<midi-channel>1</midi-channel>
19.
<midi-program>41</midi-program>
20.
</midi-instrument>
21.
</score-part>
22. </part-list>
23. <!--===========Hier beginnt der Hauptteil==============-->
24. <part id="P1">
25.
<measure number="1">
26.
<attributes>
27.
<divisions>1</divisions>
28.
<key>
29.
<fifths>0</fifths>
30.
<mode>major</mode>
31.
</key>
32.
<time symbol="common">
33.
<beats>4</beats>
34.
<beat-type>4</beat-type>
35.
</time>
36.
<clef>
37.
<sign>G</sign>
38.
<line>2</line>
39.
</clef>
40.
</attributes>
41.
<sound tempo="120"/>
42.
<note>
43.
<pitch>
44.
<step>C</step>
45.
<octave>4</octave>
46.
</pitch>
47.
<duration>4</duration>
48.
<voice>1</voice>
49.
<type>whole</type>
50.
</note>
51.
<barline location="right">
52.
<bar-style>light-heavy</bar-style>
53.
</barline>
54.
</measure>
55. </part>
56. <!--=========================================================-->
57. </score-partwise> Quelltext 2 - MusicXML-Code des Hello World-Beispiels
Eine MusicXML-Datei ist in Prolog, auch Einleitungsteil genannt, und Hauptteil gegliedert. Der
Prolog beschreibt grundlegende Daten über das MusicXML-Dokument. Der Hauptteil repräsentiert Daten, die zur Darstellung der Partitur notwendig sind. Prolog und Hauptteil werden durch
das Element <score-partwise> umschlossen.
25 Der Prolog besitzt als Kindelemente <identification> und <part-list>. <identification> beinhaltet u.a. das Element <software>, in dem die Software angegeben wird, mit der die MusicXMLDatei erstellt wurde.
<part-list> enthält das Element <score-part>, welches das Notensystem mit dem dazugehörigen
assoziierten Musikinstrument beschreibt. Zudem besitzt es das Attribut id, mit dem beschrieben
wird, in welchem Notensystem das Musikinstrument steht. Hier weist beispielsweise der Wert P1
die Elementinhalte in <score-part> dem Instrument zu, das an oberster Stelle im Notensystem
steht. Nach P1 wird die Zahl für jedes neue Notensystem um 1 inkrementiert: <score-part
id=P[z]>...</score-part> mit z (Natürliche Zahlen). In <part-name> wird ein Instrumentenname vergeben, der im Notenbild dem Notensystem vorangestellt wird. Im Element
<score-instrument> können mehrere Instrumente, die in den Elementen <instrument-name> bezeichnet sind, zu einer Gruppe zusammengefasst werden. Hier erscheint stets der vollständige
Instrumentenname.
Die Elemente <midi-instrument> mit den Kindelementen <midi-channel> und <midi-program> sind
reserviert für das Abspielen der Partitur über die Soundkarte per MIDI. MIDI ist ein Protokoll
zur Ansteuerung von MIDI-fähigen Instrumenten und Soundkarten. In <midi-channel> wird der
Kanal des jeweiligen Instruments angegeben, das die Verbindung zum Notensystem über das
Attribut id in <midi-instrument> und <score-instrument> schafft. Das Element <midi-channel>
kann die Werte 1 bis 16 annehmen. Über diese Kanäle werden die MIDI-Signale des entsprechenden Notensystems an die MIDI-fähige Software verschickt. Das Element <midi-program>
beinhaltet eine Zahl zwischen 1 und 128. Jede dieser Zahlen ist einem bestimmten Musikinstrument zugeordnet.24 Im vorliegenden Beispiel entspricht die Zahl 41 dem Instrument Violine.
Der Hauptteil des MusicXML-Dokuments beschreibt alle in der Partitur sichtbaren Daten. Jedes
Musikinstrument erhält für die Präsentation seiner Noten einen eigenen Elementbereich. Dieser
wird mit <part> bezeichnet. Die gleichen Werte vom Attribut id im Element <part> schaffen eine
Verknüpfung der initialisierten Musikinstrumente aus dem Prolog mit dem Hauptteil. Innerhalb
von <part> werden einzelne Takte mit <measure> angegeben. Jedes dieser Elemente besitzt das
Attribut number. Beginnt ein neuer Takt, wird der Zahlenwert in number um 1 inkrementiert.
Werden am Anfang eines Taktes Notenschlüssel, Tonarten oder Taktarten verändert, werden
diese Informationen zu Beginn eines Taktes innerhalb von <attributes> eingefügt. Darin enthalten ist u.a. das Element <key>, welches mit Hilfe der Kindelemente <fifths> und <mode> die Tonart beschreibt. Der Wert in <fifths> gibt die Tonstufe und der Wert in <mode> das Tongeschlecht
an. Weiterhin enthält <attributes> die Elemente <time>, <clef> und <divisions>. <time> besitzt als
Kindelemente <beats>, das die Anzahl der Zählzeiten wiedergibt und <beat-type>, das angibt,
welcher Notenwert einer Zählzeit entspricht. Beide Werte liegen hier bei 4, dementsprechend
MIDI Manufacturers Association: "General MIDI Level 1 Sound Set". URL:
http://www.midi.org/techspecs/gm1sound.php [Stand: 1. April 2009]
24
26 handelt es sich um einen 4/4-Takt. Für die Angabe des Notenschlüssels wird das Element <clef>
benutzt. Es besitzt als Kindelemente <sign> für die Angabe des Notenschlüssels und <line> für
die Angabe der Notenlinie, auf der der Notenschlüssel positioniert wird. <divisions> beschreibt
die Basiseinheit für die Tondauer, auf die sich alle Noten ab dem Takt beziehen, in dem
<divisions> initialisiert bzw. re-initialisiert wird. Der Wert in <divisions> ist wichtig, um mit Hilfe
des später auftretenden Elements <duration> den Notenwert zu errechnen.
Nach dem Element <attributes> folgt das Element <sound> mit dem Attribut tempo, welches erwartungsgemäß das Tempo der folgenden Takte angibt.
Mit dem nun folgenden Element <note> wird jede Note einzeln beschrieben. Befinden sich mehrere Noten in einem Takt, werden die Elemente <note> nacheinander platziert. Dies ermöglicht
dem Algorithmus ein lineares Auslesen der MusicXML-Datei. Im Element <note> sind u.a. die
Kindelemente <pitch>, <duration>, <voice> und <type> enthalten. In <pitch> gibt es die
Kindelemente <step> für den Notennamen und <octave> für die Oktavlage einer Note. Wird eine
Note alteriert, so befindet sich in <pitch> zusätzlich das Kindelement <alter>, welches die Alteration in Halbtonschritten angibt. Zulässig sind alle ganzen Zahlen von -9 bis 9.
Das Alterationszeichen wird zusätzlich mit dem Element <accidental> beschrieben. Die häufigsten Elementinhalte sind natural ( n-Auflösungszeichen), sharp ( m-Vorzeichen) oder flat ( bVorzeichen). <duration> ist neben <divisions> die zweite Angabe, um den Notenwert zu errechnen. Im vorliegenden „Hello World“-Beispiel hat <divisions> den Wert 1, und <duration> besitzt
für die Note C den Wert 4. Der Notenwert wird nach folgender Rechnungsvorschrift ermittelt:
Notenwert = duration/divisions = 4/1 = 4.
Die vier wird in diesem Beispiel mit der ganzen Note gleichgesetzt, da sie in einem 4/4 Takt alle
vier Zählzeiten einnimmt. Eine halbe Note würde demnach dem Wert 2 und eine Viertelnote
dem Wert 1 entsprechen. Der Notenwert wird zusätzlich im Element <type> als englisches Wort
ausgeschrieben.
Sofern zusätzlich eine Punktierung vorliegt, wird das leere Element <dot /> eingefügt. Tritt eine
X-tole auf, so wird das Element <time-modification> mit den Kindelementen <actual-notes>,
<normal-notes> und <beam> eingefügt.
Das Element <voice> benennt die Stimme im System, zu der die Note gehört. Die Angabe von
<voice> ist nötig, wenn mehrere Gesangsstimmen in einem Notensystem untergebracht sind. Das
letzte wichtige Element ist <stem>, welches die Halsausrichtung einer Note wiedergibt. Mögliche
Werte sind up und down.
Das Ende einer Partitur wird mit einem Doppelstrich, dem Element <barline> und <barlinestyle> angegeben.
27 2.4 VALIDITÄT EINES MUSICXMLDOKUMENTS JE NACH ERSTELLUNGSART
Das zu untersuchende MusicXML-Dokument muss anhand der Dokumenttypdefinition
validierbar sein. Nur so kann gewährleistet werden, dass der Algorithmus korrekte Ergebnisse
erzielt.
Eine MusicXML-Datei kann auf mehrere Arten erstellt werden: Üblicherweise über ein Notensatzprogramm, häufig aber auch mit Hilfe eines MIDI-Software-Sequenzer wie Apple LogicStudio oder Steinberg Cubase. Je nach Transformationssoftware (z.B. Notensatzprogramm oder
MIDI-Software) werden verschiedene MusicXML-Ausgaben erzeugt. So binden beispielsweise
die beiden bekanntesten Notationsprogramme Sibelius25 und Finale26 neben allgemeingültigen
MusicXML-Sprachelementen auch noch weitere Elemente ein, die das Layout einer Partitur im
eigenen Notationsprogramm beschreiben und optimieren. Somit enthält eine mit Hilfe eines Notationsprogramms erstellte MusicXML-Datei stets zusätzliche Sprachelemente, die nur indirekt
etwas mit dem MusicXML-Standard zu tun haben und so Fehler während der Motivanalyse hervorrufen können.
Aber auch die Erzeugung einer MusicXML-Datei durch Konvertierung aus einer MIDI-Datei ist
problembehaftet für die Motivanalyse durch den Algorithmus. Sehr viele Musikwerke unterschiedlichster Komponisten und Interpreten sind im MIDI-Format rund um den Globus im Internet verfügbar. Populär ist MIDI vor allem aufgrund der geringen Dateigröße geworden. Heute
gilt MIDI vor allem im Musikproduktionsbereich als Format, das sich etabliert hat. Es liegt daher
nahe, dass für die Motivanalyse eine MusicXML-Datei benutzt wird, die mit einer Konvertierungssoftware aus einer MIDI-Datei umgewandelt wurde. Wie stark aber das Notenbild einer
durch MIDI-Konvertierung erstellte MusicXML-Datei vom eigentlichen Notenbild abweichen
kann, soll im Folgenden verdeutlicht werden.
Wird eine in einem Notationsprogramm erstellte Partitur im MIDI-Format gespeichert und diese
im gleichen Notationsprogramm erneut geöffnet, so sind viele Musiksymbole beim Speichern der
MIDI-Datei unwiderruflich verlorengegangen. Abbildung 14 zeigt eine Partitur, wie Sie im Notensatzprogramm Finale eingegeben wurde. Diese Partitur wurde als MIDI-Datei gespeichert und
besitzt danach die Darstellung wie in Abbildung 15.
vgl. Sibelius: "Was ist neu". URL: http://www.sibelius.com/products/sibelius/ [Stand: 1. Februar 2009]
vgl. Klemm Music & Makemusic: "Notensatz und Notenschreibprogramme Finale". URL: http://www.klemmmusic.de/coda/ [Stand: 1. Februar 2009]
25
26
28 Abbildung 14 - Notenbeispiel mit Noten und musikalischen Symbolen
Abbildung 15 - In das Notensatzprogramm importierte MIDI-Datei
Der Vergleich beider Abbildungen zeigt, dass MIDI keine Informationen über die Darstellung
einer Partitur sowie Interpretationshinweise enthält. MIDI ist in erster Linie kein Darstellungsformat für Noten und deren Partituren, sondern ein Datenaustauschformat zwischen Synthesizern, Samplern, Drumcomputern, Sequenzerprogrammen und anderen Hardwaregeräten bzw.
Software. Für deren Kommunikation untereinander sind viele musikalische Symbole und Zeichen
irrelevant. Welche musikalischen Zeichen und Symbole von MIDI ausgewertet werden, ist in der
MIDI-Spezifikation27 nachzulesen. Wird ein MusicXML-Dokument, das aus einer MIDI-Datei
konvertiert wurde, für die Motivanalyse benutzt, können zwei Arten von
Verfälschungen des Notenbildes entstehen:
1. Die Lesbarkeit einer Partitur ist beeinträchtigt. Die vorherrschende Tonart wird nicht wie
üblich am Anfang des Notensystems dargestellt. Stattdessen werden Alterationen (Vorzeichen-Symbole wie b oder m) vor jeder Note einzeln verwendet. Die Informationen, die
für eine Motivanalyse an sich notwendig sind, sind jedoch nicht verfälscht. Es fehlen au vgl. MIDI Manufacturers Association Incorporated: "Tech Specs & Info". URL:
http://www.midi.org/techspecs/ [Stand: 1. Februar 2009]
27
29 ßerdem dynamische Zeichen zur Lautstärke sowie der Notentext, was die Motivanalyse
jedoch nicht beeinträchtigt. Die Motivanalyse kann trotz fehlender Zeichen durchgeführt
werden.
2. Die aus der MIDI-Datei konvertierte MusicXML-Datei erschwert die Motivanalyse oder
macht sie gar unmöglich. Wird z.B. eine Partitur, die Vorschlagsnoten enthält, als eine
MIDI-Datei gespeichert, so werden diese Noten in normale − rhythmusrelevante − Noten umgewandelt, obwohl Vorschlagsnoten nicht mit ihrem Notenwert im Takt gezählt
werden. In der Partitur sind nun neue Noten vorhanden, die auch als solche in der Motivanalyse interpretiert werden. Ebenfalls werden auch beim Speichern in das MIDIFormat bestimmte Notensysteme zusammengefasst. So wird ein Klaviersystem, das aus
Bass- und Diskantsystem besteht, miteinander verbunden. Zwei vollkommen getrennten
Melodiestrukturen bilden neue Intervall- und Akkordstrukturen, die in der Motivanalyse
falsch bewertet werden.
Es kann zusammengefasst werden, dass je ähnlicher eine gespeicherte Partitur der Originalpartitur im Notenbild ist, die Motivanalyse umso erfolgsversprechender ist. Es dürfen maximal Notenbildverfälschungen der ersteren Art auftreten.
30 3 DAS KONZEPT DES
MOTIVANALYSEALGORITHMUS
Die grundlegende Idee des Algorithmus besteht darin, die Noten eines Musikwerkes getrennt
nach Parametern aus MusicXML einzulesen, und anschließend die Noteninformationen je Parameter miteinander zu vergleichen. Hierbei sind insbesondere die Parameter Notenname, Alteration, Oktavlage, Notenwert sowie die beiden rhythmischen Zusatzzeichen Punktierung und X-tole
von Interesse. Diese Elemente sollen für den Algorithmus fortwährend getrennt voneinander
betrachtet werden. Voraussetzung ist, dass die einzelnen Noteninformationen zusammengesetzt
wieder der ursprünglichen Note entsprechen.
Handelt es sich bei einer Melodie um ein Motiv, so werden sich die dazugehörigen Noteninformationen der aufeinanderfolgenden Noten innerhalb des Musikstückes im Regelfall wiederholen.
So kann beispielsweise die längste Reihe dieser aufeinanderfolgenden Noteninformationen, die
im Musikwerk immer wiederkehrt, als Originalmotiv erkannt werden. Ist das Originalmotiv gefunden, so wird das Musikstück auf weitere übereinstimmende Noteninformationsreihen abgesucht und es wird ein Zusammenhang zwischen Originalmotiv und Motivverarbeitung gesucht.
Grundlegend bringt der Motivanalysealgorithmus nur dann sinnvolle Ergebnisse, wenn der
Komponist des zu analysierenden Werkes kompositorische Regeln zu Motivverarbeitungen korrekt und in nicht allzu freier Interpretation angewendet hat. Hat der Komponist ein Motiv nicht
eins zu eins verarbeitet, sondern z.B. innerhalb einer Sequenz auch nur eine Note verändert, kann
der Algorithmus dies nicht mehr als Sequenz erkennen.
3.1 DIE IDEE DER KONTURANALYSE ZUR
ERWEITERUNG DES MUSICXMLDATENBESTANDS
Neben den eben genannten Parametern, die für die Motivanalyse direkt aus MusicXML ausgelesen werden können, ist weiterhin die Melodiekontur ein wichtiger Bestandteil zur Motivanalyse.
So wird durch die Analyse der Melodiekontur die Ergebnismenge an Motivverarbeitungen einge-
31 grenzt, wodurch die Motivsuche beschleunigt wird. Außerdem sind einige Motivverarbeitungsformen ohne Konturanalyse gar nicht auffindbar. MusicXML enthält jedoch keine Angaben über
eine Kontur, sodass die Angaben hierzu aus den anderen Noteninformationen errechnet werden
müssen.
Die Kontur beschreibt den Melodieverlauf. Dabei sind drei Genauigkeitsstufen möglich: der Parsons-Code, die diatonische Kontur und die chromatische Kontur. Der Parsons-Code beschreibt,
ob sich die kommende Note höher, tiefer oder auf der gleichen Stufe zur aktuellen Note
befindet. Die diatonische Kontur beinhaltet den diatonischen Intervallabstand von Note zu Note
und die chromatische Kontur beinhaltet den chromatischen Intervallabstand von Note zu Note.
Mit Hilfe des Konturverlaufs kann das bereits gefundene Originalmotiv im Weiteren wie eine
Schablone über die gerade zu analysierende Notenfolge gelegt werden. Hierbei wird das Musikstück durchsucht, um eine Übereinstimmung − ein Matching − der Noten zur Schablone zu finden. Dadurch können die Motivverarbeitungen erkannt werden.
Im Folgenden wird n als Zeigerfunktion verwendet, welche das aktuell betrachtete musikalische
Ereignis (Note, Pause oder Akkord) in der vertikalen Ebene bezeichnet. n+1 ist das nächste zeitlich folgende musikalische Ereignis − unabhängig davon, ob es nach einer Viertelnote oder etwa
einer ganzen Note folgt. Je nachdem, ob sich Note, Pause oder Akkord an der Notenposition
n+1 befindet, muss der Konturverlauf von n zu n+1 für den Parsons-Code, die diatonische oder
chromatische Kontur neu berechnet werden. Diese Berechnung wird im MotivsucheAlgorithmus mit einer if-else Anweisung realisiert. Insgesamt sind neun Arten − neun Verbindungstypen − möglich, wie Notenposition n und Notenposition n+1 belegt sein können. In den
Klammern stehen die jeweiligen Abkürzungen, die bei Bedarf benutzt werden:









Notenposition n
Notenposition n+1
Note
Note
Note
Akkord
Akkord
Akkord
Pause
Pause
Pause
Note
Akkord
Pause
Note
Akkord
Pause
Note
Akkord
Pause
→
→
→
→
→
→
→
→
→
(N→N)
(N→A)
(N→P)
(A→N)
(A→A)
(A→P)
(P→N)
(P→A)
(P→P)
Abbildung 16 - n→n+1 Verbindungstypen
32 Für jede dieser Kombinationen muss der Algorithmus eine entsprechende Anweisung ausführen,
um die richtige Kontur zu errechnen.
Bei Akkorden nimmt die Konturbewegung von einer Akkordposition oder zu einer Akkordposition verschiedene Verlaufsrichtungen ein. Enthält beispielsweise Notenposition n eine Note und
Notenposition n+1 einen Akkord mit drei Noten, so gibt es von Position(n) zu Position(n+1) drei
Konturverläufe, die für die Motivanalyse jeweils einzeln zu betrachten und zu analysieren sind.
Jeder dieser drei Konturverläufe kann mit der Kontur des gesuchten Motivs oder einer Motivverarbeitung übereinstimmen. Es ist nicht zu vernachlässigen, dass die Komplexität zunimmt, je
mehr Akkorde ein Musikwerk enthält. Besteht beispielsweise Notenposition n aus einem Akkord
mit drei Noten und Notenposition n+1 ebenfalls aus einem Akkord mit drei Noten, so ergeben
sich von Position(n) zu Position(n+1) bereits neun Konturverläufe, die analysiert werden müssen.
Sind alle Notenpositionen und deren Belegung mit Note, Pause oder Akkord analysiert, kann
eine Kontur erstellt werden.
Der Parsons-Code beschreibt die Intervallrichtung von Note n zur Note n+1. Eine Note an der
ersten Position eines Musikwerkes wird mit dem Startzeichen (S oder auch *) initiiert. Die nachfolgende Note kann entweder den Wert „Repeat“ (R), „Up“ (U) oder „Down“ (D) annehmen.
Wie die Bezeichnungen bereits wiedergeben, wird das Intervall von Position(n) zu Position(n+1)
für den Parsons-Code an Position(n+1) beschrieben. Liegt die Note an Position(n+1) höher als
die Note an Position(n), so ist der Parsons-Code an Position(n+1)=U. Liegt die Note jedoch tiefer, ist der Parsons-Code an Position (n+1)=D. Liegen zwei aufeinanderfolgende Noten auf dem
gleichen Intervall, ist der Parsons-Code mit R zu bezeichnen. Rhythmen werden im ParsonsCode ignoriert.
Anhand von Parsons-Code-Reihen können alle Musikstücke systematisiert und katalogisiert werden. Die Publikation „The Directory of Tunes and Musical Themes“ von Denys Parsons beschreibt wichtige Klassikwerke, Volksmusik und Populäre Musik im Parsons-Code.28 Möchte ein
Musikinteressierter den Titel und Interpreten eines im „The Directory of Tunes and Musical
Themes“ publizierten Musikstücks herausfinden, so muss er die Melodie des Stückes gedanklich
nachsingen und den Parson-Code daran ableiten. Wie in einem Duden nähert er sich mit jedem
neuen Buchstaben im Parsons-Code seinem gewünschten Musikstück.
„Happy birthday“, ein Lied, dass weltweit fast jede Person kennt, lässt sich als Parsons-Code auf
folgende Weise beschreiben: *RUDUDDRUDUD. Der Parsons-Code, der auch im MPEG7Standard implementiert ist, ist eine bedeutende Idee für die Motivanalyse.
Im Gegensatz zum Parsons-Code wird anhand der diatonischen Kontur erkannt, wie viele Tonschritte im diatonischen Raum zwischen zwei Noten bestehen. Die erste Note eines Musikwerkes
28
vgl. Parsons, D. (2002): The Directory of Tunes and Musical Themes. Lübeck: Bohmeier Verlag.
33 wird mit einem Asterisk (*) initiiert. Intervalle, die von Notenposition(n) nach Notenposition(n+1) aufwärts verlaufen, werden mit ganzzahligen positiven Zahlen entsprechend des jeweiligen Intervalls gekennzeichnet. Intervalle, die von Notenposition(n) nach Notenposition(n+1)
abwärts verlaufen, werden dementsprechend mit ganzzahligen negativen Zahlen gekennzeichnet.
Die chromatische Kontur ist im Gegensatz zum Parsons-Code und zur diatonischen Kontur die
genaueste Methode, Intervalle zwischen Noten zu bestimmen. Mit der chromatischen Kontur
wird das Intervall zwischen zwei aufeinanderfolgenden Noten im Halbtonschritt ermittelt. Aufwärts verlaufende Intervalle werden mit positiven Zahlen und abwärts verlaufende Intervalle mit
negativen Zahlen entsprechend der Halbtonschritte angegeben.
Für die Suche nach einigen Motivverarbeitungen muss nur die Kontur des Parsons-Codes betrachtet werden, da die Betrachtung weiterer Konturen oder Noteninformationen keine genaueren Ergebnisse bringt. Andere Motivverarbeitungen können nur voneinander unterschieden werden, wenn sie alle Konturtests durchlaufen. Welche Motivverarbeitung welche Konturtests
durchlaufen muss, zeigt Abbildung 17.
34 Parsons‐Code Intervallengung
Intervallweitung
tonale Sequenz
tonale Umkehrung
diatonische Kontur Spiegelkrebs
reale Umkehrung
reale Sequenz
chromatische Kontur Augmentation
Diminution
Krebs I Krebs II Originalmotiv
Abbildung 17 - Suche nach Motivverarbeitungen mit Hilfe der Konturtests
Die Noteninformationen aus den Parametern Notenname, Alteration, Oktavlage, Notenwert
sowie die Daten aus der Konturanalyse ergeben den kompletten Datenbestand, der von dem
Motivanalysealgorithmus benötigt wird.
35 3.2 KONZEPT ZUR SEPARATEN ABSPEICHERUNG DER NOTENINFORMATIONEN
Mit einer multidimensionalen Arraystruktur können alle einzelnen Informationen einer Note in
separate Arrayzellen gespeichert werden. Mit Hilfe eines Arrayschlüssels ist es zu jeder Zeit möglich, auf einzelne oder alle Informationen einer Note zuzugreifen. Weiterhin kann die multidimensionale Arraystruktur skaliert und um weitere Informationen erweitert werden. Dies ist vor
allem für den Ausbau des Motivanalysealgorithmus hilfreich.
n-3
n-2
n-1
aktuelle Note n
n+1
1
2
3
4
5
e
g
h
d
.
4
4
4
5
.
1/8
1/8
¼
1/8
.
0
1
0
0
0
Alteration
Notenwert
Oktavlage
Notenname
Index / Arrayschlüssel
Abbildung 18 - Darstellung einer multidimensionalen Arraystruktur
Die Abbildung 18 zeigt eine mögliche multidimensionale Arraystruktur mit den direkt aus MusicXML gelesenen Noteninformationen Notenname, Oktavlage, Alteration und Notenwert anhand des selbst komponierten Motivbeispiels. Für den Algorithmus soll nun die Arraystruktur
um den n→n+1 Verbindungstyp, den Parsons-Code, die diatonische und chromatische Kontur
sowie die Noteninformation Punktierung und X-tole erweitert werden, wie in Abbildung 19 dargestellt.
36 n-3
1
e
4
1/8
0
*
*
*
n-2
2
g
4
1/8
1
U
+2
+4
n-1
3
h
4
¼
0
U
+2
+3
aktuelle Note n
4
d
5
1/8
0
U
+2
+3
n+1
5
.
.
.
0
D
-1
-2
Note →
Note
Note →
Note
Note →
Note
Note →
Note
Note →
Note
nein
nein
nein
nein
nein
nein
nein
nein
ja
nein
X-tole
Punktierung
n→n+1 Verbindungstyp
Chromatische Kontur
Diatonische Kontur
Parsons-Code
Alteration
Notenwert
Oktave
Notenname
Index / Arrayschlüssel
Abbildung 19 - Darstellung einer erweiterten multidimensionalen Arraystruktur
Abbildung 19 zeigt, wie später alle Noten und Pausen eines Werkes in einem multidimensionalen
Array untergebracht werden. Die Daten aus diesem Array werden bei der Suche nach Motivverarbeitungen miteinander verglichen. Mit Hilfe mathematischer Regeln können so Motivverarbeitungen zum Originalmotiv zurückgeführt werden.
Im Folgenden werden die Noteninformationen, die bei den einzelnen Motivverarbeitungsformen
im Array auftreten, vorgestellt und mathematische Regeln zur Rückführung der Motivverarbeitungen zum Originalmotiv entwickelt.
37 3.3 SYSTEMATISCHER BEZUG DER MOTIVVERARBEITUNG ZUM ORIGINALMOTIV
3.3.1
ORIGINALMOTIV / WIEDERHOLUNG
Ein Originalmotiv ist die Basis, aus der alle Motivverarbeitungen entstehen. Daher ist es wichtig,
dass so viele Noteninformationen wie möglich aus dem Originalmotiv extrahiert werden, um
über gutes Ausgangsmaterial für die Analyse der Motivverarbeitungen zu verfügen. Das Originalmotiv wird als solches anhand seiner Wiederholungen identifiziert. Die Wiederholung ist hier
gleichzusetzen mit dem Originalmotiv.
Zur Veranschaulichung wird wieder das selbst komponierte Motiv als Beispiel genutzt.
Notenname
E
G
B
D
C
B
D
E
C
A
Alteration
Oktave
0
4
+1
4
0
4
0
5
0
5
0
4
0
4
0
4
0
4
0
3
Notenwert
Punktierung
X-tole
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/4
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/4
ja
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/2
nein
nein
Note →
Note
n→n+1
(Parsons)
Start
Up
Up
Up
Down
Down
Down
Up
Down
Down
Start
+2
+2
+2
-1
-1
-5
+1
-2
-2
Start
+4
+3
+3
-2
-1
-9
+2
-4
-3
n→n+1
Verbindungstyp
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
Tabelle 7 - Noteninformationen des Originalmotivs
Die Tabelle 7 stellt alle für die Motivanalyse zur Verfügung stehenden Noteninformationen dar:
Notenname, Alteration, Oktave, Notenwert, Punktierung und X-tole, den n→n+1Verbindungstyp, den Parsons-Code, die diatonische sowie die chromatische Kontur.
38 3.3.2
IMITATION
Eine Imitation kann nach einigen Noten frei weitergeführt werden. Durch die freie Weiterführung ist es nicht möglich, diese Motivverarbeitungsform vollständig auf das Originalmotiv automatisiert zurückzuführen. Eine Analyse der Imitation ist dann möglich, wenn der frei weitergeführte Motivschwanz nicht betrachtet würde. Dies hat allerdings zur Folge, dass unter Umständen das Motiv zu kurz ist und der Algorithmus Notenfolgen als motivthematische Verarbeitungen ausgibt, die an sich gar keine sind. Für die Diplomarbeit soll die Imitation daher unbeachtet
bleiben.
3.3.3
SEQUENZ
Es ist zwischen tonaler und realer Sequenz zu unterscheiden.
Die tonale Sequenz ist eine zur Notenlinie parallel verschobene Wiederholung des Originalmotivs, bei der die Tonart und damit auch die diatonische Kontur erhalten bleiben. So bleibt in einer
tonalen Sequenz eines Motivs in G-Dur beispielsweise das Fis bestehen, sofern dieses in der Sequenz erreicht wird. Es tritt jedoch in diesem Fall an einer anderen vertikalen Position auf.
Es treten keine zusätzlichen Alterationen auf einer anderen Tonhöhe auf. Die einzige Ausnahme
ist eine Alteration, die außerhalb der Tonart auch im Originalmotiv auftritt. Diese findet sich in
der Sequenz (sowohl bei der tonalen als auch der realen) an der gleichen zeitlichen Position wieder.
Abbildung 20 - Tonale Sequenz und deren Konturverlauf
Wie in Abbildung 20 angedeutet, ist es relativ frei, um wie viele Tonschritte die Sequenz nach
oben oder unten verschoben wird, jedoch muss der Anfangston aus dem Notenvorrat der vorherrschenden Tonart kommen, sofern nicht bereits der Anfangston des Originalmotivs tonartenunabhängig alteriert ist.
39 Durch das vertikale Verschieben gehen diverse Noteninformationen, die ein Motiv in der Vertikalen beschreiben, verloren. Somit können Notenname und Oktavlage nicht mehr zur Analyse
der tonalen Sequenz herangezogen werden. Auch wären Noteninformationen zur Alteration nur
auswertbar, wenn das Originalmotiv in C-Dur notiert wäre, und somit tonartenabhängige Alterationen nicht auftreten. Daher können zur Identifizierung der tonalen Sequenz nur die Informationen herangezogen werden, die in Tabelle 8 enthalten sind. Hierzu zählen die Daten des ParsonsCode und der diatonischen Kontur, ebenso die horizontalen Noteninformationen Notenwert,
Punktierung und X-tole. Die Noteninformationen zur chromatischen Kontur sind erwartungsgemäß für das Finden einer tonalen Sequenz nicht nutzbar.
Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
(+1)29
1/8
nein
nein
Note →
Note
Start
1/8
nein
nein
Note →
Note
Up
1/4
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/4
ja
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Down
1/2
nein
nein
Note →
Note
Down
Start
+2
+2
+2
-1
-1
-5
+1
-2
-2
Tabelle 8 - Noteninformationen der tonalen Sequenz
Die folgende Tabelle stellt dar, welche Noteninformationen der tonalen Sequenz nicht mehr dem
Originalmotiv entsprechen.
Originalmotiv
Tonale Sequenz
Notenname
Alteration
Oktavlage
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code
Diatonische Kontur
Diatonische Kontur
Chromatische Kontur
Tabelle 9 - Vergleichbare Noteninformationen zwischen der tonalen Sequenz und Originalmotiv
Ist das Originalmotiv in einer Kreuz- bzw. B-Tonart notiert, können weitere Alterationen durch die Parallelverschiebung auftreten, die sich dann an dieser Position mit der tonartenunabhängigen Alteration summieren.
29
40 Die reale Sequenz ist im Vergleich zur tonalen Sequenz mathematisch genauer und eindeutiger
zu identifizieren. Bei der realen Sequenz werden alle Intervalle chromatisch beibehalten, somit
dient die chromatische Kontur als weiteres Kriterium zur Auffindung einer realen Sequenz.
Eine reale Sequenz kann auf jeder beliebigen Tonstufe beginnen, also auch auf einer bereits alterierten Tonstufe. Daher sind auch hier, wie bei der tonalen Sequenz, die Noteninformationen zur
Tonhöhe, Alteration und Oktavlage bei einem Vergleich mit dem Originalmotiv innerhalb der
Motivanalyse nicht verwendbar.
Tabelle 10 stellt die zur Verfügung stehenden Noteninformationen einer beliebigen realen Sequenz des Beispielmotivs dar.
Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/4
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/4
ja
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/8
nein
nein
Note →
Note
1/2
nein
nein
Note →
Note
Start
Up
Up
Up
Down
Down
Down
Up
Down
Down
Start
+2
+2
+2
-1
-1
-5
+1
-2
-2
Start
+4
+3
+3
-2
-1
-9
+2
-4
-3
Tabelle 10 - Noteninformationen der realen Sequenz
Originalmotiv
Reale Sequenz
Notenname
Alteration
Oktavlage
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code
Diatonische Kontur
Diatonische Kontur
Chromatische Kontur
Chromatische Kontur
Tabelle 11 - Vergleichbare Noteninformationen zwischen realer Sequenz und Originalmotiv
Tabelle 11 zeigt alle Noteninformation eines Originalmotivs und dessen realer Sequenz, die während der Motivanalyse miteinander verglichen werden. Neben dem Parsons-Code und der diatonischen Kontur muss auch die chromatische Kontur der realen Sequenz mit der des Originalmotivs übereinstimmen.
41 3.3.4
UMKEHRUNG
Auch bei Umkehrungen wird zwischen tonalen und realen Umkehrungen unterschieden.
Soll eine tonale Umkehrung gefunden werden, so ist erstmalig ein Transformationsschritt vom
Originalmotiv zur Umkehrung notwendig.
Eine tonale Umkehrung als an die Tonart angepasste horizontale Spiegelung des Originalmotivs
kann auf einer beliebigen Tonstufe innerhalb der Tonart beginnen. Betrachtet werden drei mögliche tonale Umkehrungen des Beispielmotivs in Abbildung 21. Mit Hilfe dieser drei Beispiele soll
eine mathematische Beschreibung gefunden werden.
Originalmotiv
Einige Formen der tonalen Umkehrung
Abbildung 21 - Mögliche tonale Umkehrungen des Originalmotivs
Auffällig ist, dass alle Notenwerte auch in der tonalen Umkehrung erhalten bleiben. Es kann auch
für die reale Umkehrung vorausgesetzt werden, dass durch die Spiegelung an der Horizontalen
der Rhythmus nicht beeinflusst wird.
Weiterhin ist gut sichtbar, dass eine Umkehrung stets spiegelverkehrt zum Verlauf des Originalmotivs ist. Eine aufwärts verlaufende Kontur geht in der Umkehrung abwärts, eine abwärts verlaufende Kontur im Originalmotiv geht in der Umkehrung aufwärts. Wird aufwärts mit einem
„+“ und abwärts mit einem „-“ symbolisiert, so lässt sich folgende Abbildungsvorschrift für das
Originalmotiv zur Umkehrung beschreiben:
42 

wenn n→n+1(Originalmotiv) = +
wenn n→n+1(Originalmotiv) = -

Befindet sich eine Note genau auf der Achse, an der die Spiegelung verläuft, befindet sich
die Note im Originalmotiv wie auch in der Umkehrung auf der gleichen Tonhöhe.
n→n+1(Umkehrung) = n→n+1(Umkehrung) = +
Eine Abbildungsregel lässt sich daraus für den Parsons-Code, für die diatonische, sowie auch für
die chromatische Kontur bilden.
Für den Parsons-Code wird die Abbildungsregel wie folgt angepasst:

wenn n→n+1(Originalmotiv) = U
n→n+1(Umkehrung) = D

wenn n→n+1(Originalmotiv) = D
n→n+1(Umkehrung) = U

wenn n→n+1(Originalmotiv) = R
n→n+1(Umkehrung) = R
Für die diatonische und chromatische Kontur muss stets nur das Vorzeichen geändert werden.
Sei x 

wenn n→n+1(Originalmotiv) = (+)x
wenn n→n+1(Originalmotiv) = -x
n→n+1(Umkehrung) = -x
n→n+1(Umkehrung) = (+)x 30
Die chromatische Kontur ist jedoch für die Betrachtung der tonalen Umkehrung irrelevant, da
die chromatischen Schritte je nach Tonart unterschiedlich und daher nicht mehr mit der chromatischen Kontur des Originalmotivs zu vergleichen sind. Die chromatische Kontur ist daher nur
bei der realen Umkehrung von Interesse.
Abbildung 22 zeigt die drei möglichen tonalen Umkehrungen aus Abbildung 21 mit den für die
Motivanalyse verwendbaren Konturen.
30 Da bei ganzen Zahlen in einem MusicXML-Dokument keine Pluszeichen angezeigt werden, sind die Pluszeichen
zur Verdeutlichung in Klammern gesetzt.
43 Originalmotiv
S
U
U
U
D
D
D
U
D
D
Parsons-Code
*
2
-1
-1
-5
1
-2
-2
Diatonische Kontur
Form 1 der tonalen Umkehrung
S
D
D
D
U
U
U
D
U
U
Parsons-Code
*
1
5
-1
2
2
Diatonische Kontur
Form 2 der tonalen Umkehrung
S
D
D
D
U
U
U
D
U
U
Parsons-Code
*
1
5
-1
2
2
Diatonische Kontur
Form 3 der tonalen Umkehrung
S
D
D
D
U
U
U
D
U
U
Parsons-Code
*
5
-1
2
2
Diatonische Kontur
2
-2
-2
-2
2
-2
-2
-2
-2
-2
-2
1
1
1
1
Abbildung 22 - Mögliche Formen der Umkehrung und deren Kontur Da die Spiegelachse bei der Umkehrung frei gewählt wird, können weder Notennamen noch Oktavlagen dazu genutzt werden, in der Motivanalyse eine Umkehrung aufzufinden. Ebenso ist auch
die Alteration ähnlich wie bei der tonalen und realen Sequenz nicht zu verwenden. Bei der automatisierten Suche nach tonalen Umkehrungen sind also lediglich die rhythmischen Werte sowie
die diatonische Kontur und der Parsons-Code ausschlaggebend.
Tabelle 12 zeigt die für die Motivanalyse zur Verfügung stehenden Noteninformationen einer
beliebigen tonalen Umkehrung des Beispielmotivs. Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/8
nein
nein
Note →
Note
Start
1/8
nein
nein
Note →
Note
Down
1/4
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/4
ja
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Up
1/2
nein
nein
Note →
Note
Up
Start
-2
-2
-2
+1
+1
+5
-1
+2
+2
Tabelle 12 - Noteninformationen der tonalen Umkehrung
Eine Übersicht der Parameter, die bei der Suche nach tonalen Umkehrungen mit dem Originalmotiv verglichen werden können, ist in Tabelle 13 enthalten.
44 Originalmotiv
Tonale Umkehrung
Notenname
Alteration
Oktavlage
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code der Umkehrung
Diatonische Kontur
Diatonische Kontur der Umkehrung
Chromatische Kontur
Tabelle 13 - Vergleichbare Noteninformationen zwischen tonaler Umkehrung und Originalmotiv
Für die reale Umkehrung gelten die gleichen Abbildungsregeln in der Konturanalyse wie für die
tonale Umkehrung. Auch sind die gleichen Parameter der realen Umkehrung zu betrachten:
Rhythmus und Konturen (siehe Tabelle 14 und Tabelle 15). Bei der realen Umkehrung ist aber
die Analyse der chromatischen Kontur zu ergänzen, da die reale Umkehrung chromatisch eins zu
eins gespiegelt wird.
Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/8
nein
nein
Note →
Note
Start
1/8
nein
nein
Note →
Note
Down
1/4
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/4
ja
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Up
1/2
nein
nein
Note →
Note
Up
Start
-2
-2
-2
+1
+1
+5
-1
+2
+2
Start
-4
-3
-3
+2
+2
+9
-2
+4
+3
Tabelle 14 - Noteninformationen der realen Umkehrung Originalmotiv
Reale Umkehrung
Notenname
Alteration
Oktavlage
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code der Umkehrung
Diatonische Kontur
Diatonische Kontur der Umkehrung
Chromatische Kontur
Chromatische Kontur der Umkehrung
Tabelle 15 - Vergleichbare Noteninformationen zwischen realer Umkehrung und Originalmotiv
45 3.3.5
KREBS
Auch der Krebs wird in zwei verschiedenen Formen betrachtet: Krebs I sowie Krebs II.
Der Krebs I ist die Motivform, bei der das Motiv von hinten nach vorn gelesen wird. Wie in
Tabelle 16 dargestellt, sind im Krebs I immer noch alle Noteninformationen aus dem Originalmotivs enthalten, lediglich anders sortiert.
Notenname
A
C
E
D
B
C
D
B
G
E
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
0
3
1/2
nein
nein
Note →
Note
Start
0
4
1/8
nein
nein
Note →
Note
Up
0
4
1/8
nein
nein
Note →
Note
Up
0
4
1/8
nein
nein
Note →
Note
Down
0
4
1/8
nein
nein
Note →
Note
Up
0
5
1/4
ja
nein
Note →
Note
Up
0
5
1/8
nein
nein
Note →
Note
Up
0
4
1/4
nein
nein
Note →
Note
Down
+1
4
1/8
nein
nein
Note →
Note
Down
0
4
1/8
nein
nein
Note →
Note
Down
Start
+2
+2
-1
+5
+1
+1
-2
-2
-2
Start
+3
+4
-2
+9
+1
+2
-3
-3
-4
Tabelle 16 - Noteninformationen des Krebs I
Originalmotiv
Krebs I
Notenname
Notenname (rückwärtige Reihenfolge)
Alteration
Alteration (rückwärtige Reihenfolge)
Oktavlage
Oktavlage (rückwärtige Reihenfolge)
Notenwert
Notenwert (rückwärtige Reihenfolge)
Punktierung
Punktierung (rückwärtige Reihenfolge)
X-tole
X-tole (rückwärtige Reihenfolge)
Parsons-Code
Parsons-Code (rückwärtige Reihenfolge und Symboltausch)
Diatonische Kontur
Diatonische Kontur (rückwärtige Reihenfolge und Vorzeichentausch)
Chromatische Kontur
Chromatische Kontur (rückwärtige Reihenfolge und Vorzeichentausch)
Tabelle 17 - Vergleichbare Noteninformationen zwischen Krebs I und Originalmotiv
Um festzustellen, ob es sich bei einer Notenfolge um das Krebs I-Motiv des Originalmotivs handelt, sind alle Parameter in rückwärtiger Reihenfolge zu betrachten (siehe Tabelle 17).
Die Transformation des Parsons-Codes, der diatonischen sowie der chromatischen Kontur verlangt jedoch, wie es sich in Abbildung 23 erahnen lässt, einen weiteren Schritt.
46 Originalmotiv
ParsonsS U U U
Code
Diatonische
* 2 2 2
Kontur
Chromatische * 4 3 3
Kontur
D
D
D
U
D
D
Krebs I
S U U
D
U
U
U
D
D
D
-1
-1
-5
1
-2
-2
*
2
2
-1
5
1
1
-2
-2
-2
-2
-1
-9
2
-4
-3
*
3
4
-2
9
1
2
-3
-3
-4
Abbildung 23 - Konturen vom Originalmotiv und Krebs I
Für die Bildung der Konturen für Krebs I ist ein Zweischrittverfahren notwendig, welches Abbildung 24 verdeutlichen soll. Im ersten Schritt werden die Konturenreihen in verkehrter Reihenfolge angeordnet. Im zweiten Schritt müssen alle Vorzeichen getauscht sowie die Symbole im
Parsons-Code invertiert werden.
47 1. Ausgangssituation
Das vorliegende Originalmotiv
S U U U D D D
* 2 2 2 -1 -1 -5
* 4 3 3 -2 -1 -9
U
1
2
D
-2
-4
D
-2
-3
2. Krebsbildung
3. Umwandlung
Parsons-Code:
-Symbol am Reihenanfang wird durch * ersetzt
-Symbolumwandlungen: D→U, U→D und
R→R
Konturreihe wird in verkehrter Reihenfolge
gebildet.
Diatonische Kontur:
-Zahl am Reihenanfang wird durch * ersetzt
-Symbole ersetzen: - → + und + → -
D
-2
-4
D
-2
-3
U
-2
-3
D
1
2
D
1
1
D
5
9
U
-1
-2
U
2
4
U
2
3
S
*
*
Chromatische Kontur:
-Zahl am Reihenanfang wird durch * ersetzt
-Symbole ersetzen: - → + und + → S U U D U U U D D D
* 2 2 -1 5 1 1 -2 -2 -2
* 3 4 -2 9 1 2 -3 -3 -4
Abbildung 24 - Transformationsprozess vom Originalmotiv zur Krebsform I
Nur wenn in einer Notenreihe nach der Transformation alle Noteninformationen aller Parameter
mit denen des Originalmotivs übereinstimmen, handelt es sich eindeutig um einen Krebs I.
Der Krebs II ist ähnlich zu analysieren wie der Krebs I. Jedoch sind hier nur die Intervalle rückwärts zu lesen, der Rhythmus ist bei Krebs II mit dem Originalmotiv identisch. Durch die Beibehaltung der Notenwerte ist es für den Hörer für gewöhnlich leichter, den Bezug zum Originalmo-
48 tiv zu erkennen.31
Wieder sind alle Parameter in die Analyse einzubeziehen. Wie die Werte der Parameter bei dem
Krebs II des Beispielmotivs lauten, ist in Tabelle 18 dargestellt.
Die Transformation der Konturen, Notennamen, Alterationen sowie Oktavlagen durch den Algorithmus vom Originalmotiv zum Krebs II erfolgt auf die gleiche Weise wie bei Krebs I. Jedoch
müssen die Notenwerte nicht transformiert werden, diese liegen somit in der gleichen Reihenfolge wie beim Originalmotiv vor.
Notenname
A
C
E
D
B
C
D
B
G
E
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
0
3
1/8
nein
nein
Note →
Note
Start
0
4
1/8
nein
nein
Note →
Note
Up
0
4
1/4
nein
Nein
Note →
Note
Up
0
4
1/8
nein
nein
Note →
Note
Down
0
4
1/4
nein
nein
Note →
Note
Up
0
5
1/8
ja
nein
Note →
Note
Up
0
5
1/8
nein
nein
Note →
Note
Up
0
4
1/8
nein
nein
Note →
Note
Down
+1
4
1/8
nein
nein
Note →
Note
Down
0
4
1/2
nein
nein
Note →
Note
Down
Start
+2
+2
-1
+5
+1
+1
-2
-2
-2
Start
+3
+4
-2
+9
+1
+2
-3
-3
-4
Tabelle 18 - Noteninformationen des Krebs II Originalmotiv
Krebs II
Notenname
Notenname (rückwärtige Reihenfolge)
Alteration
Alteration (rückwärtige Reihenfolge)
Oktavlage
Oktavlage (rückwärtige Reihenfolge)
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code (rückwärtige Reihenfolge und Symboltausch)
Diatonische Kontur
Diatonische Kontur (rückwärtige Reihenfolge und Vorzeichentausch)
Chromatische Kontur
Chromatische Kontur (rückwärtige Reihenfolge und Vorzeichentausch)
Tabelle 19 - Vergleichbare Noteninformationen zwischen Krebs II und Originalmotiv
Tabelle 19 zeigt, welche Noteninformationen des Krebses II bei der Transformation aus dem
Originalmotiv zum Originalmotiv gleich bleiben.
vgl. Amon, R. (2005) Motiv – Motivisch-thematische Arbeit, Lexikon der Harmonielehre. Wien-München: Doblinger
Metzler Verlag, 193 f.
31
49 3.3.6
SPIEGELKREBS
Der Spiegelkrebs ist eine Kombination aus tonaler Umkehrung und Krebs I, auch Krebsumkehrung genannt.
Aufgrund der horizontalen Spiegelung, durch die der Spiegelkrebs auf jeder beliebigen Tonstufe
innerhalb der vorherrschenden Tonart beginnen kann, sind Notennamen, Alterationen, Oktavlagen sowie die chromatische Kontur keine brauchbaren Parameter, um den Spiegelkrebs auf das
Originalmotiv zurückzuführen. Tabelle 20 zeigt alle Parameter, aufgrund derer der Spiegelkrebs
durch Vergleich mit dem Originalmotiv in der Motivanalyse als solcher erkannt wird. Wiederum
ist es notwendig, Transformationen vorzunehmen.
Originalmotiv
Notenname
Alteration
Oktavlage
Notenwert
Punktierung
X-tole
Parsons-Code
Diatonische Kontur
Spiegelkrebs
Notenwert (rückwärtige Reihenfolge)
Punktierung (rückwärtige Reihenfolge)
X-tole (rückwärtige Reihenfolge)
Parsons-Code (rückwärtige Reihenfolge)
Diatonische Kontur
(rückwärtige Reihenfolge)
Chromatische Kontur
Tabelle 20 - Vergleichbare Noteninformationen zwischen Spiegelkrebs und Originalmotiv
Es spielt keine Rolle, ob zuerst die Umkehrung und dann Krebs I oder zuerst der Krebs I und
dann die Umkehrung gebildet wird. Dies wird in Abbildung 25 anhand des Transformationsprozesses für den Parsons-Code verdeutlicht.
50 Originalmotiv
S
U U U D D D U D D
Umkehrung
Krebs
Spiegelkrebs
S U U D U U U D D D
S D D D U U U D U U
Umkehrung
Krebs
=
S D D U D D D U U U
S D D U D D D U U U
Abbildung 25 - Transformationsmöglichkeiten vom Originalmotiv zum Spiegelkrebs anhand des Parsons-Codes
Die Transformation der Konturen bei Krebs I verlangt das rückwärtige Lesen der Noten sowie
einen Symboltausch bzw. Vorzeichentausch, während bei der Umkehrung zusätzlich ein Symboltausch bzw. Vorzeichentausch notwendig wird. Somit hebt sich der Symbol- und Vorzeichentausch wieder auf. Die Konturen des Spiegelkrebses unterscheiden sich vom Originalmotiv also
nur in der rückwärtigen Reihenfolge.
Welche konkreten Werte bei einem beliebigen Spiegelkrebs des Beispielmotivs entstehen, zeigt
Tabelle 21.
Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/2
nein
nein
Note →
Note
Start
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Down
1/4
ja
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/4
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
Start
-2
-2
+1
-5
-1
-1
+2
+2
+2
Tabelle 21 - Noteninformationen des Spiegelkrebses
Je nachdem, ob zunächst die Umkehrung oder erst der Krebs durchgeführt wird, fallen einige
Parameter in unterschiedlicher Reihenfolge als Basis für einen Vergleich der Noteninformationen
51 zwischen Originalmotiv und Verarbeitung weg. Das Endresultat ist aber bei beiden Reihenfolgen
dasselbe, da die Reihenfolge der Transformation irrelevant ist. Abbildung 26 zeigt auf der linken
Seite, welche Noteninformationen für die Motivanalyse zu verwenden sind, wenn zunächst die
Umkehrung und danach davon der Krebs I gebildet werden. Eine Umkehrung ist mit dem Originalmotiv allein durch die Parameter Notenwert, Parsons-Code sowie die diatonische Kontur vergleichbar. Wird danach der Krebs I gebildet, so sind alle diese betrachteten Noteninformationen
zur Motivanalyse zu verwenden. Auf der rechten Seite von Abbildung 26 wird zunächst der
Krebs I gebildet, bei dem alle Noteninformationen zum Vergleich mit dem Originalmotiv verwendet werden können. Erst danach fallen Notennamen, Alterationen, Oktavlagen sowie die
chromatischen Konturen als brauchbare Noteninformationen weg.
Anhand dieser Darstellung wird deutlich, dass es wesentlich effizienter ist, zuerst die Umkehrung
und danach den Krebs zu bilden, da so vom Algorithmus bei der Berechnung des Krebses wesentlich weniger Noteninformationen durchgearbeitet werden müssen.
Originalmotiv
Umkehrung
Notenname
Alteration
Oktavlage
Notenwert
Chromatische
Kontur
Diatonische
Kontur
Parsons-Code
Notenwert
-
Krebs der Umkehrung
(Spiegelkrebs)
Notenwert
-
Diatonische
Kontur
Parsons-Code
Diatonische
Kontur
Parsons-Code
Originalmotiv
Krebs
Notenname
Alteration
Oktavlage
Notenwert
Chromatische
Kontur
Diatonische
Kontur
Parsons-Code
Notenname
Alteration
Oktavlage
Notenwert
Chromatische
Kontur
Diatonische
Kontur
Parsons-Code
Umkehrung des
Krebses
(Spiegelkrebs)
Notenwert
Diatonische
Kontur
Parsons-Code
Abbildung 26 - Verlust der Noteninformationen in den einzelnen Umwandlungsstufen
3.3.7
INTERVALLWEITUNG
Bei der Intervallweitung werden die Intervalle gestreckt. Es können beliebige Tonhöhen erreicht
werden, solange die Intervallrichtung bestehen bleibt. Dies macht es unmöglich, Notennamen,
Alterationen sowie Oktavlagen als Kriterium in der Motivanalyse zu verwenden. Auch sind die
diatonische und die chromatische Kontur nicht mehr mit dem Originalmotiv vergleichbar. Tabelle 22 zeigt die Parameter, die bei der Motivanalyse ein durch Intervallweitung verarbeitetes Motiv
auf das Originalmotiv zurückführen lassen. 52 Originalmotiv
Intervallweitung
Notenname
Alteration
Oktavlage
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code
Diatonische Kontur
Chromatische Kontur
Tabelle 22 - Vergleichbare Noteninformationen zwischen Intervallweitung und Originalmotiv
Die Noteninformationen des intervallgeweiteten Motivs sind in Tabelle 23 verzeichnet.
Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/8
nein
nein
Note →
Note
Start
1/8
nein
nein
Note →
Note
Up
1/4
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/4
ja
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
Nein
Nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Down
1/2
nein
nein
Note →
Note
Down
Tabelle 23 - Noteninformationen der Intervallweitung
3.3.8
INTERVALLENGUNG
Für die Intervallengung gelten ähnliche Regeln, wie bei der Intervallweitung. Der Unterschied
liegt hierbei darin, dass Intervalle bei der Intervallengung kleiner sein müssen, als die des Originalmotivs.
Wie bei der Intervallweitung liegen die Gemeinsamkeiten der Intervallengung zum Original in
den rhythmischen Parametern Notenwert, Punktierung und X-tole sowie im Parsons-Code (siehe
Tabelle 24).
53 Originalmotiv
Intervallengung
Notenname
Alteration
Oktavlage
Notenwert
Notenwert
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code
Diatonische Kontur
Chromatische Kontur
Tabelle 24 - Vergleichbare Noteninformationen zwischen Intervallengung und Originalmotiv
Auffällig ist, dass auch die konkreten Noteninformationen des durch Intervallengung verarbeiteten Originalmotivs, wie in Tabelle 25 dargestellt, sich nicht von den entsprechenden Noteninformationen der Intervallweitung unterscheiden. Da nur diese Parameter zur Beschreibung von
Notenverläufen zur Verfügung stehen, ist auch durch den Algorithmus nicht zwischen
Intervallengung und Intervallweitung zu trennen. Die Frage, um welche Motivverarbeitungsform
es sich handelt, ist jedoch zweitrangig. Wesentlicher ist es, dass überhaupt die Motivverarbeitungen im Allgemeinen gefunden werden.
Notenname
Alteration
Oktave
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/8
nein
nein
Note →
Note
Start
1/8
nein
nein
Note →
Note
Up
1/4
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/4
ja
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Down
1/8
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Down
1/2
nein
nein
Note →
Note
Down
Tabelle 25 - Noteninformationen der Intervallengung
3.3.9
AUGMENTATION
Bei der Augmentation werden alle Notenwerte des Originalmotivs mit dem Faktor Zwei multipliziert. Alle anderen Noteninformationen bleiben mit dem Originalmotiv identisch und können
in der Motivanalyse direkt verglichen werden.
54 Tabelle 26 zeigt die durch den Algorithmus zu vergleichenden Noteninformationen zwischen
Originalmotiv und Augmentation.
Originalmotiv
Augmentation
Notenname
Notenname
Alteration
Alteration
Oktavlage
Oktavlage
Notenwert
Notenwert * 2
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code
Diatonische Kontur
Diatonische Kontur
Chromatische Kontur
Chromatische Kontur
Tabelle 26 - Vergleichbare Noteninformationen zwischen Augmentation und Originalmotiv
Wie die Noteninformationen der Augmentation des Beispielmotivs aussehen, ist in Tabelle 27
dargestellt. Da hier alle Parameter mit Noteninformationen belegt sind, kann die Augmentation
eindeutig identifiziert werden. Auch ist die Analyse der Augmentation für den Algorithmus sehr
einfach, da neben dem simplen Vergleich der Noteninformationen lediglich zuvor die Notenwerte mit dem Faktor Zwei multipliziert werden müssen.
Notenname
E
G
B
D
C
B
D
E
C
A
Alteration
Oktave
0
4
+1
4
0
4
0
5
0
5
0
4
0
4
0
4
0
4
0
3
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/4
nein
nein
Note →
Note
Start
1/4
nein
nein
Note →
Note
Up
1/2
nein
nein
Note →
Note
Up
1/4
nein
nein
Note →
Note
Up
1/2
ja
nein
Note →
Note
Down
1/4
nein
nein
Note →
Note
Down
1/4
nein
nein
Note →
Note
Down
1/4
nein
nein
Note →
Note
Up
1/4
nein
nein
Note →
Note
Down
1/1
nein
nein
Note →
Note
Down
Start
+2
+2
+2
-1
-1
-5
+1
-2
-2
Start
+4
+3
+3
-2
-1
-9
+2
-4
-3
Tabelle 27 - Noteninformationen der Augmentation
3.3.10
DIMINUTION
Ebenso wie die Augmentation ist die Berechnung der Diminution innerhalb eines Musikwerkes
einfach, da hier bis auf die Notenwerte alle Noteninformationen direkt mit dem Originalmotiv
verglichen werden können. Die Notenwerte des Motivs müssen vor dem Vergleich mit dem Originalmotiv durch Zwei dividiert werden (siehe Tabelle 28).
55 Originalmotiv
Augmentation
Notenname
Notenname
Alteration
Alteration
Oktavlage
Oktavlage
Notenwert
Notenwert / 2
Punktierung
Punktierung
X-tole
X-tole
Parsons-Code
Parsons-Code
Diatonische Kontur
Diatonische Kontur
Chromatische Kontur
Chromatische Kontur
Tabelle 28 - Vergleichbare Noteninformationen zwischen Diminution und Originalmotiv
Für die Motivanalyse der Diminution des Beispielmotivs stehen folgende Werte zum Vergleich:
Notenname
E
G
B
D
C
B
D
E
C
A
Alteration
Oktave
0
4
+1
4
0
4
0
5
0
5
0
4
0
4
0
4
0
4
0
3
Notenwert
Punktierung
X-tole
n→n+1
Verbindungstyp
n→n+1
(Parsons)
n→n+1
(Diatonisch)
n→n+1
(Chromatisch)
1/16
nein
nein
Note →
Note
Start
1/16
nein
nein
Note →
Note
Up
1/8
nein
nein
Note →
Note
Up
1/16
nein
nein
Note →
Note
Up
1/8
ja
nein
Note →
Note
Down
1/16
nein
nein
Note →
Note
Down
1/16
nein
nein
Note →
Note
Down
1/16
nein
nein
Note →
Note
Up
1/16
nein
nein
Note →
Note
Down
1/4
nein
nein
Note →
Note
Down
Start
+2
+2
+2
-1
-1
-5
+1
-2
-2
Start
+4
+3
+3
-2
-1
-9
+2
-4
-3
Tabelle 29 - Noteninformationen der Diminution
3.3.11
WEITERE FORMEN
Weitere motivthematische Verarbeitungen, wie beispielsweise Abspaltung, Erweiterung, Differenzierung und entwickelnde Variation sind mathematisch nicht oder nur schwer zu fassen.32 Es
ist nicht auszuschließen, dass für diese Motivverarbeitungen Transformationsregeln entwickelt
werden können, um eine Verbindung zum Originalmotiv herstellen zu können. Zu einem späteren Zeitpunkt wäre die Ausweitung des dieser Diplomarbeit zugrundeliegenden Algorithmus in
Hinsicht weiterer Motivverarbeitungen denkbar.
vgl. Amon, R. (2005) Motiv – Motivisch-thematische Arbeit, Lexikon der Harmonielehre. Wien-München: Doblinger
Metzler Verlag, 195 f.
32
56 4 DER ALGORITHMUS
Viele Programmiersprachen stellen Module und Funktionen für die Analyse, Manipulation und
Bearbeitung von XML-Dokumenten bereit. Die Programmiersprache PHP stellt gleich eine
ganze Reihe an Klassen und Modulen zur XML-Bearbeitung zur Verfügung. Wichtige Klassen
sind dabei DOM XML, libxml, XML-Parser, XSLT mit XSL und SimpleXML. Für diese
Diplomarbeit wird daher PHP genutzt, insbesondere mit den Funktionen und Klassen von
SimpleXML.
4.1 DAS EINLESEN UND ABSPEICHERN DER
QUELLDATEN
Liegt ein zu analysierendes MusicXML-Dokument vor, muss diese Datei zunächst vollständig
eingelesen werden (siehe Quelltext 3).
$musicxmldatei = “Beispiel.xml”;
$this->xml = simplexml_load_file($musicxmldatei);
Quelltext 3 - Initialisierung in SimpleXML
Mit Hilfe der Funktion simplexml_load_file(string $filename) wird die gesamte MusicXMLDatei geladen und in ein Objekt umgewandelt.
Im nächsten Schritt wird eine Schleife angelegt, die das gesamte Objekt parst, um die nötigen
Noteninformationen für eine Motivanalyse zu extrahieren. Dabei wird dem Objekt die Funktion
xpath(string $path) angehangen, die das direkte Navigieren zu MusicXML-Elementen ermöglicht
(siehe Quelltext 4). So kann gezielt auf Elemente, auf deren Kindelemente oder auf ganze Bäume
navigiert werden.
foreach($this->xml->xpath("/score-partwise/part") as $presentation2){
foreach($presentation2->xpath("measure") as $key_out => $presentation){
…
}
}
Quelltext 4 - Auslesen der Partitur mit Hilfe zweier foreach-Schleifen
57 Enthält ein MusicXML-Dokument eine Partitur mit mehreren Notensystemen, so sind diese in
MusicXML nacheinander innerhalb des Elements <score-partwise> angeordnet, wie in Quelltext 5
verkürzt dargestellt ist. Das Element eines Systems wird mit <part> angegeben. Die Systeme wiederrum enthalten alle Takte. Diese werden jeweils mit <measure> angegeben.
<score-partwise>
<part id="P1">
<measure number="1">
<note>
...
</note>
</measure>
<measure number="2">
...
</measure>
...
</part>
<part id="P2">
<measure number="1">
...
</measure>
</part>
...
</score-partwise>
// 1. System
// 1. Takt des ersten Systems
// 2. Takt des ersten Systems
// 2. System
// 1. Takt des zweiten Systems
Quelltext 5 - Anordnung der Systeme innerhalb von MusicXML
Mit Hilfe der Funktion xpath kann über den Pfad „score-partwise/part“ direkt in die Präsentationsebene der Noten innerhalb des MusicXML-Dokuments navigiert werden. Dabei ist der Rückgabewerte von xpath stets ein multidimensionales Array. Wie in Abbildung 27 dargestellt, navigiert die erste foreach-Schleife (gestrichelte Linien) direkt in einzelne Notensysteme einer Partitur, während die innere foreach-Schleife (durchgezogene Linien) durch die einzelnen Takte eines
Notensystems parst.
58 Innere foreach-Schleife
Äußere foreach-Schleife
_._ äußere foreach-Schleife
___ innere foreach-Schleife
Abbildung 27 - Anweisungsreihenfolge der foreach-Schleifen im MusicXML-Dokument
Abgespeichert werden die eingelesenen Daten in ein multidimensionales Array.
59 4.1.1
EINLESEN GENERELLER INFORMATIONEN:
NOTENSCHLÜSSEL, TONART UND TAKTART
Jeder neue Taktanfang ist darauf zu überprüfen, ob ein Wechsel von Notenschlüssel, Vorzeichen
oder Taktart angegeben ist. Die Elemente, die hierzu aus MusicXML ausgelesen werden müssen,
befinden sich als Kindelemente in der Elementverschachtelung <measure> <attributes>.
Die Überprüfung an jedem Taktanfang kann erst durch die zwei ineinander geschachtelten
foreach-Schleifen realisiert werden.
Die folgenden Codezeilen rufen an jedem Taktanfang die Art des Notenschlüssels und seine Position auf den Notenlinien auf. Beides wird im Element <clef> angegeben.
echo ‘Schlüssel: ‘.$this->presentation->attributes->clef->sign;
echo ‘Schlüssel an Notenlinie: ‘.$this->presentation->attributes->clef->line;
Quelltext 6 - Zugriff auf Notenschlüssel und Schlüsselposition
Tabelle 30 zeigt eine Übersicht einiger typischer Notenschlüssel sowie deren Werte in
MusicXML. <sign> gibt die Art des Notenschlüssels an (Tabelle 30, 2. Spalte). Diese wird in
MusicXML wie in der Musiktheorie mit dem Buchstaben des Notennamens angegeben, welcher
durch den jeweiligen Notenschlüssel auf einer bestimmten Notenlinie definiert wird. So befindet
sich beispielsweise zwischen den beiden Punkten in der Darstellung des Bassschlüssels (Tabelle
30, 3. Zeile) stets die Note F. Daher wird der Bassschlüssel auch F-Schlüssel genannt und in
MusicXML mit <sign>F</sign> angegeben. Dieselbe Form des Notenschlüssels kann auf jeder
beliebigen Notenlinie platziert werden, wodurch sich jeweils die Zuordnung des Notennamens
zur Notenlinie verändert. Welche Notenlinie der Notenschlüssel umschließt, ist in <line> (Tabelle
30, 3. Spalte) angegeben.
60 Notenschlüssel
presentation->attributes->clef->sign
presentation->attributes->clef->line
G
2
C
3
F
4
A
2
F
Zusatz:
4
<clef-octave-change>-1<clef-octave-change>
G
Zusatz:
2
<clef-octave-change>-1<clef-octave-change>
Tabelle 30 - Wichtige Notenschlüssel und deren Werte in MusicXML
Werden Notenschlüssel um ein oder zwei Oktaven nach oben oder unten oktaviert, wird innerhalb des <clef>-Elements das zusätzliche Element <clef-octave-change> eingefügt. Übliche Werte
sind hierbei -2, -1, 1 und 2.
Alle Informationen im Element <clef> sind alleinig zur Darstellung des Notenschlüssels da. Sie
beeinflussen jedoch keinesfalls die Noteninformationen der Noten, da diese stets absolut angegeben werden. Werden beispielsweise Noten durch einen Notenschlüssel nach oben oder unten
oktaviert, so werden vom Notationsprogramm auch die Oktavwerte der Noten im Element
<octave> an die neue Oktavlage angepasst.
Weiterhin wird in jedem neuen Takt die Tonart überprüft. Werden durch Tonartwechsel Alterationen den Noten vorangestellt, so müssen diese Alterationen zusätzlich zur Angabe der Tonart
jeder betreffenden Note innerhalb von MusicXML im Element <pitch> als Element <alter> eingefügt werden.
Der Zugriff auf die Tonart und das Geschlecht im Element <key> erfolgt ebenfalls mit Hilfe der
xpath-Funktion. Tonart und Tongeschlecht werden mit folgenden Codezeilen abgefragt: 61 echo ‘Tonart: ‘.$this->presentation->attributes->key->fifths;
echo ‘Tongeschlecht: ‘.$this->presentation->attributes->key->mode;
Quelltext 7 - Zugriff auf Tonart und Tongeschlecht
gibt das Tongeschlecht an, welches die Werte major (Dur) oder minor (Moll) erlaubt. Die
Tonart, die mit <fifths> angegeben wird, wird in ganzzahlige Werte kodiert, welche in der folgenden Tabelle aufgeschlüsselt werden.
<mode>
Tonart in Dur / Moll
Wert im Element <fifths>
F# = Gb / Ebm = D#m
6
H / G#m
5
E / C#m
4
A / F#m
3
D / Hm
2
G / Em
1
C / Am
0
F / Dm
-1
B / Gm
-2
Eb / Cm
-3
Ab / Fm
-4
Db / Bm
-5
Gb = F# / Ebm = D#m
-6
Tabelle 31 - Tonarten und deren Wertezuordnung in MusicXML
Die letzte wichtige Information, die in MusicXML zu Beginn eines jeden neuen Taktes ausgelesen wird, ist die Taktart. Mit den folgenden Codezeilen lässt sich die Taktart aus dem Element
<time> lesen.
echo ‘Beat: ‘.$this->presentation->attributes->time->beats;
echo ‘Beat-Type: ‘.$this->presentation->attributes->time->beat-type;
Quelltext 8 - Zugriff auf Beats und Beat-Type
Die Angabe der Taktart verhält sich wie ein mathematischer Bruch. Die möglichen Werte in
<beats> als Zähler und <beat-type> als Nenner sind natürliche Zahlen. Die Einhaltung der richtigen Anzahl an Notenwerten innerhalb eines Takts entsprechend der Taktart muss durch das Notensatzprogramm selbst gewährleistet werden. So lassen es neuere Softwareversionen der meisten
Notensatzprogramme gar nicht mehr zu, dass beispielsweise mehr als vier Viertelnoten in einen
4/4 Takt notiert werden.
62 Abschließend sei zu erwähnen, dass die Angabe des Notenschlüssels, der Tonart und der Taktart
für die Analyse rein informativen Charakter besitzt, da alle Noten stets vollständig in ihren eigenen Elementen definiert sind.
Die folgenden Abschnitte zeigen, wie auf einzelne Noteninformationen innerhalb des MusicXML-Dokuments zugegriffen wird. Dieser Schritt bildet die Basis der Motivanalyse.
4.1.2
EINLESEN DER TONHÖHE
In MusicXML sind die Noteninformationen zur Tonhöhe im Element <note> beschrieben. Dadurch, dass mit Hilfe der Funktion xpath() in der inneren foreach-Schleife bis zum Element
<measure> navigiert wird, ist der Zugriff auf die darunterliegenden Elemente <note> und dessen
Kindelemente problemlos möglich. <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
"http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise>
<part id="P1">
<measure number="1">
<note>
<pitch>
<step>E</step>
<octave>5</octave>
<alter>-1</alter>
</pitch>
<accidental>flat</accidental>
</note>
<note>
<pitch>
<step>G</step>
...
</pitch>
</note>
...
</measure>
...
</part>
</score-partwise>
Quelltext 9 - MusicXML Elemente zum Beschreiben einer Note
Wie Quelltext 9 zeigt, befinden sich die Elemente zur Angabe der Tonhöhe − <step>, <octave>
und <alter> − für jede Note stets in der gleichen Verschachtelungstiefe „/scorepartwise/part/measure/note/pitch/“ ab der MusicXML-Dokumentenwurzel.
Für die Angabe der konkreten Tonhöhe wird der Notenname aus dem Element <step>, der Alterationswert aus dem Element <alter> sowie der Wert für die Oktavlage aus dem Element
<octave> gelesen.
63 MusicXML ist ein Datenformat mit vielen Redundanzen. So werden alle Alterationen vor jeder
einzelnen Note im Element <alter> angegeben, obwohl zumindest die tonartenabhängigen
Alterationen bereits mit der Angabe der Tonart bekannt sind. Zusätzlich wird im Element
<accidental> das Versetzungszeichen als englisches Wort angegeben. Die üblichen Werte sind
sharp (Kreuz), natural (Auflösungszeichen), flat (B), double-sharp (Doppelkreuz), sharp-sharp
(Kreuz-Kreuz), flat-flat (Bb), natural-sharp (Auflösungszeichen gefolgt von Kreuz) und naturalflat (Auflösungszeichen gefolgt von B).33 Diese Werte sind ergänzend zur Tonart zu lesen. Sie
enthalten demnach nur tonartenunabhängige Alterationen. Das Einlesen der Werte aus dem
Element <alter> erscheint daher mit den absoluten Angaben sinnvoller zur genauen Bestimmung
der Tonhöhe. Dies hat den Vorteil, dass Tonartwechsel für die Motivanalyse nicht pro Takt protokolliert werden müssen.
Akkorde werden auf ähnliche Art wie einzelne Noten ausgelesen. Die Noten eines Akkordes
werden in MusicXML entgegen jeglicher Erwartungen nicht in einem neuen Element ineinander
verschachtelt. Vielmehr wird jede einzelne Akkordnote wie eine normale Note in einem eigenen
Element <note> dargestellt. Die tiefste Note im Akkord, der Basston, wird als erstes beschrieben.
Alle weiteren Noten im Akkord werden innerhalb der Partitur in der Reihenfolge der Tonhöhe
von unten nach oben dargestellt und erhalten zusätzlich jeweils das leere Element <chord />. Im
Quelltext 10 ist die Darstellung eines Akkordes in MusicXML verkürzt dargestellt. <note>
<pitch>
<step>A</step>
</pitch>
</note>
<note>
<chord/>
<pitch>
<step>C</step>
</pitch>
</note>
<note>
<chord/>
<pitch>
<step>E</step>
</pitch>
</note>
Basston
Quelltext 10 - Akkord bestehend aus den Tönen A, C und E (Basston ist A) in MusicXML
Im Basston ist das leere Element <chord/> allerdings nicht enthalten. Durch diese Struktur entsteht das folgende Problem: Liest der Algorithmus an Notenposition n eine Note ohne dem leeren Element <chord/>, so ist an dieser Position noch unklar, ob die Note ein Basston eines Akkords oder eine einzelne Note ist. Für die Kontur zwischen zwei Notenpositionen hat diese
Recordare: Internet Music Publishing and Software: "MusicXML 1.0 Note DTD Module". URL:
http://www.recordare.com/dtds/1.0/note.html [Stand: 1. Februar 2009]
33
64 Problematik weitreichende Folgen, da durch Akkorde mehrere Möglichkeiten des Konturverlaufs
entstehen. Daher ist es nötig, dass der Algorithmus eine bestimmte Anzahl an <note>-Elementen
im Voraus lesen kann, bis eine Aussage über die möglichen Konturen zwischen zwei Notenpositionen getroffen werden kann.
Mehrere gleichzeitige erklingende Noten innerhalb eines Notensystems können auch als verschiedene Stimmen auftreten. Anwendung findet dies z.B. in vierstimmigen Chorälen, die in zwei
statt vier Systemen notiert sind. Die Angabe der Stimme erfolgt in MusicXML im Element
<voice>, wie der Quelltext 11 zeigt. Gebräuchlich sind die Werte von 1 bis 4. MusicXML gibt
jedoch keine Einschränkungen in den Werten vor.
<note>
<pitch>
<step>F</step>
<octave>4</octave>
</pitch>
<voice>1</voice>
...
</note>
<note>
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<voice>2</voice>
...
</note>
Quelltext 11 - Die Kennzeichnung der Stimmen im Notensystem
Der Motivsuchealgorithmus wird Werte im Element <voice> ignorieren. Auf diese Weise werden
der Programmieraufwand sowie die Laufzeit des Algorithmus verringert. Es ist aber darauf zu
achten, dass das zu analysierende Werk nur in einer Stimme geschrieben steht. Alternativ würden
Noten, die in mehreren Stimmen gleichzeitig erklingen sollen, durch den Algorithmus so gelesen
werden, als wären sie nacheinander notiert. Bei einer Weiterentwicklung des Algorithmus wäre
eine getrennte Analyse der Stimmen sicherlich sinnvoll.
Neben Noten und Akkorden kann die Position n mit einer Pause belegt sein. Durch das leere
Element <rest/> im Element <note> wird ein Pausenzeichen angegeben (siehe Quelltext 12). Folglich ist das Element <pitch> nicht vertreten.
65 <measure number="1">
<attributes>
<divisions>1</divisions>
</attributes>
<note>
<rest/>
<duration>1</duration>
<type>quarter</type>
</note>
</measure>
Quelltext 12 - Kennzeichnung einer Pause in MusicXML
Der Wert der Pause ergibt sich aus dem Wert in den Elementen <duration> und <divisions> und
wird genauso wie ein Notenwert − gemäß dem folgenden Kapitel − berechnet.
4.1.3
EINLESEN UND BERECHNEN DER NOTENWERTE
Das Element <duration> beschreibt den relativen Notenwert einer Note, d.h. im Verhältnis zum
Notenwert anderer Noten. Für die Berechnung des absoluten Notenwertes ist neben dem Wert
in <duration> außerdem der Wert im Element <divisions> erforderlich. Das Element <divisions>
steht immer im ersten Takt eines jeden Notensystems. Aber auch innerhalb eines Notensystems
kann <divisions> nochmals mit einem neuen Wert auftreten. Dies kommt dann vor, wenn die
Taktart gewechselt wird oder bei abrupten Wechsel von sehr kurzen Notenwerten zu sehr langen
Notenwerten und umgekehrt. Dabei wird der neue Wert in <divisions> stets zu Beginn des jeweiligen Taktes verändert. Danach beziehen sich alle Werte in <duration> auf den neuen <divisions>Wert. Die Anordnung beider Elemente ist in Quelltext 13 dargestellt. <measure>
<attributes>
<divisions>1</divisions>
</attributes>
<note>
<pitch>
…
</pitch>
<duration>2</duration>
…
</note>
</measure>
Quelltext 13 - Repräsentation des Notenwerts in MusicXML mit Hilfe Duration und Divisions
66 Für die Berechnung des Notenwertes aus den Werten in <duration> und <divisions> gilt:
L = Wert in <duration> / Wert in <divisions>
Notenwert
Formel 1 - Berechnung des Notenwertes
Mit Hilfe dieser Rechenvorschrift wird für den Algorithmus eine Funktion programmiert, die als
Eingabewerte die Elementinhalte aus <duration> und <divisions> übernimmt und die Variable L
als Ausgabewert zurückgibt. In der Variablen L ist der Notenwert kodiert. Die Tabelle 32 enthält
die Zuordnungen der Variable L zu den entsprechenden Notenwerten. Weiterhin zeigt sie einige
Berechnungen aus möglichen Werten in <divisions> und <duration>. Zur Analyse der Notenwerte
bezieht sich der Algorithmus auf diese Zuordnung zur Variablen L. Ist L=1, so entspricht dies
einer Viertelnote. Dabei verhält sich die Variable L linear. Ist beispielsweise der Wert in
<divisions> innerhalb eines Taktes gleich 12 und kommen darin zwei Noten mit den
<duration>-Werten 12 und 24 vor, so ergibt sich daraus folgende Rechnung: L1 = 12/12, L2 =
24/12. Wie aus der Tabelle 32 zu entnehmen ist, ist die erste Note damit eine Viertelnote und die
zweite eine halbe Note. Werte von <divisions>:
Notenwertbezeichnung
Longa
Alla Breve
Ganze Note
Halbe Note
Viertelnote
Achtelnote
16tel Note
32tel Note
64tel Note
128tel Note
1
2
4
8
16
32
L
16/1
8/1
4/1
2/1
1/1
-
32/2
16/2
8/2
4/2
2/2
1/2
-
64/4
32/4
16/4
8/4
4/4
2/4
1/4
-
128/8
64/8
32/8
16/8
8/8
4/8
2/8
1/8
-
256/16
128/16
64/16
32/16
16/16
8/16
4/16
2/16
1/16
-
512/32
256/32
128/32
64/32
32/32
16/32
8/32
4/32
2/32
1/32
16
8
4
2
1
0,5
0,25
0,125
0,0625
0,03125
Punktierte Viertelnote
3/2
6/4
12/8
24/16
48/32
1,5
Punktierte Achtelnote
3/4
6/8
12/16
24/32
0,75
Tabelle 32 - Mögliche Zuordnungen der Werte in <duration> (Zähler) und <divisions> (Nenner) zur Variable L
Mit kleineren <divisions>-Werten sind nicht alle Notenwerte darstellbar. Im Allgemeinen ist festzuhalten, dass sehr kurze Notenwerte mit umso größeren Werten in <divisions> beschrieben
werden.
Neben der Angabe des Notenwerts durch die Elemente <duration> und <divisions> wird der Notenwert als englisches Wort im Element <type> zur Verfügung gestellt (siehe Quelltext 14).
67 <note>
<pitch>
…
</pitch>
…
<type>half</type>
…
</note>
Quelltext 14 - Die Angabe des Notenwertes als Wort in MusicXML
Die möglichen Elementinhalte in <type> sind: 256th, 128th, 64th, 32nd, 16th, eighth, quarter, half,
whole, breve und long.
Punktierungen einer Note zur Verlängerung des Notenwertes werden in MusicXML wie in
Quelltext 15 dargestellt mit Hilfe des leeren Elements <dot /> beschrieben. Zur Berechnung des
Notenwertes einer einfach punktierten Note werden die Werte aus dem Element <dot /> wie bei
einer nicht punktierten Note aus den Elementen <duration> und <divisions> ausgelesen. <note>
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<type>quarter</type>
<dot/>
</note>
Quelltext 15 - Anwendung des leeren Elements <dot
/>
im Element <note>
Auch X-tolen können wie alle anderen Notenwerte mit Hilfe der Formel 1 berechnet werden. Da
X-tolen auf die Zählzeit verteilt ungerade Notenwerte besitzen, können als Ergebnis unter Umständen positiv rationale Zahlen herauskommen. Die folgende Darstellung zeigt, wie auf zwei
Viertelnoten durch die Beschreibung der X-tole drei Viertelnoten an die gleiche Stelle positioniert
werden.
68 1.
5.
10.
15.
20.
25.
30.
35.
40.
45.
50.
55.
60.
<measure number="1">
<attributes>
<divisions>3</divisions>
...
<beats>4</beats>
<beat-type>4</beat-type>
...
</attributes>
...
<note>
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<time-modification>
<actual-notes>3</actual-notes>
<normal-notes>2</normal-notes>
</time-modification>
Erste Note
<stem>up</stem>
der X-tole
<notations>
<tuplet number="1" placement="above" type="start"/>
Initialisierung
</notations>
der X-tole
</note>
<note>
<pitch>
<step>B</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<time-modification>
<actual-notes>3</actual-notes>
<normal-notes>2</normal-notes>
Zweite Note der X-tole
</time-modification>
<stem>down</stem>
</note>
<note>
<pitch>
<step>E</step>
<octave>5</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<time-modification>
<actual-notes>3</actual-notes>
<normal-notes>2</normal-notes>
</time-modification>
Letzte Note
<stem>down</stem>
der X-Tole
<notations>
<tuplet number="1" type="stop"/>
Beendigung der X-tole
</notations>
</note>
<note>
...
</note>
<note>
...
</note>
</measure>
Quelltext 16 - Struktur einer X-tole in MusicXML
Eine X-tole besitzt eine kompliziertere Elementstruktur. Wie bei einem Akkord werden die Noten in einer X-tole nicht ineinander verschachtelt dargestellt, sondern werden, mit weiteren Elementen ergänzt, einzeln im Element <note> beschrieben. Dabei sind die ergänzten Elemente ab-
69 hängig von der Position der Note innerhalb der X-tole. Alle Noten einer X-tole sind versehen
mit dem Element <time-modification> mit den Kindelementen <actual-notes> und <normal-notes>.
Der ganzzahlige Wert im Element <actual-notes> gibt an, wie viele Noten innerhalb der X-tole
platziert werden. Der ganzzahlige Wert in <normal-notes> gibt die Anzahl der Noten an, die auf
die Dauer der X-tole kommen würden.
Die erste Note in einer X-tole besitzt zusätzlich das Element <notations>. Dieses Element beinhaltet das Element <tuplet> mit den Attributen number, placement und type. Das Attribut number besitzt den Wert 134, placement beschreibt, ob sich der Strich zur X-tole über oder unter den
Noten der X-tole befindet und type gibt an, ob die X-tole in der aktuellen Note beginnt oder
endet.
Die Noten der X-tole, die keine Anfangs- beziehungsweise Endnote einer X-tole sind, haben bis
auf <time-modification> und den dazugehörigen Kindelementen keine weiteren zusätzlichen Elemente. Alle Noten einer X-tole besitzen innerhalb von <time-modification> dieselben Werte.
Die letzte Note der X-tole besitzt ebenfalls wie die erste Note der X-tole das zusätzliche Element
<notations>. Die Angaben darin unterscheiden sich lediglich darin, dass das Attribut type im
Element <tuplet> mit dem Wert „stop“ angegeben wird.
Das Attribut number scheint ein Identifikator für X-tolen zu sein, die zur selben Zeit im gleichen Notensystem
gespielt werden. Die Dokumentation von MusicXML konnte hierzu leider keinen Aufschluss geben.
34
70 4.2 PROBLEM- UND SONDERFÄLLE BEIM
EINLESEN AUS MUSICXML
Probleme in der Motivanalyse können beispielsweise entstehen durch die schwer handhabbare
Auswertung des MusicXML-Formats mit Hilfe der Programmiersprache PHP und ihrer
SimpleXML-Funktionen. Zu einigen Problemen gibt es Lösungen, andere Probleme sind nur
durch großen Aufwand lösbar oder müssen mit weiteren Programmiersprachen mit Hilfe gänzlich anderer Überlegungen gelöst werden.
4.2.1
BETRACHTUNG VON AKKORDEN VOR DER
KONTURANALYSE
Problematisch für die Motivanalyse ist die Behandlung von Akkorden.
Die Töne eines Motivs bzw. einer Motivverarbeitung können in einem oder mehreren Akkorden
eingebettet sein. Es ist jedoch zunächst nicht klar ist, welche Töne im Akkord zum Motiv gehören und welche nicht. Daher müssen prinzipiell alle Akkordtöne danach abgesucht werden.
Es gibt drei Möglichkeiten, in welcher Reihenfolge im Musikwerk ein Akkord in Verbindung mit
einem anderen Akkord oder einer einzelnen Note in der Partitur auftaucht:



Auf eine Note folgt ein Akkord (N→A)
Auf ein Akkord folgt eine Note (A→N)
Auf ein Akkord folgt ein Akkord (A→A)
Verbindungstypen
Je nach Verbindungstyp ergeben sich unterschiedlich viele Konturverläufe, die die Motivverarbeitungen oder das Originalmotiv enthalten können.
Auf eine Note folgt ein Akkord
Um zu differenzieren, ob an Notenposition n ein Akkord oder eine Note auftritt, liest der Algorithmus im Voraus die nächste Note ein und prüft, ob dort das Element <chord/> auftritt. Ist das
Element <chord/> vorhanden, so ist die entsprechende Note der zweite Akkordton an Notenposition n mit der Positionsbezeichnung n2. Ist das Element <chord/> nicht vorhanden, muss es sich
um eine neue Note an der Notenposition n+1 handeln. Nun ist weiterhin zu überprüfen, ob an
71 Position n+1 ein Akkord auftritt, damit alle Konturen zwischen n und n+1 berücksichtigt werden
können. So wird von Notenposition n aus zwei Noten im Voraus nach dem Element <chord/>
gesucht. Tritt das Element <chord/> auf, wird die Note an dieser Stelle als zweiter Akkordton an
Notenposition n+1 erkannt. Deren genaue Notenposition wird als (n+1)2 definiert. Dementsprechend wird hier die Notenposition vor der Notenposition (n+1)2 mit (n+1)1 bezeichnet. An dieser
Stelle muss sich zwangsläufig der Basston des Akkords befinden. Im selben Muster wird solange
fortgefahren, bis alle Akkordtöne des Akkordes erkannt sind, d.h. bis zur Note, in der kein
<chord/>-Element enthalten ist.
Eine wie eben beschriebene Note zu Akkord-Verbindung (N→A) ist in Abbildung 28 dargestellt.
Es müssen an Notenposition n mindestens zwei Noten im Voraus gelesen werden, um klarzustellen, ob es sich um eine Note zu Akkord-Verbindung handelt. Dann erst kann der Algorithmus in
die entsprechende Anweisung gehen, die eine (N→A)-Abfolge analysiert.
Abbildung 28 - Konturmöglichkeiten von Notenposition n zu Position n+1
Eine (N→A)-Verbindung enthält wie in Abbildung 28 dargestellt an Notenposition n eine Note
und an Notenposition n+1 einen Akkord mit den Akkordtönen (n+1)1 bis (n+1)k. Zwischen der
Notenposition n und Position n+1 mit k Akkordtönen entstehen pro Konturtyp k Konturen.
Auf einen Akkord folgt eine Note
Betrachtet wird nun die Folge Akkord zu Note (A→N), wie in Abbildung 29 dargestellt ist. Die
aktuelle Leseposition befindet an Notenposition n1. Im Voraus wird die nächste Note gelesen. Da
dort das Element <chord/> enthalten ist, ist die entsprechende Notenposition mit n2 zu bezeichnen. Es wird dadurch deutlich, dass sich an Notenposition n1 ein Basston eines Akkords befindet.
Es sind nun zwei Verbindungstypen möglich: nach Akkord folgt Note (A→N) oder auf Akkord
folgt Akkord (A→A). Der Algorithmus analysiert die nachfolgenden Noten bis zu der Note, die
als erstes kein Element <chord/> enthält. Diese Note wird mit (n+1)1 gekennzeichnet. Der Akkord
an Notenposition n beinhaltet m Akkordnoten von n1 bis nm.
72 Abbildung 29 - Konturmöglichkeiten von Akkord n1 zu Note (n+1)1
An Notenposition (n+1)1 ist dem Algorithmus noch immer nicht bekannt, ob an Position n+1
eine Note oder ein Akkord steht. Daher ist bis zu diesem Punkt der Analyseschritt für die Akkord- zu Akkord-Verbindung und die Akkord- zu Note-Verbindung identisch.
Befindet sich an Notenposition n+1 eine einzelne Note, so sind m mögliche Konturverläufe pro
Konturtyp zu analysieren.
Auf einen Akkord folgt ein Akkord
Erst wenn der Algorithmus die Notenposition (n+1)2 vorausliest, wird klar, ob Note (n+1)1 ein
Basston eines Akkords oder eine einzelne Note ist. Im nun betrachteten Fall (siehe Abbildung
30) befindet sich an Position (n+1)2 das leere Element <chord/>. Erst wenn m+2 Noten vorausgelesen wurden, ist für den Algorithmus klar, dass der Verbindungstyp eine Akkord- zu AkkordVerbindung ist. Dennoch muss der Algorithmus m+k+1 Noten im Voraus lesen bis zur ersten
Note ohne dem Element <chord/>, um zu prüfen, wie viele Noten zum Akkord an Position n+1
gehören. Die Position der nächsten Note ohne dem <chord/>-Element wird mit (n+2)1 bezeichnet.
Abbildung 30 - Konturmöglichkeiten von Akkord n zu Akkord (n+1)1
Zwischen Akkord n mit m Akkordtönen und Akkord (n+1) mit k Akkordtönen ergeben sich
m*k Konturverläufe.
Allgemein betrachtet resultiert daraus folgendes Problem: Ein Akkord beinhaltet mindestens drei
Noten, die zeitgleich gespielt werden. Somit entstehen bei der Anwendung der Konturanalyse
zwischen zwei Akkorden mit jeweils drei Noten bereits neun verschiedene Konturverläufe. Diese
Konturverläufe müssen jeweils für den Parsons-Code, die diatonische und die chromatische
Kontur berechnet werden. So sind bereits 27 Konturverläufe zwischen zwei Akkorden mit je-
73 weils drei Noten zu berechnen. Daraus ergibt sich ein enormer Rechenaufwand, der zur Weiterentwicklung des Programms optimiert werden könnte.
Zusätzlich besteht das Problem, dass die Noten bei einer Akkord- zu Akkord-Verbindung stets
bis zur Notenposition (n+2)1 gelesen werden müssen. Dies sind bei zwei aufeinanderfolgenden
Dreiklängen sechs Noten, die in einem Puffer abgespeichert werden.
In einer neuen Programmversion wäre es sinnvoll, die im Puffer gespeicherten Daten besser zu
nutzen, damit jede Note insgesamt nur einmal eingelesen werden muss. Innovative Algorithmen
aus dem Information Retrieval und der Bioinformatik können dabei neue Aspekte im Finden
eines effizienteren Algorithmus sein.
4.2.2
INSTRUMENTE MIT ZWEI SYSTEMEN IN
MUSICXML
Ein MusicXML-Dokument ist sequenziell aufgebaut. Das bedeutet, dass alle Notensysteme aufeinanderfolgend beschrieben sind. Innerhalb eines Notensystems sind die Takte hintereinander
geordnet. Eine Ausnahme liegt jedoch vor, wenn das dargestellte Musikinstrument aus spieltechnischen Gründen in zwei Systemen notiert wird, wie beispielsweise das Klavier oder die Harfe.
Eine Motivanalyse bei Instrumenten, die in zwei Systemen notiert sind, ist ohne eine Vorverarbeitung des MusicXML-Dokuments nicht möglich. Das folgende Beispiel mit zwei Systemen soll
die Problematik verdeutlichen.
74 1.
5.
10.
15.
20.
25.
30.
35.
40.
45.
50.
55.
60.
65.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
"http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise>
<identification>
<encoding>
<software>Finale for Windows</software>
<software>Dolet Light for Finale 2006</software>
<encoding-date>1900-00-00</encoding-date>
</encoding>
</identification>
<part-list>
<score-part id="P1">
<part-name>Harfe</part-name>
<score-instrument id="P1-I1">
<instrument-name>Harfe</instrument-name>
</score-instrument>
<midi-instrument id="P1-I1">
<midi-channel>1</midi-channel>
<midi-program>47</midi-program>
</midi-instrument>
</score-part>
</part-list>
<!--=========================================================-->
<part id="P1">
<measure number="1">
<attributes>
<divisions>1</divisions>
<key>
<fifths>0</fifths>
<mode>major</mode>
</key>
<time symbol="common">
<beats>4</beats>
<beat-type>4</beat-type>
</time>
<staves>2</staves>
<clef number="1">
<sign>G</sign>
<line>2</line>
</clef>
Initialisierung von zwei Systemen
<clef number="2">
<sign>F</sign>
<line>4</line>
</clef>
</attributes>
<sound tempo="120"/>
<note>
<rest/>
<duration>4</duration>
<voice>1</voice>
<staff>1</staff>
</note>
<backup>
<duration>4</duration>
</backup>
<note>
<rest/>
<duration>4</duration>
<voice>2</voice>
<staff>2</staff>
</note>
<barline location="right">
<bar-style>light-heavy</bar-style>
</barline>
</measure>
</part>
<!--=========================================================-->
</score-partwise>
Quelltext 17- MusicXML-Beispiel mit zwei Systemen
75 In den Zeilen 37-45 erfolgt die Initialisierung eines Zweiersystems mit den Elementen <staves>
und <clef>. Der Wert im Element <staves> gibt die Anzahl der Notensysteme an. Das Element
<clef> legt für jedes System einen Notenschlüssel und dessen Position auf den Notenlinien an.
Die erste <clef>-Definition steht für das obere System, die zweite <clef>-Definition für das untere System. Ein Zweiersystem wird in MusicXML stets taktweise angegeben. Durch die taktweise
Reihenfolge, mit der die Noten eines Zweier-Notensystems in MusicXML beschrieben werden,
ist das Auslesen einer Melodie innerhalb nur einer der beiden Stimmen erschwert. Umso komplizierter verhält es sich, wenn sich eine zusammenhängende Melodie bzw. Akkorde über beide
Notensysteme erstrecken. Hier wäre es sinnvoll, beide Systeme zu einem System zusammenzufassen, wie es in Abbildung 31 von links (zwei Systeme) nach rechts (zusammengefasst zu einem
System) dargestellt ist. Jedoch birgt eine solche Vorgehensweise wiederum weitere Probleme, da
nun die Noten der Melodiestimme in die akkordische Begleitung integriert werden.
Abbildung 31 - Zweiersysteme erschweren die Motivanalyse
Beispiel 1.1 zeigt die Akkordverbindung e-Moll mit dem Quintton h im Bass. Der Note h wird
durch seine Punktierung bis in den Akkord F-Dur hinein ausgehalten. Auf der halben Spielzeit
des Akkords F-Dur wechselt der Basston von h nach f. Werden, wie in Beispiel 1.2, beide
Notensysteme zusammengefasst, kann dies nur durch Zuhilfenahme von Überbindungen gewährleistet werden. Aber auch Überbindungen stellen einen erhöhten Programmieraufwand dar,
können aber nicht einfach wie in Bsp. 1.3 dargestellt ignoriert werden: Bsp. 1.3 und 1.1 unterscheiden sich so deutlich voneinander, dass eine Motivanalyse in solchen Fällen wie in Abbildung
31 nicht zum korrekten Ergebnis führen würde.
Lösbar ist die Problematik der getrennten Systeme für Akkorde und Melodien mit zusätzlichem
Programmieraufwand. Für die Motivanalyse mithilfe der vorliegenden Programmversion wird
vorausgesetzt, dass das MusicXML-Dokument nur mit Musikinstrumenten besetzt ist, die in
einem System notiert sind.
76 4.2.3
ÜBERBINDUNGEN
Eine Überbindung von zwei Noten auf derselben Tonhöhe wird zur Verlängerung der Tondauer
benutzt. Alternativ kann die Punktierung einer Note eingesetzt werden, wenn die Regeln der
Punktierung eingehalten werden. Abbildung 32 soll dies verdeutlichen.
½
+
¼
= punktierte halbe Note
1/1
+
½
= punktierte ganze Note Abbildung 32 - Zwei Beispiele von Überbindungen und deren äquivalente Darstellung als punktierte Note
Der erste dargestellte Takt des linken Beispiels in Abbildung 32 besitzt die folgende Darstellung
in MusicXML:
1.
5.
10.
15.
20.
25.
30.
35.
<measure number="1">
<attributes>
<divisions>1</divisions>
...
<time>
<beats>3</beats>
<beat-type>4</beat-type>
</time>
...
</attributes>
...
<note>
<pitch>
<step>G</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<tie type="start"/>
<type>half</type>
<stem>up</stem>
<notations>
<tied type="start"/>
</notations>
</note>
<note>
<pitch>
<step>G</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<tie type="stop"/>
<type>quarter</type>
<stem>up</stem>
<notations>
<tied type="stop"/>
</notations>
</note>
</measure> erste Note aus Abbildung 32
(halbe Note)
zweite Note aus Abbildung 32
(Viertelnote)
Quelltext 18 - Überbindung einer halben Note mit einer Viertelnote
77 Im Element <note> der halben Note G wird ein leeres Element <tie/> eingefügt. <tie/> ist ein
Anker, welcher mit Hilfe des Attributs type mit dem Wert „start“ initialisiert wird. Dass die
Überbindung bei der Viertelnote G endet, wird in dem zur Endnote gehörenden Element <note>
in einem <tie/>-Element mit Hilfe des Attributs type mit dem Wert „stop“ angegeben.
Das Element <tie/> wird von MusicXML für die interne Repräsentation genutzt. Für die Darstellung der Überbindung wird das weitere Element <tied> in dem zugehörigen Elternelement <nota35
tions> verwendet.
Damit überbundene Noten vom Algorithmus richtig bewertet werden, müssen diese Überbindungen zunächst ausfindig gemacht werden und zur Laufzeit alle Werte des <duration>-Elements
der Noten, die zu den Überbindungen gehören, miteinander addiert werden, um den realen Notenwert zu erhalten. Erst dann sind die überbundenen Noten rhythmisch mit dem Originalmotiv
vergleichbar.
Neben den einfachen Notenüberbindungen sind auch Notenüberbindungen möglich, bei denen
eine neue Note hinzugefügt wird, wie in Abbildung 33.
Abbildung 33 - Überbundene Noten mit neu hinzugefügter Note
Hier tritt neben dem Problemfall der Überbindung zusätzlich ein ähnlicher Sonderfall auf wie bei
der Behandlung von akkordischen Notenverbindungen. So muss der Algorithmus zwei Konturverläufe analysieren: Von Notenposition n zur Position (n+1)1 und von Notenposition n zu
(n+1)2.
Für den Algorithmus wird vorausgesetzt, dass keine Überbindungen im zu analysierenden Musikwerk auftreten.
4.2.4
PUNKTIERTE NOTEN
Durch einfache Punktierung einer Note wird der Notenwert um die Hälfte des ursprünglichen
Notenwertes verlängert. Weiterhin gibt es zweifach punktierte Noten, bei denen der Notenwert
um die Hälfte plus ein Viertel des eigenen Notenwertes verlängert ist. Dementsprechend verhält
es sich auch bei weiteren mehrfach punktierten Noten.
Recordare: Internet Music Publishing and Software: "MusicXML 1.0 Alphabetical Index". URL:
http://www.recordare.com/dtds/1.0/musicxml-index.html [Stand: 5. Februar 2009]
35
78 In MusicXML kann im Element <note> eine beliebige Anzahl an leeren Elementen <dot/> eingefügt werden. Jedes neue <dot/>-Element setzt dabei einen weiteren Punkt nach der aktuellen Note für die Darstellung einer Punktierung.
Zur Berechnung der exakten Notenlänge bei punktierten Noten in MusicXML werden zunächst
die Werte der bekannten Elemente <divisions> und <duration> verwendet. Quelltext 19 zeigt die
Funktion, mit Hilfe der eigentliche Notenwert aus <divisions> und <duration> plus die zusätzlichen Notenwerte aus den Punktierungen durch Halbierung des eigentlichen Notenwertes berechnet werden.
function punktierte_noten($duration, $divisions, $punktierungen){
while($punktierungen>=0){
$x=$duration/$divisions;
$duration=$duration/2;
$y=$y+$x;
$punktierungen--;
}
return $y;
}
$y = punktierte_noten(24,12,2);
echo "Notenlänge: $y";
Quelltext 19 - Algorithmus zur Berechnung der Notenlänge bei punktierten Noten
Das Element <dot/> ist ein leeres Element. Die Klasse SimpleXML von PHP ermöglicht keinen
direkten Zugriff auf leere Elemente. Dieses Problem kann jedoch umgangen werden, indem der
Algorithmus testet, ob das leere Element <dot/> Kindelemente besitzt. So ist beispielsweise die
Implementierung zur Analyse von Akkorden mit den leeren Elementen <chord/> angelegt.
Für den ersten Prototyp des Algorithmus wurde die Funktion punktierte_noten() vorbereitet, sie
konnte jedoch nicht mehr rechtzeitig vollständig implementiert werden.
79 4.2.5
VORSCHLAGSNOTE
Eine Vorschlagsnote zählt als Verzierung in der Notation rhythmisch nicht in den Takt. Sie weist
spieltechnisch zwar eine Verkürzung der anschließenden Note an, diese wird jedoch dennoch
ungeachtet der Spielpraxis voll ausgeschrieben. Die Beschreibung einer Vorschlagsnote in
MusicXML geschieht auf die gleiche Weise, wie die Beschreibung einer herkömmlichen Note.
Als Zusatz wird jedoch, wie in Quelltext 20 dargestellt, das leere Element <grace/> im Element
<note> eingefügt.
<note>
<grace/>
<pitch>
...
</pitch>
<voice>1</voice>
<type>whole</type>
</note>
Quelltext 20 - Das leere Element <grace/> zur Kennzeichnung einer Vorschlagsnote
Die Motivanalysesoftware prüft die Existenz einer Vorschlagsnote und betrachtet diese beim
Auslesen aus MusicXML als eigenständige Note. In einer weiteren Programmversion wäre es
sinnvoll, Vorschlagsnoten wahlweise als eigenständige Note zu betrachten oder in der Motivanalyse völlig unbeachtet zu lassen. Da Vorschlagsnoten als Verzierungselemente anzusehen sind,
muss eine Vorschlagsnote im Originalmotiv nicht zwangsläufig in einer Motivverarbeitung wieder
auftreten.
4.2.6
ALTERATIONEN
Die folgende Darstellung zeigt eine große Auswahl an Alterationen, die von MusicXML bereitgestellt werden.36 Der Ton der alterierten Noten im oberen Notensystem ist jeweils darunter nochmals in einer Darstellung mit möglichst wenigen Alterationen notiert.
Recordare: Internet Music Publishing and Software: "MusicXML 2.0 Note DTD Module". URL:
http://www.recordare.com/dtds/note.html [Stand: 9. Februar 2009]
36
80 Abbildung 34 - Alterierte Noten und deren klangliche Repräsentation in vereinfachter Darstellung
MusicXML erlaubt Versetzungszeichen innerhalb des Elements <alter> im ganzzahligen Wertebereichs von -9 bis 9. Üblich sind aber nur die Werte zwischen -2 und 2.
Dass es mögliche Alterationen gibt, die aber nicht sinnvoll sind, zeigt die folgende Darstellung.
Abbildung 35 - Nicht sinnvolle Anwendung von Versetzungszeichen am Beispiel der Note F
Gezeigt werden die Note F sowie deren klangliche Repräsentation in vier verschiedenen Formen
mit Hilfe von Versetzungszeichen. Dabei ist der Einsatz der doppelt tiefalterierten Note G
(Geses) und der einfach hochalterierten Note E (Eis) durchaus bei Anwendung in entsprechenden musikalischen Kontexten statt der Note F möglich und sinnvoll. Die vierfach tiefalterierte
Note A und die dreifach hochalterierte Note D sind von MusicXML erlaubte Alterationen, doch
wird diese Darstellung im Generellen nicht angewandt.
Mehrfachalterierungen stellen in der Motivanalyse folgendes Problem dar: Bei der Erkennung
von Wiederholungen werden die Werte in den Parametern Notenname, Oktavlage und Alteration
mit entsprechenden Werten des Originalmotivs verglichen. Benutzt der Komponist beispielsweise für ein Motiv eine Notendarstellung ohne jegliche Alterationen und in der Wiederholung mit
vielen Alterationen, so kann der Algorithmus dies nicht mehr als Wiederholung bzw. ggf. nur
noch als Sequenz erkennen.
Eine mögliche Beseitigung dieses Problems könnte sein, dass der Algorithmus vorweg mehrfach
alterierte Noten so ausliest, dass sie ohne bzw. mit möglichst wenigen Alterationen in das multidimensionale Array geschrieben werden. So könnten die alterierten Noten in Abbildung 35 auch
als nichtalterierte Note F transformiert werden. Negativ würde sich diese Vorgehensweise jedoch
auf die Laufzeit des Algorithmus auswirken. Angesichts dessen, dass Mehrfachalterierungen in
der Praxis nur äußerst selten auftreten, wird in der Motivanalysesoftware nicht zuvor geprüft, ob
für mehrfach alterierte Noten eine einfachere Darstellungen mit weniger Vorzeichen existiert.
81 4.3 ERWEITERUNG DES MUSICXMLDATENBESTANDS FÜR DIE
KONTURANALYSE
Die Kontur einer Notenfolge ist für den Motivanalysealgorithmus der erste und wichtigste Indikator, der darüber entscheidet, ob eine Notenfolge hinsichtlich weiterer Merkmale analysiert werden soll.
Die Konturen werden aus den drei Parametern Notenname, Alteration und Oktavlage berechnet.
Hierzu muss zunächst die Notenlage − die vertikale Position der Note im Notensystem − indiziert werden, damit der Algorithmus damit weiterarbeiten kann.
4.3.1
INDIZIERUNG DER NOTENLAGE
DIE CHROMATISCHE NOTENLAGE
Mehrere Notennamen können auf den gleichen Ton abgebildet werden. Dies wird in der Musiktheorie als enharmonische Verwechslung bezeichnet. So entspricht beispielsweise die Note Fes
klanglich der Note E. Der Unterschied ist nur in den Noten ersichtlich. Werden doppelte Alterationen betrachtet, so ergeben sich noch mehr Belegungen von unterschiedlichen Notennamen
auf dem gleichen Ton. Im Algorithmus werden enharmonische Verwechslungen im Rahmen von
einfachen Alterationen gleichgesetzt.
Tabelle 33 zeigt die im Algorithmus verwendete interne Zuordnung der Notenlagen zu einem
Index. Dargestellt ist eine von 0 aufsteigende Zahlenreihe, die die Notenlage in der Vertikalen ab
der Subkontra-Oktave aufwärts repräsentiert. Beginnend ab dem C, können zur im Index mit 0
bezifferten Notenlage bereits zwei Noten zugeordnet werden. Die erste Note ist C in der Oktave
0 (Subkontra) und entspricht gleichzeitig His (B#) in der darunterliegenden Oktave. Da der
Klang dieser beiden Noten jedoch identisch ist, ist der dazugehörige Index 0 eindeutig.
82 Eindeutiger Index für
die vertikale Notenlage
Alteration 0
Alteration 1 ( m ) Alteration -1 ( b ) Oktave 0
0
1
11
Oktave 1
12 13
2
3
4
5
6
7
8
9
10
14
…
C
B#
C#
D
-
D#
E
-
F
E#
F#
G
-
G#
A
-
A#
B
-
C
B#
C#
D
-
…
…
-
Db
-
Eb
Fb
-
Gb
-
Ab
-
Bb
Cb
-
Db
-
…
Tabelle 33 - Abbildungsmöglichkeit mehrerer Notennamen auf die chromatische Notenlage
Quelltext 21 zeigt die Funktion, welche jeder chromatischen Note eine eindeutige Nummer entsprechend des Index in Tabelle 33 zuordnet. Eingabewerte sind die Elementinhalte der Elemente
<step> (Notenname), <alter> (Alteration) und <octave> (Oktavlage), welche zu einem String zusammengefasst werden. Innerhalb der Funktion ist ein Array mit den Zuordnungen definiert,
welches mit Hilfe der PHP-Funktion array_search(mixed $needle, array $haystack) zur Arraysuche nach den Eingabewerten abgesucht wird. Wird eine Übereinstimmung der drei Eingabewerte
mit einem Wert im Array gefunden, so wird der entsprechende Index der Notenlage als Arrayschlüssel zurückgegeben. Da die Implementierung von PHP nur einen Arrayschlüssel pro Wert
erlaubt, wurden drei Arrays angelegt. Der Algorithmus entscheidet je nach Alteration, welches
Array durchsucht werden soll, um den Ausgabewert zu erhalten.
83 function notenlage_c($note, $alteration, $oktave){
$note
$alteration
$oktave
= $note;
= $alteration;
= $oktave;
$notenkomplex
= “$note,$alteration,$oktave”;
$note_kreuz = array(
}
0 => B,1,0
//bis
1 => C,1,0
//cis
3 => D,1,0
//dis
5 => E,1,0
//eis
6 => F,1,0
//fis
8 => G,1,0
//gis
10=> A,1,0
//ais
12=> B,1,1
…
);
$note_be =
array(
1 => D,-1,0
//des
3 => E,-1,0
//es
4 => F,-1,0
//fes
6 => G,-1,0
//ges
8 => A,-1,0
//as
10=> B,-1,0
//bes
11=> C,-1,0
//ces
13=> D,-1,1
//des
…
);
$note
=
array(
0 => C,0,0
//c
2 => D,0,0
//d
4 => E,0,0
//e
5 => F,0,0
//f
7 => G,0,0
//g
9 => A,0,0
//a
11=> B,0,0
//b
12=> C,0,1
//c
14=> D,0,1
//d
…
);
if($alteration==”1”){
return array_search($notenkomplex,$note_kreuz);
}elseif($alteration==”-1”){
return array_search($notenkomplex,$note_be);
}else{
return array_search($notenkomplex,$note);
}
Quelltext 21 - Implementierung zum Finden der vertikalen Notenlage aus Notenname, Alteration und Oktave
Abbildung 36 zeigt die Arrayschlüssel der Notenlagen zu dem Beispielmotiv.
Abbildung 36 - Vertikale Notenlage für das Originalmotiv
84 D I E DIA TON I SC HE NO T EN LA GE
Für die diatonische Notenlage kann jeder Notenname eindeutig zu einer Indexziffer zugeordnet
werden, da Alterationen nicht betrachtet werden müssen. Dies verdeutlicht Tabelle 34.
Oktave 0
Eindeutiger Index für 0
1
2 3
4
5
6
7 8
9 10
die vertikale Notenlage
Alteration 0
C
D
E F
G A
B
C D
E F
Tabelle 34 - Abbildungsmöglichkeit von Notennamen auf die diatonische Notenlage
11
Oktave 1
12 13
14
…
G
A
C
…
B
Die Funktion zur Ausgabe des Index zur diatonischen Notenlage − dargestellt in Quelltext 22−
ist nach einem ähnlichen Prinzip aufgebaut wie die Funktion für die chromatische Notenlage.
Enharmonische Verwechslungen müssen nicht berücksichtigt werden, sodass als Eingabewerte
nur der Notenname und die Oktavlage benötigt werden.
function notenlage_d($note, $oktave){
$note
$oktave
= $note;
= $oktave;
$notenkomplex
= “$note,$oktave”;
$note
=
array(
0 => C,0
//c
1 => D,0
//d
2 => E,0
//e
3 => F,0
//f
4 => G,0
//g
5 => A,0
//a
6 => B,0
//b
7 => C,1
//c
8 => D,1
//d
…
);
return array_search($notenkomplex,$note);
}
Quelltext 22 - Implementierung zum Finden der diatonischen Notenlage aus Notenname und Oktave
Da keine Überlappungen wie bei den enharmonischen Verwechslungen auftreten, reicht die Zuordnung der Werte in einem Array.
85 4.3.2
IMPLEMENTIERUNG DER MUSIKALISCHEN
KONTUREN
Sind die Notenlagen eines Musikwerkes indiziert, können zwischen den Notenpositionen in der
horizontalen Ebene Konturverläufe gebildet werden.
Ob eine Notenfolge eine Motivverarbeitung eines ausgesuchten Motivs ist, wird zuerst durch den
Test auf deren Kontur analysiert. Der erste Test beruht auf den Parsons-Code. Nur wenn die
Notenfolge den Parsons-Code-Test besteht, ist die Möglichkeit gegeben, dass diese Notenfolge
eine Wiederholung oder eine Motivverarbeitung des ausgesuchten Motivs ist. Jedoch entspricht
der Parsons-Code des Originalmotivs nicht dem der Motivverarbeitungsformen Umkehrung,
Krebs und Spiegelkrebs. Daher ist bei diesen Formen eine Umrechnung des Parsons-Codes vor
dem Test zu integrieren.
D ER PARSONS-CODE
Die Implementierung des Parsons-Codes ist sehr einfach, wie Quelltext 23 zeigt.
Die Erstellung des Parsons-Codes setzt voraus, dass die chromatischen Notenlagen zuvor indiziert wurden. Die diatonische Notenlage reicht nicht aus, da damit kein Unterschied beispielsweise zwischen den Tönen C und Cis gemacht wird; hier würde also die Aufwärtsrichtung im Parsons-Code nicht wiedergegeben werden können.
Der Parsons-Code nimmt nun von Notenposition n zu n+1 vier mögliche Belegungen ein. Zunächst wird die erste Note des Musikwerkes mit dem Startzeichen S (in der eigenen Implementierung mit *) initialisiert. Anschließend sind die drei Werte Down (D), Up (U) und Repeat (R)
möglich. Diese Werte werden für den Richtungsverlauf der Intervalle zwischen Notenposition n
und n+1 an Notenposition n+1 angegeben.
-lese Notenlage von n mit Hilfe der Funktion notenlage_c
-lese Notenlage von n+1 mit Hilfe der Funktion notenlage_c
$x = notenlage_c(n+1) - notenlage_c(n);
if($x>0){
print “Parsons-Code für n+1 ist Up (U).“;
}elseif($x<0){
print “Parsons-Code für n+1 ist Down (D).“;
}else{
print “Parsons-Code für n+1 ist Repeat (R).“;
}
Quelltext 23 - Pseudocode zur Implementierung des Parsons-Codes für die Werte Up, Down und Repeat
86 Der Wert im Parsons-Code ergibt sich durch Subtraktion des Notenlagenindex an Position n von
Notenlagenindex an Position n+1.
D I E DIA TON I SC HE KO NTUR
Die diatonische Kontur kann auf ähnliche Weise wie der Parsons-Code berechnet werden.
Grundlage für die Berechnung ist die Indizierung der diatonischen Notenlage. Wie im Quelltext
24 dargestellt ist, wird wieder durch Subtraktion der Indizes der Notenlagen an den Positionen n
und n+1 das diatonische Intervall errechnet.
-lese Notenlage von n mit Hilfe der Funktion notenlage_d
-lese Notenlage von n+1 mit Hilfe der Funktion notenlage_d
$x = notenlage_d(n+1) - notenlage_d(n);
print “Die diatonische Kontur für n+1 ist “ + $x;
Quelltext 24 - Pseudocode zur Berechnung der diatonischen Kontur
D I E CHR OM A T I SC H E K ON TUR
Die Berechnung der chromatischen Kontur erfolgt nach demselben Prinzip wie die Berechnung
der diatonischen Kontur (siehe Quelltext 25). Der einzige Unterschied ist, dass hier der Index der
chromatischen Notenlagen zur Hilfe genommen wird.
-lese Notenlage von n mit Hilfe der Funktion notenlage_c
-lese Notenlage von n+1 mit Hilfe der Funktion notenlage_c
$x = notenlage_c(n+1) - notenlage_c(n);
print “Die chromatische Kontur für n+1 ist “ + $x;
Quelltext 25 - Berechnung der chromatischen Kontur
D I E P AU S E UND D ERE N AU S W IRK UNG A UF D I E M OTIVK ON TUR
Ist der Rhythmus einer Motivverarbeitung wie in Abbildung 37 zum Originalmotiv derart abgewandelt, dass durch Pausen lediglich die Notenwerte, nicht aber die zeitlichen Notenpositionen
87 verändert sind, ist der Bezug zum Originalmotiv ohne Probleme für den Hörer bzw. Leser erkennbar. In diesem Fall ist auch eine korrekte Interpretation durch den Algorithmus möglich.
Abbildung 37 - Originalmotiv und mit Pausen versetztes Originalmotiv
Bei der Konturanalyse können Pausen prinzipiell überlesen werden. Die Notenlagen werden von
vorhergehenden Noten oder Akkorden in einem Puffer zwischengespeichert. Somit wird gewährleistet, dass die Kontur pausenübergreifend berechnet wird.
88 4.4 ALLGEMEINE FUNKTIONSWEISE DES
MOTIVANALYSEPROGRAMMS
Der folgende Pseudocode zeigt den Algorithmus der Motivsuche und -analyse. In den ersten
sieben Punkten des Algorithmus werden wichtige Variablen, Funktionen und Zustände definiert.
Diese verwendet der Algorithmus im weiteren Verlauf. Vom achten bis zum zehnten Punkt wird
das Musikwerk in seine Bestandteile, die Noteninformationen zerlegt. Anhand von Wiederholungen werden ein oder mehrere Motive aufgefunden. Von den Noteninformationen der Motive
werden je Parameter die Umkehrung, der Krebs, die Krebsumkehrung, die Augmentation und die
Diminution gebildet. Der elfte Punkt beinhaltet die Verkettung der Noteninformationswerte eines Musikwerkes zu einem einzigen String. Auf diese Weise entsteht ein einzelner String für jeden
Parameter. Die Noteninformationen, die länger als ein Zeichen sind, müssen so transformiert
werden, dass sie nur noch aus einem Zeichen bestehen. Danach werden die Noteninformationen
der Motive durch ein Matching-Verfahren mit den Strings der Noteninformationen des Musikwerks verglichen. Übereinstimmungen werden als Arrayposition abgespeichert. Im letzten Schritt
wird an diesen gefundenen Arraypositionen verglichen, welche Kombinationen aus Noteninformationen welcher Motivverarbeitung entsprechen. Die Bezeichnungen dieser Motivverarbeitungen werden anschließend dem Benutzer mit Taktangabe ausgegeben. Wichtige Algorithmen des
Pseudocodes werden im weiteren Verlauf als PHP-Funktionen näher betrachtet, analysiert und
interpretiert.
1.
5.










10.



Seien α1, α2, …, αn musikalische Motive
Sei p = Position
Sei arr = Array
Sei u = Umkehrung
Sei k = Krebs
Sei A ein Musikstück
Seien {α1, α2, …, αn}
A
Zerlege Musikwerk A in Bestandteile: Note, Alteration, Oktave, Notenlänge, X-tole, Punktierung, Parsons-Code, diatonische Kontur und chromatische Kontur
Finde ein Motiv anhand seiner Wiederholungen im Parsons-Code
Zerlege gefunden Motive α1,α2,…,αn in Bestandteile: Note, Alteration, Oktave, Notenlänge, Xtole, Punktierung, Parsons-Code, diatonische Kontur und chromatische Kontur
Erstelle aus den Noteninformationen von allen gefundenen Motiven eine Umkehrung, einen Krebs,
eine Krebsumkehrung, eine Augmentation und eine Diminution
Bereite das MusicXML-Dokument so vor, dass alle Notennamen des Musikwerks und der Motive in
einer Reihe aufgelistet werden. Verfahre auf dieselbe Weise auch mit Alterationen, Oktaven,
Notenlängen, Parsons-Code, diatonischer Kontur und chromatischer Kontur. Alle einzelnen Noteninformations-Strings müssen so transformiert werden, dass sie nur noch aus einem Zeichen bestehen.
Solange
1.
2.
3.
4.
5.
6.
Motive α1,α2,…,αn nicht abgearbeitet {
Note(α1) enthalten in A Speichere Arrayposition für Note(α1)
Alteration(α1) enthalten in A Speichere Arrayposition für Alteration(α1)
Oktave(α1) enthalten in A Speichere Arrayposition für Oktave(α1)
Notenlänge(α1) enthalten in A Speichere Arrayposition für Notenlänge(α1)
Parsons-Code(α1) enthalten in A Speichere Arrayposition für Parsons-Code(α1)
Diatonische Kontur(α1) enthalten in A Speichere Arrayposition für diatonische Kon-
89 12.
7.

tur(α1)
Chromatische Kontur(α1) enthalten in A
Kontur(α1)
}
Speichere Arrayposition für chromatische
Solange Motive a1, a2, …, an nicht abgearbeitet {
1. p(arr(Parsons Code(a1)))=p(arr(Diatonische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Chromatische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Notenlänge(a1)))
p(arr(Parsons Code(a1)))=p(arr(Oktave(a1)))
p(arr(Parsons Code(a1)))=p(arr(Alteration(a1))) p(arr(Parsons Code(a1)))=p(arr(Note(a1)))
Motiv ist ein Originalmotiv / Wiederholungsmotiv
2.
p(arr(Parsons Code(a1)))=p(arr(Diatonische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Notenlänge(a1)))
Motiv ist eine tonale Sequenz
3.
p(arr(Parsons Code(a1)))=p(arr(Diatonische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Chromatische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Notenlänge(a1)))
Motiv ist eine tonale Sequenz
4.
p(arr(u(Parsons Code(a1))))=p(arr(u(Diatonische Kontur(a1))))
p(arr(u(Parsons Code(a1))))=p(arr(Notenlänge(a1)))
Motiv ist eine tonale Umkehrung
5.
p(arr(u(Parsons Code(a1))))=p(arr(u(Diatonische Kontur(a1))))
p(arr(u(Parsons Code(a1))))=p(arr(u(Chromatische Kontur(a1))))
p(arr(u(Parsons Code(a1))))=p(arr(Notenlänge(a1)))
Motiv ist eine reale Umkehrung
6.
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(u(Diatonische Kontur(a1)))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(u(Chromatische Kontur(a1)))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k((Notenlänge(a1))))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(Oktave(a1))))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(Alteration(a1)))) p(arr(k(u(Parsons Code(a1)))))=p(arr(k(Note(a1))))
Motiv ist ein Krebs 1
7.
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(u(Diatonische Kontur(a1)))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(u(Chromatische Kontur(a1)))
p(arr(k(u(Parsons Code(a1)))))=p(arr((Notenlänge(a1))))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(Oktave(a1))))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(Alteration(a1)))) p(arr(k(u(Parsons Code(a1)))))=p(arr(k(Note(a1))))
Motiv ist ein Krebs 2
8.
p(arr(k(u(Parsons Code(a1)))))=p(arr(k(u(Diatonische Kontur(a1)))
p(arr(k(u(Parsons Code(a1)))))=p(arr(k((Notenlänge(a1))))
Motiv ist ein Spiegelkrebs
9.
p(arr(Parsons Code(a1)))=p(arr(Notenlänge(a1)))
Motiv ist eine Intervallweitung
10. p(arr(Parsons Code(a1)))=p(arr(Diatonische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Chromatische Kontur(a1)))
p(arr(Parsons Code(a1)))=p(arr(Notenlänge*2(a1)))
p(arr(Parsons Code(a1)))=p(arr(Oktave(a1)))
p(arr(Parsons Code(a1)))=p(arr(Alteration(a1))) p(arr(Parsons Code(a1)))=p(arr(Note(a1)))
Motiv ist ein Augmentation
11. p(arr(Parsons Code(a1)))=p(arr(Notenlänge(a1)))
Motiv ist eine Intervallengung
12. p(arr(Parsons
p(arr(Parsons
p(arr(Parsons
p(arr(Parsons
p(arr(Parsons
Code(a1)))=p(arr(Diatonische Kontur(a1)))
Code(a1)))=p(arr(Chromatische Kontur(a1)))
Code(a1)))=p(arr(Notenlänge/2(a1)))
Code(a1)))=p(arr(Oktave(a1)))
Code(a1)))=p(arr(Alteration(a1)))
90 p(arr(Parsons Code(a1)))=p(arr(Note(a1)))
Motiv ist eine Diminution
Quelltext 26 - Pseudocode des Motivanalyseprogramms
Die Motivanalysesoftware ist als ein Webformular programmiert. Somit können alle, die über
einen Internetanschluss, einen Internet-Browser und ein MusicXML-Dokument verfügen, dieses
Programm testen. Zusätzlich kann das Programm an eine Datenbank gekoppelt werden, um darin Testergebnisse abzuspeichern. Die gespeicherten Daten können dazu verwendet werden, den
Algorithmus effizienter zu programmieren. So kann durch die gespeicherten Testergebnisse der
Such- und Analysealgorithmus verbessert werden.
Der gesamte Motivsuche- und Motivanalysealgorithmus ist in mehreren PHP-Dateien untergebracht. Je nach Aufgabenstellung werden die einzelnen Klassen in den jeweiligen Dateien aufgerufen und bedienen sich ihrer Funktionen, um Teilresultate an andere Klassen weiterzuleiten. Die
folgende Darstellung zeigt die Reihenfolge, in der die Dateien aufgerufen werden, beginnend mit
der Datei index.php. Nachdem der Benutzer über ein Webformular die MusicXML-Datei hochgeladen und Suchkriterien für die Motivsuche ausgewählt hat, werden alle Parameter an die Datei
motiv.php weitergeleitet. Von dieser Datei aus werden sequenziell die Dateien motiv.class.php mit
der Klasse Motivesuche(), repeater.class.php mit der Klasse Wiederholungsfinder(),
prepare.class.php mit der Klasse Vorbereitung(), motif_finder.class.php mit der Klasse
Motif_Finder_prepare() und motiv_types.class.php mit der Klasse Motif_Types() aufgerufen.
index.php
|
*- motif.php -*
|
*|
*|
*|
*|
*|
*-
motiv.class.php
-> Motivsuche();
repeater.class.php
-> Wiederholungsfinder();
prepare.class.php
-> Vorbereitung();
prepare_motif.array.php
-> Pre_Motif_Array();
motif_finder.class.php
-> Motif_Finder_prepare();
motif_types.class.php
-> Motif_Types();
Abbildung 38 - Unterteilung des Algorithmus in einzelne Klassen
Die Startdatei index.php wird über den Webbrowser aufgerufen. Im Webformular wählt der Benutzer zunächst eine sich lokal auf dem Rechner befindende MusicXML-Datei, die analysiert
werden soll, aus. Im Weiteren gibt das Webformular drei Auswahlmöglichkeiten vor, wie ein Motiv im MusicXML-Dokument gefunden werden soll. Mit Auswahl der ersten Möglichkeit wird
der Software die Aufgabe übergeben, selbstständig das längste Motiv zu finden. Innerhalb des
91 Algorithmus ist bestimmt, dass das Motiv mindestens fünf Noten lang sein muss. Bei der zweiten
Auswahlmöglichkeit muss der Algorithmus beliebig viele Motivmengen finden. Dabei kann der
Benutzer angeben, aus wie vielen Noten mindestens sowie maximal die zu findenden Motive
bestehen. Die Auswahl ist dabei auf mindestens drei Noten und maximal neunzehn Noten beschränkt. Bei der dritten Auswahlmöglichkeit kann der Benutzer selbst eine Folge von Notennamen eingeben, die möglicherweise das Motiv darstellen. So wird die Motivsuche im Algorithmus
übergangen und es werden gleich die Motivverarbeitungen im Musikwerk gesucht. Als letztes
kann der Benutzer wählen, ob alle Pausen innerhalb des Musikwerkes entfernt werden sollen.
Durch das Entfernen der Pausen wird die Laufzeit stark verkürzt. Diese Maßnahme ist vor allem
dann sinnvoll, wenn eine Orchesterpartitur analysiert wird, die viele Passagen mit Pausen besitzt.
Nach der Übernahme der Daten aus dem Webformular wird die MusicXML-Datei sowie die
Analysekriterien an die Datei motif.php übergeben. Die Datei motif.php ist die Zentralsteuerung
des Algorithmus, die je nach Anweisung andere PHP-Dateien und deren Klassen bzw. Funktionen zur Analyse aufruft, oder Teilresultate in Empfang nimmt. Der Algorithmus beginnt mit der
Extraktion aller notwendigen Informationen aus MusicXML.
4.5 EXTRAKTION DER DATEN JE NACH
VERBINDUNGSTYP
Die Klasse Motivsuche() in der Datei motiv.class.php nimmt die MusicXML-Datei entgegen und
gibt diese an die XML-Funktion simplexml_load_file(string $filename) weiter. Die MusicXMLDatei wird in ein XML-Objekt konvertiert und steht nun den Funktionen der SimpleXMLBibliothek zur Verfügung. Die wichtigste Funktion ist dabei xpath(string $path),37 mit der innerhalb von XML-Dokumenten an beliebige Stellen, wie Elemente, Attribute und Werte, navigiert
werden kann.38 Im Abschnitt „Das Einlesen und Abspeichern der Quelldaten“ wurde bereits auf
die Notwendigkeit der Benutzung von zwei foreach-Schleifen hingewiesen. Die äußere foreachSchleife durchläuft einzelne Systeme und die innere foreach-Schleife einzelne Takte eines Systems.
Innerhalb der inneren foreach-Schleife befindet sich eine komplexe if-else Anweisungsstruktur,
die die derzeitige Notenposition n und die Notenposition n+1 hinsichtlich verschiedener Verbin 37 PHP Hypertext Preprocessor: "PHP: SimpleXMLElement->xpath - Manual". URL:
http://de2.php.net/manual/de/function.simplexml-element-xpath.php [Stand: 11. Februar 2009]
38 vgl. Eckstein R., Eckstein S. (2004) XML Path Language (XPath), XML und Datenmodellierung. Heidelberg: dpunkt
Verlag GmbH, 65 ff.
92 dungstypen untersucht und anschließend eine entsprechende Anweisung befolgt. Folgende Verbindungstypen sind grundlegend zu betrachten:









Note→Note
Note→Akkord
Note→Pause
Akkord →Note
Akkord→Akkord
Akkord →Pause
Pause→Note
Pause→ Akkord
Pause→Pause
(N→N)
(N→A)
(N→P)
(A→N)
(A→A)
(A→P)
(P→N)
(P→A)
(P→P)
Diese Auflistung muss aus folgendem Grund jedoch noch untergliedert werden: Wird die letzte
Note eines Takts gelesen, muss der Algorithmus für die Bestimmung der Kontur eine Note vorauslesen. Diese Note befindet sich jedoch im nächsten Takt. Hier muss die Funktion xpath() in
das Elternelement <part> heraus navigieren, um in das nächste <measure> Element hinein navigieren zu können. Erst dann wird für den Algorithmus erkennbar, ob sich an der ersten Notenposition des nächsten Takts eine Note, ein Akkord oder eine Pause befindet und welcher Konturverlauf sich daraus ergibt. Zusätzlich sind drei weitere eigenständige Verbindungstypen zu definieren, die das Ende des Notensystems markieren. Diese Verbindungstypen sind notwendig, damit
der Algorithmus den letzten Takt eines Notensystems erkennt. Somit wird unterbunden, dass
eine Kontur zwischen der letzten Note eines Systems und der ersten Note eines neuen Systems
aus einer weiteren Stimme erstellt wird. Zudem ermöglichen diese Verbindungstypen, die innere
foreach-Schleife zu verlassen, um durch die äußere foreach-Schleife zum nächsten System gelangen zu können.
Die neu eingeführten Verbindungstypen sind:









Note→Note im nächsten Takt
Note→Akkord im nächsten Takt
Note→Pause im nächsten Takt
Akkord→Note im nächsten Takt
Akkord→Akkord im nächsten Takt
Akkord→Pause im nächsten Takt
Pause→Note im nächsten Takt
Pause→Akkord im nächsten Takt
Pause→Pause im nächsten Takt
(N→|N)
(N→|A)
(N→|P)
(A→|N)
(A→|A)
(A→|P)
(P→|N)
(P→|A)
(P→|P)
93 


Note→Systemende
Akkord→ Systemende
Pause→ Systemende
(N→|*)
(A→|*)
(P→|*)
Das Zeichen Pipe (|) verdeutlicht den Taktstrich, während ein Asterisk (*) als „Platzhalter“ für
das Ende des Systems verwendet wird.
Der folgende Quelltext 27 zeigt alle Verbindungstypen in der if-else-Anweisungsstruktur. Weiterhin ist zu sehen, welche Funktion in welcher Verbindungstypanweisung aufgerufen wird. Die
erste Funktion notenarray() ist in den Zeilen 1 bis 29 zu sehen. Diese beinhaltet das mehrdimensionale Array, in welches die Noteninformationen abgespeichert werden. Die maximale Dimension des Arrays ist Vier. Innerhalb des Arrays gibt es an Position array[i][5] einen Platzhalter für
Akkordtöne. Die besondere Struktur eines Akkordes ist in diesem multidimensionalen Array so
berücksichtigt, dass alle zum Basston zugehörigen Akkordtöne in einem zusätzlichen Array in der
Arrayzelle array[i][5] abgespeichert werden. Der Aufbau dieses zusätzlichen Arrays ist in der
Funktion akkordarray() von Zeile 31 bis 41 zu sehen.
1.
5.
10.
15.
20.
25.
30.
35.
40.
function notenarray(){
//Einsammeln der gerade zu lesenden Note oder der gerade zu lesenden Pause
array[i][0]= System;
array[i][1][0]=
Schlüsselname;
array[i][1][1]=
Schlüsselposition;
array[i][1][2]=
Tonart;
array[i][1][3]=
Tonartgeschlecht;
array[i][1][4][0]=
Takt-Schlag; (Zähler)
array[i][1][4][1]=
Takt-Schlagtyp; (Nenner)
array[i][2]=
Verbindungstyp; (A->A, N->A, P->A, N->N, …)
array[i][3]=
Notenname;
array[i][4]=
n-te Note innerhalb des Taktes (beginnend je mit 0)
array[i][5]=
NULL;
//Platzhalter für Akkordtöne
array[i][6]=
Punktierung;
array[i][7][0]=
X-tole; (actual-notes)
array[i][7][1]=
X-tole; (normal-notes)
array[i][8]=
Alteration;
array[i][9]=
Oktave;
array[i][10]=
Notenlänge; (duration/divisions)
array[i][11]=
Stimme;
array[i][12]=
Notenwert;
array[i][13]=
Vorzeichen;
array[i][14]=
vertikale Notenlage chromatisch;
array[i][15]=
vertikale Notenlage diatonisch;
array[i][16]=
Konturbewegung chromatisch; n->n+1
array[i][17]=
Konturbewegung diatonisch; n->n+1
array[i][18]=
Konturbewegung Parsons; n->n+1
array[i][19]=
Takt Nr.
}
function akkordarray(){
//Einsammeln der Akkordtöne, die zur gerade zu lesenden Bassnote dazugehören
array[i][5][j][0]=
Notenname;
array[i][5][j][1]=
Alteration;
array[i][5][j][2]=
Oktave;
array[i][5][j][3]=
vertikale Notenlage chromatisch;
array[i][5][j][4]=
vertikale Notenlage diatonisch;
array[i][5][j][5][k]= Konturbewegung chromatisch; n->n+1
array[i][5][j][6][l]= Konturbewegung diatonisch; n->n+1
array[i][5][j][7][m]= Konturbewegung Parsons; n->n+1
}
94 45.
Aufrufen der Funktion Motivsuche()
foreach Schleife über den XPfad score-partwise/part{
-Auslesen des aktuellen ID-Wertes im Element <part> (Notensystem)
foreach Schleife über den XPfad score-partwise/part/measure{
50.
-Auslesen der Elemente <measure> (Takte)
if(N->N){
}elseif(N->A){
}elseif(N->P){
}elseif(A->N){
}elseif(A->A){
}elseif(A->P){
}elseif(P->N){
}elseif(P->A){
}elseif(P->P){
}elseif(N->|N){
}elseif(N->|A){
}elseif(N->|P){
}elseif(A->|N){
}elseif(A->|A){
}elseif(A->|P){
}elseif(P->|N){
}elseif(P->|A){
}elseif(P->|P){
}elseif(N->|*){
}elseif(A->|*){
}elseif(P->|*){
}else{
55.
60.
65.
70.
75.
80.
notenarray();
notenarray();
notenarray();
notenarray(); akkordarray();
notenarray(); akkordarray();
notenarray(); akkordarray();
notenarray();
notenarray();
notenarray();
notenarray();
notenarray();
notenarray();
notenarray(); akkordarray();
notenarray(); akkordarray();
notenarray(); akkordarray();
notenarray();
notenarray();
notenarray();
//letzte Pause des Systems
//letzte Pause des Systems
//letzte Pause des Systems
//Auslesen in
//Auslesen in
//Auslesen in
//Auslesen in
//Auslesen in
//Auslesen in
//Auslesen in
//Auslesen in
//Auslesen in
//Voraussehen
//Voraussehen
//Voraussehen
den
den
den
den
den
den
den
den
den
des
des
des
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
nächsten Takt hinein
letzten Taktes
letzten Taktes
letzten Taktes
//Protokollierung eines unerwarteten Fehlers
}
}
}
Quelltext 27 - Informationssammlung und Aufbereitung im MusicXML Dokument
Das Ende eines Takts im letzten System erkennt die äußere foreach-Schleife zum einen durch das
Fehlen weiterer <measure>-Elemente. Zum anderen überprüft eine if-Anweisung die Existenz
eines Schlussstrichs im letzten Takt. Der folgende Quelltext 28 zeigt die MusicXML-Struktur
eines Schlussstrichs, hier beispielsweise für Takt 24 eines beliebigen Werkes.
<measure number="24">
<note>
...
</note>
<barline location="right">
<bar-style>light-heavy</bar-style>
</barline>
</measure>
Quelltext 28 - Das Element barline markiert das Ende des Systems
Sind nach dem Einlesen alle relevanten Musikinformationen im multidimensionalen Array gespeichert, wird dieses Array an die Klasse Wiederholungsfinder() der Datei repeater.class.php
übergeben. Zusätzlich erhält die Klasse das Kriterium zum Motivfinden, das der Benutzer in der
95 Weboberfläche zuvor gewählt hat.
4.6 ERSTELLUNG EINES STRINGS AUS DEM
MULTIDIMENSIONALEN ARRAY
Der weitere Algorithmus wird durch die Kriterien zum Motivfinden in drei Bereiche unterteilt:
1. Hat der Benutzer eine Notenfolge fest eingegeben, wird nach dieser im Musikwerk gesucht.
2. Verlangt der Benutzer, dass das Motiv vom Algorithmus selbstständig gesucht wird, sucht der
Algorithmus nach Wiederholungen von Notennamenreihen im Musikwerk. Alle Notennamenreihen, die so viele Noten lang sind, wie zuvor vom Benutzer ausgewählt wurde, werden als
Motivmenge ausgegeben.
3. Die Notennamenreihe, die mindestens einmal wiederholt wird und aus den meisten Noten
besteht, wird als Motiv erkannt.
Das multidimensionale Array ist nun mit Noteninformationen gefüllt. Sofern Fall 2 oder Fall 3
vorliegt, gilt es als nächstes, in diesem Array zwei identische Notennamenreihen zu finden. Zu
diesem Zweck werden alle Notennamen aus dem multidimensionalen Array extrahiert und zu
einem String verbunden. Der Anfang des Strings ist der Notenname der ersten Note des ersten
Systems. Der String endet mit dem Notennamen der letzten Note des letzten Systems. Liest der
Algorithmus an einer Notenposition eine Pause, so wird diese durch das Charactersymbol P ersetzt. Das Zeichen P kollidiert zu keiner Zeit mit den Notennamen A, B, C, D, E, F oder G.
Liest der Algorithmus an einer Notenposition einen Akkord, so wird nur der Basston dieses Akkords für die Suche benutzt. Für eine zukünftige Implementierung ist zu überlegen, ob der Algorithmus den Akkord beispielsweise hinsichtlich des Grundtons analysiert und anschließend zur
Motivanalyse nur den Grundton verwendet, der den Grundklang eines Akkords ausmacht.
Wird beim Parsen das Ende eines Notensystems erreicht, so wird dieses System vom anschließenden Notensystem durch den Buchstaben Z getrennt. Auch hier ist ein Buchstabe gewählt, der
nicht unter den Notennamen auftritt. Durch die Markierung des Abschlusses eines Notensystems
wird verhindert, dass Notennamenwiederholungen notensystemübergreifend als Motiv fehlinterpretiert werden.
Die folgenden Darstellungen zeigen die soeben beschriebenen Vorgänge. Aus den Notennamen
des vierstimmigen Werkes in Abbildung 39 mit vier Takten extrahiert der Algorithmus einen
String aus Notennamen (siehe Abbildung 40). Das Musikwerk in Abbildung 39 wird im Übrigen
96 auch in den folgenden Betrachtungen eine entscheidende Rolle spielen, denn es enthält das Beispielmotiv der Diplomarbeit und einige Motivverarbeitungen.
Abbildung 39 - Partitur des Beispielwerks mit dem Beispielmotiv
EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ
Abbildung 40 - Notennamen-String aus dem zusammengesetzten System
97 4.7 KRITERIEN ZUM AUFFINDEN VON
MOTIVEN
Bei der Motivsuche wird der Algorithmus in dieser Diplomarbeit Motive anhand der Wiederholung von Notennamenreihen finden. Neben dieser Verfahrensweise gibt es aber auch die Möglichkeit, Motive nach anderen Kriterien automatisiert zu finden. Einige Kriterien sind im Folgenden beschrieben.
Die Wiederholung von Notennamen ist das Kriterium der Motivsuche in dieser Diplomarbeit.
Hierzu werden aus dem multidimensionalen Array alle Notennamen extrahiert und als String
hintereinander platziert. Nun kann ein Suchalgorithmus diesen String nach zwei identischen Teilstrings im gesamten String absuchen. Ist auf diese Art ein mögliches Motiv anhand der Notennamen gefunden, werden die Noteninformationen aus den übrigen Parametern für diesen String
aus dem multidimensionalen Array für die weitere Analyse abgefragt.
Neben einer Melodiefolge kann sich das menschliche Gedächtnis den Rhythmus am besten einprägen.39 Dahingehend kann ein Algorithmus gebildet werden, der gleiche Rhythmusfolgen innerhalb eines Musikwerkes findet. Hierzu müssen alle Notenwerte aus dem Element <type> zu
einem String aneinandergereiht werden. Auch hier müssen zwei identische Rhythmusfolgen in
Form von Teilstrings gefunden werden. Danach können die restlichen Noteninformationen zur
Tonhöhe der Noten ergänzt werden.
Ein weiteres Kriterium zum Auffinden eines Motivs kann die Wiederholung der Noten auf betonten Zählzeiten sein. Jede Taktart gibt Zählzeiten vor, auf denen Noten hauptbetont, nebenbetont oder unbetont werden. Diese Akzente sind wichtige Merkmale in einer Melodie. Werden nur
die Tonhöhen auf den betonten und nebenbetonten Zählzeiten betrachtet, so können diese
Rahmenpunkte zum Finden eines Motivs genutzt werden. Der Algorithmus kann dabei in zwei
Schritten vorgehen. Im ersten Schritt werden alle betonten und nebenbetonten Notennamen
aneinandergereiht. Danach wird in diesem String wieder nach zwei identischen Teilstrings gesucht. Diese Teilstrings sind dann Ausgangspunkt der Motivanalyse.
vgl. De la Motte-Haber, H., Rötter, G. (2005) Prinzipien der Rhythmuswahrnehmung, Musikpsychologie. Laaber:
Laaber Verlag, 233
39
98 4.8 DIE MOTIVSUCHE
Für das Finden eines oder mehrerer Motive innerhalb eines Strings wurden zwei verschiedene
Funktionen programmiert. Die erste Funktion findet innerhalb des gesamten Strings den längsten
Teilstring, der mindestens zweimal im String auftaucht, also mindestens einmal wiederholt wird.
Die zweite Funktion findet alle Teilstrings, die zweimal im Gesamtstring vorhanden sind und
zusätzlich so lang sind, dass sie der Minimal- und Maximalnotenanzahl entsprechen, die der Benutzer in der Weboberfläche zuvor angegeben hat.
Der folgende Code zeigt die erste Funktion, die als Übergabewerte den Gesamtstring und seine
Länge entgegennimmt. Vom Gesamtstring werden nach und nach immer kleinere Teilstrings
gebildet. Anschließend wird dieser Teilstring jeweils im Gesamtstring auf mindestens zweimaliges
Vorkommen gesucht. Werden zwei identische Teilstrings gefunden, so gibt die Funktion den
Teilstring und dessen Erstposition innerhalb des Gesamtstrings zurück. private function motif_longest($string,$search_length){
$intLength =$search_length;
$strSource =$string;
$strTmp =
null;
$arrCount = array();
for( $i=$intLength-1; $i>=2; $i-- ) {
for($o=0; $o < $intLength-$i; $o++ ) {
$strTmp = substr($strSource, $o, $i);
if( ($intCount = substr_count($strSource, $strTmp)) >= 2 ) {
$arrCount[$strTmp] = $intCount;
}
}
}
if( !empty($arrCount) ) {
break;
}
$x1=0;
foreach($arrCount as $a1 => $a2){
$motiv_array[$x1][0]=$a1;
$motiv_array[$x1][1]=$a2;
$x1++;
}
return $motiv_array;
}
$string=”EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ”;
$search_length=strlen($string);
motif_longest($string,$search_length);
Quelltext 29 - Suche nach dem längsten zweimal vorhandenen String mit Hilfe der Funktion motif_longest
Die zweite Funktion (siehe Quelltext 30) sucht ebenfalls über von Schritt zu Schritt kleineren
Teilstrings nach wiederholten Notennamenketten. Lediglich die Ergebnismenge wird eingeschränkt: Es werden nur die Teilstrings in die Ergebnismenge aufgenommen, die sich im Rahmen
99 der vorgegebenen Länge befinden. Somit wird der Funktion der Gesamtstring übergeben sowie
deren Länge und die erlaubte Minimal- und Maximallänge des gesuchten Motivs. Als Rückgabewert gibt die Funktion ein Array mit allen gefundenen Strings und deren Erstposition im Gesamtstring zurück. private function
$strSource
$minlength
$maxlength
$int_length
$strTmp
$arrCount
motif_range($string,$min,$max,$search_length){
= $string;
= $min;
= $max;
= $search_length;
= null;
= array();
for($o = 0; $o < $int_length; $o++ ){
if(($int_length-$o)<=$minlength){
continue;
}
}
$range_search =
$int_length-$o;
$sum_min_max =
$minlength+$maxlength;
for($i = $minlength; $i<=$range_search and $range_search<=$sum_min_max; $i++ ){
$strTmp = substr($strSource, $o, $i);
$intCount = substr_count($strSource, $strTmp);
if($intCount >= 2){
if(!array_key_exists($intCount,$arrCount)){
$arrCount[ $intCount ] = array();
}
$arrCount[$intCount][] = $strTmp;
}
}
foreach($arrCount as $intCount => $arrResults ){
$arrCount[$intCount] = array_unique($arrResults);
}
$x1=0;
}
foreach($arrCount as $a1 => $a2){
foreach($a2 as $b1 => $b2){
$motiv_array[$x1][0]=$arrCount[$a1][$b1];
$motiv_array[$x1][1]=$a1;
$x1++;
}
}
return $motiv_array;
$string=”EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ”;
$search_length=strlen($string);
$min=3;
$max=10;
motif_range($string,$min,$max,$search_length);
Quelltext 30 - Die Funktion motif_range zur Suche nach doppelten Strings mit Einschränkung der Länge
Die Rückgabewerte der beiden vorgestellten Motivsuche-Funktionen werden als Array an die
Zentralsteuerungsdatei motif.php zurückgegeben. Dieses zweidimensionale Array besteht aus den
Notennamenreihen und aus den Anfangspositionen der gefundenen Motive im Gesamtstring.
Mit Hilfe der Anfangsposition des Teilstrings kann dieser im Gesamtstring wiedergefunden werden. Ob die Position des Motivs richtig ist, wird mit der Funktion array_search(mixed $needle,
array $haystack) überprüft. Dabei sucht die Funktion den Teilstring im multidimensionalen Ar-
100 ray und erhält als Rückgabewert den Schlüssel. Der Schlüssel ist von der eigenen Programmierung her so aufgebaut, dass er gleichzeitig auch der Anfangsposition des gesuchten Motivs im
gesamten Musikwerk entspricht. Ist die richtige Position im multidimensionalen Array gefunden,
können die Noteninformationen aus den restlichen Parametern dem gefundenen Motiv hinzugefügt werden. Alle Noteninformationen des Motivs werden in einem neuen multidimensionalen
Array abgespeichert. Zusätzlich zu den Noteninformationen Notenname, Alteration, Oktave,
Notenwert als Zahl, Notenwert als Wort, chromatische Kontur, diatonische Kontur und Parsons-Code sind drei weitere strukturbedingte Informationen zu ergänzen:
1. Position der einzelnen Note des Motivs innerhalb des multidimensionalen Arrays:
Wurde beispielsweise ein Motiv, das neun Noten lang ist, an Arrayposition 440 des multidimensionalen Arrays vom Musikwerk entdeckt, so sind die Zahlen der Notenpositionen, die im
multidimensionalen Array des Motivs gespeichert werden: 4, 5, ..., 11 und 12.
2. Taktnummer des Taktes, in dem sich die betrachtete Note des Motivs im Musikwerk befindet:
Diese Angabe ist für die spätere Ausgabe der Motivanalyseergebnisse wichtig, um dem Benutzer die Information zu geben, im welchen Takt sich das gefundene Motiv befindet.
3. Angabe des Systems, in dem sich das Motiv befindet: Auch diese Information ist für die Präsentation der Analyseergebnisse für den Benutzer wichtig.
Alle genannten Informationen sehen für das konstruierte Beispielmotiv wie folgt aus:
Arrayposition
der Note
Notenname
Alteration
Oktavlage
Notenwert als
Zahl
Notenwert als
Wort
chromatische
Kontur
0
1
2
3
4
5
6
7
8
9
E
0
4
0.5
G
1
4
0.5
B
0
4
1
D
0
5
0.5
C
0
5
1.5
B
0
4
0.5
D
0
4
0.5
E
0
4
0.5
C
0
4
0.5
A
0
3
2
eighth
eighth
quarter
eighth
quarter
eighth
eighth
eighth
eighth
half
*
4
3
3
-2
-1
-9
2
-4
-3
diatonische
Kontur
Parsons-Code
Taktnummer
System
*
2
2
2
-1
-1
-5
1
-2
-2
S
1
P1
U
1
P1
U
1
P1
U
1
P1
D
1
P1
D
2
P1
D
2
P1
U
2
P1
D
2
P1
D
2
P1
Tabelle 35 - Noteninformationen des Beispielmotivs
40 Die
entspricht der 5. Stelle im Array, da im Array die Zählung bei 0 beginnt. 101 4.9 BERECHNUNG DER MOTIVVERARBEITUNGSFORMEN
Die bisher gesammelten Daten sind in zwei multidimensionalen Arrays abgespeichert: Zum einen
in dem Array, welches die Noteninformationen des gesamten Musikwerkes enthält und zum anderen das Array mit den Noteninformationen über die gefundenen Motive. Zur Unterscheidung
der Arrays werden die beiden Bezeichnungen „Werkarray“ und „Motivarray“ eingeführt.
Derzeitig liegt das Motiv mit seinen Noteninformationen in dem Motivarray mit dem Arraynamen Position[] vor. Von den Noteninformationen des Motivs ist nun der Krebs, die Umkehrung, die Krebsumkehrung, die Augmentation und die Diminution zu bilden. Es gelten hierbei
die Rechnungsvorschriften von Originalmotiv zu der jeweiligen Motivverarbeitungsform, wie sie
in Kapitel 3.3 „Systematischer Bezug der Motivverarbeitung zum Originalmotiv“ tabellarisch
vorgestellt wurden. Motivverarbeitungsformen wie Sequenz, Intervallengung sowie Intervallweitung müssen nicht gebildet werden, sondern können direkt aus dem Motivarray Position[] zur
Analyse herangezogen werden. Dies begründet sich darin, dass es beispielweise nicht eine einzige
Intervallweitung, sondern sehr viele mögliche Intervallweitungen eines Motivs gibt. Um unnötige
Rechenprozesse zu verringern, werden daher je nach Motivverarbeitungsform nicht alle Parameter miteinander verglichen. Des Weiteren kann eine Sequenz bereits durch den Vergleich der
Konturen sowie der Notenwerte identifiziert werden.
Für die übrigen Motivverarbeiten ist ein Anlegen neuer Arrays − hier als Motivverarbeitungsarrays bezeichnet − notwendig, da hier ein oder mehrere Parameter der Noteninformationen geändert werden müssen.
Krebs
Das Motivarray ist für den Krebs von hinten nach vorn zu drehen. Die Noteninformationen der
Konturen müssen außerdem invertiert werden. Die Inversion schließt sowohl Vorzeichenwechsel, als auch den Symboltausch von D und U im Parsons-Code ein. Die neu geordneten Noteninformationen werden parameterweise in einem neuen temporären Array, dem Krebsarray
(Position_des_Krebs_Pattern[]), abgespeichert.
102 Umkehrung
Für die Umkehrung werden alle Noteninformationen zu den Konturen im Motivarray invertiert
und in einem temporären Umkehrungsarray gespeichert. Das Umkehrungsarray besitzt den Namen Position_des_Umgekehrung_Pattern[].
Krebsumkehrung
Die Noteninformationen im Motivarray werden zunächst wie bei einer Umkehrung und anschließend wie bei einem Krebs geordnet. Abgespeichert werden die neu geordneten Noteninformationen in ein temporäres Krebsumkehrungsarray mit dem Namen
Position_des_Krebsumkehrung_Pattern[].
Augmentation
Die Notenwerte und die Werte aus <duration> werden um den Wert 2 multipliziert. Das Augmentationsarray besitzt den Namen Position_Augmentation_Pattern[].
Diminution
Die Notenwerte und die Werte aus <duration> werden durch den Wert 2 dividiert. Das Diminutionsarray besitzt den Namen Position_Diminution_Pattern[].
103 4.10 REDUKTION UND TRANSFORMATION
DER NOTENINFORMATIONEN
Auch das Werkarray muss nun zum Finden von Motivverarbeitungen aufbereitet werden. Hierzu
wird ein temporäres Werkarray angelegt, welches nur die für die Motivanalyse selbst benötigten
Informationen enthält. Hierzu werden die Zellen des temporären Werkarrays in den ersten
Schritten gefüllt und in einem zweiten Schritt teilweise überschrieben.
Im ersten Schritt werden die nachfolgend aufgelisteten Informationen aus dem Werkarray ausgelesen und in das temporäre Werkarray gespeichert:










der Notenname
die Alteration
die Oktave
der Notenwert als Zahl
der Notenwert als Wort
die chromatische Kontur
die diatonische Kontur
der Parsons-Code
die Taktnummer in der sich die aktuelle Note befindet
das System in dem sich das Motiv befindet
Falls der Benutzer den entsprechenden Button in der Weboberfläche zuvor aktiviert hat, werden
Pausen ebenfalls in das temporäre Array aufgenommen. Bei Akkorden wird immer nur der
Basston übernommen. Dieser erste Schritt besteht also in einer Reduzierung der Daten.
Alle Werte sind so zu übernehmen, dass der Index zwischen den beiden multidimensionalen
Arrays gleich bleibt. Auf diese Weise kann auf beide multidimensionalen Arrays mit dem gleichen
Index zugegriffen werden, wobei stets die Informationen der gleichen Note zurückgegeben werden. Die folgende Darstellung zeigt die Übergabe der Inhalte des Werkarrays in das temporäre
Werkarray mit gleichbleibendem Index anhand eines Ausschnitts aus dem Beispielwerk aus Abbildung 39.
104 Akkord an Notenposition 6
Notenname
weitere Noteninformationen
Oktavlage
Index
...
...
...
4
P
...
5
E
C
A
...
4
6
C
...
5
7
B
...
4
8
...
...
...
9
Werkarray (inklusive Akkordtöne)
4
5
6
7
8
9
... ... ... ... ... ...
Temporäres multidimensionales
Oktavlage
... / 4
5
4
...
Array
Notenname
... P A C B ...
Abbildung 41 - Die Indizes zwischen dem Werkarray und des temporären Werkarrays bleiben erhalten
Index
weitere Noteninformationen
Die folgende Abbildung 42 zeigt die gesamten Informationen, wie sie im temporären Werkarray
angeordnet sind, anhand eines Ausschnitts aus dem Beispielwerk.
...
...
...
...
...
...
...
...
...
...
...
1
G
1
4
0.5
eighth
4
2
U
1
P1
2
B
0
4
1
quarter
3
2
U
1
P1
3
D
0
5
0.5
eighth
3
2
U
1
P1
4
C
0
5
1.5
quarter
-2
-1
D
2
P1
5
B
0
4
0.5
eighth
-1
-1
D
2
P1
6
D
0
4
0.5
eighth
-9
-5
D
2
P1
7
E
0
4
0.5
eighth
2
1
U
2
P1
...
...
...
...
...
...
...
...
...
...
...
Index
Notenname
Alteration
Oktavlage
Notenwert (Zahl)
Notenwert (Wort)
Chromatische Kontur
Diatonische Kontur
Parsons-Code
Taktnummer
Notensystem
Abbildung 42 - Veranschaulichung des temporären Werkarrays mit den Noteninformationen des Beispielwerkes als
Ausschnitt
Im zweiten Schritt müssen die Werte der Noteninformationen aus dem temporären Werkarray,
die länger als ein Zeichen sind (bspw. -3 oder quarter), so transformiert werden, dass diese Zeichen nur noch aus einem Charactersymbol bestehen. Ziel der Transformation ist es, dass alle
Einträge in der hier als senkrecht dargestellten Ebene des Arrays gleich lang sind. Im Verlauf der
Motivanalyse werden die einzelnen Charactersymbole je Parameter zu einem String verkettet.
Dabei müssen die Strings in allen Parametern dieselbe Länge aufweisen. Bei Übergängen von
einem zum nächsten Notensystem wurde im Parameter Notenname ein Z eingefügt. Um am
Ende wieder dieselbe Länge wie bei den anderen Parametern zu erreichen, müssen auch in allen
anderen Parametern die Notensystemübergänge mit einem Charactersymbol markiert werden.
Als Charactersymbole werden die Groß- und Kleinbuchstaben des lateinischen Alphabets verwendet. Es stehen demnach 26 Kleinbuchstaben und 26 Großbuchstaben als Charactersymbole
105 zur Verfügung. Diese insgesamt 52 Charactersymbole ermöglichen eine String-Analyse mit den
PHP-String- und Regular-Expressions-Funktionen. Die durch PHP zur Verfügung stehenden
Funktionen können zwischen Groß- und Kleinschreibung unterscheiden.
Die folgenden Transformationen wurden in der Diplomarbeit realisiert.
Transformation der diatonischen Kontur
Es wird davon ausgegangen, dass zwischen zwei benachbarten Noten der Intervallabstand nie größer als -24 oder +24 Tonschritte ist. Dies entspricht im diatonischen Raum
immerhin einem Sprung von mehr als drei Oktaven.
f(x) sei die Transformationsfunktion zur diatonischen Kontur mit den folgenden Werten:
f(-24) = x
f(-23) = w
...
f(-2) = b
f(-1) = a
f(0)
=Z
f(1)
=A
f(2)
=B
...
f(23) = W
f(24) = X
f(Ende des Notensystems)
= Y.
Transformation der chromatischen Kontur
Hier wird ebenfalls angenommen, dass ein Intervallabstand zwischen zwei benachbarten
Noten nie größer als -24 und +24 Tonschritte ist. Im chromatischen Raum entspricht
dies circa zwei Oktaven.
g(x) sei die Transformationsfunktion zur chromatischen Kontur mit den Werten:
g(-24)
g(-23)
...
g(-1)
g(0)
=x
=w
=a
=Z
106 g(1) = A
g(2) = B
...
g(23) = W
g(24) = X
g(Ende des Systems) = Y.
Transformation des Parsons-Codes
Der Parsons-Code muss nicht transformatiert werden, da die Symbole des Parsons-Codes
nur aus S, D, U und R bestehen und somit stets nur ein Zeichen lang sind. Das Ende eines Systems wird mit dem Buchstaben Y angegeben.
Transformation des Notenwertes
Hier erweist es sich als sinnvoller, den Notenwert aus der Angabe als englisches Wort
herauszulesen, da der Notenwert als reelle Zahl nicht ohne Weiteres in ein diskretes Symbol aus dem Alphabet transformiert werden kann. In einer zukünftigen Implementierung
sollte jedoch wieder auf die Werte von <duration> und <divisions> zugegriffen werden, da
so feinere Abstufungen der Notenwerte insbesondere bei X-tolen dargestellt werden
können.
h(x) sei die Transformationsfunktion für die Notenlänge mit den folgenden Werten:
h(breve)
=A
h(long)
=B
h(whole)
=C
h(half)
=D
h(quarter)
=E
h(eighth)
=F
h(16th)
=G
h(32th)
=H
h(64th)
=I
h(128th)
=J
h(Ende des Systems) = Z.
Sind im Musikwerk größere Notenwerte als 128th, Punktierungen oder auch X-tolen vorhanden, so werden diese Werte mit dem Symbol U belegt, welches in der Motivanalyse als
107 undefiniert behandelt wird.
Transformation der Oktavlagen
i(x) sei die Transformationsfunktion für Oktavlagen mit den folgenden Werten:
i(0)
=J
i(1)
=A
i(2)
=B
i(3)
=C
i(4)
=D
i(5)
=E
i(6)
=F
i(7)
=G
i(8)
=H
i(9)
=I
i(Ende des Systems)
= P.
Alterationen
Für die Transformation der Alterationen wird als Ausgangswert der Wert im Element
<alter> genommen. Es sind aufwärts sowie abwärts nur zwei Alterationsschritte mit
unterscheidbaren Symbolen definiert, da in aller Regel größere Alterationen nicht vorkommen. Tritt dieser Fall dennoch ein, werden die größeren Alterationswerte wieder mit
dem Symbol U belegt.
j(x) sei die Transformationsfunktion für Alterationen mit den Werten:
j(0)
=Z
j(-1) = a
j(-2) = b
j(1)
=A
j(2)
=B
j(Ende des Systems)
= P.
108 Transformation der Notennamen
Notennamen müssen nicht transformiert werden, da diese bereits aus nur einem
Charactersymbol bestehen: C, D, E, F, G, A und B. Ebenfalls müssen Pausen nicht mehr
transformiert werden, da diese bereits das Symbol P erhalten haben und das Ende eines
Systems wird mit dem Zeichen Y belegt.
Die folgende Darstellung in Abbildung 43 soll das temporäre transformierte Werkarray veranschaulichen mit demselben Auszug von Noteninformationen aus dem konstruierten Beispielmotiv wie in Abbildung 42, hier jedoch nach der Transformation.
...
...
...
...
...
...
...
...
...
...
1
G
A
D
F
D
B
U
1
P1
2
B
Z
D
E
C
B
U
1
P1
3
D
Z
E
F
C
B
U
1
P1
4
C
Z
E
E
b
a
D
2
P1
5
B
Z
D
F
a
a
D
2
P1
6
D
Z
D
F
i
e
D
2
P1
7
E
Z
D
F
B
A
U
2
P1
...
...
...
...
...
...
...
...
...
...
Index
Notenname
Alteration
Oktavlage
Notenwert (Wort)
Chromatische Kontur
Diatonische Kontur
Parsons-Code
Taktnummer
Notensystem
Abbildung 43 - Veranschaulichung des temporären Werkarrays mit den Noteninformationen des Beispielwerkes als
Ausschnitt nach der Transformation
Die Arrayzellen Notensystem, Taktnummer und Notenwert als Zahl werden nicht transformiert,
da sie für die Motivanalyse nicht betrachtet werden müssen. Die Informationen zum Notensystem und zur Taktnummer sind aber noch enthalten, da sie später für die Präsentation der Motivverarbeitungsergebnisse relevant sind.
Werden die einzelnen für die Motivanalyse relevanten Charactersymbole je Parameter aus dem
temporären Werkarray als einzelne Strings zusammengesetzt, so entsteht die folgende Darstellung.
Index
Notenname
Parsons-Code
Diatonische Kontur
Chromatische Kontur
Notenwert
Oktavlage
Alteration
0
10
20
30
40
50
|
|
|
|
|
|
EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ
SUUUDDDUDDUUUDDUDDUDYSEUDDUUUDUUUDYSEUDDUDUUUYSDDUDUUUDDUY
zBBBaaeAbbCAAbaHaaCdYzZAbcBBBaBCAdYzZAbcCcCAAYzacCcBBBaaCY
zDCCbaiBdcEBAcbNbaEgYzZAceDCCbDEBgYzZAdeEeECAYzbeEeCDCbaEY
FFEFEFFFFDFFFDFFFFDFZDFEDFFEFEDEDFZDFEDDDDEDFZCDDDFFEFEDFZ
DDDEEDDDDCDDDDDEEDEDPCCDCCCCDDDDDDPCCCCCCCCCCPCCBCBCCCCCCP
ZAZZZZZZZZZZZZZZZZZZPZZZZZAZZZZZZZPAAZZZZZZAZPZZZZZZZZZZZP
Abbildung 44 - Aneinanderreihung aller Noteninformationen des Beispielmusikwerkes als Strings
109 Alle Strings besitzen die gleiche Länge. Die Länge entspricht dem Index und wird im Kopf der
Abbildung dargestellt. Üblicherweise beginnt die Zählung bei einem Array bei 0. Diese Zählung
wurde für die weitere Betrachtung ebenfalls übernommen.
Anschließend werden wie bei dem Werkarray auch die Arrayzellen der Motivverarbeitungsarrays
in Charactersymbole transformiert. Das Array Position_Augmentation_Pattern[] enthält beispielweise diese Daten:
Länge
0
EGBDCBDECA
SUUUDDDUDD
zBBBaaeAbb
zDCCbaiBdc
EEDEDEEEEC
DDDEEDDDDC
ZAZZZZZZZZ
Notenname
Parsons-Code
Diatonische Kontur
Chromatische Kontur
Notenwert
Oktavlage
Alteration
Abbildung 45 - Aneinanderreihung aller Noteninformationen für die Augmentation des Beispielmotivs als String
4.11
DIE MOTIVANALYSEFUNKTION
Alle Informationen sind nun so aufbereitet, dass die Motivanalyse beginnen kann. Für die weitere
Betrachtung wird ein Teilstring, der im Gesamtstring gesucht wird, als Pattern bezeichnet. Ein
Pattern ist ein Ausdruck, in der Regel eine Zeichenkette, nach der in einer anderen Zeichenkette
gesucht wird, eine Art Suchmuster. Für die Motivanalyse wurde die Funktion pregmatchall()
programmiert, welche im Quelltext 31 dargestellt ist. Sie erwartet vier Parameter. Die Variable
$pattern ist das Suchmuster, das in einem String gesucht werden soll. Als erstes wird der String
der Notennamen des Originalmotivs der Variable $pattern übergeben. Die Variable $subject erhält den Gesamtstring der Notennamen des Musikwerkes. Die Variable $matches speichert alle
gefundenen Suchmuster und deren Position an der das Suchmuster im Gesamtstring aufgetaucht
ist. Die Variable $flags mit dem Wert PREG_PATTERN_ORDER „ordnet die Ergebnisse so an,
dass $treffer[0] ein Array von Übereinstimmungen mit dem kompletten Suchmuster ist, $treffer[1] ein Array von
Zeichenketten, die auf das erste eingeklammerte Teilsuchmuster passen und so weiter.“ 41 Die Variable $offset
mit dem Wert 0 bedeutet, dass die Suche an der nullten Position der Suchzeichenkette beginnt.
PHP Hypertext Preprocessor: "PHP: preg_match_all - Manual". URL:
http://de.php.net/manual/de/function.preg-match-all.php [Stand: 4. April 2009]
41
110 function pregmatchall($pattern,$subject,&$matches,$flags=PREG_PATTERN_ORDER,$offset=0 ){
$i = 0;
$matches = array();
while( preg_match($pattern, $subject, $match, PREG_OFFSET_CAPTURE, $offset+1) ) {
foreach( $match as $r => $m ) {
$matches[$r][] = $m;
}
$offset = $match[0][1];
$i++;
}
return $i;
}
Quelltext 31 - Funktion, die Teilstrings im Gesamtstring matcht
Aus dem konstruierten Beispielmotiv mit der Notennamenfolge EGBDCBDECA werden hier
für die Analyse als Motiv nur die ersten vier Notennamen EGBD verwendet, da so mehr Ergebnisse erzielt werden. Die Ergebnissemenge kann sehr unterschiedlich sein, je nachdem, wie lang
das Motiv gewählt ist. Für das Notennamen-Pattern EGBD wird im Beispiel des vierstimmigen
Satzes aus Abbildung 39 mit dem Notennamen-String
EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ das
folgende Ergebnis an die Variable $matches zurückgegeben.
$matches[0][0]=“EGBD“;
$matches[0][1]=0;
$matches[1][0]=“EGBD“;
$matches[1][1]=25;
Quelltext 32 - Beispiel für Rückgabewerte der Funktion pregmatchall()
So wie die Funktion pregmatchall() die Position findet, in der die Notennamen-Patterns im
Gesamtstring auftreten, so kann die Funktion ebenfalls dafür genutzt werden, die Positionen zu
finden, an denen Alterations-Patterns im Gesamtstring der Alterationen auftreten oder die Positionen, an denen Oktav-Patterns im Gesamtstring der Oktavlagen auftreten. Dies gilt ebenso für
die Notenwerte, die chromatische Kontur, die diatonische Kontur und den Parsons-Code.
Sind alle Patterns des Motivarrays Position[] abgearbeitet, werden die Patterns der Motivverarbeitungsarrays an die Funktion pregmatchall() übergeben. Auch hier werden alle Patterns auf
Übereinstimmungen im Gesamtstring des Musikwerkes hin überprüft. Die Rückgabewerte sind
wieder die Patterns selbst sowie die Positionen, an denen diese im Gesamtstring auftreten.
Die folgende Abbildung zeigt gefundene Matchings der ersten vier Noten EGBD des verkürzten
Beispielmotivs im vierstimmigen Beispielmusikwerk. Dabei sind in grüner Farbe die Noteninformationen des Motivs EGBD markiert. Die Werte in der Farbe Pink im Parsons-Code, der
diatonischen Kontur und der chromatischen Kontur sind für die weitere Motivanalyse nicht relevant, da sie hier nur den Startpunkt markieren. Dennoch ist der Algorithmus so aufgebaut, dass
111 auch die in Pink gehaltenen Charactersymbole in die Ergebnismenge aufgenommen werden, um
die richtige Position für die weitere Analyse anzugeben. In gelber Farbe hinterlegt sind alle
Matchings, die mit den Noteninformationen des Motivs EGBD übereinstimmen.
Index
Notenname
Parsons-Code
Diatonische Kontur
Chromatische Kontur
Notenwert
Oktavlage
Alteration
0
10
20
30
40
50
|
|
|
|
|
|
EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ
SUUUDDDUDDUUUDDUDDUDYSEUDDUUUDUUUDYSEUDDUDUUUYSDDUDUUUDDUY
zBBBaaeAbbCAAbaHaaCdYzZAbcBBBaBCAdYzZAbcCcCAAYzacCcBBBaaCY
zDCCbaiBdcEBAcbNbaEgYzZAceDCCbDEBgYzZAdeEeECAYzbeEeCDCbaEY
FFEFEFFFFDFFFDFFFFDFZDFEDFFEFEDEDFZDFEDDDDEDFZCDDDFFEFEDFZ
DDDEEDDDDCDDDDDEEDEDPCCDCCCCDDDDDDPCCCCCCCCCCPCCBCBCCCCCCP
ZAZZZZZZZZZZZZZZZZZZPZZZZZAZZZZZZZPAAZZZZZZAZPZZZZZZZZZZZP
Abbildung 46 - Gefundene Matchings im vierstimmigen Beispielwerk
Es ist zu sehen, dass beispielsweise an Position 25 Übereinstimmungen in den Parametern Notenname, Parsons-Code, diatonische Kontur, chromatische Kontur, Notenwert und Alteration
gefunden wurden. Es ist nun zu analysieren, welcher Motivverarbeitung diese Kombinationen an
Übereinstimmungen entsprechen.
4.12 DIE EINORDNUNG DER ERGEBNISSE
ZU MÖGLICHEN MOTIVVERARBEITUNGSFORMEN
Betrachtet wird der folgende Quelltext. Er zeigt alle Matchings, die an Position 25 im Beispielmusikwerk gefunden wurden.
//für das Matching der Notennamen
$matches[1][0]=“EGBD“;
$matches[1][1]=25;
//für das Matching des Parsons-Codes
$matches[1][0]=“SUUU“;
$matches[1][1]=25;
//für das Matching der diatonischen Kontur
$matches[1][0]=“zBBB“;
$matches[1][1]=25;
//für das Matching der chromatischen Kontur
$matches[1][0]=“zDCC“;
$matches[1][1]=25;
//für das Matching der Notenwerte
$matches[1][0]=“FFEF“;
$matches[1][1]=25;
//für das Matching der Alterationen
112 $matches[1][0]=“ZAZZ“;
$matches[1][1]=25;
Quelltext 33 - Matchings für die Notenposition 25
Mit allen gefundenen Matchings und deren Positionen kann überprüft werden, ob an dieser Position tatsächlich eine motivthematische Verarbeitung der Notennamenfolge EGBD vorliegt. Dies
ist nur gegeben, wenn bestimmte Kombinationen an Parametern ein Matching an derselben Position aufweisen.
Die folgende Tabelle zeigt alle Motivverarbeitungsformen und die Parameter, in denen ein
Matching notwendig ist, um die jeweilige Motivverarbeitungsform zu erkennen. Ist ein Matching
in dem entsprechenden Parameter notwendig, so ist dies in der Tabelle mit „Ja“ verzeichnet. Die
Tabelle ist wie eine Art Schablone zu lesen: Jede Motivverarbeitungsform benötigt in unterschiedlichen Parametern ein Matching. Tritt beispielsweise ein Matching bei einer Notenfolge
innerhalb der Konturen und des Notenwertes auf, stimmen aber die Noteninformationen bei
Oktave, Alteration und Notenname nicht mit dem Pattern überein, so kann es sich nur um eine
reale Sequenz handeln.
Anhand der Tabelle 36 fällt auf, dass lediglich eine Intervallweitung und eine Intervallengung sich
in den benötigten Matchings je Parameter nicht unterscheiden. Wird eine Intervallengung oder
Intervallweitung gefunden, so muss manuell unterschieden werden, welche der beiden Motivverarbeitungsformen vorliegen.
Die Tabelle 36 ist im Algorithmus hinterlegt. Anhand der Zuordnungen in dieser Tabelle ist zu
überprüfen, ob und welche Motivverarbeitungsform vorliegt.
Parameter
Motivverarbeitungsform
Originalsequenz
Tonale Sequenz
Reale Sequenz
Tonale Umkehrung
Reale Umkehrung
Krebs I
Krebs II
Spiegelkrebs
Intervallweitung
Intervallengung
Augmentation
Diminution
*1
*2
*3
*4
*5
Eingabe
Eingabe
Eingabe
Eingabe
Eingabe
ist
ist
ist
ist
ist
im
im
im
im
im
ParsonsCode
Diatonische Kontur
Chromatische
Kontur
Notenwert
Oktavlage
Alteration
Notenname
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja (*1
Ja (*1
Ja (*2
Ja (*2
Ja (*2
Nein
Nein
Ja
Ja
Ja
Nein
Ja
Nein
Ja (*1
Ja (*2
Ja (*2
Nein
Nein
Nein
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Nein
Nein
Nein
Nein
Ja (*3
Ja (*3
Nein
Nein
Nein
Ja
Ja
Ja
Nein
Nein
Nein
Nein
Ja (*3
Ja (*3
Nein
Nein
Nein
Ja
Ja
Ja
Nein
Nein
Nein
Nein
Ja (*3
Ja (*3
Nein
Nein
Nein
Ja
Ja
(*1
(*1
(*2
(*2
(*2
Gegensatz
Gegensatz
Gegensatz
Gegensatz
Gegensatz
zum
zum
zum
zum
zum
Originalmotiv
Originalmotiv
Originalmotiv
Originalmotiv
Originalmotiv
(*3
(*3
(*4
(*5
umgekehrt (+-)
ein Krebs () der umgekehrt (+-) wurde
ein Krebs ()
im Notenwert verdoppelt
im Notenwert halbiert
Tabelle 36 - Motivverarbeitungen und die dazu notwendigen Matchings je Parameter im Überblick
113 Für das Beispielmusikwerk aus Abbildung 39 wurden Matchings für den Notennamen, den Parsons-Code, die diatonische Kontur, die chromatische Kontur, die Notenwerte und die Alteration
an Position 25 gefunden. Werden diese Matchings anhand der Tabelle überprüft, so kann diesen
Matchings die „reale Sequenz“ zugeordnet werden. Dabei ist das Matching für die Notennamen
nicht erforderlich, es tritt aber auf, da die reale Sequenz an dieser Position im Gegensatz zum
Originalmotiv oktaviert ist.
Die in Tabelle 36 abgebildeten Zuordnungen werden im Motivanalysealgorithmus mit einer ifelse-Anweisungsstruktur realisiert. Diese ist in Quelltext 34 dargestellt. Jede if-Anweisung testet,
ob die Position, an der ein Matching gefunden wurde, in den Parametern übereinstimmt. In den
if-Bedingungen werden die Positionen der Matchings miteinander verglichen. Liegen Matchings
in mehreren Parametern vor, so ist an dieser Position die entsprechende Motivverarbeitungsform
nach Tabelle 36 vorhanden.
//Test, ob Motivverarbeitung ein Originalmotiv oder eine Wiederholung ist
if(Position[„Parsons-Code“]==Position[„Notenname“] AND
Position[„Parsons-Code“]==Position[„Alteration“] AND
Position[„Parsons-Code“]==Position[„Oktave“] AND
Position[„Parsons-Code“]==Position[„Notenwert“] AND
Position[„Parsons-Code“]==Position[„chromatische-Kontur“] AND
Position[„Parsons-Code“]==Position[„diatonische-Kontur“]){
//An dieser Position befindet sich ein Originalmotiv / eine Wiederholung
//Test, ob Motivverarbeitung eine tonale Sequenz ist
}elseif(
Position[„Parsons-Code“]==Position[„Notenwert“] AND
Position[„Parsons-Code“]==Position[„diatonische-Kontur“]){
//An dieser Position befindet sich eine tonale Sequenz
//Test, ob Motivverarbeitung eine reale Sequenz ist
}elseif(
Position[„Parsons-Code“]==Position[„Notenwert“] AND
Position[„Parsons-Code“]==Position[„chromatische-Kontur“] AND
Position[„Parsons-Code“]==Position[„diatonische-Kontur“]){
//An dieser Position befindet sich eine reale Sequenz
//Test, ob Motivverarbeitung eine tonale Umkehrung ist
}elseif(
Position_des_Umgekehrung_Pattern[„Parsons-Code“]== Position[„Notenwert“] AND
Position_des_Umgekehrung_Pattern[„Parsons-Code“]== Position_des_Umgekehrung_Pattern[„diatonische-Kontur“]){
//An dieser Position befindet sich eine tonale Umkehrung
//Test, ob Motivverarbeitung eine reale Umkehrung ist
}elseif(
Position_des_Umgekehrung_Pattern[„Parsons-Code“]== Position[„Notenwert“] AND
Position_des_Umgekehrung_Pattern[„Parsons-Code“]== Position_des_Umgekehrung_Pattern[„chromatische-Kontur“] AND
Position_des_Umgekehrung_Pattern[„Parsons-Code“]== Position_des_Umgekehrung_Pattern[„diatonische-Kontur“]){
//An dieser Position befindet sich eine reale Umkehrung
//Test, ob Motivverarbeitung ein Krebs I
}elseif(
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebs_Pattern[„Notenname“] AND
Position_des_Krebs_Pattern[„Alteration“] AND
Position_des_Krebs_Pattern[„Oktave“] AND
Position_des_Krebs_Pattern[„Notenwert“] AND
Position_des_Krebsumkehrung_Pattern[„chromatische-Kontur“] AND
Position_des_Krebsumkehrung_Pattern[„diatonische-Kontur“]){
//An dieser Position befindet sich ein Krebs I
//Test, ob Motivverarbeitung ein Krebs II
}elseif(
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]==
Position_des_Krebs_Pattern[„Notenname“] AND
Position_des_Krebs_Pattern[„Alteration“] AND
Position_des_Krebs_Pattern[„Oktave“] AND
Position[„Notenwert“] AND
114 Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]== Position_des_Krebsumkehrung_Pattern[„chromatische-Kontur“] AND
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]== Position_des_Krebsumkehrung_Pattern[„diatonische-Kontur“]){
//An dieser Position befindet sich ein Krebs I
//Test, ob Motivverarbeitung ein Spiegelkrebs
}elseif(
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]== Position_des_Krebs_Pattern [„Notenwert“] AND
Position_des_Krebsumkehrung_Pattern[„Parsons-Code“]== Position_des_Krebsumkehrung_Pattern[„diatonische-Kontur“]){
//An dieser Position befindet sich ein Spiegelkrebs
//Test, ob Motivverarbeitung eine Intervallweitung ist
}elseif(
Position[„Parsons-Code“]==Position[„Notenwert“]){
//An dieser Position befindet sich wahrscheinlich eine Intervallweitung oder eine Intervallengung
//Test, ob Motivverarbeitung ein Originalmotiv oder eine Wiederholung ist
}elseif(
Position[„Parsons-Code“]==Position[„Notenname“] AND
Position[„Parsons-Code“]==Position[„Alteration“] AND
Position[„Parsons-Code“]==Position[„Oktave“] AND
Position[„Parsons-Code“]==Position_Augmentation_Pattern[„Notenwert“] AND
Position[„Parsons-Code“]==Position[„chromatische-Kontur“] AND
Position[„Parsons-Code“]==Position[„diatonische-Kontur“]){
//An dieser Position befindet sich eine Augmentation
//Test, ob Motivverarbeitung ein Originalmotiv oder eine Wiederholung ist
}elseif(Position[„Parsons-Code“]==Position[„Notenname“] AND
Position[„Parsons-Code“]==Position[„Alteration“] AND
Position[„Parsons-Code“]==Position[„Oktave“] AND
Position[„Parsons-Code“]==Position_Diminution_Pattern[„Notenwert“] AND
Position[„Parsons-Code“]==Position[„chromatische-Kontur“] AND
Position[„Parsons-Code“]==Position[„diatonische-Kontur“]){
//An dieser Position befindet sich eine Diminution
}
Quelltext 34 - if-else-Anweisungen zum Finden der jeweiligen Motivverarbeitung
Mit den gefundenen Positionen, die ein Matching enthalten, wird jede Bedingung der if-elseAnweisung solange durchlaufen, bis alle Positionen analysiert wurden. Alle Matchings, die eine
Motivverarbeitung ergeben, werden auf die folgende Weise ausgegeben:




Angabe der Motivverarbeitungsform
Angabe der Notennamen der Motivverarbeitung
Angabe der Taktnummer
Angabe des Systems
115 5 FAZIT UND AUSBLICK
Es sollte ein Algorithmus erstellt werden, der die prinzipielle Funktionsweise der automatisierten
Motivsuche verdeutlicht. Die erste Version des Motivsuche und Analyseprogramms zeigt, dass
die Idee durchaus funktionstüchtig ist. Für den Prototyp mussten einige Bedingungen an das zu
analysierende MusicXML-Musikwerk gestellt werden, da musikalische Sonder- und Problemfälle
vom Algorithmus nur bedingt berücksichtigt wurden. Testläufe haben aber gezeigt, dass der Algorithmus strukturell einfache Musikwerke korrekt analysiert und entsprechende Motivverarbeitungen findet.
Zum Abschluss soll der gesamte Algorithmus im Überblick in Abbildung 47 gezeigt werden.
MusicXML
Einlesen
multidimensionales Werkarray
Transformation
Finden von Notennamenwiederholung(en)
Krebsarray
Motivarray
temporäres
Werkarray
Das ausgesuchte Motiv hat die Tonfolge: GBDC.
Die Alterationen für diese Notenfolge ist: 1 0 0 0.
Der Rhythmus dieser Notenfolge ist 1/8 1/4 1/8 1/4 .
Die Oktaven der Noten sind: 4 4 5 5.
Dieses Motiv wurde gefunden in:
-Takt Nr. 1; System: P1
Eine reale Sequenz G B D C mit dem Rhythmus und
der chromatischen Bewegung 4 3 3 -2 ist in folgenden
Takten vorhanden:
-Takt Nr. 1; System: P1
Jede Noteninformation
wird nun durch ein einzelnes Charactersymbol
repräsentiert
Arrays für
Position[]
Position_des_Krebs_Pattern[]
Position_des_Umgekehrung_Pattern[]
Position_des_Krebsumkehrung_Pattern[]
Position_Augmentation_Pattern[]
Position_Diminution_Pattern[]
Eine reale Sequenz G B D C mit dem Rhythmus und
der chromatischen Bewegung 4 3 3 -2 ist in folgenden
Takten vorhanden:
-Takt Nr. 2; System: P2
Eine tonale Sequenz C E G F mit dem Rhythmus und
der diatonischen Bewegung 2 2 2 -1 ist in folgenden
Takten vorhanden:
-Takt Nr. 3; System: P4
EGBDCBDECADEFDCDCBEAZBBCAEGBDCEABEZGGAFCFCFGAZEDADACEGFEAZ
SUUUDDDUDDUUUDDUDDUDYSEUDDUUUDUUUDYSEUDDUDUUUYSDDUDUUUDDUY
zBBBaaeAbbCAAbaHaaCdYzZAbcBBBaBCAdYzZAbcCcCAAYzacCcBBBaaCY
zDCCbaiBdcEBAcbNbaEgYzZAceDCCbDEBgYzZAdeEeECAYzbeEeCDCbaEY
FFEFEFFFFDFFFDFFFFDFZDFEDFFEFEDEDFZDFEDDDDEDFZCDDDFFEFEDFZ
Abbildung 47 - Der Motivsuche- / Motivanalysealgorithmus im Überblick
Nachdem das MusicXML-Dokument eingelesen wurde, wird ein multidimensionales Werkarray
aus allen benötigten Noteninformationen erstellt. Anhand der Benutzerauswahl wird eine Notennamenfolge gewählt oder gesucht. Dieses ist der Ausgangspunkt der Analyse. Es werden vom
Musikwerk und vom Motiv temporäre Arrays erstellt. Diese Arrays werden so umgewandelt, dass
116 jede darin enthaltene Noteninformation durch ein einzelnes Charactersymbol repräsentiert wird.
Alle Noteninformationen eines Patterns werden im Musikwerk gesucht. Die Ausgabe enthält die
Motivverarbeitungen und deren Position im Musikwerk. Anhand der Kombinationen der
Matchings in den Parametern werden die entsprechenden Motivverarbeitungsformen ausgegeben.
Zunächst folgen einige Punkte, für welche Zwecke die Software im jetzigen Stadium genutzt
werden kann.
1. Für Komponisten ist das Motivanalyseprogramm interessant, wenn sie Rückschlüsse über ihre
eigene Komposition oder auch Kompositionen ihrer musikalischen Vorbilder ziehen möchten. Mitunter werden motivthematische Arbeiten innerhalb des Musikwerkes von ihm angewandt, die durch das bloße Hinsehen nicht gleich erfasst, jedoch durch den Algorithmus gefunden werden.
2. Für Musikwissenschaftler und Musiktheoretiker, Musikpädagogen und -schüler kann das
Motivanalysprogramm eine große Hilfe sein, wenn es gilt, Musikwerke melodisch, rhythmisch
und auch motivthematisch zu analysieren.
Bevor die am Anfang dieser Diplomarbeit erwähnte Idee der „Musikempfehlung“ funktionstüchtig wird, sind noch einige Erweiterungen des Programms nötig. Auch ist es wünschenswert, dass
der MusicXML-Standard zusätzlich zur derzeitigen DTD um ein XML-Schema ergänzt wird.
„XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML-Dokumente. Anders
als bei den klassischen XML-DTDs wird die Struktur in Form eines XML-Dokuments beschrieben. Darüber
hinaus wird eine große Anzahl von Datentypen unterstützt.“ 42 Durch das XML-Schema können Musikwerke schlechter manipuliert werden, da es genauere Untersuchungen durchführt, ob ein MusicXML-Dokument valide ist. Weiterhin würde durch die Ergänzung um ein XML-Schema die
Struktur eines MusicXML-Dokuments unabhängig von der Erstellungssoftware dahingehend
vereinheitlicht werden, dass Notationsprogramme keinen eigenen XML-Code in MusicXMLDokumente einbauen und somit die Analyse erschweren.
Zusätzlich ist es empfehlenswert, die Software einem größeren Publikum zugänglich zu machen.
So laden die Benutzer dieser Software unterschiedliche MusicXML-Musikwerke zur Analyse
hoch, die mitunter weitere Motivverarbeitungsformen enthalten. Auch diese Motivverarbeitungsformen können dann mathematisiert und in die Software als Update implementiert werden. Zudem können die Softwaretester auf Probleme der Software während der Benutzung hinweisen
und aktiv an der Verbesserung der Software teilnehmen.
42 Wikipedia
- Die freie Enzyklopädie: "XML Schema". URL: http://de.wikipedia.org/wiki/XML_Schema [Stand:
10. Mai 2009]
117 Wo kann der Motivsuche- und Motivanalysealgorithmus in Zukunft stehen?
Werden Motive und deren Motivverarbeitungen sämtlicher bereits analysierter Musikwerke innerhalb einer Datenbank katalogisiert, bildet dies eine ideale Wissensbasis, um musikalische Gemeinsamkeiten zwischen Musikwerken zu finden. Eine erste Tabelle der Datenbank, die alle Musikwerke und deren Motive und Motivverarbeitungen enthält, kann zum einen die Kopfdaten
eines Musikwerkes enthalten wie etwa Komponist, Entstehungsjahr, Arrangeur, Interpret und
Stil. Zum anderen enthält sie sämtliche Motive und Motivverarbeitungen in Form der Noteninformationen. Weiterhin gibt es eine zweite Tabelle, die Verbindungen zwischen unterschiedlichen
Musikwerken anhand von Gemeinsamkeiten zwischen Motiven bzw. Motivverarbeitungen herstellt. Die folgende Abbildung 48 zeigt hierzu ein Beispiel. Die erste Tabelle enthält das mit der
Musikwerk-ID 1 versehene erste Musikwerk, welches vier Motive (Motiv-ID) oder auch Motivverarbeitungen besitzt. Hierbei ist Motiv und Motivverarbeitung als Begriff zusammengefasst, da
jede Motivverarbeitung auch wieder ein neues Motiv ergibt. Das Musikwerk mit der MusikwerkID 2 enthält ebenfalls 4 Motive. Die Tabelle 2 schafft nun Verbindungen zwischen unterschiedlichen Musikwerken, die gleiche oder ähnliche Motive besitzen. So sind beispielsweise zwischen
Musikwerk-ID 1 und 2 zwei Gemeinsamkeiten zu sehen. Das Musikwerk mit der ID 1 besitzt das
Motiv mit der Motiv-ID 1, welches gleich oder ähnlich zum Motiv mit der Motiv-ID 2 des Musikwerks mit der Musikwerk-ID 2 ist.
Tabelle 1
Tabelle 2
Musikwerk-ID
Motiv-ID
Notenname
...
1
1
1
1
2
2
2
2
3
...
1
2
3
4
1
2
3
4
1
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Chromatische
Kontur
...
...
...
...
...
...
...
...
...
...
...
MusikwerkID 1
1
1
1
1
...
MusikwerkID 2
2
2
80474
474
...
Motiv-ID
1
1
2
1
5
...
Motiv-ID
2
2
4
6
1
...
Abbildung 48 - Gemeinsamkeiten zwischen Motivverarbeitungen in unterschiedlichen Musikwerken
Zur Darstellung von Ähnlichkeiten werden die zu vergleichenden Musikwerke als „Knoten“ bezeichnet. Stimmen zwei Motive aus den beiden Musikwerken in einem Parameter überein, so sind
beide Musikwerke mit einer Kante verbunden. Je mehr Parameter gleichzeitig in zwei Musikwerken identische Noteninformationen aufweisen, desto mehr Kanten haben die beiden Musikwerke
gemeinsam. Mit jeder neuen Kante nimmt die Ähnlichkeit zwischen den Musikwerken für das
betrachtete Motiv zu. Stimmen in den Werken alle Parameter für ein Motiv überein, so ist das
betrachtete Motiv identisch. Jede Kante erhält eine eindeutige Benennung. Die Benennung der
Kante muss folgende Daten beinhalten:
118 - die Bezeichnung des übereinstimmenden Parameters,
- die Motiv-IDs aus allen betrachteten Musikwerken sowie
- die Angabe der Notenposition, an der die Übereinstimmung im jeweiligen Musikwerk zu finden
ist.
Die folgende Abbildung zeigt vereinfacht die beschriebene Idee.
ID 4471 Parsons Code Notenname Diaton. Kontur Alteration Chromat. Kontur Oktave ID 1281 Notenwert
Parsons Code
Notenname
Diaton. Kontur
Alteration
Chromat. Kontur
Oktave ID4471_Motiv2_Notenposition141-Notenwert-ID1281_Motiv15_ Notenposition 74
Notenwert ID 953 Parsons Code Notenname
Diaton. Kontur Alteration
Chromat. Kontur Oktave
Notenwert Abbildung 49 - Kanten zwischen Musikwerken markieren Ähnlichkeiten der Motive
Durch das Schaffen von Kanten entsteht ein Netzwerk zwischen allen analysierten Musikwerken.
Dieses Netzwerk kann beispielsweise zur Plagiatsuche verwendet werden. Da die Motivanalysesoftware frei von subjektiven Urteilen auf rein mathematischer Basis Beziehungen zwischen Musikwerken erkennt, kann der Algorithmus gerade im Urheberstreit eine große Hilfe sein.
Ein solches Netzwerk kann aber auch an einen Onlineshop angebunden werden, welcher keine
subjektiven Kaufempfehlungen wie beispielsweise Pandora anbietet, sondern objektive Kaufempfehlungen anhand von Motivgemeinsamkeiten und -ähnlichkeiten gibt. Abbildung 50 zeigt ein
solches Netzwerk, wie es dem Shop zu Grunde liegen könnte. Je mehr Parameter gleichzeitig
übereinstimmen, als desto dicker wird die Kante dargestellt.
119 Abbildung 50 - Je ähnlicher die Musikwerke sind, desto dicker ist deren Kante
Die folgende Abbildung zeigt eine Möglichkeit, wie der Motivanalysealgorithmus an eine Shoppingseite angebunden sein kann. Dabei wird die Ähnlichkeit der Musikwerke zueinander verdeutlicht anhand von Prozentangaben, welche sich aus der Stärke der Kanten errechnen lassen.
120 Abbildung 51 - Shopanbindung an den Motivanalysealgorithmus
In Verbindung mit einer Datenbankstruktur, in der Musikwerke anhand ihrer Ähnlichkeiten zueinander als Netzwerk abgespeichert werden, kann der Motivanalysealgorithmus einen entscheidenden Beitrag dazu leisten, CD-Verkäufe anhand von Kaufempfehlungen auf rein objektiver
Basis zu steigern.
121 ANHANG
1 NOTEN DER MUSIKBEISPIELE
1.1
122 123 1.2
124 1.3
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 2 QUELLENVERZEICHNIS
2.1 LITERATUR
Amon, R. (2005): Motiv – Motivisch-thematische Arbeit, in: Lexikon der Harmonielehre. WienMünchen: Doblinger Metzler Verlag,
Dürr, W. (2005): Scarlatti, Pietro Alessandro Gaspare, in: Musiklexikon.
Stuttgart, Weimar: Verlag J.B. Metzler.
Eckstein R., Eckstein S. (2004): XML Path Language (XPath), in: XML und Datenmodellierung.
Heidelberg: dpunkt Verlag GmbH.
Erpf, H. (1967): Formenlehre heute – Form und Zeitablauf, in: Form und Struktur in der Musik.
Mainz: B. Schott’s Söhne.
Ferber, R. (2003): Explizit strukturierte Elemente - XML, in: Information Retrieval.
Heidelberg: dpunkt Verlag.
Flückiger, B. (2007): Leitmotive, in: Sound Design – Die virtuelle Klangwelt des Films.
Marburg: Schüren Verlag.
Holst, I. (1992): Die Anfänge der Kontrapunktik, in: Das ABC der Musik.
Stuttgart: Phillip Reclam jun. GmbH.
Lemacher, H., Schroeder, H. (1977): Der zweistimmige Satz, in: Lehrbuch des Kontrapunktes.
Mainz: Schott Musik International.
Michels, U. (2005): Musiklehre/Form II, in: dtv-Atlas Musik,
Band 1, Systematischer Teil Musikgeschichte von den Anfängen bis zur Renaissance.
München: Deutscher Taschenbuch Verlag GmbH & Co. KG.
De la Motte-Haber, H., Rötter, G. (2005): Prinzipien der Rhythmuswahrnehmung,
in: Musikpsychologie.
Laaber: Laaber Verlag.
Parsons, D. (2002): The Directory of Tunes and Musical Themes.
Lübeck: Bohmeier Verlag.
Spehr, G. (2007): Audio-Branding – alles neu?, in: Audio-Branding.
München: Verlag Reinhard Fischer.
142 Wiehmayer, T. (1927): Grundfragen der metrischen Analyse, in:
Musikalische Formenlehre in Analysen.
Magdeburg: Heinrichshofen’s Verlag.
Ziegenrücker, W. (1997): Das Motiv, in: ABC Musik – Allgemeine Musiklehre.
Leipzig: Deutscher Verlag für Musik, Wiesbaden: Breitkopf & Härtel.
2.2 INTERNETQUELLEN
Pandora Radio - Listen to Free Internet Radio, Find New Music: „The Music Genome Project“.
URL: http://www.pandora.com/mgp.shtml [Stand: 8. März 2009]
Sibelius: „Was ist neu“.
URL: http://www.sibelius.com/products/sibelius/ [Stand: 1. Februar 2009]
Klemm Music & Makemusic: „Notensatz und Notenschreibprogramme Finale“.
URL: http://www.klemm-music.de/coda/ [Stand: 1. Februar 2009]
MIDI Manufacturers Association: „General MIDI Level 1 Sound Set“.
URL: http://www.midi.org/techspecs/gm1sound.php [Stand: 1. April 2009]
MIDI Manufacturers Association Incorporated: „Tech Specs & Info“.
URL: http://www.midi.org/techspecs/ [Stand: 1. Februar 2009]
PHP Hypertext Preprocessor: „PHP: preg_match_all - Manual“.
URL: http://de.php.net/manual/de/function.preg-match-all.php [Stand: 4. April 2009]
PHP Hypertext Preprocessor: „PHP: SimpleXMLElement->xpath - Manual“.
URL: http://de2.php.net/manual/de/function.simplexml-element-xpath.php [Stand: 11. Februar 2009]
Recordare: Internet Music Publishing and Software: „MusicXML 1.0 Alphabetical Index“.
URL: http://www.recordare.com/dtds/1.0/musicxml-index.html [Stand: 2. Februar 2009]
Recordare: Internet Music Publishing and Software: „MusicXML 1.0 Note DTD Module“.
URL: http://www.recordare.com/dtds/1.0/note.html [Stand: 1. Februar 2009]
Wikipedia - Die freie Enzyklopädie: „XML Schema“.
URL: http://de.wikipedia.org/wiki/XML_Schema [Stand: 10. Mai 2009]
143 2.3 ABBILDUNGEN
Arnold, D. (2006): Solange, in: Casino Royale. Milwaukee: Hal Leonard. United Lion Music, Inc. and
Colpix Music Inc., Sony Music Publishing LLC.
Scarlatti, A. (1986): Exsultate Deo, in: Unser Kirchenchor Buch. Wien, München: Verlag L. Doblinger.
Sting (1994): When we dance, in: The best of Sting - Fields of gold. Milwaukee: Hal Leonard. Magnetic Publishing Ltd., EMI Blackwood Music Inc.
Alle weiteren Abbildungen, Formeln, Quelltexte und Tabellen sind selbsterstellt.
144 
Herunterladen