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

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

[image of music]

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:

Siehe auch

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


LilyPond – Notationsreferenz v2.23.82 (Entwicklungszweig).