@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: fc1ca638e0b5f66858b9b7a073ceefc1eccb3ed2
+ Translation of GIT committish: 8819d7cb0ba2ab359e4aa2276695afb9c1957c42
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes.
@end ignore
-@c \version "2.14.0"
-@c Translators: Till Paala, Reinhold Kainhofer
+@c \version "2.19.22"
+@c Translators: Till Paala, Reinhold Kainhofer, Michael Gerdau
@node Grundbegriffe
@chapter Grundbegriffe
@translationof Fundamental concepts
-Nachdem im Tutorial gezeigt wurde, wie aus einfachen Text-Dateien
+Nachdem im Tutorium gezeigt wurde, wie aus einfachen Text-Dateien
wunderschön formatierte Musiknoten erzeugt werden können, stellt
dieses Kapitel die Konzepte und Techniken vor, wie auch komplexere
Partituren erstellt werden können.
* Wie eine LilyPond-Eingabe-Datei funktioniert::
* Voice enthält Noten::
* Kontexte und Engraver::
-* Erweiterung der Beispiele::
+* Erweiterung der Vorlagen::
@end menu
@node Wie eine LilyPond-Eingabe-Datei funktioniert
auch weggelassen werden. Für eine komplette Beschreibung des Eingabeformats
siehe @ruser{Die Dateistruktur}.
-Die meisten Beispiele in diesem Handbuch sind kleine Schnipsel, wie
-etwa dieser:
-
-@example
-c4 a b c
-@end example
-
-Wie hoffentlich bekannt ist, lässt sich solch ein Schnipsel nicht
-in dieser Form übersetzen. Diese Beispiele sind also nur Kurzformen
-von wirklichen Beispielen. Sie müssen wenigstens zusätzlich in
-geschweifte Klammern gesetzt werden.
-
-@example
-@{
- c4 a b c
-@}
-@end example
-
-Die meisten Beispiele benutzen auch den @code{\relative c'}-Befehl.
-Der ist nicht nötig, um die Dateien zu übersetzen, aber in den meisten
-Fällen sieht der Notensatz seltsam aus, wenn man den Befehl
-weglässt.
-
-@lilypond[quote,fragment,ragged-right,verbatim]
-\relative c'' {
- c4 a b c
-}
-@end lilypond
-
-Eine komplette Definition des Eingabeformats findet sich
-im Kapitel @ruser{Die Dateistruktur}.
-
@menu
* Einführung in die Dateistruktur von LilyPond::
-* Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck::
+* Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck::
* Musikalische Ausdrücke ineinander verschachteln::
* Über die Nicht-Schachtelung von Klammern und Bindebögen::
@end menu
\header @{ @}
\score @{
- @var{...zusammengesetzter Musik-Ausdruck...} % Die gesamten Noten kommen hier hin!
+ @var{ @dots{} zusammengesetzter Musik-Ausdruck @dots{} } % Die gesamten Noten kommen hier hin!
\layout @{ @}
\midi @{ @}
@}
@end example
@noindent
-Aufgrund der Flexibilität von LilyPond gibt es viele Variationen dieses
-Schemas, aber dieses Beispiel dient als einfacher Ausgangspunkt.
+Zu diesem Muster gibt es viele Variationen, aber obiges Beispiel stellt
+eine hilfreiche Ausgangsbasis dar.
@funindex \book
@funindex \score
@cindex book
@cindex score
-Bisher hat noch keines der Beispiele den @code{\score@{@}}-Befehl
-benutzt, da Lilypond derartige zusätzliche Befehle automatisch
-bei Bedarf einfügt, wenn die Eingabedatei eine einfache Struktur
-hat.
-
-Sehen wir uns als ein solches einfaches Beispiel an:
+Bis jetzt hat keines der verwendeten Beispiele den @code{\score@{@}}
+Befehl gebraucht. Das liegt daran, dass LilyPond automatisch fehlende
+Befehle hinzufügt, sollten sie fehlen. Konkret betrachtet LilyPond eine
+Eingabe in der Form
@example
-\relative c'' @{
- c4 a d c
+\relative @{
+ c''4 a d c
@}
@end example
@noindent
-Im Hintergrund kommen hier noch einige Ebenen dazu: LilyPond-Code
-in der obigen Form ist in Wirklichkeit eine Abkürzung. Auch wenn man so
-Dateien schreiben kann und sie auch korrekt gesetzt werden, heißt
-der vollständige Code, der hier gemeint ist, eigentlich:
+als eine abgekürzte Form von
@example
\book @{
\score @{
\new Staff @{
\new Voice @{
- \relative c'' @{
- c4 a b c
+ \relative @{
+ c''4 a b c
@}
@}
@}
Im Moment wollen wir aber zu unserem ersten Beispiel zurückkehren und
nur den @code{\score}-Befehl näher betrachten.
-Eine Partitur (@code{\score}) muss immer mit einem musikalischen Ausdruck
-beginnen. Das ist letztendlich alle Musik, angefangen bei einer
-einzelnen
-Note bis hin zu einer riesigen Partitur mit vielen Notensystemen
-(bezeichnet hier durch @code{GrandStaff}):
+Eine Partitur (@code{\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
@example
@{
- \new GrandStaff <<
- @var{...hier die gesamte Partitur...}
+ \new StaffGroup <<
+ @var{ @dots{} füge hier die gesamte Partitur einer Wagner Oper ein @dots{} }
>>
@}
@end example
@noindent
-Da sich alles innerhalb der geschweiften Klammern @code{@{ ... @}}
+Da sich alles innerhalb der geschweiften Klammern @code{@{ @dots{} @}}
befindet, wird es wie ein einziger musikalischer Ausdruck behandelt.
-
-Ein @code{\score} auch andere Dinge enthalten, wie etwa
+Wie wir oben schon gesehen haben kann der @code{\score} Block auch andere
+Dinge enthalten, wie etwa
@example
\score @{
@{ c'4 a b c' @}
+ \header @{ @}
\layout @{ @}
\midi @{ @}
- \header @{ @}
@}
@end example
@noindent
Wie man sieht, sind die drei Befehle @code{\header}, @code{\layout} und
-@code{\midi} von spezieller Natur: Im Gegensatz zu vielen Anderen Befehlen,
+@code{\midi} von spezieller Natur: Im Gegensatz zu vielen anderen Befehlen,
die auch mit einem @code{\} beginnen, liefern sie @emph{keinen} Musikausdruck
und sind auch nicht Teil eines musikalischen Ausdrucks. Daher können sie
-sowohl innerhalb eines @code{\score}-Blocks als auch außerhalb plaziert
+sowohl innerhalb eines @code{\score}-Blocks als auch außerhalb platziert
werden. Tatsächlich werden einige dieser Befehle meist außerhalb des
-@code{\score}-Blocksgesetzt, zum Beispiel findet sich der @code{\header}
+@code{\score}-Blocks gesetzt, z.B. findet sich der @code{\header}
sehr oft oberhalb der @code{\score}-Umgebung. Das
funktioniert genauso gut.
Zwei bisher noch nicht aufgetauchte Befehle sind
@code{\layout @{ @}} und @code{\midi @{@}}. Wenn sie in einer
-Datei vorkommen, führt dies dazu, dass Lilypond eine druckfähige PDF-Datei
-bzw. eine MIDI-Datei erzeugt. Genauer beschrieben werden sie im
+Datei vorkommen, führt dies dazu, dass LilyPond eine druckfähige PDF-Datei
+bzw. eine MIDI-Ausgabe erzeugt. Genauer beschrieben werden sie im
Benutzerhandbuch -- @ruser{Partiturlayout} und
@ruser{MIDI-Dateien erstellen}.
@cindex book-Abschnitte, implizit
@cindex implizite book-Umgebung
@funindex \book
-@funindex book
Ihr LilyPond Code kann auch mehrere @code{\score}-Blöcke enthalten.
Jeder davon wird als eigenständige Partitur interpretiert, die
-allerdings alle in dieselbe Ausgabedatei plaziert werden.
+allerdings alle in dieselbe Ausgabedatei platziert werden.
Ein @code{\book}-Befehl ist nicht explizit notwendig -- er wird
implizit erzeugt. Wenn jedoch für jeden @code{\score}-Block in einer
einzigen @file{.ly}-Datei eine eigene Ausgabe-Datei erzeugt werden soll,
@cindex Variablen
@cindex Bezeichner
-Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen, wie auch gezeigt in @ref{Stücke durch Bezeichner organisieren}.
+Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen, wie
+auch in @ref{Stücke durch Variablen organisieren} gezeigt.
Alle Vorlagen verwenden diese Möglichkeit:
@example
-melodie = \relative c' @{
- c4 a b c
+melodie = \relative @{
+ c'4 a b c
@}
\score @{
- @{ \melodie @}
+ \melodie
@}
@end example
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
-@ref{Tipparbeit durch Variablen und Funktionen ersparen}. Die genauen
+@ref{Tipparbeit durch Variablen und Funktionen einsparen}. Die genauen
Einschränkungen sind beschrieben in @ruser{Die Dateistruktur}.
@ruser{Die Dateistruktur}.
-@node Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck
-@subsection Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck
+@node Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck
+@subsection Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck
@translationof Score is a (single) compound musical expression
@funindex \score
-@funindex score
@cindex score
@cindex Partitur
@cindex Musikstück
Zeile ist die Antwort:
@quotation
-@emph{Eine Partitur fängt immer mit @code{\score} an, gefolgt
-von einem einzelnen musikalischen Ausdruck.}
+@emph{Ein @code{\score} Block enthält immer genau einen musikalischen Ausdruck.}
@end quotation
@noindent
@example
\score @{
- @{
- <<
- \new Staff = "Sänger" <<
- >>
- \new PianoStaff = "Klavier" <<
- >>
+ <<
+ \new Staff = "Sänger" <<
>>
- @}
+ \new PianoStaff = "Klavier" <<
+ >>
+ >>
\layout @{ @}
@}
@end example
Hier wurden die Systeme (Staff) benannt: @qq{Sänger} und
-@qq{Klavier}. Das ist nicht direkt notwendig in diesem Fall,
+@qq{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 @code{<<} und @code{>>} werden Noten gleichzeitig
-gesetzt. Dadurch werden Vokalstimme und Klaviersysteme übereinander
-ausgegeben. Die @code{<< ... >>}-Konstruktion ist für das
+Zur Erinnerung: mit @code{<< @dots{} >>} (an Stelle von @code{@{ @dots{} @}})
+werden Noten gleichzeitig gesetzt.
+Dadurch werden Vokalstimme und Klaviersystem übereinander
+ausgegeben. Die @code{<< @dots{} >>}-Konstruktion ist für das
Sänger-System nicht notwendig, wenn hier nur die Noten einer
-einzigen Stimme eingefügt werden sollen, aber @code{<< ... >>}
+einzigen Stimme eingefügt werden sollen, aber @code{<< @dots{} >>}
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 erstmal nur ein paar Platzhalternoten und Text. Wenn
+hier also erst mal nur ein paar Platzhalternoten und Text. Wenn
Sie sich nicht erinnern, wie man Gesangstext notiert, lesen
Sie noch einmal @code{\addlyrics} in @ref{Setting simple songs}.
\addlyrics { And }
>>
\new PianoStaff = "Klavier" <<
- \new Staff = "oben" { }
- \new Staff = "unten" { }
+ \new Staff = "oben" { c'1 }
+ \new Staff = "unten" { c'1 }
>>
>>
\layout { }
könnte man
@example
-\relative c'' @{
- r4 d8\noBeam g, c4 r
+\relative @{
+ r4 d''8\noBeam g, c4 r
@}
@end example
(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 @code{text}-Variable als Gesangstext
-interpretiert wird, wird ihm @code{\lyricmode} vorangesetzt. Wie
+interpretiert wird, wird ihm @code{\lyricmode} voran gesetzt. Wie
@code{\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
@c KEEP LY
@lilypond[verbatim,quote,ragged-right]
-melodie = \relative c'' { r4 d8\noBeam g, c4 r }
+melodie = \relative { r4 d''8\noBeam g, c4 r }
text = \lyricmode { And God said, }
-oben = \relative c'' { <g d g,>2~ <g d g,> }
-unten = \relative c { b2 e }
+oben = \relative { <g' d g,>2~ <g d g,> }
+unten = \relative { b,2 e }
\score {
<<
Notenzeilen (die @q{Staff}-Kontexte) müssen nicht unbedingt gleich
zu Beginn erzeugt werden -- sie können auch zu einem späteren
-Zeitpunkt eingeführt weden. Das ist vor allem nützlich, um
+Zeitpunkt eingeführt werden. Das ist vor allem nützlich, um
@rglosnamed{ossia,Ossias} zu erzeugen. Hier folgt ein kurzes Beispiel,
wie eine zusätzliche temporäre Notenzeile für nur drei Noten erzeugt
werden kann:
@lilypond[verbatim,quote,ragged-right]
\new Staff {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
@c KEEP LY
@lilypond[verbatim,quote,ragged-right]
\new Staff = "Hauptzeile" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
\new Staff \with {
alignAboveContext = #"Hauptzeile"
- }{ f8 f c }
+ } { f8 f c }
>>
r4 |
}
@multitable @columnfractions .3 .7
@headitem Klammerart
@tab Funktion
-@item @code{@{ .. @}}
+@item @code{@{ @dots{} @}}
@tab Umschließt ein sequenzielles Musiksegment
-@item @code{< .. >}
+@item @code{< @dots{} >}
@tab Umschließt die Noten eines Akkords
-@item @code{<< .. >>}
+@item @code{<< @dots{} >>}
@tab Umschließt parallele Musikausdrücke
-@item @code{( .. )}
+@item @code{( @dots{} )}
@tab Markiert den Beginn und das Ende eines Haltebogens
-@item @code{\( .. \)}
+@item @code{\( @dots{} \)}
@tab Markiert den Beginn und das Ende eines Phasierungsbogens
-@item @code{[ .. ]}
+@item @code{[ @dots{} ]}
@tab Markiert den Beginn und das Ende eines manuell erzeugten Balkens
@end multitable
Zusätzlich sollten vielleicht noch einige weiter Konstruktionen
erwähnt werden, die Noten auf irgendeine Art und Weise verbinden:
Haltebögen (durch eine Tilde @code{~} markiert),
-Triolen (als @code{\times x/y @{..@}} geschrieben) und
-Vorschlagnoten (als @code{\grace@{..@}} notiert).
+N-tolen (als @code{\tuplet x/y @{ @dots{} @}} geschrieben) und
+Vorschlagnoten (als @code{\grace@{ @dots{} @}} notiert).
Außerhalb von LilyPond fordert die übliche Benutzung von
Klammern, dass die entsprechenden Arten korrekt verschachtelt
-werden, wie z.B. in @code{<< [ @{ ( .. ) @} ] >>}. Die
+werden, wie z.B. in @code{<< [ @{ ( @dots{} ) @} ] >>}. Die
schließenden Klammern kommen dabei in der umgekehrten Reihenfolge
wie die öffnenden Klammern vor. Dies ist auch in LilyPond
ein @strong{Muss} für die drei Klammerarten, die in obiger
Dies mag zwar musikalisch wenig Sinn ergeben, ist aber in LilyPond
auch möglich:
-@lilypond[quote,verbatim,ragged-right,relative=2]
-{ g8\( a b[ c b\) a] g4 }
+@lilypond[quote,verbatim,ragged-right]
+\relative { g'8\( a b[ c b\) a] g4 }
@end lilypond
Im Allgemeinen können die verschiedenen Klammerarten,
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 Bindeboden 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).
@lilypond[quote,verbatim,ragged-right]
-{
-r16[ g \times 2/3 { r16 e'8] }
-g16( a \times 2/3 { b16 d) e' }
-g8[( a \times 2/3 { b8 d') e'~] } |
-\times 4/5 { e'32\( a b d' e' } a'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.\)
}
@end lilypond
Sänger brauchen Stimmen zum Singen, und LilyPond braucht sie auch:
in der Tat sind alle Noten für alle Instrumente in einer Partitur
-innerhalb von Stimmen gesetzt. Die Stimme ist das grundlegendste Prinzip
+innerhalb von Stimmen gesetzt. Die Stimme ist das grundlegende Prinzip
von LilyPond.
@menu
@cindex Akkorde versus Stimmen
@cindex Noten gleichzeitig
-Die grundlegendsten und innersten Ebenen ein einer LilyPond-Partitur
+Die grundlegenden und innersten Ebenen in einer LilyPond-Partitur
werden @qq{Voice context} (Stimmenkontext) oder auch nur @qq{Voice}
(Stimme) genannt. Stimmen werden in anderen Notationsprogrammen
manchmal auch als @qq{layer} (Ebene) bezeichnet.
-Tatsächlich ist die Stimmenebene die einzige, die wirklich Noten
-enthalten kann. Wenn kein Stimmenkontext explizit erstellt wird,
+Tatsächlich ist die Voice-Ebene die einzige, die wirklich Noten
+enthalten kann. Wenn kein Voice-Kontext explizit erstellt wird,
wird er automatisch erstellt, wie am Anfang dieses Kapitels
gezeigt. Manche Instrumente wie etwa die Oboe können nur eine
-Note gleichzeitig spielen. Noten für solche Instrumente sind
-monophon und brauchen nur eine einzige Stimme. Instrumente, die
+Note gleichzeitig spielen. Noten für solche Instrumente brauchen nur
+eine einzige Stimme. Instrumente, die
mehrere Noten gleichzeitig spielen können, wie das Klavier, brauchen
dagegen oft mehrere Stimmen, um die verschiedenen gleichzeitig
erklingenden Noten mit oft unterschiedlichen Rhythmen darstellen
enthalten -- wann also braucht man dann mehrere Stimmen? Schauen wir
uns zuerst dieses Beispiel mit vier Akkorden an:
-@lilypond[quote,verbatim,ragged-right,relative=1]
-\key g \major
-<d g>4 <d fis> <d a'> <d g>
+@lilypond[quote,verbatim,ragged-right]
+\relative {
+ \key g \major
+ <d' g>4 <d fis> <d a'> <d g>
+}
@end lilypond
Das kann ausgedrückt werden, indem man die einfachen spitzen Klammern
-@code{< ... >} benützt, um Akkorde anzuzeigen. Hierfür braucht man
+@code{< @dots{} >} benützt, um Akkorde anzuzeigen. Hierfür braucht man
nur eine Stimme. Aber gesetzt der Fall das Fis sollte eigentlich
eine Achtelnote sein, gefolgt von einer Achtelnote G (als Durchgangsnote
hin zum A)? Hier haben wir also zwei Noten, die zur gleichen Zeit
beginnen, aber unterschiedliche Dauern haben: die Viertelnote D und die
Achtelnote Fis. Wie können sie notiert werden? Als Akkord kann man sie
nicht schreiben, weil alle Noten in einem Akkord die gleiche Länge besitzen
-müssen. Sie können auch nicht als aufeinanderfolgende Noten geschrieben
+müssen. Sie können auch nicht als aufeinander folgende Noten geschrieben
werden, denn sie beginnen ja zur selben Zeit. In diesem Fall also brauchen
wir zwei Stimmen.
Die einfachste Art, Fragmente mit mehr als einer Stimme auf einem System
zu notieren, ist, die Stimmen nacheinander (jeweils mit den Klammern
-@code{@{ ... @}}) zu schreiben und dann mit den spitzen Klammern
-(@code{<<...>>}) simultan zu kombinieren. Die beiden Fragmente müssen
+@code{@{ @dots{} @}}) zu schreiben und dann mit den spitzen Klammern
+(@code{<< @dots{} >>}) simultan zu kombinieren. Die beiden Fragmente müssen
zusätzlich noch mit zwei Backslash-Zeichen (@code{\\}) voneinander
getrennt werden, damit sie als zwei unterschiedliche Stimmen erkannt
werden. Ohne diese Trenner würden sie als eine einzige Stimme notiert
So sieht es aus, wenn die Akkorde in zwei Stimmen aufgeteilt werden
und zur Durchgangsnote noch ein Bogen hinzugefügt wird:
-@lilypond[quote,verbatim,ragged-right,relative=2]
-\key g \major
-% Voice "1" Voice "2"
-<< { g4 fis8( g) a4 g } \\ { d4 d d d } >>
+@lilypond[quote,verbatim,ragged-right]
+\relative {
+ \key g \major
+ % Voice = "1" Voice = "2"
+ << { g'4 fis8( g) a4 g } \\ { d4 d d d } >>
+}
@end lilypond
-Beachte, dass die Hälse der zweiten Stimme nun nach unten zeigen.
+Beachten Sie, dass die Hälse der zweiten Stimme nun nach unten zeigen.
Hier ein anderes Beispiel:
-@lilypond[quote,verbatim,ragged-right,relative=2]
-\key d \minor
-% Voice "1" Voice "2"
-<< { r4 g g4. a8 } \\ { d,2 d4 g } >>
-<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >>
-<< { a2. r4 } \\ { fis2. s4 } >>
+@lilypond[quote,verbatim,ragged-right]
+\relative {
+ \key d \minor
+ % Voice = "1" Voice = "2"
+ << { r4 g' g4. a8 } \\ { d,2 d4 g } >> |
+ << { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
+ << { a2. r4 } \\ { fis2. s4 } >> |
+}
@end lilypond
Es ist nicht notwendig, für jeden Takt eine eigene
wenn in einem Takt viele Noten vorkommen, kann man die gesamten Stimmen
separat schreiben, wie hier:
-@lilypond[quote,verbatim,ragged-right,relative=2]
-\key d \minor
-<< {
- % Voice "1"
- r4 g g4. a8 |
- bes4 bes c bes |
- a2. r4 |
-} \\ {
- % Voice "2"
- d,2 d4 g |
- g4 g g8( a) g4 |
- fis2. s4 |
-} >>
+@lilypond[quote,verbatim,ragged-right]
+<<
+ \key d \minor
+ \relative { % Voice = "1"
+ r4 g' g4. a8 |
+ bes4 bes c bes |
+ a2. r4 |
+ } \\
+ \relative { % Voice = "2"
+ d'2 d4 g |
+ g4 g g8( a) g4 |
+ fis2. s4 |
+ }
+>>
@end lilypond
+
+@cindex Voice, Benennung
+@cindex Voices crossing brackets
+@cindex Legatobögen crossing brackets
+@cindex Bindebögen crossing brackets
+
Dieses Beispiel hat nur zwei Stimmen, aber die gleiche Konstruktion kann
angewendet werden, wenn man drei oder mehr Stimmen hat, indem man weitere
Backslash-Trenner hinzufügt.
-Die Stimmenkontexte tragen die Namen @code{"1"}, @code{"2"} usw. In jedem
-dieser Kontexte wird die vertikale Ausrichtung von Hälsen, Bögen, Dynamik-Zeichen
-usw. entsprechend ausgerichtet.
+Die Stimmenkontexte tragen die Namen @code{"1"}, @code{"2"} usw. Der erste
+Kontext stellt die @qq{äußeren} Stimmen ein, die höchste Stimme im
+Kontext @code{"1"} und die tiefste Stimme im Kontext @code{"2"}. Die
+inneren Stimmen kommen in die Kontexte @code{"3"} und @code{"4"}. In
+jedem dieser Kontexte wird die vertikale Ausrichtung von Bögen, Hälsen,
+Dynamik usw. entsprechend eingestellt.
@lilypond[quote,verbatim]
-\new Staff \relative c' {
+\new Staff \relative {
% Main voice
- c16 d e f
- % Voice "1" Voice "2" Voice "3"
+ c'16 d e f
+ % Voice = "1" Voice = "2" Voice = "3"
<< { g4 f e } \\ { r8 e4 d c8~ } >> |
- << { d2 e } \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+ << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
}
@end lilypond
hier an der blauen Dreieckstimme gezeigt.
@lilypond[quote,verbatim]
-\new Staff \relative c' {
- % Main voice
- c16 d e f
- << % Bar 1
+\new Staff \relative {
+ % Hauptstimme
+ c'16 d e f
+ << % Takt 1
{
\voiceOneStyle
g4 f e
r8 e4 d c8~
}
>> |
- << % Bar 2
- % Voice 1 continues
+ << % Takt 2
+ % Voice 1 wird fortgesetzt
{ d2 e }
\\
- % Voice 2 continues
- { c8 b16 a b8 g~ g2 }
+ % Voice 2 wird fortgesetzt
+ { c8 b16 a b8 g~ 2 }
\\
{
\voiceThreeStyle
nicht benutzt) macht diese Änderungen rückgängig. Später soll gezeigt
werden, wie Befehle wie diese vom Benutzer selber erstellt werden
können. Siehe auch @ref{Sichtbarkeit und Farbe von Objekten} und
-@ref{Variablen für Optimierungen einsetzen}.
+@ref{Variablen für Layout Anpassungen einsetzen}.
@cindex Polyphonie und relativer Notationsmodus
@cindex relativer Notationsmodus und Polyphonie
Akkords. So ist etwa hier
@example
-\relative c' @{ NoteA << < NoteB NoteC > \\ NoteD >> NoteE @}
+\relative @{ noteA << < noteB noteC > \\ noteD >> noteE @}
@end example
@noindent
entfernt sind.
@example
-\relative c' @{ NoteA ... @}
+\relative @{ NoteA @dots{} @}
<<
- \relative c'' @{ < NoteB NoteC > ... @}
+ \relative @{ < NoteB NoteC > @dots{} @}
\\
- \relative g' @{ NoteD ... @}
+ \relative @{ NoteD @dots{} @}
>>
-\relative c' @{ NoteE ... @}
+\relative @{ NoteE @dots{} @}
@end example
Zum Schluss wollen wir die Stimmen in einem etwas komplizierteren Stück
@c The following should appear as music without code
@lilypond[quote,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
- << % Voice one
- { c2 aes4. bes8 }
- \\ % Voice two
- { aes2 f4 fes }
- \\ % No voice three
- \\ % Voice four
+ << % Voice 1
+ { c''2 aes4. bes8 }
+ \\ % Voice 2
{
- % Ignore these for now - they are explained in Ch 4
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5
+ % Ignoriere diese Befehle vorerst - sie werden in Kap. 4 erklärt
+ \once \override NoteColumn.force-hshift = #0
+ <ees, c>2
+ \once \override NoteColumn.force-hshift = #0.5
des2
}
+ \\ % Keine voice 3
+ \\ % Voice 4
+ {
+ \override NoteColumn.force-hshift = #0
+ aes'2 f4 fes
+ }
>> |
<c ees aes c>1 |
}
@c The following should appear as music without code
@c The three voice styles should be defined in -init
@lilypond[quote,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<<
- { % Voice one
+ { % Voice 1
\voiceOneStyle
- c2 aes4. bes8
+ c''2 aes4. bes8
}
- \\ % Voice two
+ \\ % Voice 2
{ \voiceTwoStyle
- aes2 f4 fes
+ % Ignoriere diese Befehle vorerst - sie werden in Kap. 4 erklärt
+ \once \override NoteColumn.force-hshift = #0
+ <ees, c>2
+ \once \override NoteColumn.force-hshift = #0.5
+ des2
}
- \\ % No Voice three (we want stems down)
- \\ % Voice four
+ \\ % Keine Voice 3 (wir wollen Hälse nach unten)
+ \\ % Voice 4
{ \voiceThreeStyle
- % Ignore these for now - they are explained in Ch 4
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5
- des2
+ \override NoteColumn.force-hshift = #0
+ aes'2 f4 fes
}
- >>
- <c ees aes c>1
+ >> |
+ <c ees aes c>1 |
}
@end lilypond
+
Versuchen wir also, diese Musik selber zu notieren. Wie wir sehen
werden, beinhaltet das einige Schwierigkeiten. Fangen wir an, wie
wir es gelernt haben, indem wir mit der @code{<< \\ >>}-Konstruktion
die drei Stimmen des ersten Taktes notieren:
@lilypond[quote,verbatim,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<<
- { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des }
+ { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
>> |
<c ees aes c>1 |
}
Noten in die vierte Stimme verschieben. Das wird einfach vorgenommen,
indem noch ein Paar @code{\\}-Stimmen hinzugefügt wird.
-@c KEEP LY
@lilypond[quote,verbatim,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
- << % erste Stimme
- { c2 aes4. bes8 }
- \\ % zweite Stimme
- { aes2 f4 fes }
- \\ % Stimme drei auslassen
- \\ % vierte Stimme
- { <ees c>2 des }
- >>
- <c ees aes c>1
+ << % Voice 1
+ { c''2 aes4. bes8 }
+ \\ % Voice 2
+ { <ees, c>2 des }
+ \\ % Auslassen von Voice 3
+ \\ % Voice 4
+ { aes'2 f4 fes }
+ >> |
+ <c ees aes c>1 |
}
@end lilypond
@noindent
-Wie zu sehen ist, ändert das die Richtung der Hälse, aber zeigt ein
-anderes Problem auf, auf das man manchmal bei mehreren Stimmen stößt:
-Die Hälse einer Stimme können mit den Hälsen anderer Stimmen kollidieren.
-LilyPond erlaubt Noten in verschiedenen Stimmen sich auf der gleichen
-vertikalen Position zu befinden, wenn die Hälse in entgegengesetzte
-Richtungen zeigen, und positioniert die dritte und vierte Stimme dann
-so, dass Zusammenstöße möglichst vermieden werden. Das funktioniert
-gewöhnlich recht gut, aber in diesem Beispiel sind die Noten der untersten
-Stimme eindeutig standardmäßig schlecht positioniert. LilyPond bietet
-verschiedene Möglichkeiten, die horizontale Position von Noten
-anzupassen. Wir sind aber noch nicht so weit, dass wir diese Funktionen
-anwenden könnten. Darum heben wir uns das Problem für einen späteren Abschnitt auf; siehe @code{force-hshift}-Eigenschaft in
+Wie zu sehen ist, ändert das die Richtung der Hälse, aber die horizontale
+Ausrichtung der Noten ist nicht so, wie wir sie wollen. LilyPond
+verschiebt die inneren Noten wenn sie oder ihre Hälse mit den äußeren
+Stimmen zusammenstoßen würden, aber das ist nicht richtig für Klaviermusik.
+In anderen Situationen können die Verschiebungen von LilyPond nicht
+ausreichend sein, um Überlappungen aufzulösen. LilyPond stellt verschiedene
+Möglichkeiten zur Verfügung, um die horizontale Ausrichtung von Noten
+zu beeinflussen. Wir sind aber noch nicht so weit, dass wir diese Funktionen
+anwenden könnten. Darum heben wir uns das Problem für einen späteren Abschnitt
+auf; siehe @code{force-hshift}-Eigenschaft in
@ref{Überlappende Notation in Ordnung bringen}.
@warning{Gesangstext und Strecker (wie etwa Bögen, Crescendo-Klammern usw.) können
nicht von einer Stimme zur anderen erstellt werden.}
+
@seealso
Notationsreferenz: @ruser{Mehrere Stimmen}.
@translationof Explicitly instantiating voices
@funindex \voiceOne
-@funindex voiceOne
@funindex \voiceTwo
-@funindex voiceTwo
@funindex \voiceThree
-@funindex voiceThree
@funindex \voiceFour
-@funindex voiceFour
@funindex \oneVoice
-@funindex oneVoice
@funindex \new Voice
@cindex Voice context, erstellen von
@cindex Stimmenkontexte, erstellen von
@example
\new Staff @{
- \relative c' @{
- << @{ e4 f g a @} \\ @{ c,4 d e f @} >>
+ \relative @{
+ << @{ e'4 f g a @} \\ @{ c,4 d e f @} >>
@}
@}
@end example
@noindent
-ist identisch mit
+ist identisch zu
@example
\new Staff <<
- \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @}
- \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @}
+ \new Voice = "1" @{ \voiceOne \relative @{ e'4 f g a @} @}
+ \new Voice = "2" @{ \voiceTwo \relative @{ c'4 d e f @} @}
>>
@end example
@c The following example should not display the code
@lilypond[ragged-right,quote]
\new Staff <<
- \new Voice = "1" { \voiceOne \relative c' { e4 f g a } }
- \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } }
+ \new Voice = "1" { \voiceOne \relative { e'4 f g a } }
+ \new Voice = "2" { \voiceTwo \relative { c'4 d e f } }
>>
@end lilypond
mit Text, Bögen und Dynamikbezeichnung anstellen:
@lilypond[quote,ragged-right,verbatim]
-\relative c' {
+\relative {
% Default behavior or behavior after \oneVoice
- c4 d8~ d e4( f | g4 a) b-> c |
+ c'4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c' {
+\relative {
\voiceOne
- c4 d8~ d e4( f | g4 a) b-> c |
+ c'4 d8~ 8 e4( f | g4 a) b-> c |
\oneVoice
- c,4 d8~ d e4( f | g4 a) b-> c |
+ c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c' {
+\relative {
\voiceTwo
- c4 d8~ d e4( f | g4 a) b-> c |
+ c'4 d8~ 8 e4( f | g4 a) b-> c |
\oneVoice
- c,4 d8~ d e4( f | g4 a) b-> c |
+ c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond
Phrasierungsbogen ober sie gesetzt werden.
@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
+\new Staff \relative {
\voiceOneStyle
- % The following notes are monophonic
- c16^( d e f
+ % This section is homophonic
+ c'16^( d e f
% Start simultaneous section of three voices
<<
% Continue the main voice in parallel
\new Voice {
% Set stems, etc., down
\voiceTwo
- r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+ r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
}
% Initiate third voice
\new Voice {
% Set stems, etc, up
\voiceThree
- s2. | s4 b4 c2 |
+ s2. | s4 b c2 |
}
>>
}
sein, Noten zu setzen:
@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- c16^( d e f
+\new Staff \relative {
+ c'16^( d e f
<<
- { g4 f e | d2 e2) | }
+ { g4 f e | d2 e) | }
\new Voice {
\voiceTwo
- r8 e4 d c8~
+ r8 e4 d c8~ |
<<
- { c8 b16 a b8 g~ g2 | }
+ { c8 b16 a b8 g~ 2 | }
\new Voice {
\voiceThree
- s4 b4 c2 |
+ s4 b c2 |
}
>>
}
an denen die Stimme nicht auftaucht, wie etwa hier:
@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' <<
+\new Staff \relative <<
% Initiate first voice
\new Voice {
\voiceOne
- c16^( d e f g4 f e | d2 e) |
+ c'16^( d e f g4 f e | d2 e) |
}
% Initiate second voice
\new Voice {
% Set stems, etc, down
\voiceTwo
- s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+ s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
}
% Initiate third voice
\new Voice {
@code{\shiftOnn} und @code{\shiftOnnn} definieren weitere
Verschiebungsebenen, die man kurzzeitig anwählen kann, um
Zusammenstöße in komplexen Situationen aufzulösen, siehe auch
-@ref{Beispiele aus dem Leben}.
+@ref{Beispiel aus dem Leben}.
Eine Notenkolumne kann nur eine Note (oder einen Akkord) von
einer Stimme mit Hälsen nach oben und eine Note (oder einen
an der selben Stelle auftreten und in beiden Stimmen ist
keine Verschiebung oder die gleiche Verschiebungsebene
definiert, wird die Fehlermeldung
-@qq{zu viele kollidierende Notenspalten werden ignoriert}
+@qq{diese Stimme benötigt einen @code{@bs{}voiceXx} oder
+@code{@bs{}shiftXx} Befehl}
ausgegeben.
@seealso
-Notationsreferenz: @ruser{Mehrere Stimmen}.
+Handbuch zum Lernen:
+@ref{Verschieben von Objekten}.
+
+Notationsreferenz:
+@ruser{Mehrere Stimmen}.
@node Stimmen und Text
@funindex \new Lyrics
@funindex \lyricsto
-@funindex lyricsto
@funindex Lyrics
@cindex Lyrics context, erstellen
-@cindex Gesangtext, Verbindung mit Noten
+@cindex Gesangstext, Verbindung mit Noten
Wir haben schon den @code{\addlyrics@{@}}-Befehl betrachtet,
mit dem einfache Partituren gut erstellt werden können.
@lilypond[quote,verbatim]
<<
\new Voice = "one" {
- \relative c'' {
+ \relative {
\autoBeamOff
\time 2/4
- c4 b8. a16 | g4. f8 | e4 d | c2 |
+ c''4 b8. a16 | g4. f8 | e4 d | c2 |
}
}
\new Lyrics \lyricsto "one" {
@cindex Text und Balken
@cindex Balken und Text
@funindex \autoBeamOff
-@funindex autoBeamOff
Die automatischen Balken, die LilyPond in der Standardeinstellung
setzt, eignen sich sehr gut für instrumentale Musik, aber nicht
zu illustrieren. Das Beispiel wurde so umgeformt, dass jetzt
Variablen eingesetzt werden, um den Text und die Noten
von der Partiturstruktur zu trennen. Es wurde zusätzlich
-eine Chorpartiturklammer hinzugefügt. Der Gesangtext muss mit
+eine Chorpartiturklammer hinzugefügt. Der Gesangstext muss mit
@code{\lyricmode} eingegeben werden, damit er als Text und
nicht als Noten interpretiert werden kann.
@lilypond[quote,verbatim]
global = { \key f \major \time 6/8 \partial 8 }
-SopOneMusic = \relative c'' {
- c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+SopOneMusic = \relative {
+ c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
}
SopOneLyrics = \lyricmode {
Let | flee -- cy flocks the | hills a -- dorn, __
}
-SopTwoMusic = \relative c' {
- r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
+SopTwoMusic = \relative {
+ r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
}
SopTwoLyrics = \lyricmode {
Let | flee -- cy flocks the | hills a -- dorn,
@lilypond[quote,verbatim]
keyTime = { \key c \major \time 4/4 \partial 4 }
-SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+SopMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
VerseOne =
\lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
@seealso
-Notation Reference: @ruser{Notation von Gesang}.
+Notationsreferenz: @ruser{Notation von Gesang}.
@node Kontexte und Engraver
die im Quellcode gar nicht explizit vorkommen. Vergleichen Sie
etwa den Quellcode und die Notenausgabe des folgenden Beispiels:
-@lilypond[quote,verbatim,relative=2]
-cis4 cis2. | a4 a2. |
+@lilypond[quote,verbatim]
+\relative { cis''4 cis2. | a4 a2. | }
@end lilypond
Der Quellcode ist sehr kurz und knapp, während in der
-Notenausgabe Taktlinien, Vorzeichen, ein Schlüssel und
+Notenausgabe Taktstriche, Vorzeichen, ein Schlüssel und
eine Taktart hinzugefügt wurden. Während LilyPond
den Eingabetext @emph{interpretiert}, wird die
musikalische Information von rechts nach links gelesen,
für welche Tonhöhen Versetzungszeichen gesetzt werden
müssen. Diese Information muss auf mehreren Ebenen
gehandhabt werden, denn Versetzungszeichen etwa
-beziehen sich nur auf ein System, Taktlinien dagegen
+beziehen sich nur auf ein System, Taktstriche dagegen
üblicherweise auf die gesamte Partitur.
Innerhalb von LilyPond sind diese Regeln und
einzuordnen, ob ein Versetzungszeichen gesetzt werden
muss oder nicht.
-Ein anderes Beispiel: die Synchronisation der Taktlinien ist
+Ein anderes Beispiel: die Synchronisation der Taktstriche ist
standardmäßig im @code{Score}-Kontext verankert. Manchmal sollen
die Systeme einer Partitur aber unterschiedliche Taktarten
enthalten, etwa in einer polymetrischen Partitur mit
@seealso
-Notationreferenz: @ruser{Was sind Kontexte?}.
+Notationsreferenz: @ruser{Was sind Kontexte?}.
@node Kontexte erstellen
@translationof Creating contexts
@funindex \new
-@funindex new
@cindex Neue Kontexte
@cindex Erstellen von Kontexten
@cindex Kontexte, Erstellen
\clef "treble"
\key g \minor
\new Voice { % create voice for RH notes
- \relative c'' { % start of RH notes
- d4 ees16 c8.
- d4 ees16 c8.
+ \relative { % start of RH notes
+ d''4 ees16 c8. |
+ d4 ees16 c8. |
} % end of RH notes
} % end of RH voice
} % end of RH staff
\key g \minor
\new Voice { % create LH voice one
\voiceOne
- \relative g { % start of LH voice one notes
- g8 <bes d> ees, <g c>
- g8 <bes d> ees, <g c>
+ \relative { % start of LH voice one notes
+ g8 <bes d> ees, <g c> |
+ g8 <bes d> ees, <g c> |
} % end of LH voice one notes
} % end of LH voice one
\new Voice { % create LH voice two
\voiceTwo
- \relative g { % start of LH voice two notes
- g4 ees
- g4 ees
+ \relative { % start of LH voice two notes
+ g4 ees |
+ g4 ees |
} % end of LH voice two notes
} % end of LH voice two
>> % end of LH staff
@seealso
-Notationsreferenz: @ruser{Kontexte erstellen}.
+Notationsreferenz: @ruser{Kontexte erstellen und referenzieren}.
@node Was sind Engraver?
@item Clef_engraver
@tab Erstellt Notenschlüssel.
@item Completion_heads_engraver
- @tab Teilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen.
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+ @tab Teilt Noten in kleiner Werte, wenn sie über den Taktstrich reichen.
+@item Dynamic_engraver
@tab Erstellt Dynamik-Klammern und Dynamik-Texte.
@item Forbid_line_break_engraver
@tab Verbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist.
Er wird in Form
@example
-\set @var{KontextBezeichnung}.@var{eigenschaftsBezeichnung} = #@var{Wert}
+\set @emph{KontextBezeichnung}.@emph{EigenschaftsBezeichnung} = #@emph{Wert}
@end example
@noindent
-verwendet, wobei @var{KontextBezeichnung} üblicherweise
+verwendet, wobei @emph{KontextBezeichnung} üblicherweise
@code{Score},
@code{Staff} oder @code{Voice} ist. Der erste Teil kann auch
ausgelassen werden; in diesem Fall wird der aktuelle
-Kontext (üblicherweise @code{Voice}) eingesetzt.
+Kontext (üblicherweise @code{Voice}) angenommen.
Die Bezeichnung von Kontexten-Eigenschaften besteht
aus zwei Wörtern, die ohne Unterstrich oder Bindestrich
@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .25 .15 .45 .15
-@headitem eigenschaftsBezeichnung
+@headitem Eigenschaftsbezeichnung
@tab Typ
@tab Funktion
@tab Beispiel-Wert
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff \relative c'' {
+ \new Staff \relative {
\set Staff.instrumentName = #"Soprano"
- c2 c
- }
- \new Staff \relative c' {
+ c''2 c
+ }
+ \new Staff \relative {
\set instrumentName = #"Alto" % Wrong!
- d2 d
- }
+ d'2 d
+ }
>>
@end lilypond
Die Eigenschaft @code{instrumentName} wird erst aktiv, wenn sie
in einem @code{Staff}-Kontext gesetzt wird, aber manche Eigenschaften
können in mehr als einem Kontext benutzt werden. Als Beispiel mag die
-@code{extraNatural}-Eigenschaft dienen, die zusätzliche Erniedrigungszeichen
+@code{extraNatural}-Eigenschaft dienen, die zusätzliche Auflösungszeichen
setzt. Die Standardeinstellung ist ##t (wahr) in allen Systemen.
Wenn sie nur in einem @code{Staff} (Notensystem) auf ##f (falsch)
gesetzt wird, wirkt sie sich auf alle Noten in diesem System aus. Wird
sie dagegen in der @code{Score}-Umgebung gesetzt, wirkt sich das
auf alle darin enthaltenen Systeme aus.
-Das also bewirkt, dass die zusätzlichen Erniedrigungszeichen in einem System
+Das also bewirkt, dass die zusätzlichen Auflösungszeichen in einem System
ausgeschaltet sind:
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff \relative c'' {
- aeses2 aes
+ \new Staff \relative {
+ aeses'2 aes
}
- \new Staff \relative c'' {
+ \new Staff \relative {
\set Staff.extraNatural = ##f
- aeses2 aes
+ aeses'2 aes
}
>>
@end lilypond
@noindent
-während das dazu dient, sie in allen Systemen auszuschalten:
+während dies dazu dient, sie in allen Systemen auszuschalten:
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff \relative c'' {
- aeses2 aes
+ \new Staff \relative {
+ aeses'2 aes
}
- \new Staff \relative c'' {
+ \new Staff \relative {
\set Score.extraNatural = ##f
- aeses2 aes
+ aeses'2 aes
}
>>
@end lilypond
-Ein anderes Beispiel ist die Eigenschaft @code{clefOctavation}:
+Ein anderes Beispiel ist die Eigenschaft @code{clefTransposition}:
wenn sie im @code{Score}-Kontext gesetzt wird, ändert sich sofort
-der Wert der Oktavierung in allen aktuellen Systemen und wird
+der Wert der Tranponierung in allen aktuellen Systemen und wird
auf einen neuen Wert gesetzt, der sich auf alle Systeme auswirkt.
Der gegenteilige Befehl, @code{\unset}, entfernt die Eigenschaft
auf die Notenköpfe auswirkt. Die Änderung bezieht sich immer auf den Standard,
nicht vom letzten gesetzten Wert.
-@lilypond[quote,verbatim,ragged-right,relative=1]
-c4 d
-% make note heads smaller
-\set fontSize = #-4
-e4 f |
-% make note heads larger
-\set fontSize = #2.5
-g4 a
-% return to default size
-\unset fontSize
-b4 c |
+@lilypond[quote,verbatim,ragged-right]
+\relative {
+ c'4 d
+ % make note heads smaller
+ \set fontSize = #-4
+ e4 f |
+ % make note heads larger
+ \set fontSize = #2.5
+ g4 a
+ % return to default size
+ \unset fontSize
+ b4 c |
+}
@end lilypond
Wir haben jetzt gesehen, wie sich die Werte von unterschiedlichen
@subsubheading Kontexteigenschaften mit @code{\with} setzen
@funindex \with
-@funindex with
@cindex Kontexteigenschaft, setzen mit \with
Die Standardwerte von Kontexteigenschaften können zu dem Zeitpunkt
ist das eine saubere Weise, eine Eigenschaft zu bestimmen, die für
die gesamte Partitur erhalten bleiben soll. Wenn ein Kontext mit
einem @code{\new}-Befehl erstellt wird, können in einer
-direkt folgenden @code{\with @{ .. @}}-Umgebung die Eigenschaften
+direkt folgenden @code{\with @{ @dots{} @}}-Umgebung die Eigenschaften
bestimmt werden. Wenn also die zusätzlichen
Auflösungszeichen für eine ganze Partitur gelten sollen, könnte
man schreiben:
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff
- \relative c'' {
- gisis4 gis aeses aes
+ \new Staff {
+ \relative {
+ gisis'4 gis aeses aes
}
+ }
\new Staff \with { extraNatural = ##f } {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
>>
@cindex Kontexteigenschaften, mit \context setzen
@cindex Eigenschaften von Kontexten, mit \context setzen
@funindex \context
-@funindex context
Die Werte von Kontext-Eigenschaften können in @emph{allen} Kontexten
eines bestimmten Typs (etwa alle @code{Staff}-Kontexte)
@code{\with}-Konstruktion benutzt wird, wie oben gezeigt. Er wird in
eine @code{\context}-Umgebung eingebettet, welche wiederum innerhalb
von einer @code{\layout}-Umgebung steht. Jede @code{\context}-Umgebung
-wirkt sich auf alle Kontexte dieses Types aus, welche sich in der
+wirkt sich auf alle Kontexte dieses Typs aus, welche sich in der
aktuellen Partitur befinden (d. h. innerhalb einer @code{\score}-
oder @code{\book}-Umgebung). Hier ist ein Beispiel, wie man diese
Funktion anwendet:
@lilypond[verbatim,quote]
\score {
\new Staff {
- \relative c'' {
- cisis4 e d cis
+ \relative {
+ cisis''4 e d cis
}
}
\layout {
\score {
<<
\new Staff {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
\new Staff {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
>>
Wir haben gesehen, dass jeder Kontext eine Anzahl an Engravern
(Stempeln) beinhaltet, von denen ein jeder einen bestimmten
-Teil des fertigen Notensatzes produziert, wie z. B. Taktlinien,
+Teil des fertigen Notensatzes produziert, wie z. B. Taktstriche,
Notenlinien, Notenköpfe, Hälse usw. Wenn ein Engraver aus
einem Kontext entfernt wird, kann er seine Objekte nicht
länger produzieren. Das ist eine eher grobe Methode, die
Notenausgabe zu beeinflussen, aber es kann von großem
Nutzen sein.
-
@subsubheading Einen einzelnen Kontext verändern
Um einen Engraver von einem einzelnen Kontext zu entfernen,
@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
- \remove Staff_symbol_engraver
+ \remove "Staff_symbol_engraver"
}
-\relative c' {
- c4 d
+\relative {
+ c'4 d
\set fontSize = #-4 % make note heads smaller
e4 f |
\set fontSize = #2.5 % make note heads larger
@lilypond[quote,verbatim,ragged-right]
\new Staff <<
\new Voice \with {
- \consists Ambitus_engraver
+ \consists "Ambitus_engraver"
} {
- \relative c'' {
+ \relative {
\voiceOne
- c4 a b g
+ c''4 a b g
}
}
\new Voice {
- \relative c' {
+ \relative {
\voiceTwo
- c4 e d f
+ c'4 e d f
}
}
>>
@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
- \consists Ambitus_engraver
+ \consists "Ambitus_engraver"
}
<<
\new Voice {
- \relative c'' {
+ \relative {
\voiceOne
- c4 a b g
+ c''4 a b g
}
}
\new Voice {
- \relative c' {
+ \relative {
\voiceTwo
- c4 e d f
+ c'4 e d f
}
}
>>
@end lilypond
-
@subsubheading Alle Kontexte des gleichen Typs verändern
@funindex \layout
\score {
<<
\new Staff {
- \relative c'' {
- c4 a b g
+ \relative {
+ c''4 a b g
}
}
\new Staff {
- \relative c' {
- c4 a b g
+ \relative {
+ c'4 a b g
}
}
\new Staff {
\clef "G_8"
- \relative c' {
- c4 a b g
+ \relative {
+ c'4 a b g
}
}
\new Staff {
\clef "bass"
- \relative c {
+ \relative {
c4 a b g
}
}
\layout {
\context {
\Staff
- \consists Ambitus_engraver
+ \consists "Ambitus_engraver"
}
}
}
Hälse oder Bögen dargestellt.
-@node Erweiterung der Beispiele
-@section Erweiterung der Beispiele
+@node Erweiterung der Vorlagen
+@section Erweiterung der Vorlagen
@translationof Extending the templates
-Sie haben sich durch die Übung gearbeitet, Sie
+Sie haben sich durch das Tutorium gearbeitet, Sie
wissen jetzt, wie Sie Notensatz produzieren, und Sie
haben die grundlegenden Konzepte verstanden. Aber wie
erhalten Sie genau die Systeme, die Sie brauchen? Es
* Sopran und Cello::
* Vierstimmige SATB-Partitur::
* Eine Partitur von Grund auf erstellen::
-* Tipparbeit durch Variablen und Funktionen ersparen::
-* Partitur und Stimmen::
+* Tipparbeit durch Variablen und Funktionen einsparen::
+* Partituren und Stimmen::
@end menu
@example
\version @w{"@version{}"}
-melody = \relative c' @{
+
+melody = \relative @{
\clef "treble"
\key c \major
\time 4/4
@example
\version @w{"@version{}"}
-melody = \relative c' @{
+melody = \relative @{
\clef "treble"
\key c \major
\time 4/4
wir schon dabei sind, können wir @code{text}auch nach
@code{SoprText} umbenennen. Denken Sie daran, beide
Vorkommen der Bezeichnung zu ändern: einmal die Definition
-gleich am Anfang (@code{melody = \relative c' @{ }) und
+gleich am Anfang (@code{melody = \relative @{ }) und
dann auch noch die Benutzung der Variable innerhalb des
@code{\score}-Abschnittes.
@example
\version @w{"@version{}"}
-SopranNoten = \relative c' @{
+SopranNoten = \relative @{
\clef "treble"
\key c \major
\time 4/4
Aaa Bee Cee Dee
@}
-CelloNoten = \relative c @{
+CelloNoten = \relative @{
\clef "bass"
\key c \major
\time 4/4
@example
\score @{
<<
- <<
- \new Voice = "eins" @{
- \autoBeamOff
- \SopranNoten
- @}
- \new Lyrics \lyricsto "eins" \SoprText
- >>
- \new Staff \CelloNoten
+ <<
+ \new Voice = "eins" @{
+ \autoBeamOff
+ \SopranNoten
+ @}
+ \new Lyrics \lyricsto "eins" \SoprText
+ >>
+ \new Staff \CelloNoten
>>
\layout @{ @}
\midi @{ @}
Hier also die gesamte Vorlage für Sopran und Cello:
@lilypond[quote,verbatim,ragged-right,addversion]
-sopranoMusic = \relative c' {
+sopranoMusic = \relative {
\clef "treble"
\key c \major
\time 4/4
Aaa Bee Cee Dee
}
-celloMusic = \relative c {
+celloMusic = \relative {
\clef "bass"
\key c \major
\time 4/4
@seealso
Die Vorlagen, mit denen wir begonnen haben, können im
Anhang @qq{Vorlagen} gefunden werden, siehe
-@ref{Ein einzelnes System}.
+@ref{Vorlagen für ein einzelnes System}.
@node Vierstimmige SATB-Partitur
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }
-sopranoMusic = \relative c'' {
+sopranoMusic = \relative {
\clef "treble"
- r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
+ r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
Wor -- thy | is the lamb | that was slain |
}
-altoMusic = \relative a' {
+
+altoMusic = \relative {
\clef "treble"
- r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
+ r4 a'2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords
-tenorMusic = \relative c' {
+
+tenorMusic = \relative {
\clef "G_8"
- r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
+ r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
-bassMusic = \relative c' {
+
+bassMusic = \relative {
\clef "bass"
- r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
+ r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
-upper = \relative a' {
+
+upper = \relative {
\clef "treble"
\global
- r4 <a d fis>2 <a e' a>4
- <d fis d'>4. <d fis d'>8 <a d a'>2
- <g cis g'>4 <a d fis> <a cis e>2
+ r4 <a' d fis>2 <a e' a>4 |
+ <d fis d'>4. <d fis d'>8 <a d a'>2 |
+ <g cis g'>4 <a d fis> <a cis e>2 |
}
-lower = \relative c, {
+
+lower = \relative {
\clef "bass"
\global
- <d d'>4 <d d'>2 <cis cis'>4
- <b b'>4. <b' b'>8 <fis fis'>2
- <e e'>4 <d d'> <a' a'>2
+ <d, d'>4 <d d'>2 <cis cis'>4 |
+ <b b'>4. <b' b'>8 <fis fis'>2 |
+ <e e'>4 <d d'> <a' a'>2 |
}
\score {
\altoMusic
}
>>
- \new Lyrics \lyricsto "altos" {
- \altoWords
- }
+ \new Lyrics \lyricsto "altos" { \altoWords }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
\new Voice = "tenors" {
\tenorMusic
}
>>
- \new Lyrics \lyricsto "tenors" {
- \tenorWords
- }
+ \new Lyrics \lyricsto "tenors" { \tenorWords }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
\new Voice = "basses" {
\bassWords
}
>> % end ChoirStaff
-
\new PianoStaff <<
\set PianoStaff.instrumentName = #"Piano"
\new Staff = "upper" \upper
}
@end lilypond
-Keine der Vorlage bietet diesen Aufbau direkt an. Die Vorlage, die
-am nächsten daran liegt, ist @qq{SATB-Partitur und automatischer
-Klavierauszug}, siehe @ref{Vokalensemble}. Wir müssen diese
+@warning{Das vorliegende Layout kann sehr einfach erzeugt werden. Am Besten
+verwenden sie dafür das vordefinierte Beispiel @code{satb.ly}, siehe auch
+@ref{Built-in templates}. Zum Zweck der einfachen Handhabung wird der
+verwendete Kontextaufbau bewusst versteckt und sich darauf verlassen, dass LilyPond
+alles automatisch bereit stellt. Lassen sie uns zu Lehrzwecken probieren,
+das alles von Grund auf selbst zu entwickeln. Irgendwann werden sie das sowieso machen
+müssen, nämlich genau dann, wenn ein vorgegebenes Beispiel ihre
+Anforderungen nicht angemessen erfüllt.}
+
+Dem gewünschten Ergebnis am nächsten kommt sicher das
+@ref{SATB-Partitur und automatischer Klavierauszug} -- wir müssen diese
Vorlage aber so anpassen, dass die Noten für das Klavier nicht
automatisch aus dem Chorsatz generiert werden. Die Variablen
für die Noten und den Text des Chores sind in Ordnung, wir
@example
\new ChoirStaff <<
\new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Sopran"
+ \set Staff.instrumentName = #"Soprano"
\new Voice = "sopranos" @{
\global
\sopranoMusic
\sopranoWords
@}
\new Staff = "altos" <<
- \set Staff.instrumentName = #"Alt"
+ \set Staff.instrumentName = #"Alto"
\new Voice = "altos" @{
\global
\altoMusic
@example
\new PianoStaff <<
\set PianoStaff.instrumentName = #"Piano "
- \new Staff = "oben" \oben
- \new Staff = "unten" \unten
+ \new Staff = "upper" \upper
+ \new Staff = "lower" \lower
>>
@end example
@noindent
-und fügen die Variablen @code{oben}
-und @code{unten} hinzu.
+und fügen die Variablen @code{upper}
+und @code{lower} hinzu.
Das Chorsystem und das Pianosystem müssen mit
spitzen Klammern kombiniert werden, damit beide
Takte sieht unser Beispiel nun so aus:
@lilypond[quote,verbatim,ragged-right,addversion]
-global = {
- \key d \major
- \time 4/4
-}
-sopranoMusic = \relative c'' {
+global = { \key d \major \time 4/4 }
+sopranoMusic = \relative {
\clef "treble"
- r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
+ r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
Wor -- thy | is the lamb | that was slain |
}
-altoMusic = \relative a' {
+altoMusic = \relative {
\clef "treble"
- r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
+ r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 |
}
altoWords = \sopranoWords
-tenorMusic = \relative c' {
+tenorMusic = \relative {
\clef "G_8"
- r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
+ r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
-bassMusic = \relative c' {
+bassMusic = \relative {
\clef "bass"
- r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
+ r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
-upper = \relative a' {
+upper = \relative {
\clef "treble"
\global
- r4 <a d fis>2 <a e' a>4
- <d fis d'>4. <d fis d'>8 <a d a'>2
- <g cis g'>4 <a d fis> <a cis e>2
+ r4 <a' d fis>2 <a e' a>4 |
+ <d fis d'>4. <d fis d'>8 <a d a'>2 |
+ <g cis g'>4 <a d fis> <a cis e>2 |
}
-lower = \relative c, {
+lower = \relative {
\clef "bass"
\global
- <d d'>4 <d d'>2 <cis cis'>4
- <b b'>4. <b' b'>8 <fis fis'>2
- <e e'>4 <d d'> <a' a'>2
+ <d, d'>4 <d d'>2 <cis cis'>4 |
+ <b b'>4. <b' b'>8 <fis fis'>2 |
+ <e e'>4 <d d'> <a' a'>2 |
}
\score {
die fertigen Vorlagen zu verändern. Auf diese Art könne Sie
auch Ihren eigenen Stil entwickeln, und ihn der Musik anpassen,
die Sie notieren wollen. Als Beispiel wollen wir demonstrieren,
-wie man die Partitur für ein Orgelpreludium von Grund auf
+wie man die Partitur für ein Orgelpräludium von Grund auf
konstruiert.
Beginnen wir mit dem Kopf, dem @code{header}-Abschnitt.
Struktur, in die wir dann die Einzelheiten nach und nach
eintragen.
-Als Beispiel benutzen wir zwei Takte aus dem Orgelpreludium
+Als Beispiel benutzen wir zwei Takte aus dem Orgelpräludium
@notation{Jesu, meine Freude} von J. S. Bach, notiert
für zwei Manuale und Pedal. Sie können die Noten am Ende
dieses Abschnittes sehen. Das obere Manual trägt zwei Stimmen,
\version @w{"@version{}"}
\header @{
title = "Jesu, meine Freude"
- composer = "J. S. Bach"
+ composer = "J S Bach"
@}
keyTime = @{ \key c \minor \time 4/4 @}
ManualOneVoiceOneMusic = @{ s1 @}
oder später unterläuft. Sie können das fertige
Beispiel am Ende des Abschnittes kopieren und die
Klammern entfernen, um zu sehen, wie die
-Fehlermeldung aussehen kann, die Sie in solch
+Fehlermeldungen aussehen könnten, die Sie in solch
einem Fall erhalten würden.
@example
@end example
Es ist nicht notwendig, die simultane Konstruktion
-@code{<< .. >>} innerhalb des zweiten Manualsystems
+@code{<< @dots{} >>} innerhalb des zweiten Manualsystems
und des Pedalsystems zu benutzen, denn sie enthalten
nur eine Stimme. Andererseits schadet es nichts, sie
zu schreiben, und es ist eine gute Angewohnheit, immer
schreiben, wenn mehr als eine Stimme vorkommen könnten.
Für Stimmen (@code{Voice}) dagegen gilt genau das
Gegenteil: eine neue Stimme sollte immer von
-geschweiften Klammern (@code{@{ .. @}}) gefolgt
+geschweiften Klammern (@code{@{ @dots{} @}}) gefolgt
werden, falls Sie ihre Noten in mehrere Variable aufteilen,
die nacheinander gesetzt werden sollen.
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \keyTime % set time signature and key
+ \keyTime % set key and time signature
\clef "treble"
\new Voice @{
\voiceOne
@}
>> % end ManualOne Staff context
\new Staff = "ManualTwo" \with @{
- \override VerticalAxisGroup
- #'staff-staff-spacing #'stretchability = 5
+ \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
@} <<
\keyTime
\clef "bass"
>>
@} % end Score context
@end example
-
Damit ist das Grundgerüst fertig. Jede Orgelmusik mit drei
Systemen hat die gleiche Struktur, auch wenn die Anzahl der Stimmen
in einem System sich ändern kann. Jetzt müssen wir nur noch
composer = "J S Bach"
}
keyTime = { \key c \minor \time 4/4 }
-ManualOneVoiceOneMusic = \relative g' {
- g4 g f ees |
- d2 c2 |
+ManualOneVoiceOneMusic = \relative {
+ g'4 g f ees |
+ d2 c |
}
-ManualOneVoiceTwoMusic = \relative c' {
- ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
- c8 c4 b8 c8. g16 c b c d |
+ManualOneVoiceTwoMusic = \relative {
+ ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
+ 8 c4 b8 c8. g16 c b c d |
}
-ManualTwoMusic = \relative c' {
- c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
- f16 ees f d g aes g f ees d e8~ ees16 f ees d |
+ManualTwoMusic = \relative {
+ c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+ f16 ees f d g aes g f ees d ees8~ 16 f ees d |
}
-PedalOrganMusic = \relative c {
- r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+PedalOrganMusic = \relative {
+ r8 c16 d ees d ees8~ 16 a, b g c b c8 |
r16 g ees f g f g8 c,2 |
}
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \keyTime % set time signature and key
+ \keyTime % set key and time signature
\clef "treble"
\new Voice {
\voiceOne
}
>> % end ManualOne Staff context
\new Staff = "ManualTwo" \with {
- \override VerticalAxisGroup
- #'staff-staff-spacing #'stretchability = 5
+ \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
} <<
\keyTime
\clef "bass"
@rglos{system}.
-@node Tipparbeit durch Variablen und Funktionen ersparen
-@subsection Tipparbeit durch Variablen und Funktionen ersparen
+@node Tipparbeit durch Variablen und Funktionen einsparen
+@subsection Tipparbeit durch Variablen und Funktionen einsparen
@translationof Saving typing with variables and functions
@cindex Variablen
Bis jetzt wurde immer derartige Notation vorgestellt:
@lilypond[quote,verbatim,ragged-right]
-hornNotes = \relative c'' { c4 b dis c }
+hornNotes = \relative { c''4 b dis c }
\score {
{
Musik sehr nützlich sein könnte:
@lilypond[quote,verbatim,ragged-right]
-fragmentA = \relative c'' { a4 a8. b16 }
-fragmentB = \relative c'' { a8. gis16 ees4 }
+fragmentA = \relative { a'4 a8. b16 }
+fragmentB = \relative { a'8. gis16 ees4 }
+
violin = \new Staff {
\fragmentA \fragmentA |
\fragmentB \fragmentA |
bezeichnet) können jedoch auch für eigene Anpassungen eingesetzt
werden:
-@c TODO Avoid padtext - not needed with skylining
@lilypond[quote,verbatim,ragged-right]
dolce = \markup { \italic \bold dolce }
-padText = { \once \override TextScript #'padding = #5.0 }
-fthenp=_\markup {
- \dynamic f \italic \small { 2nd } \hspace #0.1 dynamic p
+
+centreText = { \once \override TextScript.self-alignment-X = #CENTER }
+
+fthenp =_\markup {
+ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
}
-violin = \relative c'' {
+violin = \relative {
\repeat volta 2 {
- c4._\dolce b8 a8 g a b
- \padText
- c4.^"hi there!" d8 e' f g d
- c,4.\fthenp b8 c4 c-.
+ c''4._\dolce b8 a8 g a b |
+ \centreText
+ c4.^"hi there!" d8 e f g d |
+ c4.\fthenp b8 c4 c-. |
}
}
{
\violin
}
- \layout{ragged-right=##t}
}
@end lilypond
-Derartige Variablen sind offensichtlich sehr nützlich, zu Tipparbeit zu ersparen. Aber es lohnt sich schon, sie zu
+Derartige Variablen sind offensichtlich sehr nützlich, sich
+Tipparbeit zu ersparen. Aber es lohnt sich schon, sie zu
benutzen, wenn man sie nur einmal benutzen will, denn sie
vereinfachen die Struktur einer Datei sehr stark. Hier das
vorige Beispiel ohne jede Benutzung von Variablen. Es ist
sehr viel schwerer lesbar, besonders die letzte Zeile.
@example
-violin = \relative c'' @{
+violin = \relative @{
\repeat volta 2 @{
- c4._\markup @{ \italic \bold dolce @} b8 a8 g a b
- \once \override TextScript #'padding = #5.0
- c4.^"hi there!" d8 e' f g d
- c,4.\markup @{
+ c''4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
+ \once \override TextScript.self-alignment-X = #CENTER
+ c4.^"hi there!" d8 e f g d |
+ c4._\markup @{
\dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
@}
b8 c4 c-. |
@}
@end example
-@c TODO Replace the following with a better example -td
-@c Skylining handles this correctly without padText
-
Bisher haben wir vor allem statische Ersetzungen betrachtet:
-wenn LilyPond etwa @code{\padText} sieht, wird es ersetzt mit
+wenn LilyPond etwa @code{\centreText} sieht, wird es ersetzt mit
all dem Code, mit dem wir es definiert haben (also alles,
-was sich rechts von @code{padtext=} befindet).
+was sich rechts von @code{centreText=} befindet).
LilyPond kann auch nicht-statische Ersetzungen bewältigen. Man
kann sie sich als Funktionen vorstellen.
@lilypond[quote,verbatim,ragged-right]
padText =
#(define-music-function
- (parser location padding)
+ (padding)
(number?)
#{
- \once \override TextScript #'padding = $padding
+ \once \override TextScript.padding = #padding
#})
-\relative c''' {
- c4^"piu mosso" b a b |
+\relative {
+ c''4^"piu mosso" b a b
\padText #1.8
- c4^"piu mosso" d e f |
+ c4^"piu mosso" b a b
\padText #2.6
- c4^"piu mosso" fis a g |
+ c4^"piu mosso" b a b
}
@end lilypond
Die Benutzung von Variablen ist auch eine gute Möglichkeit,
Arbeit zu vermeiden, wenn sich einmal die Syntax von LilyPond
-ändern sollte (siehe auch @rprogram{Updating old input files
-with convert-ly}).
+ändern sollte (siehe auch @rprogram{Dateien mit convert-ly aktualisieren}).
Wenn man eine einzige Definition hat (wie etwa @code{\dolce}),
die für alle Vorkommen in der Notation eingesetzt wird, muss
man auch nur einmal diese Definition aktualisieren, anstatt
dass man sie in jeder @file{.ly}-Datei einzeln ändern müsste.
-@node Partitur und Stimmen
-@subsection Partitur und Stimmen
+@node Partituren und Stimmen
+@subsection Partituren und Stimmen
@translationof Scores and parts
In Orchestermusik werden alle Noten zweimal gedruckt. Einmal
Noten eines Horn/@/Fagott-Duos enthält:
@example
-hornNotes = \relative c @{
+hornNotes = \relative @{
\time 2/4
r4 f8 a | cis4 f | e4 d |
@}
kann in folgender Notenausgabe gesehen werden:
@lilypond[quote,ragged-right]
-\transpose f c' \relative c {
+\transpose f c' \relative {
\time 2/4
r4 f8 a | cis4 f | e4 d |
}
R2*3
@end example
-Wenn die Stimme gesetzt wird, werden Mehrtaktpausen komprimiert. Das geschieht, indem man folgendes in die Datei
-schreibt:
+Wenn die Stimme gesetzt wird, sollen Mehrtaktpausen zusammen gefasst werden.
+Zu diesem Zweck gibt es eine Musik Funktion:
@example
-\set Score.skipBars = ##t
+\compressMMRests @{ ... @}
@end example
-@noindent
-Dieser Befehl setzt die Eigenschaft @code{skipBars} im
-@code{Score}-Kontext auf wahr (@code{##t}). Die Pause und diese Option zu der Musik von oben hinzugefügt, ergibt folgendes
-Beispiel:
+Angewendet auf @code{hornNotes} erhält man:
@lilypond[quote,ragged-right]
-\transpose f c' \relative c {
+\compressMMRests \transpose f c' \relative {
\time 2/4
- \set Score.skipBars = ##t
R2*3 |
r4 f8 a | cis4 f | e4 d |
}
woraus sich ergibt:
@lilypond[quote,ragged-right]
-\relative c <<
+\relative <<
\new Staff {
\clef "treble"
\time 2/4
}
>>
@end lilypond
+
+@seealso
+Handbuch zum Lernen:
+@ref{Stücke durch Variablen organisieren}.
+
+Notationsreferenz:
+@ruser{Transponieren},
+@ruser{Orchesterstimmen erstellen},
+@ruser{Ganztaktpausen},
+@ruser{LilyPond-Dateien einfügen}.