[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Pravidla pro pojmenovávání předmětů a vlastností ] | [ Up : Základy pro ladění ] | [ Vnitřní referenční příručka > ] |
5.1.4 Postupy při ladění
Der \override-Befehl
Wir haben uns schon mit den Befehlen \set
und \with
bekannt gemacht, mit welchen
Eigenschaften von Kontexten verändert
und Engraver entfernt oder hinzugefügt
werden können. Siehe dazu
Změna vlastností prostředí und Přidání a odstranění rytců. Jetzt wollen wir uns weitere
wichtige Befehle anschauen.
Der Befehl, um die Eigenschaften von Layout-Objekten
zu ändern, ist \override
. Weil dieser Befehl interne
Eigenschaften tief in der Programmstruktur von LilyPond
verändern muss, ist seine Syntax nicht so einfach wie die der
bisherigen Befehle. Man muss genau wissen, welche Eigenschaft
welches Objektes in welchem Kontext geändert werden soll,
und welches der neu zu setzende Wert dann ist. Schauen wir
uns an, wie das vor sich geht.
Die allgemeine Syntax dieses Befehles ist:
\override Kontext.LayoutObjekt #'layout-eigenschaft = #Wert
Damit wir die Eigenschaft mit der Bezeichnung layout-property das Layout-Objektes mit der BezeichnungLayoutObject, welches ein Mitglied des Kontext-Kontextes ist, auf den Wert value.
Der Kontext kann (und wird auch normalerweise) ausgelassen
werden, wenn der benötigte Kontext eindeutig impliziert ist und einer
der untersten Kontexte ist, also etwa Voice
, ChordNames
oder Lyrics
. Auch in diesem Text wird der Kontext oft ausgelassen
werden. Später soll gezeigt werden, in welchen Fällen er ausdrücklich
definiert werden muss.
Spätere Abschnitte behandeln umfassend Eigenschaften und ihre Werte, aber um ihre Funktion und ihr Format zu demonstrieren, werden wir hier nur einige einfache Eigenschaften und Werte einsetzen, die einfach zu verstehen sind.
Für den Moment könne Sie die #'
-Zeichen ignorieren, die vor jeder
Layout-Eigenschaft, und die #
-Zeichen, die vor jedem Wert
stehen. Sie müssen immer in genau dieser Form geschrieben werden.
Das ist der am häufigsten gebrauchte Befehl für die Optimierung,
und der größte Teil dieses Abschnittes wird dazu benutzt, seine Benutzung
zu erläutern. Hier ein einfaches Beispiel, um die Farbe des Notenkopfes
zu ändern:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a b c | }
Der \revert-Befehl
Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr
neuer Wert so lange bewahrt, bis er noch einmal überschrieben
wird oder ein \revert
-Befehl vorkommt. Der
\revert
-Befehl hat die folgende Syntax und setzt den
Wert der Eigenschaft zurück auf den Standardwert, nicht
jedoch auf den vorigen Wert, wenn mehrere
\override
-Befehle benutzt wurden.
\revert Kontext.LayoutObjekt #'layout-eigenschaft
Wiederum, genauso wie der Kontext bei dem \override
-Befehl,
wird Kontext oft nicht benötigt. Er wird in vielen der folgenden
Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes
wieder auf den Standardwert für die letzten zwei Noten gesetzt.
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a \revert NoteHead.color b4 c | }
\once-Präfix
Sowohl der \override
-Befehl als auch der \set
-Befehl können mit
dem Präfix \once
(einmal) versehen werden. Dadurch wird
der folgende \override
- oder \set
-Befehl nur für den aktuellen
Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen
Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes
geändert werden:
c4 d \once \override NoteHead.color = #red e4 f | \once \override NoteHead.color = #green g4 a b c |
Der \overrideProperty-Befehl
Es gibt eine andere Form des override
-Befehls,
\overrideProperty
(überschreibe Eigenschaft),
welcher ab und zu benötigt wird. Es wird hier nur der
Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert
in
Schwierige Korrekturen.
Der \tweak-Befehl
Der letzte Optimierungsbefehl in LilyPond ist \tweak
(engl. optimieren). Er wird eingesetzt um Eigenschaften
von Objekten zu verändern, die zum selben Musik-Moment
auftreten, wie etwa die Noten eines Akkordes. Ein
\override
würde alle Noten des Akkords beeinflussen,
während mit \tweak
nur das nächste Objekt der
Eingabe geändert wird.
Hier ein Beispiel. Angenommen, die Größe des mittleren
Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert
werden. Schauen wir zuerst, was wir mit
\once \override
erhalten:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
Wie man sehen kann, beeinflusst override
alle
Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten
eines Akkordes zum selben Musik-Moment auftreten und
die Funktion von \once
ist es, die Optimierung auf
an allen Objekten auszuführen, die zum selben Musik-Moment
auftreten wie der \override
-Befehl.
Der \tweak
-Befehl funktioniert anders. Er bezieht sich
auf das direkt folgende Element in der Eingabe-Datei. Es wirkt
aber auch nur mit Objekten, die direkt von der Eingabe kreiert
werden, insbesondere Notenköpfe und Artikulationszeichen.
Objekte wie etwa Hälse oder Versetzungszeichen werden erst
später erstellt und lassen sich nicht auf diese Weise ändern.
Zusätzlich müssen sich etwa Notenköpfe innerhalb
eines Akkordes befinden, d. h. sie müssen von einfachen spitzen
Klammern umschlossen sein. Um also eine einzelne Note
mit \tweak
zu verändern, muss der Befehl innerhalb
der spitzen Klammern zusammen mit der Note eingegeben werden.
Um also zu unserem Beispiel zurückzukommen, könnte man die mittlere Note eines Akkordes auf diese Weise ändern:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
Beachten Sie, dass die Syntax des \tweak
-Befehls sich
von der des \override
-Befehls unterscheidet. Weder
Kontext noch Layout-Objekt können angegeben werden, denn
das würde zu einem Fehler führen. Beide Angaben sind
durch das folgende Element impliziert. Hier sollte auch
kein Gleichheitszeichen vorhanden sein. Die verallgemeinerte
Syntax des \tweak
-Befehls ist also einfach
\tweak #'layout-eigenschaft #Wert
Ein \tweak
-Befehl kann auch benutzt werden, um nur
eine von mehreren Artikulationen zu ändern, wie im nächsten
Beispiel zu sehen ist.
a'4^"Black" -\tweak color #red ^"Red" -\tweak color #green _"Green"
Beachten Sie, dass dem \tweak
-Befehl ein Artikulationsmodifikator
vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen
wäre.
Der \tweak
-Befehl muss auch benutzt werden, wenn das
Aussehen einer vor mehreren geschachtelten Triolenklammern
geändert werden soll, die zum selben Zeitpunkt beginnen.
Im folgenden Beispiel beginnen die lange Klammer und die
erste Triolenklammer zum selben Zeitpunkt, sodass ein
\override
-Befehl sich auf beide beziehen würde.
In dem Beispiel wird \tweak
benutzt, um zwischen
ihnen zu unterscheiden. Der erste \tweak
Befehl
gibt an, dass die lange Klammer über den Noten gesetzt
werden soll, und der zweite, dass die Zahl der rhythmischen
Aufteilung für die erste der kurzen Klammern in rot
gesetzt wird.
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color #red \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt
beginnen, kann ihr Aussehen auf die übliche Art mit dem
\override
-Befehl geändert werden:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Podívejte se také na
Notationsreferenz: Der tweak-Befehl.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Pravidla pro pojmenovávání předmětů a vlastností ] | [ Up : Základy pro ladění ] | [ Vnitřní referenční příručka > ] |