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 demScript_column_engraver
kommen, -
der
Timing_translator
muss vor demBar_number_engraver
kommen.
Siehe auch
Installlierte Dateien: ‘ly/engraver-init.ly’.