5.3.2 Der \set
-Befehl
Jeder Kontext kann unterschiedliche Eigenschaften 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
Wert ist ein Scheme-Objekt, weshalb ihm #
vorangestellt
werden muss.
Kontexteigenschaften werden üblicherweise mit kleinGroßbuchstabe
benannt. Sie kontrollieren vor allem die Übersetzung von Musik in
Notation, wie etwa localAlterations
, welche bestimmt, wann
ein Taktstrich gesetzt werden muss. Kontexteigenschaften können
ihren Wert mit der Zeit ändern, während eine Notationsdatei interpretiert
wird. Ein gutes Beispiel dafür ist measurePosition
, was die
Position der Noten im Takt angibt. Kontexteigenschaften werden mit dem
\set
-Befehl verändert.
Mehrtaktpausen etwa können in einen Takt zusammengefasst werden, wenn die
Kontexteigenschaft skipBars
(Takte überspringen) auf #t
(wahr) gesetzt wird:
R1*2 \set Score.skipBars = ##t R1*2
Wenn das Kontext-Argument ausgelassen wird, bezieht sich
der Befehl auf den gerade aktiven unterstmöglichen Kontext,
üblicherweise ChordNames
, Voice
oder
Lyrics
.
\set Score.autoBeaming = ##f \relative { e''8 e e e \set autoBeaming = ##t e8 e e e } \\ \relative { c''8 c c c c8 c c c }
Die Änderung wird zur Laufzeit während der Musik interpretiert, sodass diese Einstellung sich nur auf die zweite Gruppe von Achteln auswirkt.
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
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.
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 Score.autoBeaming = ##t \relative { \unset autoBeaming e''8 e e e \unset Score.autoBeaming e8 e e e } \\ \relative { c''8 c c c c8 c c c }
Wie für \set
muss das Kontext-Argument für den untersten
Kontext nicht mitangegeben werden. Die zwei Versionen
\set Voice.autoBeaming = ##t \set autoBeaming = ##t
verhalten sich gleich, wenn die gegenwärtige Basis der
Voice
-Kontext ist.
Einstellungen, die nur einmal vorgenommen werden sollen, können
mit \once
notiert werden, etwa:
c''4 \once \set fontSize = #4.7 c''4 c''4
Eine vollständige Beschreibung aller vorhandenen Kontexteigenschaften findet sich in der Referenz der Interna, siehe Tunable context properties.
Siehe auch
Internals Reference:
Andere Sprachen: English, català, español, français, italiano, 日本語.
About automatic language selection.