2.2 Die Codierung der Noten 51 che, die sogenannten Terminalsymbole oder Token, werden dabei normalerweise in einer linear fortlaufenden Folge hintereinander angeordnet. Zwar können an be-liebigen Stellen Leerzeichen, Tabulatoren und Zeilenumbrüche eingefügt werden, sie dienen jedoch allein der besseren Lesbarkeit und werden vom Parser des Pro-gramms, der für die Auswertung des Skripts zuständig ist, ignoriert.14 Für den Computer besteht die Eingabe somit lediglich aus einer einzigen langen Zeile, so daß sich die syntaktischen Bestandteile des Codes lediglich in einer Dimension aus-breiten können. In dieser Eindimensionalität besteht nun ein Problem, denn jedes Notenbild nutzt im Gegensatz zu reinem Text als grundlegende Idee zwei Dimen-sionen: Die Horizontale primär zur Beschreibung zeitlicher Zusammenhänge und die Vertikale zur Notation von Tonhöhen. Zusätzliche Dynamik- oder Textangaben können sogar nahezu frei auf der Ebene verteilt werden. Wie läßt sich aber eine zweidimensionale Graphik in einer Dimension beschreiben? Der übliche Lösungs-weg besteht in der Verwendung strukturierender Metazeichen, welche kein direktes graphisches Äquivalent besitzen, sondern Teile der logischen Notenbildstruktur be-schreiben und somit indirekt eine bestimmte graphische Dimension kennzeichnen. Beispielsweise könnte ein Code die Zeichenfolge f a c enthalten und drei hinter-einander anzuordnende Noten beschreiben. Zusätzliche Einklammerungen, wie et-wa <f a c>, könnten nun diese Bedeutung zugunsten eines Akkordes umdeuten: & oe oe oe & oeoeoe f a c <f a c> Entsprechend lassen sich alle anderen logische Strukturen, wie Notensysteme oder verschiedene Stimmen innerhalb der Systeme codieren. Aufgrund des beschränk-ten Zeichenvorrats kommen dabei meist Schlüsselwörter zum Einsatz, die zwar aus mehreren Zeichen bestehen, aber natürlich jeweils nur ein einzelnes Terminalsymbol darstellen. Um einen ersten Eindruck von einer möglichen Codierung zu erhalten, soll an dieser Stelle, stellvertretend für eine Reihe ähnlich aber etwas komplexer aufgebauter Codes, wie Cadenza15, Guido16 und auch Mudela17 – der Eingabespra-che des Notensatzprogramms LilyPond –, ein kurzer Blick auf die folgende, rein theoretische Variante des Plaine and Easy Code, der im weiteren Verlauf dieses Kapitels noch genauer betrachtet wird, geworfen werden: system (brace(1, 2)) { staff (treble, f# minor, 4/4) { voice {’8[f# g#] | 4 a g# f# 8[f# g#] | a g# f#} voice {’4 c# | f# e# f# f# | f# e# c#} } 14 Eingabesprachen dieser Art werden als formatfreie Sprachen bezeichnet. Zu dieser Kategorie gehören auch die meisten Programmiersprachen, wie beispielsweise C, Pascal oder Perl. 15 Vgl. Field-Richards (1993). 16 Vgl. Hoos et al. (1998). 17 Vgl. Nienhuys et al. (1999).