3.1 Übersicht über den Programmaufbau 67 bieten sich zur Realisierung der Container doppelt verkettete Listen an.3 Während die drei äußeren Container nur einen Objekttyp aufnehmen können – eine Seite beinhaltet beispielsweise nur Akkoladen – besteht die Liste jedes Notensystems aus verschiedenartigen Symbolen, wie Noten Pausen, Taktstrichen und so weiter. Fordert ein Notensystem nun etwa eines seiner Symbole zum Zeichen auf, so muß abhängig vom tatsächlich vorliegenden Typus (z.B. Notenschlüssel oder Pause) ei-ne jeweils andere Zeichenfunktion aufgerufen werden. Diese Funktionalität wird ebenfalls durch die schon erwähnte Objektorientierung bereitgestellt. Bildlich ge-sprochen kennt jedes Symbol seine Eigenschaften und weiß, welche Ausmaße es besitzt und wie es sich zeichnen muß. Mittels später Bindung paßt sich nun die ab-strakte, polymorphe Klasse Symbol dem konkret vorliegenden Symbol an und führt die spezielle Zeichenprozedur aus. Aus diesem Grund muß dem Notensystem der genaue Typ eines Symbols nicht bekannt sein. Aus dessen Sicht besteht sein Con-tainer lediglich aus Objekten mit einheitlichen Schnittstellen, was ihre Behandlung deutlich erleichtert. 3.1.2 Vertikale Symbolgruppierung via Zeitstempel Wie bereits dargestellt, erzeugt der Parser aus den erkannten Bestandteilen des Eingabecodes die zugehörigen Notationsobjekte und baut die modulinterne Noten-bildrepräsentation auf. Das bedeutet, daß er die erkannten Symbole in den aktuellen Notensystem-Container vom Typ Staff und mehrere dieser Notensysteme wieder-um in einen vom Seiten-Container umschlossenen Akkoladen-Container verpackt. Nun ist es aber keineswegs gleichgültig, in welcher Reihenfolge die verschiedenen Objekte innerhalb eines Containers angeordnet sind, denn die Noten sollen schließ-lich graphisch in der korrekten Sequenz dargestellt werden. Um dies zu gewährlei-sten, enthält jedes erkannte Symbol einen Zeitstempel, aus dem seine musikalische Einsatzzeit hervorgeht. Neben Akkorden und Pausen, die zweifellos eine konkrete Einsatzzeit besitzen, gilt dies aber insbesondere auch für jedes der anderen Sym-bole. Doch welche Einsatzzeit besitzt etwa ein Notenschlüssel oder ein Taktstrich? Die prinzipielle Berechnung der Einsatzzeiten eines beliebigen Symbols beruht auf einer Addition der Dauern sämtlicher Vorgängersymbole. Die Dauer von Akkorden und Pausen läßt sich bei regulär geteilten Notenwerten leicht berechnen: bezeich-net 4 bei einer (beliebig punktierten) Viertelnote, und b den Basisnotenwert, z.B. 1 n die Anzahl der Wertpunkte, so ergibt sich der Gesamtwert w, aus der Formel 2 − . (3.1) n 1 2n 1 2k = b w = b · k=0 Etwas schwieriger gestaltet sich die Berechnung, wenn irreguläre Teilungen ins Spiel kommen. Solche m-olen treten definitionsgemäß nicht als Einzelwerte son-dern in Gruppen auf, so daß ihre Wertigkeit in üblicherweise unter Einbeziehung der Teilungsgröße m beschrieben wird. In den seltensten Fällen spricht ein Musiker deshalb von einer Zwölftelnote, sondern vielmehr von einer Achteltriolennote. Die Bezeichnung »Achteltriole« beschreibt nun zwar die Notation; mit den tatsächlich 3 Vgl. dazu auch Haken und Blostein (1993).