[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

3.1 Wie eine LilyPond-Eingabe-Datei funktioniert

@translationof How LilyPond input files work

Das LilyPond Eingabeformat hat eine ziemlich freie Form, so dass für erfahrene Benutzer viel Freiheit besteht, die Struktur ihrer Quelldateien anzulegen. Für Neulinge kann diese Flexibilität aber erst einmal verwirrend sein. In diesem Kapitel soll darum ein Teil dieser Strukturen dargestellt werden, vieles aber zur Vereinfachung auch weggelassen werden. Für eine komplette Beschreibung des Eingabeformats siehe (notation)Die Dateistruktur in Abschnitt ‘Die Dateistruktur’ in Notationsreferenz.


[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

3.1.1 Einführung in die Dateistruktur von LilyPond

@translationof Introduction to the LilyPond file structure

Ein grundlegendes Beispiel einer Eingabedatei für LilyPond lautet:

 
\version "2.21.3"

\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 – (notation)Partiturlayout in Abschnitt ‘Partiturlayout’ in Notationsreferenz und (notation)MIDI-Dateien erstellen in Abschnitt ‘MIDI-Dateien erstellen’ in Notationsreferenz.

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 (notation)Mehrere Partituren in einem Buch in Abschnitt ‘Mehrere Partituren in einem Buch’ in Notationsreferenz.

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 (notation)Die Dateistruktur in Abschnitt ‘Die Dateistruktur’ in Notationsreferenz.

Siehe auch

Eine vollständige Definition des Eingabeformats findet sich in (notation)Die Dateistruktur in Abschnitt ‘Die Dateistruktur’ in Notationsreferenz.


[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

3.1.2 Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck

@translationof Score is a (single) compound musical expression

Im vorigen Kapitel, Einführung in die Dateistruktur von LilyPond, wurde die allgemeine Struktur einer LilyPond-Quelldatei beschrieben. Aber anscheinend haben wir die wichtigste Frage ausgelassen, nämlich wie man herausfindet, was nach dem \score geschrieben werden soll.

In Wirklichkeit ist das aber gar kein Geheimnis. Diese Zeile ist die Antwort:

Ein \score Block enthält immer genau einen musikalischen Ausdruck.

Vielleicht wollen Sie noch einmal Musikalische Ausdrücke erklärt überfliegen. In diesem Kapitel wurde gezeigt, wie sich große musikalische Ausdrücke aus kleinen Teilen zusammensetzen. Noten können zu Akkorden verbunden werden usw. Jetzt gehen wir aber in die andere Richtung und betrachten, wie sich ein großer musikalischer Ausdruck zerlegen lässt. Zur Einfachheit soll nur ein Sänger und Klavier in unserem Beispiel eingesetzt werden. Wir brauchen keine Systemgruppe (StaffGroup), die einfach nur bewirkt, dass die Systeme mit einer Klammer zusammengefasst werden; sie wird also entfernt. Wir brauchen aber einen Sänger und ein Klavier.

 
\score {
  <<
    \new Staff = "Sänger" <<
    >>
    \new PianoStaff = "Klavier" <<
    >>
  >>
  \layout { }
}

Hier wurden die Systeme (Staff) benannt: „Sänger“ und „Klavier“. Das ist zwar nicht direkt notwendig, aber es ist gut, sich diese Schreibweise anzugewöhnen, damit man immer sofort erkennt, um welches System es sich handelt.

Zur Erinnerung: mit << … >> (an Stelle von { … }) werden Noten gleichzeitig gesetzt. Dadurch werden Vokalstimme und Klaviersystem übereinander ausgegeben. Die << … >>-Konstruktion ist für das Sänger-System nicht notwendig, wenn hier nur die Noten einer einzigen Stimme eingefügt werden sollen, aber << … >> anstelle von geschwungenen Klammern sind notwendig, sobald mehr als eine Stimme oder etwa eine Notenstimme und Gesangstext eingefügt werden sollen. In unserem Fall soll eine Stimme mit Gesangstext notiert werden, sodass die spitzen Klammern benötigt werden. Die Noten sollen erst später hinzugefügt werden, hier also erst mal nur ein paar Platzhalternoten und Text. Wenn Sie sich nicht erinnern, wie man Gesangstext notiert, lesen Sie noch einmal \addlyrics in @ref{Setting simple songs}.

 
\score {
  <<
    \new Staff = "Sänger" <<
      \new Voice = "Singstimme" { c'1 }
      \addlyrics { And }
    >>
    \new PianoStaff = "Klavier" <<
      \new Staff = "oben" { c'1 }
      \new Staff = "unten" { c'1 }
    >>
  >>
  \layout { }
}

[image of music]

Jetzt haben wir viel mehr Details. Wir haben ein System (engl. staff) für einen Sänger, in dem sich wieder eine Stimme (engl. voice) befindet. Voice bedeutet für LilyPond eine Stimme (sowohl gesungen als auch gespielt) und evtl. zusätzlich einen Text. Zusätzlich werden zwei Notensysteme für das Klavier mit dem Befehl \new PianoStaff gesetzt. PianoStaff bezeichnet die Piano-Umgebung (etwa durchgehende Taktstriche und die geschweifte Klammer am Anfang), in der dann wiederum zwei eigene Systeme ("oben" für die rechte Hand und "unten" für die linke) erstellt werden, auch wenn das untere System noch einen Bassschlüssel erhalten muss.

Jetzt könnte man in diese Umgebung Noten einfügen. Innerhalb der geschweiften Klammern neben \new Voice = "Singstimme" könnte man

 
\relative {
  r4 d''8\noBeam g, c4 r
}

schreiben. Aber wenn man seine Datei so direkt schreibt, wird der \score-Abschnitt sehr lang und es wird ziemlich schwer zu verstehen, wie alles zusammenhängt. Darum bietet es sich an, Bezeichner (oder Variablen) zu verwenden. Sie wurden zu Beginn des vorigen Abschnitts erklärt, erinnern Sie sich? Damit wir sicher gehen können, dass der Inhalt der text-Variable als Gesangstext interpretiert wird, wird ihm \lyricmode voran gesetzt. Wie \addlyrics wird hiermit in den Eingabemodus für Gesangstext gewechselt. Ohne diesen Befehl würde LilyPond versuchen, den Inhalt der Variable als Noten zu interpretieren und dabei eine Menge Fehler produzieren. (Einige andere Eingabemodi sind außerdem noch verfügbar, siehe (notation)Input modes in Abschnitt ‘Input modes’ in Notationsreferenz.)

Also haben wir, wenn wir ein paar Noten und einen Bassschlüssel für die linke Hand hinzufügen, folgendes Beispiel:

 
melodie = \relative { r4 d''8\noBeam g, c4 r }
text    = \lyricmode { And God said, }
oben    = \relative { <g' d g,>2~ <g d g,> }
unten   = \relative { b,2 e }

\score {
  <<
    \new Staff = "Sänger" <<
      \new Voice = "Singstimme" { \melodie }
      \addlyrics { \text }
    >>
    \new PianoStaff = "Klavier" <<
      \new Staff = "oben" { \oben }
      \new Staff = "unten" {
        \clef "bass"
        \unten
      }
    >>
  >>
  \layout { }
}

[image of music]

Beim Schreiben (oder Lesen) einer \score-Umgebung sollte man langsam und sorgfältig vorgehen. Am besten fängt man mit dem größten Gebilde an und definiert dann die darin enthaltenen kleineren der Reihe nach. Es hilft auch, sehr genau mit den Einzügen zu sein, so dass jede Zeile, die der gleichen Ebene angehört, wirklich horizontal an der gleichen Stelle beginnt.

Siehe auch

Benutzerhandbuch: (notation)Struktur einer Partitur in Abschnitt ‘Struktur einer Partitur’ in Notationsreferenz.


[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

3.1.3 Musikalische Ausdrücke ineinander verschachteln

@translationof Nesting music expressions

Notenzeilen (die ‚Staff‘-Kontexte) müssen nicht unbedingt gleich zu Beginn erzeugt werden – sie können auch zu einem späteren Zeitpunkt eingeführt werden. Das ist vor allem nützlich, um (music-glossary)ossia in Abschnitt ‘Ossias’ in Glossar zu erzeugen. Hier folgt ein kurzes Beispiel, wie eine zusätzliche temporäre Notenzeile für nur drei Noten erzeugt werden kann:

 
\new Staff {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff {
        f8 f c
      }
    >>
    r4 |
  }
}

[image of music]

Wie man sieht, ist die Größe des Notenschlüssels dieselbe, wie sie auch bei einer Schlüsseländerung auftritt – etwas kleiner als der Schlüssel am Beginn einer Notenzeile. Dies ist normal für Notenschlüssel, die innerhalb einer Notenzeile gesetzt werden.

Der Ossia-Abschnitt kann auch oberhalb der Hauptnotenzeile gesetzt werden:

 
\new Staff = "Hauptzeile" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "Hauptzeile"
      } { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Dieses Beispiel benutzt den \with-Befehl, der später noch genauer erklärt wird. Damit kann das Standardverhalten einer einzelnen Notenzeile geändert werden: Hier wird einfach angegeben, dass die neue Notenzeile oberhalb der bereits existierenden Zeile mit Namen „Hauptzeile“ plaziert werden soll, anstatt standardmäßig unterhalb.

Siehe auch

Ossia werden oft ohne Notenschlüssel und Taktangabe gedruckt, meist auch etwas kleiner als die anderen Notenzeilen. Dies ist natürlich auch in LilyPond möglich, benötigt aber Befehle, die bisher noch nicht vorgestellt wurden. Siehe Größe von Objekten und (notation)Ossia-Systeme in Abschnitt ‘Ossia-Systeme’ in Notationsreferenz.


[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

3.1.4 Über die Nicht-Schachtelung von Klammern und Bindebögen

@translationof On the un-nestedness of brackets and ties

Sie haben bisher zahlreiche verschiedene Arten von Klammern und Klammer-artigen Konstruktionen beim Schreiben von Musik mit LilyPond kennengelernt. Diese folgen verschiedenen Regeln, die zu Beginn vielleicht verwirrend wirken. Bevor die genauen Regeln vorgestellt werden, wollen wir die diversen Klammerarten und Arten von Klammer-artigen Konstrukten kurz rekapitulieren:

KlammerartFunktion
{ … }Umschließt ein sequenzielles Musiksegment
< … >Umschließt die Noten eines Akkords
<< … >>Umschließt parallele Musikausdrücke
( … )Markiert den Beginn und das Ende eines Haltebogens
\( … \)Markiert den Beginn und das Ende eines Phasierungsbogens
[ … ]Markiert den Beginn und das Ende eines manuell erzeugten Balkens

Zusätzlich sollten vielleicht noch einige weiter Konstruktionen erwähnt werden, die Noten auf irgendeine Art und Weise verbinden: Haltebögen (durch eine Tilde ~ markiert), N-tolen (als \tuplet x/y { … } geschrieben) und Vorschlagnoten (als \grace{ … } notiert).

Außerhalb von LilyPond fordert die übliche Benutzung von Klammern, dass die entsprechenden Arten korrekt verschachtelt werden, wie z.B. in << [ { ( … ) } ] >>. Die schließenden Klammern kommen dabei in der umgekehrten Reihenfolge wie die öffnenden Klammern vor. Dies ist auch in LilyPond ein Muss für die drei Klammerarten, die in obiger Tabelle mit dem Wort ‚Umschließt‘ beschrieben werden – sie müssen korrekt geschachtelt werden. Die restlichen Klammer-artigen Konstruktionen (durch ‚Markiert‘ in der Tabelle oben beschrieben), die Haltebögen und die Triolen brauchen jedoch mit den anderen Klammern oder Klammer-artigen Konstrukten nicht unbedingt korrekt geschachtelt werden. Tatsächlich sind sie auch keine Klammern in dem Sinn, dass sie etwas umschließen, sondern viel mehr Indikatoren, an welcher Stelle ein bestimmtes musikalisches Objekt beginnt oder endet.

So kann also z.B. einen Phrasierungsbogen vor einem manuellen Balken beginn, jedoch schon vor dem Ende des Balkens enden. Dies mag zwar musikalisch wenig Sinn ergeben, ist aber in LilyPond auch möglich:

 
\relative { g'8\( a b[ c b\) a] g4 }

[image of music]

Im Allgemeinen können die verschiedenen Klammerarten, Klammer-artigen Konstruktionen, Haltebögen, Triolen und Vorschlagnoten beliebig kombiniert werden. Das folgende Beispiel zeigt einen Balken, der in eine Triole reicht (Zeile 1), eine Bindebogen, der ebenfalls in eine Triole reicht (Zeile 2), einen Balken und einen Bindebogen in eine Triole, ein Haltebogen, der über zwei Triolen läuft, sowie einen Phrasierungsbogen, der in einer Triole beginnt (Zeilen 3 und 4).

 
\relative {
  r16[ g' \tuplet 3/2 { r16 e'8] }
  g,16( a \tuplet 3/2 { b16 d) e }
  g,8[( a \tuplet 3/2 { b8 d) e~] } |
  \tuplet 5/4 { e32\( a, b d e } a4.\)
}

[image of music]


[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]

Dieses Dokument wurde erzeugt von gub am 13. Juli 2020 durch texi2html 1.82.

Andere Sprachen: English, català, česky, español, français, magyar, italiano, 日本語, nederlands.
Über die automatische Sprachauswahl.