2.2.2 Arbeiten an Eingabe-Dateien (LilyPond Handbuch zum Lernen)

#### 2.2.2 Arbeiten an Eingabe-Dateien

LilyPonds Quelldateien ähneln Dateien in den meisten Programmiersprachen: Sie enthalten eine Versionsbezeichnung, es ist auf Groß- und Kleinschreibung zu achten und Leerzeichen werden ignoriert. Ausdrücke werden mit geschweiften Klammern `{ }` eingeklammert und mit dem Prozentzeichen ‘`%`’ auskommentiert oder mit ‘`%{ … %}`’ umgeben.

Wenn das jetzt unverständlich erscheint, sind hier die Erklärungen:

- Versionsbezeichnung: Jede LilyPond-Datei soll eine Versionsbezeichnung enthalten. Eine Versionsbezeichnung ist eine Zeile, die die Version von LilyPond deklariert, für die die Datei geschrieben wurde, wie in dem Beispiel:

      \version "2.26.0"

  Üblicherweise wird die Versionsbezeichnung ganz oben in die Datei geschrieben.

  Die Versionsbezeichnung ist aus zwei Gründen wichtig: 1. kann man mit ihrer Hilfe automatische Aktualisierungen der Eingabedateien vornehmen, wenn sich die LilyPond-Syntax ändern sollte. 2. wird hier die Version von LilyPond beschrieben, die nötig ist, um die Datei zu kompilieren.

  Wenn die Versionsbezeichnung in einer Datei fehlt, gibt LilyPond eine Warnung während der Kompilation der Datei aus.

- Groß- und Kleinschreibung: Die Bedeutung eines Zeichens verändert sich, je nachdem, ob es groß (‘`A`’, ‘`B`’, ‘`S`’, ‘`T`’) oder klein (‘`a`’, ‘`b`’, ‘`s`’, ‘`t`’) geschrieben wird. Noten müssen immer klein geschrieben werden, ‘`{ c d e }`’ funktioniert, während ‘`{ C D E }`’ einen Fehler produziert.
- Leerzeichen: Es spielt keine Rolle, wie viele Leerzeichen oder Tabulatoren oder leere Zeilen sich zwischen den Zeichen der Quelldatei befinden.

      { c d e }

  bedeutet das Gleiche wie

      { c       d e }

  oder

      { c4                        d
                           e }

  Natürlich ist das letzte Beispiel etwas schwer zu lesen. Eine gute Daumenregel ist es, Code-Blöcke mit zwei Leerzeichen einzurücken:

      {
        c4 d e
      }

  Leerzeichen sind jedoch nötig, um viele syntaktische Elemente voneinander zu trennen. Leerzeichen können also immer hinzugefügt werden, aber sie dürfen nicht entfernt werden. Da fehlende Leerzeichen sehr seltsame Fehlermeldungen hervorrufen können, wird es nahe gelegt, immer ein Leerzeichen vor und nach jedem syntaktischen Element, etwa vor und nach geschweiften Klammern, einzufügen.

- Ausdrücke: Auch der kleinste Abschnitt an LilyPond-Code muss in { geschweifte Klammern } eingeschlossen werden. Diese Klammern zeigen LilyPond an, dass es sich um einen zusammengehörenden musikalischen Ausdruck handelt, genauso wie Klammern ‚()‘ in der Mathematik. Die Klammern sollten von jeweils einem Leerzeichen umgeben sein, um Zweideutigkeiten auszuschließen, es sei denn, sie befinden sich am Anfang oder Ende einer Zeile.

  Ein LilyPond-Befehl gefolgt von einem einfachen Ausdruck in Klammern (wie etwa ‚`\relative c' { … }`‘) wird auch als ein einzelner Musikausdruck gewertet.

- Kommentare: Ein Kommentar ist eine Bemerkung für den menschlichen Leser einer Quelldatei, es wird bei der Dateianalyse durch das Programm ignoriert, so dass es also keine Auswirkung auf die Druckausgabe der Noten hat. Es gibt zwei verschiedene Typen von Kommentaren. Das Prozentzeichen ‘`%`’ geht einem Zeilen-Kommentar voraus: Alles nach diesem Zeichen wird in dieser Zeile ignoriert. Üblicherweise wird ein Kommentar über dem Code gesetzt, auf den es sich bezieht.

      a4 a a a
      % Dieser Kommentar bezieht sich auf die nächste Zeile mit den zwei Hs
      b2 b

  Ein Block-Kommentar ist ein ganzer Abschnitt mit einem Kommentar. Alles, was von `%{` und `%}` umgeben ist, wird ignoriert. Das heißt, dass sich ein Block-Kommentar nicht ein einem anderen Blockkommentar befinden kann. Wenn Sie das versuchen sollten, beendet schon das erste `%}` beide Block-Kommentare. Das folgende Beispiel zeigt eine mögliche Anwendung von Kommentaren.

      % Noten für twinkle twinkle hier
        c4 c g' g a a g2

      %{
          Diese Zeilen, und die Noten unten werden
          ignoriert, weil sie sich in einem Block-Kommentar
          befinden.

          f4 f e e d d c2
      %}

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