[ << Die Ausgabe verändern ] | [Anfang][Inhalt][Index][ ? ] | [ An LilyPond-Projekten arbeiten >> ] | ||
[ < Verschieben von Objekten ] | [ Nach oben : Kollision von Objekten ] | [ Beispiele aus dem Leben > ] |
4.5.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.
padding (Fülleigenschafte)
Die padding
-(Verschiebungs-)Eigenschaft kann benutzt
werden, um den Abstand zwischen Symbolen zu vergößern (oder
zu verkleinern), die über oder unter den Noten gesetzt werden.
c2\fermata \override Script #'padding = #3 b2\fermata
% Das funktioniert nicht, siehe unten \override MetronomeMark #'padding = #3 \tempo 4=120 c1 % Das funktioniert: \override Score.MetronomeMark #'padding = #3 \tempo 4=80 d1
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
Eignschaften 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.
left-padding (Verschieben nach rechts) und right-padding (Verschieben nach links)
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 das folgende
Beispiel zeigt eine Situation, wo man sie braucht. Das Beispiel
stellt eine Situation dar, in der in einem Akkord sowohl H als auch
B vorkommen sollen. Damit keine Ambiguität ensteht, sollen beide
Noten ein Zeichen haben, also ein B und ein Auflösungszeichen.
Hier einige Notationsversuche:
<b bes> <b! bes> <b? bes>
Keiner davon funktioniert, und der zweite und dritte weist hässliche Zusammenstöße zwischen den Zeichen auf.
Eine Möglichkeit, das Gewünschte zu erhalten, ist es den Stencil des Versetzungszeichens zu ersetzen mit einer Textbeschriftung (Markup), die sowohl das B als auch das Aulösungszeichen enthält:
AuflösungB = \markup { \natural \flat } \relative c'' { \once \override Accidental #'stencil = #ly:text-interface::print \once \override Accidental #'text = #AuflösungB \once \override Score.AccidentalPlacement #'right-padding = #1.5 <b bes> }
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 dann so definiert wird, dass sie ein Auflösungszeichen gefolgt
von einem B enthält. Diese werden dann mit right-padding
weiter nach rechts verschoben.
staff-padding (Systemfüllungseigenschaft)
staff-padding
(Verschiebung zum Notensystem) kann
verwendet werden um Objekte wie Dynamikzeichen an einer
Grundlinie auf einer bestimmten Höhe über dem System
auszurichten, sodass sie nicht von der Position der Note abhängen,
an die sie angehängt sind. 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:
\dynamicUp % Breite um eine Einheit vergrößern \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) % Dynamik-Zeichen an einer Linie ausrichten, die 2 Einheiten über dem System ist \override DynamicLineSpanner #'staff-padding = #2 a4\f b\mf c\mp b\p
self-alignment-X (Selbstausrichtung-X-Eigenschaft)
Das nächste Beispiel zeigt, wie man den Zusammenstoß einer Fingersatzbezeichnung mit einem Notenhals verhindern kann, indem die rechte Ecke an dem Referenzpunkt der abhängigen Note angeordnet wird:
\voiceOne < a \2 > \once \override StringNumber #'self-alignment-X = #RIGHT < a \2 >
staff-position (Position innerhalb des Systems)
Vieltaktpausen in einer Stimmen können mit Noten in anderen Stimmen kollidieren. Da diese Pausen zentriert zwischen den Taktlinien 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:
<< {c c c c} \\ {R1} >>
Die beste Lösung ist es, 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 -4
für MultiMeasureRest
, in unserem Beispiel muss
es also bspw. auf die Position -8
gesetzt werden,
d.h. vier halbe Notenlinienabstände weiter nach unten:
<< {c c c c} \\ \override MultiMeasureRest #'staff-position = #-8 {R1} >>
Das ist besser, als etwa extra-offset
zu benutzen, denn
in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.
extra-offset (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:
\stemUp f-5 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8) f-5
Ausrichtungseigenschaft
Die positions
-Eigenschaft erlaubt die Kontrolle von Position und
Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern.
Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil
er den Bogen des Vorschlags vermeidet:
r4 \acciaccatura e8\( d8 c ~c d c d\)
Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und das wäre auch die beste Lösung:
r4 \phrasingSlurUp \acciaccatura e8\( d8 c ~c d c d\)
aber wenn es einen Grund geben sollte, warum das nicht geht, könnte
man das linke Ende des Phrasierungsbogens etwas nach unten verschieben,
indem man die positions
-Eigenschaft einsetzt. Damit
verschwindet auch die etwas unschöne Form:
r4 \once \override PhrasingSlur #'positions = #'(-4 . -3) \acciaccatura e8\( d8 c ~c d c d\)
Hier noch ein weiteres Beispiel aus der Einleitung von Chopins Prelude Op. 28 Nr. 2, das untere System. Wie zu sehen ist, stößt der Balken mit den oberen Noten zusammen:
{ \clef "bass" << {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
Das kann manuell gelöst werden, indem beide Enden des Balkens von ihrer Position 2 Notenlinienabstände über der Mittellinie hochgeschoben werden, etwa auf 3:
{ \clef "bass" << \override Beam #'positions = #'(3 . 3) {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
Hier ist zu beobachten, dass die Veränderung sich auch auf die weiteren Achtelbalken der ersten Stimme auwirkt, während sie keine Auswirkung auf die Balken der zweiten Stimme hat.
force-hshift (vertikale Verschiebunseigenschaft)
An diesem Punkt können wir den letzten Feinschliff an unserem Chopin-Beispiel vornhemen, das wir behandelt haben in Ich höre Stimmen. Wir hatten es in folgende Form gebracht:
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour <ees c>2 des2 } >> | <c ees aes c>1 | }
Die unteren zwei Noten des ersten Akkords (also diein der
dritten Stimme) sollten nicht aus der Notenkolumne der
oberen zwei Noten weggeschoben werden. Um das zu
korrigieren, setzen wir force-hshift
, das eine
Eigenschaft von
NoteColumn
ist, für diese Noten auf Null.
Die untere Note des zweiten Akkordes wird am besten
direkt rechts von den oberen Noten gesetzt. Das erreichen
wir, indem wir force-hshift
für diese Note auf
0.5 setzen, also eine halbe Notenkopfbreite nach rechts von
der Kolumne der oberen Noten aus.
Hier das Endergebnis:
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour \once \override NoteColumn #'force-hshift = #0 <ees c>2 \once \override NoteColumn #'force-hshift = #0.5 des2 } >> | <c ees aes c>1 | }
[ << Die Ausgabe verändern ] | [Anfang][Inhalt][Index][ ? ] | [ An LilyPond-Projekten arbeiten >> ] | ||
[ < Verschieben von Objekten ] | [ Nach oben : Kollision von Objekten ] | [ Beispiele aus dem Leben > ] |