5.3.2 Der \set-Befehl

Jeder Kontext kann unterschiedliche Eigenschafte besitzen, Variablen, die in diesem Kontext definiert sind. Sie können während der Interpretation des Kontextes verändert werden. Hierzu wird der \set-Befehl eingesetzt:

\set Kontext.Eigenschaft = #Wert

Das kann beispielsweise so aussehen:

R1*2
\set Score.skipBars = ##t
R1*2

[image of music]

Mit diesem Befehl werden Takte übersprungen, die keine Noten haben. Als Resultat werden Ganztaktpausentakte komprimiert. Der Wert, der der Eigenschaft zugewiesen wird, ist ein Scheme-Objekt. In diesem Fall ist es #t, der Boolsche Wert für „wahr“.

Wenn das Kontext-Argument ausgelassen wird, bezieht sich der Befehl auf den gerade aktiven unterstmöglichen Kontext, üblicherweise ChordNames, Voice oder Lyrics. In diesem Beispiel:

c8 c c c
\set autoBeaming = ##f
c8 c c c

[image of music]

wurde das Kontext-Argument für den \set-Befehl ausgelassen, sodass automatische Bebalkung für die aktuelle Stimme (Voice-Kontext) abgeschaltet wird. Dabei gilt zu beachten, dass der unterste Kontext nicht immer die Eigenschaft enthält, die verändert werden soll. Wenn man beispielsweise skipBars aus dem oberen Beispiel ohne Angabe des Kontextes zu verändern sucht, hat der Befehl keine Auswirkung, weil er sich auf den Voice-Kontext bezieht, die Eigenschaft sich aber im Score-Kontext befindet:

R1*2
\set skipBars = ##t
R1*2

[image of music]

Kontexte sind hierarchisch angeordnet. Wenn ein übergeordneter Kontext angegeben wird, etwa Staff, dann beziehen sich die Änderungen auf alle Stimmen (Voice), die in diesem Kontext enthalten sind. Da der Befehl zu dem Zeitpunkt gültig wird, an dem er im Quelltext auftritt, wird im Bebalkungsbeispiel oben die Einstellung erst für die zweite Achtelgruppe wirksam.

Es gibt auch einen \unset-Befehl:

\unset Kontext.Eigenschaft

der bewirkt, dass die vorgenommenen Definitionen für Eigenschaft entfernt werden. Dieser Befehl macht nur Einstellungen im richtigen Kontext rückgängig. Wenn also im Staff-Kontext die Bebalkung ausgeschaltet wird:

\set Staff.autoBeaming = ##f

bezieht sich das auch auf die in dem Staff enthaltenen Stimmen. Der Befehl

\unset Voice.autoBeaming

ist jedoch ungültig und bewirkt nichts. Damit die Einstellung richtig rückgängig gemacht werden kann, muss der Befehl auf der gleichen Kontextebene ausgeführt werden wie der ursprüngliche \set-Befehl. Hier braucht man also den Befehl:

\unset Staff.autoBeaming

Genauso wie für \set, muss auch für \unset der unterste Kontext nicht angegeben werden, die zwei Befehle

\set Voice.autoBeaming = ##t
\set autoBeaming = ##t

bedeuten also das Gleiche.

Einstellungen, die nur einmal vorgenommen werden sollen, können mit \once notiert werden, etwa:

c4
\once \set fontSize = #4.7
c4
c4

[image of music]

Damit wirkt sich die Änderung der Schriftgröße nur auf die zweite Note aus und wird automatisch wieder rückgängig gemacht.

Eine vollständige Beschreibung aller vorhandenen Kontexteigenschaften findet sich in der Referenz der Interna, siehe

Tunable context properties.


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

LilyPond – Notationsreferenz