[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Verschieben von Objekten ] | [ Nach oben : Kollision von Objekten ] | [ Die padding-Eigenschaft > ] |
5.6.2 Überlappende Notation in Ordnung bringen
Hier soll nun gezeigt werden, wie die Eigenschaften, die im vorigen Abschnitt vorgestellt wurden, bei der Problemlösung mit sich überschneidenden Notationselementen eingesetzt werden können.
Die padding
-Eigenschaft (auffüllen)
Die padding
-(Verschiebungs-)Eigenschaft kann benutzt
werden, um den Abstand zwischen Symbolen zu vergrößern (oder
zu verkleinern), die über oder unter den Noten gesetzt werden.
c'2\fermata \override Script.padding = #3 b2\fermata
% This will not work, see below \override MetronomeMark.padding = #3 \tempo 4 = 120 c'1 | % This works \override Score.MetronomeMark.padding = #3 \tempo 4 = 80 d'1 |
Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen
Kontext anzugeben. Weil das MetronomeMark
-Objekt
sich im Score
-Kontext befindet, werden Eigenschaftsänderungen
im Voice
-Kontext einfach ignoriert. Für mehr Einzelheiten siehe
Eigenschaften verändern.
Wenn die padding
-Eigenschaft eines Objektes erhöht wird, das
sich in einem Stapel von Objekten befindet, die nach ihrer
Außersystempriorität (outside-staff-priority
) positioniert werden,
werden das Objekt und alle, die sich außerhalb davon befinden,
entsprechend verschoben.
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die padding-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Die staff-padding-Eigenschaft > ] |
Die right-padding
-Eigenschaft (rechts auffüllen)
Die right-padding
-Eigenschaft wirkt sich auf den Abstand
zwischen einem Versetzungszeichen und der Note, auf das sie sich
bezieht, aus. Sie wird nicht sehr oft benötigt, aber die
Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen
oder Kombinationsglyphen,
wie sie für Mikrotonale Musik benutzt werden, falsch sein. Derartige
Glyphen müssen notiert werden, indem man den Stencil des
Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt,
wie im folgenden Beispiel:
sesquisharp = \markup { \sesquisharp } \relative { c''4 % This prints a sesquisharp but the spacing is too small \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 c % This improves the spacing \once \override Score.AccidentalPlacement.right-padding = #0.6 \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 }
Dazu ist aber ein \override
-Befehl für den Stencil des
Versetzungszeichens nötig, der bisher nicht behandelt wurde.
Der Typ des Stencils muss eine Prozedur sein, die hier geändert
wurde, um den Inhalt der text
-Eigenschaft des
Accidental
(Versetzungszeichen)-Objekts zu setzen. Die
text
-Eigenschaft wiederum wird als sesquisharp
-Glyph
definiert. Dieser Glyph wird dann weiter vom Notenkopf entfernt
durch die Veränderung von right-padding
mit einem
\override
-Befehl.
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die right-padding-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Die self-alignment-X-Eigenschaft > ] |
The staff-padding
-Eigenschaft (Systemfüllungseigenschaft)
staff-padding
kann
verwendet werden um Objekte wie Dynamikzeichen an einer
Grundlinie mit einem festen (Mindest-) Abstand zum System auszurichten,
wenn keine anderen Notationsobjekte einen noch weiteren Abstand erfordern.
Diese Verschiebung ist keine Eigenschaft
von DynamicText
, sondern von DynamicLineSpanner
.
Das liegt daran, dass die Grundlinie sich gleicherweise auf
alle Dynamikzeichen beziehen soll, also auch auf die,
die als Strecker erstellt wurden. Hier also die Lösung, die Dynamikzeichen
aus dem Beispiel des vorigen Abschnitts auszurichten:
\override DynamicLineSpanner.staff-padding = #3 \relative { a'4\f b\mf a\p b\mp }
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die staff-padding-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Die staff-position-Eigenschaft > ] |
Die self-alignment-X
-Eigenschaft (Selbstausrichtung-X-Eigenschaft)
Das nächste Beispiel zeigt, wie man die Position einer Fingersatzbezeichnung relativ zu einem Notenhals justieren kann, indem dessen rechte Kante an dem Referenzpunkt der zugehörigen Note ausgerichtet wird:
\voiceOne <a''\2> \once \override StringNumber.self-alignment-X = #RIGHT <a''\2>
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die self-alignment-X-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Die extra-offset-Eigenschaft > ] |
Die staff-position
-Eigenschaft (Position innerhalb des Systems)
Mehrtaktpausen in einer Stimmen können mit Noten in anderen Stimmen kollidieren. Da diese Pausen zentriert zwischen den Taktstriche gesetzt werden, würde es für LilyPond eine recht große Anstrengung bedeuten herauszufinden, welche Noten mit ihnen zusammenstoßen könnten, denn alle Kollisionsvermeidung für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die zur selben Zeit auftreten. Hier ein typisches Beispiel für eine Kollision dieser Art:
<< \relative { c'4 c c c } \\ { R1 } >>
Die beste Lösung ist es hier, die Ganztaktpause nach unten zu
schieben, denn die Pause ist in der zweiten Stimme. Per
Standardeinstellung für die zweite Stimme (\voiceTwo
,
also die zweite Stimme in der
<<{…} \\ {…}>>
-Konstruktion) wird die
Position auf dem System (staff-position
) auf -6
für MultiMeasureRest
, in unserem Beispiel muss
es also bspw. auf die Position -10
gesetzt werden,
d.h. vier halbe Notenlinienabstände weiter nach unten:
<< \relative { c'4 c c c } \\ \override MultiMeasureRest.staff-position = #-10 { R1 } >>
Das ist besser, als etwa extra-offset
zu benutzen, denn
in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.
Siehe Bindebögen von Hand setzen zum Unterschied zwischen exakten und inexakten Werten.
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die staff-position-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Die positions-Eigenschaft > ] |
Die extra-offset
-Eigenschaft (Genaues Positionieren)
Die extra-offset
-Eigenschaft bietet vollständige Kontrolle
über die Positionierung von Objekten in horizontaler und vertikaler
Richtung.
Im Beispiel unten ist das zweite Fingersatzzeichen (Fingering
) etwas nach
links und 1,8 Notenlinienabstände nach unten verschoben:
f'4-5 \once \override Fingering.extra-offset = #'(-0.3 . -1.8) f'4-5
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die extra-offset-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Die force-hshift-Eigenschaft > ] |
Die positions
-Eigenschaft (Ausrichtungseigenschaft)
Die positions
-Eigenschaft ermöglicht es, die vertikale Position
und damit implizit die Neigung von N-tolen, Legato- und Phrasierungsbögen
sowie Balken manuell zu steuern.
Im folgenden Beispiel überlappen der Legato- und er Phrasierungsbogen:
\relative { a'8 \( ( a'16 ) a \) }
Ein Möglichkeit wäre es, die beiden Endpunkte des Phrasierungsbogen weiter nach oben zu verschieben. Wir probieren einmal das linke Ende 2.5 Staff-Einheiten über die Mittellinie und das rechte Ende 4.5 Einheiten darüber zu fixieren und überlassen es LilyPond, einen zu diesen Endpunkten passenden Phrasierungsbogen auszuwählen:
\once \override PhrasingSlur.positions = #'(2.5 . 4.5) a'8 \( ( a''16 ) a'' \)
Auf jeden Fall eine Verbesserung, aber warum das rechte Ende des
Legatobogens nicht ein wenig nach unten verschieben? Wenn Sie es
versuchen werden sie feststellen, es ist auf diesem Wege nicht
möglich, und das liegt daran, dass LilyPond von sich aus keinen
Bogen erzeugt, der niedriger läge, als der, den es bereits auswählt.
In solch einem Fall hat eine Änderung der positions
-Eigenschaft
keinerlei Auswirkung. Allerdings können Binde-, Legato- und
Phrasierungsbögen bei Bedarf sehr exakt positioniert und auch geformt
werden. Unter
Bögen verändern können sie lernen, wie.
Hier noch ein weiteres Beispiel. Wie zu sehen ist, stößt der Balken mit den oberen Bögen zusammen:
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> }
Das kann manuell gelöst werden, indem beide Enden des Balkens von ihrer Position 1.81 Notenlinienabstände unter der Mittellinie hoch geschoben werden, etwa auf 1:
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { \override Beam.positions = #'(-1 . -1) e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g \revert Beam.positions } >> }
Hier ist zu beobachten, dass die Veränderung sich auch auf den die zweite Stimme des weiteren Taktes mit Achtelnoten auswirkt, während sie keine Auswirkung auf die Hälse der ersten Stimme hat. Sobald das override nicht mehr benötigt wird, sollte es wie zu sehen reverted werden.
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die positions-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Beispiel aus dem Leben > ] |
Die force-hshift
-Eigenschaft (horizontale Verschiebunseigenschaft)
An diesem Punkt können wir den letzten Feinschliff an unserem Chopin-Beispiel vornehmen, das wir behandelt haben in Ich höre Stimmen. Wir hatten es in folgende Form gebracht:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ \\ { aes'2 f4 fes } >> | <c ees aes c>1 | }
Die inneren Noten des ersten Akkordes (also das As in der vierten Stimme)
müssen nicht mit shift verschoben aus der Noten-Kolumne der höheren Stimme
verschoben werden, daher verwenden wir \shiftOff
.
Im zweiten Akkord wollen wir, dass das F sich am As orientiert und die
tiefste Note leicht nach rechts verschoben wird, damit ein Zusammenstoß
der Hälse vermieden wird. Das erreicht man mit force-hshift
in
NoteColumn
des unteren Des, um es einen halben
Notenlinienzwischenraum nach rechts zu verschieben und gleichzeitig
force-hshift
für das F auf Null.
Ihnen ist sicher aufgefallen, dass wir \once
verwenden damit
die Veränderung nicht über den konkreten Fall hinaus wirkt, auch wenn
im konkreten kleinen Beispiel \once
und das zweite \override
in der vierten Stimme weggelassen werden könnte. Das wäre aber
schlechter Stil.
Hier das Endergebnis:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des } \\ \\ { \once \shiftOff aes'2 \once \shiftOff f4 fes } >> | <c ees aes c>1 | }
[ << Die Ausgabe verbessern ] | [Anfang][Inhalt][Index] | [ Vorlagen >> ] |
[ < Die positions-Eigenschaft ] | [ Nach oben : Überlappende Notation in Ordnung bringen ] | [ Beispiel aus dem Leben > ] |