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
  }
>>

[image of music]

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
  }
>>

[image of music]

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.


Andere Sprachen: English, español, français.

LilyPond – Notationsreferenz