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_head_engraver
, der die Notenköpfe erstellt, und ein
Staff
-Kontext einen Key_signature_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
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 { f2 g } \new Staff \with { \remove "Time_signature_engraver" \remove "Clef_engraver" } { f2 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 Paritur 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:
\new Score \with { \remove "Timing_translator" \remove "Default_bar_line_engraver" } << \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } { \time 3/4 c4 c c c c c } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } { \time 2/4 c4 c c c c c } >>
Bekannte Probleme und Warnungen
Normalerweise spielt es keine Rolle, in welcher Reihenfolge Engraver angegeben werden, 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. Die Reihenfolge, in der Engraver angegeben werden, ist die Reihenfolge, in der sie aufgerufen werden, um ihre Tätigkeiten auszuführen.
Folgende Reihenfolgen müssen beachtet werden: der
Bar_engraver
muss normalerweise zuerst kommen, und
der New_fingering_engraver
muss vor dem
Script_column_engraver
kommen. Es gibt möglicherweise weitere
Abhängigkeiten von der Reihenfolge geben.