3.4.1 Stücke durch Variablen organisieren

Wenn alle die Elemente, die angesprochen wurden, zu größeren Dateien zusammengefügt werden, werden auch die musikalischen Ausdrücke sehr viel größer. In polyphonen Dateien mit vielen Systemen kann das sehr chaotisch aussehen. Das Chaos kann aber deutlich reduziert werden, wenn Variablen definiert und verwendet werden.

Variablen (die auch als Bezeichner oder Makros bezeichnet werden) können einen Teil der Musik aufnehmen. Sie werden wie folgt definiert:

bezeichneteMusik = { … }

Der Inhalt des musikalischen Ausdrucks bezeichneteMusik kann dann später wieder benutzt werden, indem man einen Backslash davor setzt (\bezeichneteMusik), genau wie bei jedem LilyPond-Befehl.

violin = \new Staff {
  \relative {
    a'4 b c b
  }
}

cello = \new Staff {
  \relative {
    \clef "bass"
    e2 d
  }
}

{
  <<
    \violin
    \cello
  >>
}

[image of music]

In den Namen der Variablen dürfen nur Buchstaben des Alphabets verwendet werden, keine Zahlen oder Striche.

Variable müssen vor dem eigentlichen musikalischen Ausdruck definiert werden. Sie können dann aber beliebig oft verwendet werden, nachdem sie einmal definiert worden sind. Sie können sogar eingesetzt werden, um später in der Datei eine neue Variable zu erstellen. Damit kann die Schreibarbeit erleichtert werden, wenn Notengruppen sich oft wiederholen.

tripletA = \relative { \tuplet 3/2 { c'8 e g } }
barA = { \tripletA \tripletA \tripletA \tripletA }

{ \barA \barA }

[image of music]

Man kann diese Variablen auch für viele andere Objekte verwenden, etwa:

myWidth = 60      % eine Zahl für die \paper variable
                  % (die Einheit ist Millimeter)
myName = "Wendy"  % eine Zeichenkette für eine Textbeschriftung
aFivePaper = \paper { #(set-paper-size "a5") }

Abhängig vom Kontext kann solch ein Bezeichner in verschiedenen Stellen verwendet werden. Das folgende Beispiel zeigt die Benutzung der eben definierten Bezeichner:

\paper {
  \aFivePaper
  line-width = \myWidth
}

{
  c4^\myName
}

LilyPond Handbuch zum Lernen v2.25.22 (development-branch).