LilyPond Benutzerhandbuch: 5.1.4 Umgebungs-Plugins verändern

### 5.1.4 Umgebungs-Plugins verändern

Notationskontexte (wie `Score` oder `Staff`) speichern nicht nur Eigenschaften, sie enthalten auch Plugins („engraver“ genannt), die die einzelnen Notationselemente erstellen. Ein `Voice`-Kontext enthält beispielsweise einen `Note_heads_engraver`, der die Notenköpfe erstellt, und ein `Staff`-Kontext einen `Key_engraver`, der die Vorzeichen erstellt.

Eine vollständige Erklärung jedes Plugins findet sich in Engravers and Performers. Alle Kontexte sind erklärt in Contexts, wobei die in diesem Kontext vorkommenden Engraver aufgelistet sind.

Es kann teilweise nötig sein, diese Engraver umzupositionieren. Das geschieht, indem man einen neuen Kontext mit `\new` oder `\context` beginnt und ihn dann verändert:

>     \new context \with {
>       \consists …
>       \consists …
>       \remove …
>       \remove …
>       etc.
>     }
>     {
>       ..Noten..
>     }

… steht hier für die Bezeichnung des Engravers. `\consists` fügt einen Engraver hinzu und `\remove` entfernt ihn. Es folgt ein einfaches Beispiel, in dem der `Time_signature_engraver` (Engraver für den Takt) und der `Clef_engraver` (Engraver für den Schlüssel) aus dem `Staff`-Kontext entfernt werden:

>     <<
>       \new Staff \relative {
>         f'2 g
>       }
>       \new Staff \with {
>          \remove Time_signature_engraver
>          \remove Clef_engraver
>       } \relative {
>         f'2 g2
>       }
>     >>

Das zweite Notensystem enthält keine Taktangabe und keinen Notenschlüssel. Das ist eine recht brutale Methode, Objekte zu verstecken, weil es sich auf das gesamte System auswirkt. Diese Methode beeinflusst auch die Platzaufteilung, was erwünscht sein kann. Vielfältigere Methoden, mit denen Objekte unsichtbar gemacht werden können, finden sich in Sichtbarkeit und Farbe von Objekten.

Das nächste Beispiel zeigt eine Anwendung in der Praxis. Taktstriche und Taktart werden normalerweise in einer Partitur synchronisiert. Das geschieht durch `Timing_translator` und `Default_bar_line_engraver`. Diese Plugins sorgen sich um die Verwaltung der Taktzeiten und die Stelle innerhalb des Taktes, zu dem eine Note erscheint usw. Indem man diese Engraver aus dem `Score`-Kontext in den `Staff`-Kontext verschiebt, kann eine Partitur erstellt werden, in welcher jedes System eine unterschiedliche Taktart hat:

>     \score {
>       <<
>         \new Staff \with {
>           \consists Timing_translator
>         } {
>             \time 3/4
>             c4 c c c c c
>         }
>       \new Staff \with {
>         \consists Timing_translator
>       } {
>           \time 2/4
>           c4 c c c c c
>       }
>     >>
>     \layout {
>       \context {
>         \Score
>         \remove Timing_translator
>         }
>       }
>     }

#### Bekannte Probleme und Warnungen

Die Reihenfolge, in der die Engraver definiert werden, ist die Reihenfolge, in welcher sie aufgerufen werden, um ihre Verarbeitung vorzunehmen. Normalerweise spielt die Reihenfolge, in welcher die Engraver angegeben werden, keine Rolle, aber in einigen Spezialfällen ist die Reihenfolge sehr wichtig. Das kann beispielsweise vorkommen, wenn ein Engraver eine Eigenschaft erstellt und ein anderer von ihr liest, oder ein Engraver erstellt ein Grob und ein anderer wertet es aus.

Folgende Reihenfolgen müssen beachtet werden:

- der `Bar_engraver` muss normalerweise zuerst kommen,
- der `New_fingering_engraver` muss vor dem `Script_column_engraver` kommen,
- der `Timing_translator` muss vor dem `Bar_number_engraver` kommen.

#### Siehe auch

Installlierte Dateien: ‘`ly/engraver-init.ly`’.

#### LilyPond – Notationsreferenz v2.24.4 (stabiler Zweig).