Příručka k učení se: 4.5.2 Oprava překrývajících se not

### 4.5.2 Oprava překrývajících se not

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.

>     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.

### 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 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.

### 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
>     % Extend width by 1 unit
>     \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
>     % Align dynamics to a base line 2 units above staff
>     \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:

>     << \relative { c'4 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:

>     <<
>       \relative { c'4 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 umístění předmětů 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
>     f4-5
>     \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
>     f4-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 auswirkt, 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 vornehmen, das wir behandelt haben in Slyším hlasy. Wir hatten es in folgende Form gebracht:

>     \new Staff \relative {
>       \key aes \major
>       <<
>         { c''2 aes4. bes8 }
>         \\
>         { aes2 f4 fes }
>         \\
>         {
>           \voiceFour
>           <ees c>2 des
>         }
>       >> |
>       <c ees aes c>1 |
>     }

Die unteren zwei Noten des ersten Akkords (also die in 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 {
>       \key aes \major
>       <<
>         { c''2 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 |
>     }

#### LilyPond – Learning Manual v2.22.2 (Stálá větev).