4.1.1 Einführung in die Dateistruktur von LilyPond
Ein grundlegendes Beispiel einer Eingabedatei für LilyPond lautet:
\version "2.24.4" \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.