[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vysvětlení rytců ] | [ Up : Prostředí a rytci ] | [ Přidání a odstranění rytců > ] |
4.3.4 Změna vlastností prostředí
Kontexte sind dafür verantwortlich, die Werte bestimmter
Kontext-Eigenschaften zu speichern. Viele davon
können verändert werden, um die Interpretation der
Eingabe zu beeinflussen und die Ausgabe zu verändern.
Kontexte werden mit dem \set
-Befehl geändert.
Er wird in Form
\set KontextBezeichnung.eigenschaftsBezeichnung = #Wert
verwendet, wobei KontextBezeichnung üblicherweise
Score
,
Staff
oder Voice
ist. Der erste Teil kann auch
ausgelassen werden; in diesem Fall wird der aktuelle
Kontext (üblicherweise Voice
) eingesetzt.
Die Bezeichnung von Kontexten-Eigenschaften besteht aus zwei Wörtern, die ohne Unterstrich oder Bindestrich verbunden sind. Alle außer dem ersten werden am Anfang groß geschrieben. Hier einige Beispiele der gebräuchlichsten Kontext-Eigenschaften. Es gibt sehr viel mehr.
eigenschaftsBezeichnung | Typ | Funktion | Beispiel-Wert |
---|---|---|---|
extraNatural | boolescher Wert | Wenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt. | #t , #f |
currentBarNumber | Integer | Setzt die aktuelle Taktnummer. | 50 |
doubleSlurs | boolescher Wert | Wenn wahr, werden Legatobögen über und unter die Noten gesetzt. | #t , #f |
instrumentName | Text | Setzt die Instrumentenbezeichnung am Anfang eines Systems. | "Cello I" |
fontSize | reale Zahl | Vergrößert oder verkleinert die Schriftgröße. | 2.4 |
stanza | Text | Setzt den Text zu Beginn einer Strophe. | "2" |
Ein boolescher Wert ist entweder wahr (#t
)
oder falsch (#f
),
ein Integer eine positive ganze Zahl, ein Real (reelle Zahl) eine positive
oder negative Dezimalzahl, und Text wird in doppelte
Anführungszeichen (Shift+2) eingeschlossen. Beachten Sie
das Vorkommen des Rautenzeichens
(#
) an unterschiedlichen Stellen: als Teil eines
booleschen Wertes vor dem t
oder f
, aber
auch vor einem Wert in der
\set
-Befehlskette. Wenn ein boolescher Wert
eingegeben werden soll, braucht man also zwei
Rautenzeichen, z. B. ##t
.
Bevor eine Eigenschaft geändert werden kann, muss man wissen,
in welchem Kontext sie sich befindet. Manchmal versteht das
sich von selbst, aber in einigen Fällen kann es zunächst
unverständlich erscheinen. Wenn der falsche Kontext angegeben
wird, wird keine Fehlermeldung produziert, aber die
Veränderung wird einfach nicht ausgeführt.
instrumentName
befindet sich offensichtlich innerhalb
von einem Staff
-Kontext, denn das Notensystem soll
benannt werden. In dem folgenden Beispiel erhält das erste
System korrekt die Instrumentenbezeichnung, das zweite aber
nicht, weil der Kontext ausgelassen wurde.
<< \new Staff \relative { \set Staff.instrumentName = "Soprano" c''2 c } \new Staff \relative { \set instrumentName = "Alto" % Wrong! d'2 d } >>
Denken Sie daran, dass der Standardkontext Voice
ist; in dem
zweiten \set
-Befehl wird also die Eigenschaft instrumentName
im Voice
-Kontext auf „Alto“, gesetzt, aber weil LilyPond diese
Eigenschaft nicht im Voice
-Kontext vermutet, passiert einfach
gar nichts. Das ist kein Fehler, und darum wird auch keine Fehlermeldung
produziert.
Ebenso gibt es keine Fehlermeldung, wenn die Kontext-Bezeichnung
falsch geschrieben wird und die Änderung also nicht ausgeführt werden
kann. Tatsächlich kann eine beliebige (ausgedachte) Kontextbezeichnung
mit dem \set
-Befehl eingesetzt werden, genauso wie die, die
wirklich existieren. Aber wenn LilyPond diese Bezeichnung nicht
zuordnen kann, bewirkt der Befehl einfach gar nichts. Manche Editoren,
die Unterstützung für LilyPond-Befehle mitbringen, markieren existierende
Kontextbezeichnungen mit einem Punkt, wenn man mit der Maus darüber
fährt (wie etwa JEdit mit dem LilyPondTool), oder markieren
unbekannte Bezeichnungen anders (wie ConTEXT). Wenn Sie keinen
Editor mit LilyPond-Unterstützung einsetzen, wird empfohlen, die
Bezeichnungen in der Interna-Referenz zu überprüfen: siehe
Tunable context properties, oder
Contexts.
Die Eigenschaft instrumentName
wird erst aktiv, wenn sie
in einem Staff
-Kontext gesetzt wird, aber manche Eigenschaften
können in mehr als einem Kontext benutzt werden. Als Beispiel mag die
extraNatural
-Eigenschaft dienen, die zusätzliche Erniedrigungszeichen
setzt. Die Standardeinstellung ist ##t (wahr) in allen Systemen.
Wenn sie nur in einem Staff
(Notensystem) auf ##f (falsch)
gesetzt wird, wirkt sie sich auf alle Noten in diesem System aus. Wird
sie dagegen in der Score
-Umgebung gesetzt, wirkt sich das
auf alle darin enthaltenen Systeme aus.
Das also bewirkt, dass die zusätzlichen Erniedrigungszeichen in einem System ausgeschaltet sind:
<< \new Staff \relative { ais'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f ais'2 aes } >>
während das dazu dient, sie in allen Systemen auszuschalten:
<< \new Staff \relative { ais'2 aes } \new Staff \relative { \set Score.extraNatural = ##f ais'2 aes } >>
Ein anderes Beispiel ist die Eigenschaft clefTransposition
:
wenn sie im Score
-Kontext gesetzt wird, ändert sich sofort
der Wert der Oktavierung in allen aktuellen Systemen und wird
auf einen neuen Wert gesetzt, der sich auf alle Systeme auswirkt.
Der gegenteilige Befehl, \unset
, entfernt die Eigenschaft
effektiv wieder von dem Kontext: in den meisten Fällen wird der
Kontext auf ihre Standardeinstellungen zurückgesetzt.
Normalerweise wird aber \unset
nicht benötigt,
denn ein neues \set
erledigt alles, was man braucht.
Die \set
- und \unset
-Befehle könne überall im
Eingabequelltext erscheinen und werden aktiv von dem Moment, an
dem sie auftreten bis zum Ende der Partitur oder bis die Eigenschaft
mit \set
oder \unset
neu gesetzt wird. Versuchen
wir als Beispiel, die Schriftgröße mehrmals zu ändern, was sich unter anderem
auf die Notenköpfe auswirkt. Die Änderung bezieht sich immer auf den Standard,
nicht vom letzten gesetzten Wert.
\relative { c'4 d % make note heads smaller \set fontSize = #-4 e4 f | % make note heads larger \set fontSize = #2.5 g4 a % return to default size \unset fontSize b4 c | }
Wir haben jetzt gesehen, wie sich die Werte von unterschiedlichen
Eigenschaften ändern lassen. Beachten Sie, dass Integer und
Zahlen immer mit einem Rautenzeichen beginnen, während
die Werte wahr und falsch (mit ##t
und ##f
notiert) immer mit zwei Rauten beginnen. Eine Eigenschaft, die
aus Text besteht, muss in doppelte Anführungsstriche gesetzt werden,
auch wenn wir später sehen werden, dass Text auf eine sehr viel
allgemeinere und mächtigere Art mit dem \markup
-Befehl
eingegeben werden kann.
Kontexteigenschaften mit \with
setzen
Die Standardwerte von Kontexteigenschaften können zu dem Zeitpunkt
definiert werden, an welchem der Kontext erstellt wird. Manchmal
ist das eine saubere Weise, eine Eigenschaft zu bestimmen, die für
die gesamte Partitur erhalten bleichen soll. Wenn ein Kontext mit
einem \new
-Befehl erstellt wird, können in einer
direkt folgenden \with { .. }
-Umgebung die Eigenschaften
bestimmt werden. Wenn also die zusätzlichen
Auflösungszeichen für eine ganze Partitur gelten sollen, könnte
man schreiben:
\new Staff \with { extraNatural = ##f }
etwa so:
<< \new Staff \relative { gis'4 ges aes ais } \new Staff \with { extraNatural = ##f } { \relative { gis' ges aes ais } } >>
Eigenschaften, die auf diese Arte gesetzt werden, können immer noch
dynamisch mit dem \set
-Befehl geändert werden und mit
\unset
auf ihre Standardeinstellungen zurückgesetzt werden,
wie sie vorher in der \with
-Umgebung definiert wurden.
Wenn also die fontSize
-Eigenschaft in einer \with
-Umgebung
definiert wird, wird der Standardwert für die Schriftgröße
festgelegt. Wenn dieser Wert später mit \set
verändert
wird, kann dieser neue Standardwert mit dem Befehl
\unset fontSize
wieder erreicht werden.
Kontexteigenschaften mit \context
setzen
Die Werte von Kontext-Eigenschaften können in allen Kontexten
eines bestimmten Typs (etwa alle Staff
-Kontexte)
gleichzeitig mit einem Befehl gesetzt werden. Der Kontext wird
spezifiziert, indem seine Bezeichnung benutzt wird, also etwa
Staff
, mit einem Backslash davor: \Staff
. Der Befehl
für die Eigenschaft ist der gleiche, wie er auch in der
\with
-Konstruktion benutzt wird, wie oben gezeigt. Er wird in
eine \context
-Umgebung eingebettet, welche wiederum innerhalb
von einer \layout
-Umgebung steht. Jede \context
-Umgebung
wirkt sich auf alle Kontexte dieses Types aus, welche sich in der
aktuellen Partitur befinden (d. h. innerhalb einer \score
-
oder \book
-Umgebung). Hier ist ein Beispiel, wie man diese
Funktion anwendet:
\score { \new Staff { \relative { cis''4 e d ces } } \layout { \context { \Staff extraNatural = ##t } } }
Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer
score
-Umgebung beziehen soll:
\score { << \new Staff { \relative { gis'4 ges aes ais } } \new Staff { \relative { gis'4 ges aes ais } } >> \layout { \context { \Score extraNatural = ##f } } }
Kontext-Eigenschaften, die auf diese Weise gesetzt werden, können für
bestimmten Kontexte überschrieben werden, indem die
\with
-Konstruktion eingesetzt wird, oder mit \set
-Befehlen
innerhalb der aktuellen Noten.
Podívejte se také na
Notationsreferenz: Die Standardeinstellungen von Kontexten ändern, Der set-Befehl.
Referenz der Interna: Contexts, Tunable context properties.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vysvětlení rytců ] | [ Up : Prostředí a rytci ] | [ Přidání a odstranění rytců > ] |