### 3.3.1 Vysvětlení prostředí

Wenn Noten gesetzt werden, müssen viele Elemente zu der Notenausgabe hinzugefügt werden, die im Quellcode gar nicht explizit vorkommen. Vergleichen Sie etwa den Quellcode und die Notenausgabe des folgenden Beispiels:

>     \relative { cis''4 cis2. | a4 a2. | }

Der Quellcode ist sehr kurz und knapp, während in der Notenausgabe Taktlinien, Vorzeichen, ein Schlüssel und eine Taktart hinzugefügt wurden. Während LilyPond den Eingabetext interpretiert, wird die musikalische Information von rechts nach links gelesen, in etwa, wie man eine Partitur von links nach rechts liest. Während das Programm den Code liest, merkt es sich, wo sich Taktgrenzen befinden und für welche Tonhöhen Versetzungszeichen gesetzt werden müssen. Diese Information muss auf mehreren Ebenen gehandhabt werden, denn Versetzungszeichen etwa beziehen sich nur auf ein System, Taktlinien dagegen üblicherweise auf die gesamte Partitur.

Innerhalb von LilyPond sind diese Regeln und Informationshappen in Kontexten (engl. contexts) gruppiert. Der `Voice` (Stimmen)-Kontext wurde schon vorgestellt. Daneben gibt es noch die `Staff` (Notensystem-) und `Score` (Partitur)-Kontexte. Kontexte sind hierarchisch geschichtet um die hierarchische Struktur einer Partitur zu spiegeln. Ein `Staff`-Kontext kann zum Beispiel viele `Voice`-Kontexte beinhalten, und ein `Score`-Kontext kann viele `Staff`-Kontexte beinhalten.

Jeder Kontext hat die Aufgabe, bestimmte Notationsregeln zu erzwingen, bestimmte Notationsobjekte zu erstellen und verbundene Elemente zu ordnen. Der `Voice`-Kontext zum Beispiel kann eine Vorzeichenregel einführen und der `Staff`-Kontext hält diese Regel dann aufrecht, um einzuordnen, ob ein Versetzungszeichen gesetzt werden muss oder nicht.

Ein anderes Beispiel: die Synchronisation der Taktlinien ist standardmäßig im `Score`-Kontext verankert. Manchmal sollen die Systeme einer Partitur aber unterschiedliche Taktarten enthalten, etwa in einer polymetrischen Partitur mit 4/4- und 3/4-Takt. In diesem Fall müssen also die Standardeinstellungen der `Score`- und `Staff`-Kontexte verändert werden.

In einfachen Partituren werden die Kontexte implizit erstellt, und es kann sein, dass Sie sich dessen gar nicht bewusst sind. Für etwas größere Projekte, etwa mit vielen Systemen, müssen die Kontexte aber explizit erstellt werden, um sicher zu gehen, dass man auch wirklich die erwünschte Zahl an Systemen in der richtigen Reihenfolge erhält. Wenn Stücke mit spezialisierter Notation gesetzt werden sollen, ist es üblich, die existierenden Kontexte zu verändern oder gar gänzlich neue zu definieren.

Zusätzlich zu den `Score,` `Staff` und `Voice`-Kontexten gibt es noch Kontexte, die zwischen der Partitur- und Systemebene liegen und Gruppen von Systemen kontrollieren. Das sind beispielsweise der `PianoStaff` und `ChoirStaff`-Kontext. Es gibt zusätzlich alternative Kontexte für Systeme und Stimmen sowie eigene Kontexte für Gesangstexte, Perkussion, Griffsymbole, Generalbass usw.

Die Bezeichnungen all dieser Kontexte werden von einem oder mehreren englischen Wörtern gebildet, dabei wird jedes Wort mit einem Großbuchstaben begonnen und direkt an das folgende ohne Bindestrich oder Unterstrich angeschlossen, etwa `GregorianTranscriptionStaff`.

#### Podívejte se také na

Notationreferenz: Vysvětlení prostředí.

#### LilyPond – Learning Manual v2.22.1 (Stálá větev).