4.1.1 Einführung in die Dateistruktur von LilyPond (LilyPond Handbuch zum Lernen)

#### 4.1.1 Einführung in die Dateistruktur von LilyPond

Ein grundlegendes Beispiel einer Eingabedatei für LilyPond lautet:

    \version "2.26.0"

    \header { }

    \score {
       … zusammengesetzter Musik-Ausdruck …   % Die gesamten Noten kommen hier hin!
      \layout { }
      \midi { }
    }

Zu diesem Muster gibt es viele Variationen, aber obiges Beispiel stellt eine hilfreiche Ausgangsbasis dar.

Bis jetzt hat keines der verwendeten Beispiele den `\score{}` Befehl gebraucht. Das liegt daran, dass LilyPond automatisch fehlende Befehle hinzufügt, sollten sie fehlen. Konkret betrachtet LilyPond eine Eingabe in der Form

    \relative {
      c''4 a d c
    }

als eine abgekürzte Form von

    \book {
      \score {
        \new Staff {
          \new Voice {
            \relative {
              c''4 a b c
            }
          }
        }
        \layout { }
      }
    }

Mit anderen Worten: Wenn die Eingabedatei einen einfachen Musik-Ausdruck enthält, wird LilyPond die Datei so interpretieren, als ob dieser Ausdruck in den oben gezeigten Befehlen eingegeben wurde. Diese nötige Struktur wird automatisch im Speicher beim Aufruf von LilyPond erzeugt, ohne dass der Benutzer davon etwas bemerkt.

Ein Wort der Warnung ist jedoch angebracht! Viele der Beispiele in der Dokumentation von LilyPond lassen die `\new Staff` und `\new Voice` Befehle zur Erzeugung einer Notenzeile und einer Stimme (beides ist in LilyPond ein sogenannter Kontext) bewusst aus, damit sie implizit von LilyPond im Speicher erzeugt werden. Für einfache Dokumente funktioniert das im Allgemeinen sehr gut, für komplexere Partituren können dadurch aber unerwartete Ergebnisse entstehen, teilweise sogar unerwartete leere Notenzeilen. Um die entsprechenden Kontexte in diesem Fall explizit zu erzeugen, siehe Kontexte und Engraver.

Achtung: Wenn mehr als ein paar Zeilen an Musik eingegeben werden, empfiehlt es sich, die Notenzeilen und die Stimmen immer explizit mit `\new Staff` und `\new Voice` zu erzeugen.

Im Moment wollen wir aber zu unserem ersten Beispiel zurückkehren und nur den `\score`-Befehl näher betrachten.

Eine Partitur (`\score`) muss immer genau einen musikalischen Ausdruck enthalten. Es sei daran erinnert, dass ein musikalischer alles mögliche sein kann. Angefangen bei einer einzelnen Note bis hin zu riesigen zusammengesetzten Ausdrücken wie

    {
      \new StaffGroup <<
         … füge hier die gesamte Partitur einer Wagner Oper ein …
      >>
    }

Da sich alles innerhalb der geschweiften Klammern `{ … }` befindet, wird es wie ein einziger musikalischer Ausdruck behandelt.

Wie wir oben schon gesehen haben kann der `\score` Block auch andere Dinge enthalten, wie etwa

    \score {
      { c'4 a b c' }
      \header { }
      \layout { }
      \midi { }
    }

Wie man sieht, sind die drei Befehle `\header`, `\layout` und `\midi` von spezieller Natur: Im Gegensatz zu vielen anderen Befehlen, die auch mit einem `\` beginnen, liefern sie keinen Musikausdruck und sind auch nicht Teil eines musikalischen Ausdrucks. Daher können sie sowohl innerhalb eines `\score`-Blocks als auch außerhalb platziert werden. Tatsächlich werden einige dieser Befehle meist außerhalb des `\score`-Blocks gesetzt, z.B. findet sich der `\header` sehr oft oberhalb der `\score`-Umgebung. Das funktioniert genauso gut.

Zwei bisher noch nicht aufgetauchte Befehle sind `\layout { }` und `\midi {}`. Wenn sie in einer Datei vorkommen, führt dies dazu, dass LilyPond eine druckfähige PDF-Datei bzw. eine MIDI-Ausgabe erzeugt. Genauer beschrieben werden sie im Benutzerhandbuch – Partiturlayout und MIDI-Dateien erstellen.

Ihr LilyPond Code kann auch mehrere `\score`-Blöcke enthalten. Jeder davon wird als eigenständige Partitur interpretiert, die allerdings alle in dieselbe Ausgabedatei platziert werden. Ein `\book`-Befehl ist nicht explizit notwendig – er wird implizit erzeugt. Wenn jedoch für jeden `\score`-Block in einer einzigen `.ly`-Datei eine eigene Ausgabe-Datei erzeugt werden soll, dann muss jeder dieser Blöcke in einen eigenen `\book`-Block gesetzt werden: Jeder `\book`-Block erzeugt dann eine eigene Ausgabedatei.

Zusammenfassung:

Jeder `\book`-Block erzeugt eine eigene Ausgabedatei (z.B. eine PDF-Datei). Wenn Sie keinen derartigen Block explizit angegeben haben, setzt LilyPond den gesamten Dateiinhalt innerhalb eines einzigen impliziten `\book`-Blocks.

Jeder `\score`-Block beschreibt ein eigenständiges Musikstück innerhalb des `\book`-Blocks.

Jeder `\layout`-Block wirkt sich auf den `\score`- oder `\book`-Block aus, in dem er auftritt. So wirkt z.B. ein `\layout`-Block innerhalb eines `\score`-Blocks nur auf diesen einen Block und seinen gesamten Inhalt, ein `\layout`-Block außerhalb eines `\score`-Blocks (und daher innerhalb des implizit erzeugten oder explizit angegebenen `\book`-Blocks) jedoch auf alle `\score`-Blocks innerhalb dieses `\book`-Blocks.

Nähere Details finden sich im Abschnitt Mehrere Partituren in einem Buch.

Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen, wie auch in Stücke durch Variablen organisieren gezeigt. Alle Vorlagen verwenden diese Möglichkeit:

    melodie = \relative {
      c'4 a b c
    }

    \score {
      \melodie
    }

Wenn LilyPond diese Datei analysiert, nimmt es den Inhalt von `melodie` (alles nach dem Gleichheitszeichen) und fügt ihn immer dann ein, wenn ein `\melodie` vorkommt. Die Namen sind frei wählbar, die Variable kann genauso gut `melodie`, `GLOBAL`, `rechteHandKlavier`, oder `foofoobarbaz` heißen. Als Variablenname kann fast jeder beliebige Name benutzt werden, allerdings dürfen nur Buchstaben vorkommen (also keine Zahlen, Unterstriche, Sonderzeichen, etc.) und er darf nicht wie ein LilyPond-Befehl lauten. Für mehr Information siehe Tipparbeit durch Variablen und Funktionen einsparen. Die genauen Einschränkungen sind beschrieben in Die Dateistruktur.

#### Siehe auch

Eine vollständige Definition des Eingabeformats findet sich in Die Dateistruktur.

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