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

3.3 Arbeiten an Eingabe-Dateien

@translationof Working with input files


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

3.3.1 LilyPond-Dateien einfügen

@translationof Including LilyPond files

Ein größeres Projekt kann in einzelne Dateien aufgeteilt werden. Um eine andere Datei einzubinden, kann der Befehl

 
\include "andereDatei.ly"

benutzt werden.

Die Zeile \include "andereDatei.ly" benimmt sich genauso, also ob der Inhalt der Datei ‘andereDatei.ly’ komplett in die Hauptdatei eingefügt werden würde. So kann man für ein größeres Projekt die einzelnen Stimmen der Instrumente getrennt notieren und sie dann in einer Partitur-Datei benutzen. Meistens werden in den eingefügten Dateien einige Variablen definiert, die dann auch in der Hauptdatei eingesetzt werden können. Mit Marken (Tags) gekennzeichnete Abschnitte können eingesetzt werden, um die entsprechenden Noten etc. an verschiedenen Stellen in der Datei zur Verfügung zu stellen. Siehe auch Verschiedene Editionen aus einer Quelldatei.

Auf Dateien im aktuellen Verzeichnis kann einfach mit dem Dateinamen nach dem \include-Befehl verwiesen werden. Dateien an anderen Stellen können eingebunden werden, indem entweder ein vollständiger Pfad oder ein relativer Pfad zu der Datei angegeben wird. Hierbei sollten die für UNIX typischen Schrägstriche (/) und nicht die rückwärtsgeneigten von Windows (\) verwendet werden, um die Verzeichnisse zu trennen. Wenn etwa die Datei ‘kram.ly’ ein Verzeichnis höher liegt als das aktuelle Verzeichnis, sollte der Befehl so aussehen:

 
\include "../kram.ly"

Wenn die Orchesterstimmen andererseits in einem Unterordner mit der Bezeichnung stimmen liegen, sieht er folgendermaßen aus:

 
\include "stimmen/VI.ly"
\include "stimmen/VII.ly"
... etc

Dateien, die eingebunden werden sollen, können selber auch wiederum ein \include enthalten. Diese Einbindung zweiter Ebene werden erst interpretiert, wenn sie sich in der Hauptdatei befinden, sodass die Pfadangaben hier nicht relativ zur eingebundenen Datei, sondern relativ zur Hauptdatei gesetzt werden müssen. Dieses Verhalten kann jedoch auch verändert werden, indem man lilypond die Option ‘-drelative-includes’ auf der Kommandozeile zuweist (oder indem man den Befehl #(ly:set-option 'relative-includes #t) an den Beginn der Quelldatei schreibt). Mit relative-includes wird der Pfad jedes \include-Befehls als relativ zu der Datei angenommen, in der sich der Befehl befindet. Dieses Verhalten wird empfohlen und wird in zukünftigen Versionen von LilyPond den Standard darstellen.

Dateien können auch aus einem Verzeichnis eingebunden werden, dass im Suchpfad von LilyPond liegt. Hierzu muss auf der Kommandozeile das entsprechende Verzeichnis angegeben werden und die Dateien, die eingebunden werden, müssen nur mit ihrem Namen notiert sein. Wenn etwa die Datei ‘Haupt.ly’ kompiliert werden soll, die Dateien aus dem Unterverzeichnis ‘stimmen’ einbindet, müssen sie sich im Verzeichnis von ‘Haupt.ly’ befinden und dann LilyPond folgendermaßen aufrufen:

 
lilypond --include=stimmen Haupt.ly

In ‘Haupt.ly’ steht:

 
\include "VI.ly"
\include "VII.ly"
... usw.

Dateien, die in vielen Partituren verwendet werden sollen, können im LilyPond-Verzeichnis ‘../ly’ gespeichert werden. (Die Stelle, an der dieses Verzeichnis sich befindet, hängt vom Betriebssystem ab, siehe hierzu (learning)Mehr Information in Abschnitt ‘Mehr Information’ in Handbuch zum Lernen). Dateien in diesem Verzeichnis können einfach mit ihrem Namen eingefügt werden. So werden auch die Sprachdateien wie etwa ‘deutsch.ly’ eingefügt.

LilyPond lädt eine Anzahl an Dateien, wenn das Programm aufgerufen wird. Diese Dateien sind für den Benutzer nicht ersichtlich, aber die Dateien können identifiziert werden, indem LilyPond auf der Kommandozeile mit Option aufgerufen wird: lilypond --verbose. Hiermit wird neben anderer Information auch eine Liste von Pfaden und Dateien aufgeführt, die LilyPond benutzt. Die wichtigeren Dateien werden im Abschnitt (learning)Mehr Information in Abschnitt ‘Mehr Information’ in Handbuch zum Lernen besprochen. Diese Dateien können verändert werden, aber Änderungen gehen verloren, wenn eine neue LilyPond-Version installiert wird.

Einige einfache Beispiele, die die Benutzung von \include demonstrieren, sind dargestellt in (learning)Partituren und Stimmen in Abschnitt ‘Partituren und Stimmen’ in Handbuch zum Lernen.

Siehe auch

Handbuch zum Lernen: (learning)Mehr Information in Abschnitt ‘Mehr Information’ in Handbuch zum Lernen, (learning)Partituren und Stimmen in Abschnitt ‘Partituren und Stimmen’ in Handbuch zum Lernen.

Bekannte Probleme und Warnungen

Wenn eine Datei eingebunden wird, deren Name einer Datei aus dem Installationsverzeichnis von LilyPond entspricht, wird die installierte Datei anstelle der eigenen verwendet.


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

3.3.2 Verschiedene Editionen aus einer Quelldatei

@translationof Different editions from one source

Es gibt verschiedene Funktionen, die es möglich machen, unterschiedliche Versionen einer Partitur aus der gleichen Quelldatei zu produzieren. Variablen werden am besten eingesetzt, wenn es darum geht, längere Notenpassagen und/oder Anmerkungen/Textmarken miteinander auf verschiedene Weise zu kombinieren. Tag-Marken dagegen werden am besten eingesetzt, wenn eine von mehreren kurzen alternativen Notenabschnitten ausgewählt werden soll und können auch eingesetzt werden, um Musikabschnitte an unterschiedlichen Stellen zusammenzufügen.

Egal welche Methode am Ende eingesetzt wird: Es erleichtert die Arbeit in jedem Fall, wenn die eigentlichen Noten und die Struktur der Partitur voneinander getrennt notiert werden – so kann die Struktur geändert werden, ohne dass man Änderungen an den Noten vornehmen muss.


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

Variablen benutzen

@translationof Using variables

Wenn Notenabschnitt in Variablen definiert werden, können sie an unterschiedlichen Stellen in der Partitur eingesetzt werden, siehe auch (learning)Stücke durch Variablen organisieren in Abschnitt ‘Stücke durch Variablen organisieren’ in Handbuch zum Lernen. Zum Beispiel enthält eine Vokalpartitur für ein a cappella Stück oft einen Klavierauszug, der das Einüben einfacher macht. Der Klavierauszug enthält die gleichen Noten, sodass man sie nur einmal notieren muss. Noten aus zwei Variablen können auf einem System kombiniert werden, siehe Automatische Kombination von Stimmen. Hier ein Beispiel:

 
sopranoMusic = \relative { a'4 b c b8( a) }
altoMusic = \relative { e'4 e e f }
tenorMusic = \relative { c'4 b e d8( c) }
bassMusic = \relative { a4 gis a d, }
allLyrics = \lyricmode {King of glo -- ry }
<<
  \new Staff = "Soprano" \sopranoMusic
  \new Lyrics \allLyrics
  \new Staff = "Alto" \altoMusic
  \new Lyrics \allLyrics
  \new Staff = "Tenor" {
    \clef "treble_8"
    \tenorMusic
  }
  \new Lyrics \allLyrics
  \new Staff = "Bass" {
    \clef "bass"
    \bassMusic
  }
  \new Lyrics \allLyrics
  \new PianoStaff <<
    \new Staff = "RH" {
      \set Staff.printPartCombineTexts = ##f
      \partCombine
      \sopranoMusic
      \altoMusic
    }
    \new Staff = "LH" {
      \set Staff.printPartCombineTexts = ##f
      \clef "bass"
      \partCombine
      \tenorMusic
      \bassMusic
    }
  >>
>>

[image of music]

Unterschiedliche Partituren, die entweder nur den Chor oder das Klavier zeigen, können produziert werden, indem die Struktur verändert wird; die Noten müssen dazu nicht verändert werden.

Für längere Partituren können Variablen in eigene Dateien notiert werden, die dann eingebunden werden, siehe LilyPond-Dateien einfügen.


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

Marken benutzen

@translationof Using tags

Der \tag #'TeilA-Befehl markiert einen musikalischen Ausdruck mit der Bezeichnung TeilA. Ausdrücke, die auf diese Weise markiert werden, können mit ihrer Bezeichnung später ausgewählt bzw. ausgefiltert werden. Das geschieht mit den Befehlen \keepWithTag #'Bezeichnung bzw. \removeWithTag #'Bezeichnung. Die Wirkung dieser Filter auf die markierten Notenabschnitte ist wie folgt:

FilterResultat
Markierte Noten mit vorgesetztem \keepWithTag #'BezeichnungUnmarkierte Noten und Noten mit der Marke Bezeichnung werden gesetzt, Noten mit einer anderen Marke werden nicht angezeigt.
Markierte Noten mit vorgesetztem \removeWithTag #'BezeichnungUnmarkierte Noten und Noten mit einer anderen Marke als Bezeichnung wird angezeigt, Noten markiert mit Bezeichnung werden nicht angezeigt.
Markierte Noten, weder mit vorgesetztem \keepWithTag noch \removeWithTagAlle markierten und unmarkierten Noten werden angezeigt.

Die Argumente der Befehle \tag, \keepWithTag und \removeWithTag sollten ein Symbol sein (wie etwa #'score oder #'part), gefolgt von einem musikalischen Ausdruck.

Im folgenden Beispiel erscheinen zwei Versionen der Noten, eine zeigt Triller in normaler Notation, die andere zeigt sie ausgeschrieben:

 
music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand { \repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \keepWithTag #'trills \music
}
\score {
  \keepWithTag #'expand \music
}

[image of music]

Entsprechend können auch Abschnitte ausgeschlossen werden; das erfordert manchmal weniger Schreibarbeit:

 
music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand {\repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \removeWithTag #'expand
  \music
}
\score {
  \removeWithTag #'trills
  \music
}

[image of music]

Marken können auch auf Artikulationen, Text usw angewendet werden, indem man ihnen

 
-\tag #'your-tag

voranstellt (jedoch nach der Note, an die sie gebunden sind). Mit diesem Code etwa könnte man entweder Fingersatz oder aber einen Text ausgeben:

 
c1-\tag #'finger ^4
c1-\tag #'warn ^"Achtung!"

Mehrfache Marken können mithilfe von mehreren \tag-Befehlen notiert werden:

 
music = \relative c'' {
  \tag #'a \tag #'both { a4 a a a }
  \tag #'b \tag #'both { b4 b b b }
}
<<
\keepWithTag #'a \music
\keepWithTag #'b \music
\keepWithTag #'both \music
>>

[image of music]

Mehrfache \removeWithTag-Filter können auf einen musikalischen Ausdruck angewendet werden, um mehrere unterschiedliche markierte Abschnitte aus dem Druckbild zu entfernen.

 
music = \relative c'' {
\tag #'A { a4 a a a }
\tag #'B { b4 b b b }
\tag #'C { c4 c c c }
\tag #'D { d4 d d d }
}
{
\removeWithTag #'B
\removeWithTag #'C
\music
}

[image of music]

Zwei oder mehr \keepWithTag-Filter in einem musikalischen Ausdruck bewirken, dass alle markierten Abschnitte entfernt werden, weil der erste Befehl alle markierten Abschnitt außer dem im Befehl genannten wegfiltert und der zweite Befehl dann auch diesen eben genannten zusätzlich entfernt.

Manchmal will man Noten an einem bestimmen Platz in existierenden Noten einfügen. Dafür kann entweder \pushToTag oder \appendToTag benutzt werden, um Material hinter bzw. vor den Elementen (elements) der existierenden Noten einzufügen. Nicht alle musikalischen Konstruktionen haben Elemente, aber sequentielle und simultane Noten sind ziemlich gute Kandidaten:

 
test = { \tag #'here { \tag #'here <<c''>> } }

{
  \pushToTag #'here c'
  \pushToTag #'here e'
  \pushToTag #'here g' \test
  \appendToTag #'here c'
  \appendToTag #'here e'
  \appendToTag #'here g' \test
}

[image of music]

Beide Befehle erhalten einen Tag, das Material, das bei jedem Auftreten des Tags eingefügt werden soll und den Ausdruck, der mit dem Tag versehen ist. Der Befehl stellt sicher, dass alle Änderungen kopiert werden, sodass das ursprüngliche \test seine Bedeutung behält.

Siehe auch

Handbuch zum Lernen: (learning)Stücke durch Variablen organisieren in Abschnitt ‘Stücke durch Variablen organisieren’ in Handbuch zum Lernen.

Notationsreferenz: Automatische Kombination von Stimmen, LilyPond-Dateien einfügen.


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

Globale Einstellungen benutzen

@translationof Using global settings

Man kann globale Einstellungen aus einer externen Datei einfügen:

 
lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly

Einstellungsgruppen, wie etwa Seitengröße, Schriftart oder Schriftschnitt, können in eigenen Dateien gespeichert werden. Das ermöglicht es, aus der gleichen Partitur unterschiedliche Editionen zu erstellen bzw. Standardeinstellungen für eine ganze Anzahl von Partituren wiederzuverwenden, indem man einfach die entsprechende Einstellungsdatei angibt.

Diese Technik funktioniert auch gut für Formatvorlagen, wie in (learning)Formatvorlagen in Abschnitt ‘Formatvorlagen’ in Handbuch zum Lernen behandelt.

Siehe auch

Handbuch zum Lernen: (learning)Stücke durch Variablen organisieren in Abschnitt ‘Stücke durch Variablen organisieren’ in Handbuch zum Lernen, (learning)Formatvorlagen in Abschnitt ‘Formatvorlagen’ in Handbuch zum Lernen.

Notationsreferenz: LilyPond-Dateien einfügen.


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

3.3.3 sonderzeichen

@translationof Special characters


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

Zeichenkodierung

@translationof Text encoding

LilyPond benutzt alle Zeichen, die durch das Unicode-Konsortium und ISO/IEC 10646 definiert sind. Hiermit wird den Zeichen fast aller Schriftsysteme der Welt ein eindeutiger Name und ein Code-Punkt zugewiesen, mit dem sie identifizierbar sind. Unicode kann mit mehreren Zeichenkodierungen verwirklicht werden. LilyPond benutzt die UTF-8-Kodierung (UTF = Unicode Transformation Format), in der die normalen Zeichen des lateinischen Alphabets mit einem Byte dargestellt werden, während alle anderen Zeichen zwischen zwei und vier Byte Länge haben.

Das Aussehen des Zeichens wird bestimmt durch die gerade benutzte Schriftart (engl. font). In einer Schriftartdatei werden die Nummern der Unicode-Zeichen einem bestimmten Glyphen zugeordnet. LilyPond verwendet die Pango-Bibliothek um mehrsprachige Texte und komplexe Skripte korrekt zu setzen.

LilyPond verändert die Kodierung der Eingabedatei nicht. Das heißt, dass jeder Text – Überschriften, Gesangstext, Spielanweisungen etc. – der nicht nur aus ASCII-Zeichen besteht, in UTF-8 kodiert sein musst. Am einfachsten geht das, indem man einen Texteditor einsetzt, der mit Unicode-Zeichen umgehen kann. Die meisten modernen weit verbreiteten Editoren besitzen heute UTF-8-Unterstützung, wie etwa vim, Emacs, jEdit oder GEdit. Alle MS Windows-Systeme nach NT benutzen Unicode intern, sodass sogar Notepad Dateien in UTF-8 lesen und speichern kann. Ein Editor mit mehr Funktionen unter Windows ist BabelPad oder Notepad++.

Wenn eine LilyPond-Eingabedatei nicht-ASCII-Zeichen enthält und nicht in UTF-8 gespeichert ist, gibt es folgende Fehlermeldung:

 
FT_Get_Glyph_Name () error: invalid argument

Heir ein Beispiel mit Kyrilliza, hebräischem und portugiesischem Text:

[image of music]


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

Unicode

@translationof Unicode

Um einen einzelnen Buchstaben zu notieren, für den die Unicode-Ziffernfolge bekannt ist, der aber nicht auf der Tastatur zu finden ist, kann der Befehl \char ##xhhhh oder \char #dddd innerhalb einer \markup-Umgebung benutzt werden. Hierbei bedeutet hhhh die hexadezimale Zahl und ddd die entsprechende dezimale Zahl für das erforderliche Zeichen. Nullen zu Beginn können ausgelassen werden, aber normalerweise werden alle vier Zeichen der hexadezimalen Notation notiert. (Achten Sie darauf, dass Sie nicht UTF-8-Codepunkte einsetzen, weil UTF-8 zusätzliche Bits enthält, die die Nummer der Oktets bezeichnet.) Unicode-Tabellen und ein Verzeichnis der Zeichenbezeichnungen mit einer hexadezimalen Verweiszahl finden sich auf der Internetseite des Unicode Consortiums: http://www.unicode.org/.

Mit \char ##x03BE und \char #958 wird beispielsweise das Unicode-Zeichen U+03BE notiert, welches die Unicode-Bezeichnung „Greek Small Letter Xi“ hat.

Alle existierenden Unicode-Zeichen können auf diese Weise notiert werden, und wenn für alle Zeichen dieses Format angewandt wird, muss die Datei nicht im utf-8-Format gespeichert werden. Es muss natürlich auch noch eine Schriftart auf dem System installiert sein, die die notierten Zeichen darstellen kann.

Das nächste Beispiel zeigt, wie Unicode-Zeichen an vier Stellen mit dem hexadezimalen Code notiert werden: in einem Übungszeichen, als Artikulationszeichen, im Gesangstext und als normaler Text außerhalb der Partitur.

 
\score {
  \relative {
    c''1 \mark \markup { \char ##x03EE }
    c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
  }
  \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
}
\markup { "Copyright 2008--2020" \char ##x00A9 }

[image of music]

Um das Copyright-Zeichen zu notieren, kann folgender Code eingesetzt werden:

 
\header {
  copyright = \markup { \char ##x00A9 "2008" }
}

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

ASCII-Aliase

@translationof ASCII aliases

Eine Liste von ASCII-Befehlen für Sonderzeichen kann eingefügt werden:

 
\paper {
  #(include-special-characters)
}

\markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"

\score {
  \new Staff { \repeat unfold 9 a'4 }
  \addlyrics {
    This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
  }
}

\markup \column {
  "The replacement can be disabled:"
  "&ndash; &OE; &hellip;"
  \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
}

[image of music]

Man kann auch eigen Aliase erstellen, entweder global:

 
\paper {
  #(add-text-replacements!
    '(("100" . "hundred")
      ("dpi" . "dots per inch")))
}
\markup "A 100 dpi."

[image of music]

oder lokal:

 
\markup \replace #'(("100" . "hundred")
                    ("dpi" . "dots per inch")) "A 100 dpi."

[image of music]

Siehe auch

Notationsreferenz: Liste der Sonderzeichen.

Installierte Dateien: ‘ly/text-replacements.ly’.


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

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

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