5.6.1 Verschieben von Objekten (LilyPond Handbuch zum Lernen)

#### 5.6.1 Verschieben von Objekten

Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht perfekt. Einige Notationselemente können sich überschneiden. Das ist nicht schön, aber zum Glück sehr selten. Normalerweise müssen die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben werden – sie könnten besser aussehen, wenn sie etwas zusätzlichen Platz erhalten.

Es gibt im Grunde drei Herangehensweisen, überlappende Notation zu verbessern. Man sollte sie in der folgenden Reihenfolge anwenden:

1. Die Richtung eines der überlappenden Objekte kann geändert werden, indem die vordefinierten Befehle für Innersystemobjekte verwendet werden, wie beschrieben in within-staff (Objekte innerhalb des Notensystems). Hälse, Bögen, Balken, Dynamik-Zeichen und Triolen können auf diese Weise einfach umgeordnet werden. Beschränkt ist diese Methode insofern, als es nur zwei Möglichkeiten zur Veränderung gibt: oben oder unten.
2. Die Objekteigenschaft, die LilyPond benutzt um die Layout-Objekte zu platzieren, können mit dem `\override`-Befehl positioniert werden. Die Vorteile von Änderungen dieser Art sind a) dass einige Objekte automatisch verschoben werden, wenn es nötig ist Platz zu schaffen und b) ein einziges `\override` sich auf alle Fälle eines Objekttyps bezieht. Zu diesen Eigenschaften gehören:
   - `direction` (Richtung)

     Das wurde schon detailliert behandelt, siehe within-staff (Objekte innerhalb des Notensystems).

   - `padding`, `right-padding`, `staff-padding` (Verschiebung)

     Wenn ein Objekt platziert wird, bestimmt der Wert seiner `padding`-(Füllungs)-Eigenschaft die Größe des Abstandes, der zwischen dem Objekt selber und dem Objekt, relativ zu welchem es positioniert wird, gelassen werden muss. Dabei zählt der `padding`-Wert des Objektes, das platziert werden soll, der `padding`-Wert des Objektes, das schon gesetzt wurde, wird hingegen ignoriert. Abstände mit `padding` können zu allen Objekten hinzugefügt werden, die das `side-position-interface` unterstützen.

     Anstelle von `padding` wird die Position von Versetzungszeichengruppen durch die Eigenschaften `right-padding` bestimmt. Diese Eigenschaft wird im `AccidentalPlacement`-(Versetzungszeichen-Positionierungs)-Objekt gefunden, das sich innerhalb des Staff-Kontexts befindet. Während des Notensatzes werden die Notenköpfe zuerst gesetzt und dann die Versetzungszeichen, wenn denn welche gesetzt werden, durch die `right-padding`-Eigenschaft auf die linke Seite der Notenköpfe positioniert, um die Entfernung von den Notenköpfen und zwischen den einzelnen Versetzungszeichen zu bestimmen. Also nur die `right-padding`-(Verschiebung nach rechts)-Eigenschaft des `AccidentalPlacement`-Objekts hat Einfluss auf die Positionierung der Versetzungszeichen.

     Die `staff-padding`-(Verschiebung zum System)-Eigenschaft ist sehr ähnlich wie die `padding`-Eigenschaft: `padding` bestimmt den Minimalabstand zwischen einem Objekt, das das `side-position-interface` unterstützt, und dem nächsten anderen Objekt (normalerweise die Note oder Notenlinie); `staff-padding` dagegen wirkt nur auf Objekte die immer außerhalb des Notensystems sind – damit wird der minimale Abstand bestimmt, der zwischen dem Objekt und dem Notensystem gelassen werden soll. `staff-padding` hat also keinen Einfluss auf Objekte, die relativ zu einer Note positioniert werden, sondern nur auf solche, die zum System relativ stehen. Wenn es mit einem anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber der Befehl hat auch keine Auswirkungen.

     Um herauszufinden, welche `padding`-Eigenschaft für das bestimmte Objekt nötig, ist, das Sie verschieben wollen, müssen Sie in der IR nach den Objekt-Eigenschaften schauen. Dabei sollten Sie bedenken, dass sich die `padding`-Eigenschaften nicht unbedingt in dem Objekt selber befinden, schauen Sie also auch in Objekten nach, die offensichtlich Ähnlichkeiten haben.

     Alle `padding`-Werte werden in Notenlinienabständen gemessen. Für die meisten Objekte ist der Wert ungefähr auf 1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt). Der Wert kann geändert werden, wenn ein größerer (oder kleinerer) Abstand gewünscht wird.

   - `self-alignment-X` (Selbstpositionierung)

     Diese Eigenschaft kann benutzt werden, um ein Objekt nach links, rechts oder zentriert an dem Referenzpunkt des Objekts auszurichten, an das es verknüpft ist. Es kann bei allen Objekten benutzt werden, die das `self-alignment-interface` unterstützen. Das sind üblicherweise Objekte, die Text enthalten. Die möglichen Werte der Eigenschaft sind `LEFT`, `RIGHT` oder `CENTER`. Alternativ kann ein numerischer Wert zwischen `-1` und `+1` bestimmt werden: `-1` heißt linksbündig, `+1` rechtsbündig und Zahlen dazwischen bewegen den Text schrittweise von links nach rechts. Zahlen größer als `1` können angegeben werden, um den Text noch weiter nach links zu bewegen, oder weniger als `-1`, um ihn weiter nach rechts zu schieben. Eine Änderung um `1` des Wertes entspricht einer Bewegung um die halbe Textbreite.

   - `extra-spacing-width` (zusätzliche Breite)

     Diese Eigenschaft steht für alle Objekte zur Verfügung, die das `item-interface` unterstützen. Es braucht zwei Zahlen als Argument, die erste wird zur rechten Ausdehnung, die zweite zur linken Ausdehnung hinzugerechnet. Negative Zahlen verschieben die Ausdehnung nach rechts, positive nach links, um also ein Objekt zu verbreitern, muss die erste Zahl negativ und die zweite positiv sein. Allerdings beachten nicht alle Objekte beide Zahlen. Das `accidental`-(Versetzungszeichen)-Objekt etwa beachtet nur erste Zahl für die linke Ausdehnung.

   - `staff-position` (Notensystempositionierung)

     `staff-position` ist eine Eigenschaft des `staff-symbol-referencer-interface`, die von Objekten unterstützt wird, die relativ zum Notensystem (engl. staff) positioniert werden. Hiermit wird die vertikale Position eines Objekts relativ zur Mittellinie des Systems in halben Notenlinienabständen angegeben. Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen zu lösen.

   - `horizontal-shift` (horizontale Verschiebung)

     Innerhalb einer Stimme werden alle Noten, die zeitgleich stattfinden, zu einer Gruppe zusammen gefasst, einem sog. `NoteColumn` Objekt. Dieses Objekt dient dem Zweck, diese Gruppe von Noten horizontal zu positionieren (siehe auch „Notenkolumnen“ in Stimmen explizit beginnen). Genau dann, wenn zwei oder mehr Notenkolumnen innerhalb eines Systemkontexts, die beide jeweils die Hälse in die gleiche Richtung haben und auch zur gleichen Zeit stattfinden, werden die Werte ihrer `horizontal-shift`-Eigenschaften nach Größe sortiert und die Objekte dann mit einer Ordnungsnummer versehen. Je größer diese Ordnungsnummer, desto stärker wird ein Objekt verschoben um eine Kollision der Notenköpfe zu vermeiden. Diese Eigenschaft wird mit den `\voiceXXX`-Befehlen gesetzt und kann direkt durch einen `\override`-Befehl, oder was für gewöhnlich häufiger vorkommt, durch einen `\shiftOn`-Befehl gesetzt werden. Bedenken sie bitte, diese Eigenschaft dient lediglich dazu, den Notenkolumnen eine Ordnungsnummer zuzuweisen - sie bestimmt in keinster Weise die Größe der jeweiligen Verschiebung. Die steigt mit zunehmender Ordnungsnummer in festen Schritten. Die Schrittweite ist für gewöhnlich eine halbe Notenkopfbreite. Bei sehr eng platzierten Notengruppen kann sie aber auch mal eine ganze Notenkopfbreite betragen.

   - `force-hshift` (horizontale Verschiebung erzwingen)

     Die `force-hshift`-(erzwinge horizontale Verschiebung)-Eigenschaft ist eine Eigenschaft von `NoteColumn` (bzw. vom `note-column-interface`). Eine Veränderung dieser Eigenschaft macht es möglich, eine Notenkolumne zu verschieben, wenn sie mit anderen überlappt. Diese Eigenschaft hat keinerlei Auswirkungen, wenn keine Überlappung vorliegt. Veränderungen werden in einer Einheit angegeben, die zu der Notenkolumne passt, d.h. der Breite des Notenkopfes der Note der ersten Stimme. Diese Eigenschaft sollte in denjenigen komplexen Fällen verwendet werden, die sich nicht mit dem normalen `\shiftOn`-Befehle (siehe auch Stimmen explizit beginnen) lösen lassen. Sie ist auf jeden Fall der Verwendung der `extra-offset`-Eigenschaft vorzuziehen, weil man die richtige Entfernung nicht in Notenlinienabständen ausrechnen muss. Wenn eine Note in eine Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen.

3. Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch manuell positioniert werden, entweder vertikal in Bezug auf die Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit auf eine neue Position verschoben werden. Der Nachteil ist, dass die richtigen Werte für eine gute Position manuell ausprobiert werden müssen, meistens durch Herantasten an den richtigen Wert, und das für jedes einzelne Objekt extra. Und weil diese Verschiebungen erst vorgenommen werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt. Am schwerwiegendsten ist aber die Tatsache, dass die Verschiebungskoordinaten wahrscheinlich neu errechnet oder ausprobiert werden müssen, wenn sich an den Noten und deren Layout später irgend etwas ändert. Die Eigenschaften, die für diese Arte der manuellen Verschiebung verwendet werden können, sind:
   `extra-offset (zusätzlicher Abstand)`

     Diese Eigenschaft gehört zu jedem Layout-Objekt, das das `grob-interface` unterstützt. Sie braucht ein Zahlenpaar, das die exakte Verschiebung in horizontaler und vertikaler Richtung bezeichnet. Negative Zahlen verschieben das Objekt nach links oder unten. Die Einheit sind Notenlinienabstände. Die zusätzliche Positionierung wird vorgenommen, nachdem alle anderen Objekte platziert sind, weshalb ein Objekt irgendwohin verschoben werden kann, ohne den restlichen Satz zu beeinflussen.

   `positions (Position)`

     Diese Eigenschaft ist am sinnvollsten, um die Steigung und die Höhe von Balken, Bögen und Triolenklammern anzupassen. Sie braucht ein Zahlenpaar, das die Position des rechten und linken Endes relativ zur Mittellinie des Notensystems bestimmt. Die Einheit sind Notenlinienabstände. Bögen allerdings können nicht beliebig weit weg positioniert werden. LilyPond erstellt zunächst eine Liste an möglichen Positionen für den Bogen und findet normalerweise die Version, die „am besten aussieht“. Wenn die `positions`-Eigenschaft verändert worden ist, wird der Bogen aus der Liste gewählt, der der gewünschten Position am nächsten kommt.

Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften. Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften ein bestimmtes Objekt unterstützt.

Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer Kollision beteiligt sind, daneben findet sich die Bezeichnung des Objektes, mit der Sie es in der IR finden, um zu bestimmen, welche Eigenschaften benutzt werden können, um es zu verschieben.

Objekttyp | Objektbezeichnung
--- | ---
Articulationszeichen | `Script`
Balken | `Beam`
Dynamikzeichen (vertikal) | `DynamicLineSpanner`
Dynamikzeichen (horizontal) | `DynamicText`
Fingersatz | `Fingering`
Übungs-/Textmarken | `RehearsalMark`
Legatobögen | `Slur`
Text z. B. `^"text"` | `TextScript`
Bindebögen | `Tie`
N-tolen | `TupletBracket`

#### LilyPond Handbuch zum Lernen v2.26.0 (stable-branch).

- 1 Installing
  - 1.1 Graphical setup
  - 1.2 Command line setup
- 2 Tutorium
  - 2.1 Eine Quelldatei übersetzen
  - 2.2 Wie werden Eingabe-Dateien geschrieben
    - 2.2.1 Einfache Notation
      - Tonhöhen
      - Tondauern (Rhythmen)
      - Pausen
      - Taktartangabe
      - Tempobezeichnung
      - Notenschlüssel
      - Alles zusammen
    - 2.2.2 Arbeiten an Eingabe-Dateien
  - 2.3 Fehlerbehandlung
    - 2.3.1 Allgemeine Fehlerbehandlungstipps
    - 2.3.2 Einige häufige Fehler
  - 2.4 Wie die Handbücher gelesen werden sollten
    - 2.4.1 Ausgelassenes Material
    - 2.4.2 Anklickbare Beispiele
    - 2.4.3 Überblick über die Handbücher
- 3 Übliche Notation
  - 3.1 Notation auf einem System
    - 3.1.1 Taktstriche und Taktüberprüfung
      - Taktstriche
      - Taktüberprüfungen
    - 3.1.2 Tonhöhen und Tonartbezeichnungen (Vorzeichen)
      - Tonhöhenveränderungen
      - Tonartbezeichnungen (Vorzeichen)
      - Warnung bzgl. Tonartbezeichnungen und Tonhöhen
    - 3.1.3 Bindebögen und Legatobögen
      - Bindebögen
      - Legatobögen
      - Phrasierungsbögen
      - Achtung Bindebögen sind nicht Legatobögen
    - 3.1.4 Artikulationszeichen und Lautstärke
      - Artikulationszeichen
      - Fingersätze
      - Dynamik
    - 3.1.5 Text hinzufügen
    - 3.1.6 Automatische und manuelle Balken
    - 3.1.7 Zusätzliche rhythmische Befehle
      - Auftakt
      - N-tolen
      - Verzierungen
  - 3.2 Mehrere Noten auf einmal
    - 3.2.1 Musikalische Ausdrücke erklärt
      - Analogie mathematische Ausdrücke
      - Gleichzeitige musikalische Ausdrücke mehrere Notensysteme
      - Gleichzeitige musikalische Ausdrücke ein Notensystem
    - 3.2.2 Mehrere Notensysteme
    - 3.2.3 Notensysteme gruppieren
    - 3.2.4 Noten zu Akkorden verbinden
    - 3.2.5 Mehrstimmigkeit in einem System
  - 3.3 Lieder
    - 3.3.1 Einfache Lieder setzen
    - 3.3.2 Text an einer Melodie ausrichten
    - 3.3.3 Text zu mehreren Systemen
  - 3.4 Letzter Schliff
    - 3.4.1 Stücke durch Variablen organisieren
    - 3.4.2 Titel hinzufügen
    - 3.4.3 Absolute Notenbezeichnungen
    - 3.4.4 Nach dem Tutorium
- 4 Grundbegriffe
  - 4.1 Wie eine LilyPond-Eingabe-Datei funktioniert
    - 4.1.1 Einführung in die Dateistruktur von LilyPond
    - 4.1.2 Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck
    - 4.1.3 Musikalische Ausdrücke ineinander verschachteln
    - 4.1.4 Über die Nicht-Schachtelung von Klammern und Bindebögen
  - 4.2 Voice enthält Noten
    - 4.2.1 Ich höre Stimmen
    - 4.2.2 Stimmen explizit beginnen
    - 4.2.3 Stimmen und Text
  - 4.3 Kontexte und Engraver
    - 4.3.1 Was sind Kontexte?
    - 4.3.2 Kontexte erstellen
    - 4.3.3 Was sind Engraver?
    - 4.3.4 Kontexteigenschaften verändern
    - 4.3.5 Engraver hinzufügen und entfernen
  - 4.4 Erweiterung der Vorlagen
    - 4.4.1 Sopran und Cello
    - 4.4.2 Vierstimmige SATB-Partitur
    - 4.4.3 Eine Partitur von Grund auf erstellen
    - 4.4.4 Tipparbeit durch Variablen und Funktionen einsparen
    - 4.4.5 Partituren und Stimmen
- 5 Die Ausgabe verbessern
  - 5.1 Grundlagen für die Optimierung
    - 5.1.1 Grundlagen zur Optimierung
    - 5.1.2 Objekte und Schnittstellen
    - 5.1.3 Regeln zur Benennung von Objekten und Eigenschaften
    - 5.1.4 Optimierungsmethoden
      - Der `\override`-Befehl
      - Der `\revert`-Befehl
      - Der `\once`-Präfix
      - Der `\tweak`-Befehl
      - Der `\single`-Präfix
  - 5.2 Die Referenz der Programminterna
    - 5.2.1 Eigenschaften von Layoutobjekten
    - 5.2.2 Eigenschaften, die Schnittstellen besitzen können
    - 5.2.3 Typen von Eigenschaften
  - 5.3 Erscheinung von Objekten
    - 5.3.1 Sichtbarkeit und Farbe von Objekten
      - Die `stencil`-Eigenschaft (Matrize)
      - The `break-visibility`-Eigenschaft (unsichtbar machen)
      - Die `transparent`-Eigenschaft (durchsichtig)
      - Die `color`-Eigenschaft (Farbe)
    - 5.3.2 Größe von Objekten
    - 5.3.3 Länge und Dicke von Objekten
  - 5.4 Positionierung von Objekten
    - 5.4.1 Automatisches Verhalten
    - 5.4.2 within-staff (Objekte innerhalb des Notensystems)
      - The `direction`-Eigenschaft (Richtung)
      - Fingersatz
    - 5.4.3 Objekte außerhalb des Notensystems
      - Die `outside-staff-priority`-Eigenschaft
      - Der `\textLengthOn`-Befehl (Textlänge berücksichtigen)
      - Positionierung von Dynamikzeichen
      - Verändern der Größe von grobs
  - 5.5 Vertikale Abstände
  - 5.6 Kollision von Objekten
    - 5.6.1 Verschieben von Objekten
    - 5.6.2 Überlappende Notation in Ordnung bringen
      - Die `padding`-Eigenschaft (auffüllen)
      - Die `right-padding`-Eigenschaft (rechts auffüllen)
      - The `staff-padding`-Eigenschaft (Systemfüllungseigenschaft)
      - Die `self-alignment-X`-Eigenschaft (Selbstausrichtung-X-Eigenschaft)
      - Die `staff-position`-Eigenschaft (Position innerhalb des Systems)
      - Die `extra-offset`-Eigenschaft (Genaues Positionieren)
      - Die `positions`-Eigenschaft (Ausrichtungseigenschaft)
      - Die `force-hshift`-Eigenschaft (horizontale Verschiebunseigenschaft)
    - 5.6.3 Beispiel aus dem Leben
  - 5.7 Weitere Optimierungen
    - 5.7.1 Andere Benutzung von Optimierungen
      - Noten zwischen unterschiedlichen Stimmen überbinden
      - Eine Fermate in MIDI simulieren
    - 5.7.2 Variablen für Layout Anpassungen einsetzen
    - 5.7.3 Formatvorlagen
    - 5.7.4 Mehr Information
    - 5.7.5 Fortgeschrittene Optimierungen mit Scheme
- Appendix A Vorlagen
  - A.1 Eingebaute Vorlagen
    - A.1.1 SATB Vorlage
    - A.1.2 SSAATTBB Vorlage
  - A.2 Vorlagen für ein einzelnes System
    - A.2.1 Nur Noten
    - A.2.2 Noten und Text
    - A.2.3 Noten und Akkordbezeichnungen
    - A.2.4 Noten, Text und Akkordbezeichnungen
  - A.3 Klaviervorlagen
    - A.3.1 Piano Solo
    - A.3.2 Klavier und Gesangsstimme
    - A.3.3 Klavier mit eingeschobenem Gesangstext
  - A.4 Vorlagen für Streichquartette
    - A.4.1 Streichquartett
    - A.4.2 Streichquartettstimmen
  - A.5 Vokalensemble
    - A.5.1 SATB-Partitur
    - A.5.2 SATB-Partitur und automatischer Klavierauszug
    - A.5.3 SATB mit daran ausgerichteten Kontexten
    - A.5.4 SATB auf vier Systemen
    - A.5.5 Sologesang und zweistimmiger Refrain
    - A.5.6 Kirchenlieder
    - A.5.7 Psalmengesang
  - A.6 Orchestervorlagen
    - A.6.1 Orchester, Chor und Klavier
  - A.7 Vorlagen für alte Notation
    - A.7.1 Transkription mensuraler Musik
    - A.7.2 Vorlage zur Transkription von Gregorianik
  - A.8 Andere Vorlagen
    - A.8.1 Jazz-Combo
- Appendix B GNU Free Documentation License
- Appendix C Register