Welche ABC-Notation wertet der Parser derzeit aus?
Der Parser ist auf die musikalische Analyse von ABC-Dateien ausgerichtet. Er liest die nachfolgend beschriebenen Bestandteile. Er ist kein vollständiger Ersatz für ein Notensatzprogramm und beansprucht keine lückenlose Unterstützung sämtlicher ABC-Dialekte oder programmspezifischer Erweiterungen.
Stückauswahl und Kopfdaten
Aus einer ABC-Eingabe mit mehreren durch X: getrennten Stücken wird das erste Stück verarbeitet. Der Parser liest insbesondere Titel, Taktart, Standardnotenlänge und Tonart aus T:, M:, L: und K:. Fehlen Taktart, Standardnotenlänge oder Tonart, verwendet er intern die Vorgaben 4/4, 1/8 und C.
Noten, Pausen und Tonhöhen
Erkannt werden ABC-Notennamen, Groß- und Kleinschreibung für die Oktavlage, Oktavzeichen mit Komma und Apostroph, normale Pausen sowie Mehrtaktpausen mit Z und X sowie vorangestellte Vorzeichen. Tonartvorzeichen werden aus dem aktuellen Tonartkontext abgeleitet. Lokale Vorzeichen gelten innerhalb der jeweiligen Stimme bis zur Taktgrenze. Bei einem Tonartwechsel wird der lokale Vorzeichenzustand der betroffenen Stimme zurückgesetzt.
Notenlängen und Rhythmus
Der Parser berechnet Noten- und Pausendauern relativ zu L:. Unterstützt werden ganzzahlige Verlängerungen, rationale Brüche, verkürzte Schreibweisen mit Schrägstrichen sowie mehrfach punktierte Werte in ihrer exakten rationalen ABC-Darstellung. Gebrochene Rhythmen mit > und < sowie deren mehrfache Formen werden auf die benachbarten musikalischen Ereignisse angewendet. Tuplets werden in den Formen (p), (p:q) und (p:q:r) ausgewertet.
Inline-Wechsel der Standardnotenlänge mit [L:...] werden ab ihrer Position berücksichtigt. Für musikalische Ereignisse bleiben Originaltoken, geschriebene Dauer und Quellenposition erhalten; rhythmische Modifikatoren wie Tuplets und Broken Rhythm verändern getrennt davon die effektive Dauer. Die Quellenposition wird über Offset sowie Zeile und Spalte geführt.
Takte, Auftakte und Taktartwechsel
Taktstriche und mehrere gebräuchliche Wiederholungs-Taktstriche werden als eigene Strukturereignisse erkannt. Der Parser summiert die Dauer je Takt und meldet Unter- oder Überfüllungen. Auftakte werden erkannt; ein verkürzter erster Takt kann mit einem passenden verkürzten Schlusstakt als komplementär bewertet werden.
Inline-Taktartwechsel mit [M:...] gelten ab ihrer Quellposition. Die Taktprüfung berücksichtigt dadurch wechselnde Soll-Längen. M:none wird als Takt ohne feste metrische Soll-Länge behandelt. Getrennte Taktfragmente können unter sicheren Bedingungen als Ketten aus zwei bis maximal 16 Fragmenten zu logischen Takten verbunden werden.
Tonarten und Tonartwechsel
Der Parser normalisiert gebräuchliche ABC-Tonartangaben und leitet daraus Grundton, Modus und Vorzeichnung ab. Inline-Tonartwechsel mit [K:...] werden positionsgenau als Ereignisse gespeichert. In mehrstimmigen Dateien wird der Tonartzustand je Stimme geführt, damit ein Wechsel in einer Stimme nicht unbemerkt auf andere Stimmen übertragen wird.
Mehrstimmigkeit
Stimmenangaben mit V: und Inline-Stimmenwechsel mit [V:...] werden erkannt. Musikalische Ereignisse erhalten eine Stimmenzuordnung und können stimmengetrennt ausgewertet werden. Eine Melodiestimme kann über I: melody-voice ..., %%melody-voice ... oder melody=true an einer V:-Definition ausdrücklich bestimmt werden. Gibt es mehrere gleichberechtigte Stimmen und keine eindeutig bestimmbare Melodiestimme, kennzeichnet das Modell die Melodiewahl als mehrdeutig, statt willkürlich eine Stimme als Hauptmelodie festzulegen.
Akkorde und Akkordsymbole
Gleichzeitig klingende Noten in eckigen Klammern werden als Notenakkorde mit gemeinsamer Dauer verarbeitet. Der Parser untersucht Akkordtöne, Tonklassen, Basston, mögliche Oktavverdopplungen und eine für die Melodieanalyse geeignete Akkordstimme. Reine Oktavverdopplungen und echte Mehrtonakkorde werden dabei unterschieden. In Anführungszeichen notierte Akkordbezeichnungen werden als Akkordsymbole erfasst, jedoch nicht als zusätzliche klingende Noten behandelt.
Haltebögen und Bindebögen
Haltebogenzeichen werden als Verbindung zwischen passenden Tonereignissen modelliert. Für gebundene Töne kann eine zusammenhängende Klangdauer gebildet werden. Nicht auflösbare oder unpassende Haltebögen werden diagnostiziert. Runde Bindebögen werden erkannt, verändern aber nicht automatisch die metrische Dauer der enthaltenen Noten.
Wiederholungen und alternative Endungen
Der Parser erkennt einfache Wiederholungsanfänge und -enden, doppelte Wiederholungszeichen, implizite Wiederholungsanfänge sowie mehrere aufeinanderfolgende Wiederholungsabschnitte. Erste und weitere alternative Endungen werden als Endungsbereiche modelliert. Daraus entstehen Wiederholungsblöcke und ein Ablaufgraph.
Die notierte Struktur bleibt erhalten. Allgemeine Ending-Gruppen und -Bereiche werden semantisch ausgewertet. Echte verschachtelte Wiederholungen werden eindeutig erkannt und mit dem Diagnosecode nested_repeat_blocked sicher blockiert; der Parser erzeugt dafür keinen möglicherweise falschen Wiedergabepfad.
Sprung- und Ablaufmarkierungen
In Decorations notierte Ablaufangaben werden klassifiziert. Dazu gehören im implementierten Modell unter anderem Da Capo, Dal Segno, Segno, Coda, To Coda und Fine sowie Kombinationen wie Da Capo al Fine oder Dal Segno al Coda. Die Markierungen werden mit ihrer Position und Stimme gespeichert und als Knoten beziehungsweise Kanten in einem Ablaufgraphen verbunden.
Decorations, Dynamik und Spielanweisungen
Mit !…! oder +…+ geschriebene Decorations werden entweder als Ablaufmarkierung oder als Aufführungsannotation erfasst. Bekannte Angaben werden nach Typ, Kategorie und Gültigkeitsbereich klassifiziert. Ereignisbezogene Angaben werden dem nächsten musikalischen Ereignis derselben Stimme zugeordnet. Abschnittsbezogene Angaben, insbesondere Dynamik- und Tempoangaben, bleiben aktiv, bis sie durch eine neue Angabe desselben Kanals ersetzt werden.
Benutzerdefinierte Symbole
Definitionen über U: werden gelesen. Bei mehrfacher Definition desselben Symbols gilt die letzte Definition. Verwendungen der definierten Symbole werden protokolliert und soweit möglich der zugehörigen Decoration beziehungsweise Bedeutung zugeordnet. Damit ist nicht automatisch jede Makro- oder Erweiterungssyntax anderer ABC-Programme unterstützt.
Bewusst nicht in die musikalische Analyse einbezogen
Kommentare und Liedtextzeilen werden aus dem musikalisch ausgewerteten Bereich ausgeblendet. Liedtexte mit w: werden daher nicht Silben oder Noten zugeordnet. Grace-Note-Gruppen in geschweiften Klammern werden vollständig aus dem analysierten musikalischen Kern entfernt: Sie erzeugen keine Note, keine Tonhöhe, keine Dauer und keine Statistik. Fehlerhafte oder nicht geschlossene Grace-Note-Gruppen werden jedoch als Diagnose gemeldet.
Seitenlayout, Schriftgestaltung, Drucksteuerung und die vollständige Wirkung programmspezifischer %%-Direktiven sind nicht Gegenstand der musikalischen Parseranalyse.
Fehlerbehandlung und Diagnose
Nicht verstandene oder ungültige Bestandteile werden nach Möglichkeit mit Quellposition, Token und Grund protokolliert. Der Parser erstellt daraus Fehler, Warnungen, Hinweise zur Parserqualität und einen Gesamtstatus. Eine begrenzte Syntax-Recovery kann bestimmte fehlerhafte ABC-Eingaben für die Analyse bereinigen; die vorgenommenen Änderungen werden dokumentiert. Unbekannte Syntax wird nicht stillschweigend als vollständig verstanden ausgegeben.
Wichtige Grenze
Die Unterstützung richtet sich nach dem im Plugin implementierten Analysemodell und den vorhandenen Regressionstests. Eine ABC-Datei kann gültige Funktionen des allgemeinen ABC-Standards oder Erweiterungen einzelner Programme enthalten, die dieser Parser nicht oder nur teilweise auswertet. Die Notenvorschau wird zusätzlich durch die eingebundene Darstellungsbibliothek erzeugt; deren Anzeigeumfang ist nicht identisch mit dem Analyseumfang des Parsers.