@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 01361d46dc9d514a79683d003eeea5f4fbf2b746
+ Translation of GIT committish: a0077273ac8bf29ae472c8712bc78a02d138f898
When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
+ version that you are working on. For details, see the Contributors'
+ Guide, node Updating translation committishes.
@end ignore
-@c \version "2.12.0"
-@c Translators: Till Rettig, Reinhold Kainhofer
+@c \version "2.14.0"
+@c Translators: Till Paala, Reinhold Kainhofer
-@node Fundamental concepts
-@chapter Fundamental concepts
+@node Grundbegriffe
+@chapter Grundbegriffe
+@translationof Fundamental concepts
Nachdem im Tutorial 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.
-@menu
-* How LilyPond input files work::
-* Voices contain music::
-* Contexts and engravers::
-* Extending the templates::
+@menu
+* Wie eine LilyPond-Eingabe-Datei funktioniert::
+* Voice enthält Noten::
+* Kontexte und Engraver::
+* Erweiterung der Beispiele::
@end menu
-@node How LilyPond input files work
-@section How LilyPond input files work
+@node Wie eine LilyPond-Eingabe-Datei funktioniert
+@section 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 @ruser{File structure}.
+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 @ruser{Die Dateistruktur}.
-Die meisten Beispiele in diesem Handbuch sind kleine Schnipsel, wie
+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
+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
@}
@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
+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]
@end lilypond
Eine komplette Definition des Eingabeformats findet sich
-im Kapitel @ruser{File structure}.
+im Kapitel @ruser{Die Dateistruktur}.
@menu
-* Introduction to the LilyPond file structure::
-* Score is a (single) compound musical expression::
-* Nesting music expressions::
-* On the un-nestedness of brackets and ties::
+* Einführung in die Dateistruktur von LilyPond::
+* Score ist ein (einziger) zusammengesetzter musikalischer Ausdruck::
+* Musikalische Ausdrücke ineinander verschachteln::
+* Über die Nicht-Schachtelung von Klammern und Bindebögen::
@end menu
-@node Introduction to the LilyPond file structure
-@subsection Introduction to the LilyPond file structure
+@node Einführung in die Dateistruktur von LilyPond
+@subsection Einführung in die Dateistruktur von LilyPond
+@translationof Introduction to the LilyPond file structure
@cindex Eingabeformat
@cindex Dateistruktur
@example
\version @w{"@version{}"}
+
\header @{ @}
+
\score @{
@var{...zusammengesetzter Musik-Ausdruck...} % Die gesamten Noten kommen hier hin!
\layout @{ @}
@end example
@noindent
-Aufgrund der Flexibilität von LilyPond gibt es viele Variationen dieses
+Aufgrund der Flexibilität von LilyPond gibt es viele Variationen dieses
Schemas, aber dieses Beispiel dient als einfacher Ausgangspunkt.
@funindex \book
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
+bei Bedarf einfügt, wenn die Eingabedatei eine einfache Struktur
hat.
Sehen wir uns als ein solches einfaches Beispiel an:
@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
+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:
@example
@noindent
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
-Stuktur wird automatisch im Speicher beim Aufruf von LilyPond erzeugt,
+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.
@cindex Implizite Kontexte
@strong{Ein Wort der Warnung ist jedoch angebracht!} Viele der Beispiele
in der Dokumentation von LilyPond lassen die @code{\new Staff} und @code{\new Voice}
-Befehle zur Erzeugung einer Notenzeile und einer Stimme (beides ist in
-LilyPond ein sogenannter Kontext) bewusst aus,
+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
+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 @ref{Contexts and engravers}.
+siehe @ref{Kontexte und Engraver}.
@warning{Wenn mehr als ein paar Zeilen an Musik eingegeben werden,
-empfielt es sich, die Notenzeilen und die Stimmen immer explizit
+empfiehlt es sich, die Notenzeilen und die Stimmen immer explizit
mit @code{\new Staff} und @code{\new Voice} zu erzeugen.}
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
+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 durch @code{GrandStaff}):
+Note bis hin zu einer riesigen Partitur mit vielen Notensystemen
+(bezeichnet hier durch @code{GrandStaff}):
@example
@{
@end example
@noindent
-Da sich alles innerhalb der geschweiften Klammern @code{@{ ... @}}
+Da sich alles innerhalb der geschweiften Klammern @code{@{ ... @}}
befindet, wird es wie ein einziger musikalischer Ausdruck behandelt.
@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
-werden. Tatsächlich werden einige dieser Befehle meist außerhalb des
-@code{\score}-Blocksgesetzt, zum Beispiel findet sich der @code{\header}
-sehr oft oberhalb der @code{\score}-Umgebung. Das
+werden. Tatsächlich werden einige dieser Befehle meist außerhalb des
+@code{\score}-Blocksgesetzt, zum Beispiel 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
+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
-Benutzerhandbuch -- @ruser{Score layout} und
-@ruser{Creating MIDI files}.
+bzw. eine MIDI-Datei erzeugt. Genauer beschrieben werden sie im
+Benutzerhandbuch -- @ruser{Partiturlayout} und
+@ruser{MIDI-Dateien erstellen}.
@cindex Partituren, mehrfache
@cindex book-Abschnitte, implizit
@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 weden.
-Ein @code{\book}-Befehl ist nicht explizit notwendig -- er wird
-implizit erzeugt. Wenn jedoch für jeden @code{\score}-Block in einer
-einzigen @code{.ly}-Datei eine eigene Ausgabe-Datei erzeugt werden soll,
+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.
+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,
dann muss jeder dieser Blöcke in einen eigenen @code{\book}-Block
gesetzt werden: Jeder @code{\book}-Block erzeugt dann eine
eigene Ausgabedatei.
Jeder @code{\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
+setzt LilyPond den gesamten Dateiinhalt innerhalb eines einzigen
impliziten @code{\book}-Blocks.
-Jeder @code{\score}-Block beschreibt ein eigenständiges Musikstück
+Jeder @code{\score}-Block beschreibt ein eigenständiges Musikstück
innerhalb des @code{\book}-Blocks.
@cindex Layout-Umgebung, Platzierung
@cindex Platzierung von layout-Umgebung
Jeder @code{\layout}-Block wirkt sich auf den @code{\score}- oder
-@code{\book}-Block aus, in dem er auftritt. So wirkt z.B. ein
-@code{\layout}-Block innerhalb eines @code{\score}-Blocks nur auf
-diesen einen Block und seinen gesamten Inhalt, ein @code{\layout}-Block
-außerhalb eines @code{\score}-Blocks (und daher innerhalb des implizit
-erzeugten oder explizit angegebenen @code{\book}-Blocks) jedoch auf
+@code{\book}-Block aus, in dem er auftritt. So wirkt z.B. ein
+@code{\layout}-Block innerhalb eines @code{\score}-Blocks nur auf
+diesen einen Block und seinen gesamten Inhalt, ein @code{\layout}-Block
+außerhalb eines @code{\score}-Blocks (und daher innerhalb des implizit
+erzeugten oder explizit angegebenen @code{\book}-Blocks) jedoch auf
alle @code{\score}-Blocks innerhalb dieses @code{\book}-Blocks.
-Nähere Details finden sich im Abschnitt @ruser{Multiple scores in a book}.
+Nähere Details finden sich im Abschnitt @ruser{Mehrere Partituren in einem Buch}.
@cindex Variablen
@cindex Bezeichner
-Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen.
-Alle Vorlagen verwenden diese Möglichkeit.
+Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen, wie auch gezeigt in @ref{Stücke durch Bezeichner organisieren}.
+Alle Vorlagen verwenden diese Möglichkeit:
@example
melodie = \relative c' @{
@end example
Wenn LilyPond diese Datei analysiert, nimmt es den Inhalt
-von @code{melodie} (alles nach dem Gleichheitszeichen) und
-fügt ihn immer dann ein, wenn ein @code{\melodie}
+von @code{melodie} (alles nach dem Gleichheitszeichen) und
+fügt ihn immer dann ein, wenn ein @code{\melodie}
vorkommt. Die Namen sind frei wählbar, die Variable kann genauso
-gut @code{melodie}, @code{GLOBAL},
-@code{rechteHandklavier}, oder @code{foofoobarbaz} heißen. Für mehr
-Information siehe
-@ref{Saving typing with variables and functions}.
+gut @code{melodie}, @code{GLOBAL}, @code{rechteHandKlavier},
+oder @code{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. Die genauen Einschränkungen sind beschrieben in
-@ruser{File structure}.
+lauten. Für mehr Information siehe
+@ref{Tipparbeit durch Variablen und Funktionen ersparen}. Die genauen
+Einschränkungen sind beschrieben in @ruser{Die Dateistruktur}.
@seealso
-Eine vollständige Definition des Eingabeformats findet sich in
-@ruser{File structure}.
+Eine vollständige Definition des Eingabeformats findet sich in
+@ruser{Die Dateistruktur}.
-@node Score is a (single) compound musical expression
-@subsection Score is a (single) compound musical expression
+@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 Musikausdruck, zusammengesetzter
-Im vorigen Kapitel, @ref{Introduction to the LilyPond file structure},
-wurde die allgemeine Struktur einer LilyPond-Quelldatei
-beschrieben. Aber anscheinend haben wir die wichtigste
-Frage ausgelassen, nämlich wie man herausfindet, was nach
+Im vorigen Kapitel, @ref{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 @code{\score} geschrieben werden soll.
-In Wirklichkeit ist das aber gar kein Geheimnis. Diese
+In Wirklichkeit ist das aber gar kein Geheimnis. Diese
Zeile ist die Antwort:
@quotation
-@emph{Eine Partitur fängt immer mit @code{\score} an, gefolgt
+@emph{Eine Partitur fängt immer mit @code{\score} an, gefolgt
von einem einzelnen musikalischen Ausdruck.}
@end quotation
@noindent
-Vielleicht wollen Sie noch einmal
-@ref{Music expressions explained} ü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.
-
-@example
-\score @{
- @{ % diese Klammer startet den großen mus. Ausdruck
- \new StaffGroup <<
- @var{...hier eine ganze Wagner-Oper einfügen...}
- >>
- @} % diese Klammer beendet den Ausdruck
- \layout @{ @}
-@}
-@end example
-
-Eine Wagner-Oper ist mindestens doppelt so lang wie dieses Handbuch,
-beschränken wir uns also auf einen Sänger und Klavier. Wir brauchen
-keine ganze Orchesterpartitur, infolgedessen können wir die Systemgruppe
-(StaffGroup) auslassen, aber wir brauchen einen Sänger und ein Klavier.
+Vielleicht wollen Sie noch einmal
+@ref{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 @emph{brauchen} aber einen Sänger und ein Klavier.
@example
\score @{
@}
@end example
+Hier wurden die Systeme (Staff) benannt: @qq{Sänger} und
+@qq{Klavier}. Das ist nicht direkt notwendig in diesem Fall,
+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; wir wollen ja auch Klavier- und Sängerstimme gleichzeitig
-und nicht hintereinander haben. Bei genauerem Hinsehen fällt auf, dass
-die @code{<< ... >>}-Konstruktion für die Notenzeile des Sängers eigentlich
-nicht unbedingt nötig wäre, da sie ja nur einen (sequenzielle) musikalischen
-Ausdruck enthält, nämlich alle Noten des Sängers hintereinander. Daher
-könnte an sich auch einfach ein @code{@{...@}} benutzt werden. Die
-Spitzklammern sind allerdings notwendig, sobald die Notenzeile mehrere
-parallelle Ausdrücke -- wie etwa zwei parallele Stimmen oder eine Stimme
-mit zugehörigem Text -- enthält.
-Wir werden die Musik später in das Beispiel einfügen, im Moment begnügen
-wir uns mit einigen Platzhalter-Noten und -Texten.
+gesetzt. Dadurch werden Vokalstimme und Klaviersysteme übereinander
+ausgegeben. Die @code{<< ... >>}-Konstruktion ist für das
+Sänger-System nicht notwendig, wenn hier nur die Noten einer
+einzigen Stimme eingefügt werden sollen, aber @code{<< ... >>}
+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
+Sie sich nicht erinnern, wie man Gesangstext notiert, lesen
+Sie noch einmal @code{\addlyrics} in @ref{Setting simple songs}.
+@c KEEP LY
@lilypond[verbatim,quote,ragged-right]
\score {
<<
}
@end lilypond
-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. @code{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 @code{\new
-PianoStaff} gesetzt. @code{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.
-
-Jetzt könnte man in diese Umgebung Noten einfügen. Innerhalb der
+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. @code{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 @code{\new
+PianoStaff} gesetzt. @code{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 @code{\new Voice = "Singstimme"}
könnte man
@end example
@noindent
-schreiben. Aber wenn man seine Datei so direkt schreibt, wird
-der @code{\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.
+schreiben. Aber wenn man seine Datei so direkt schreibt, wird
+der @code{\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 @code{text}-Variable als Gesangstext
+interpretiert wird, wird ihm @code{\lyricmode} vorangesetzt. 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
+Fehler produzieren. (Einige andere Eingabemodi sind außerdem noch
+verfügbar, siehe @ruser{Input modes}.)
+
+Also haben wir, wenn wir ein paar Noten und einen Bassschlüssel
+für die linke Hand hinzufügen, folgendes Beispiel:
+@c KEEP LY
@lilypond[verbatim,quote,ragged-right]
melodie = \relative c'' { r4 d8\noBeam g, c4 r }
text = \lyricmode { And God said, }
oben = \relative c'' { <g d g,>2~ <g d g,> }
-unten = \relative c { b2 e2 }
+unten = \relative c { b2 e }
\score {
<<
}
@end lilypond
-Achten Sie auf den Unterschied zwischen Noten, die mit @code{\relative}
-oder direkt in einem musikalischen Ausruck eingegeben werden, und
-dem Text des Lieds, der innerhalb @code{\lyricmode} angegeben
-werden muss. Diese Unterscheidung ist für LilyPond essentiell,
-um zu entscheiden, ob der folgende Inhalt als Musik oder Text
-interpretiert werden soll. Wie könnte LilyPond sonst entscheiden,
-ob @code{@{a b c@}} die drei Noten a, b und c darstellen soll oder
-den Text eines Lieds über das Alphabet!
-
-Beim Schreiben (oder Lesen) einer @code{\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
+Beim Schreiben (oder Lesen) einer @code{\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.
@seealso
-Benutzerhandbuch: @ruser{Structure of a score}.
+Benutzerhandbuch: @ruser{Struktur einer Partitur}.
-@node Nesting music expressions
-@subsection Nesting music expressions
+@node Musikalische Ausdrücke ineinander verschachteln
+@subsection Musikalische Ausdrücke ineinander verschachteln
+@translationof Nesting music expressions
@cindex Notenzeilen, temporäre
@cindex Ossia
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ützlichm um
-@rglosnamed{ossia,Ossias} zu erzeugen. Hier folgt ein kures Beispiel,
-wie eine zusätzliche temporäre Notenzeile für nur drei Noten erzeugt
+Zeitpunkt eingeführt weden. 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]
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff {
f8 f c
}
@end lilypond
@noindent
-Wie man sieht, ist die Größe des Notenschlüssels dieselbe, wie sie
+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:
+@c KEEP LY
@lilypond[verbatim,quote,ragged-right]
\new Staff = "Hauptzeile" {
\relative g' {
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
- alignAboveContext = #"Hauptzeile" }
- { f8 f c }
+ alignAboveContext = #"Hauptzeile"
+ }{ f8 f c }
>>
r4 |
}
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 @qq{Hauptzeile} plaziert werden soll, anstatt
+mit Namen @qq{Hauptzeile} plaziert werden soll, anstatt
standardmäßig unterhalb.
@seealso
-Ossia werden oft ohne Notenschlüssel und Taktangabe gedruck, 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 @ref{Size of objects}
-und @ruser{Ossia staves}.
+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 @ref{Größe von Objekten}
+und @ruser{Ossia-Systeme}.
-@node On the un-nestedness of brackets and ties
-@subsection On the un-nestedness of brackets and ties
+@node Über die Nicht-Schachtelung von Klammern und Bindebögen
+@subsection Über die Nicht-Schachtelung von Klammern und Bindebögen
+@translationof On the un-nestedness of brackets and ties
@cindex Klammern, geschachtelt
@cindex Schachtelung von Klammern
@cindex Klammer-Typen
Sie haben bisher zahlreiche verschiedene Arten von Klammern
-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 kurz rekapitulieren:
+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:
@c attempt to force this onto a new page
@need 50
Triolen (als @code{\times x/y @{..@}} geschrieben) und
Vorschlagnoten (als @code{\grace@{..@}} notiert).
-Außerhalb von LilyPond fordert die übliche Benutzung von
+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{<< [ @{ ( .. ) @} ] >>}. 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
-Tabelle mit dem Wort @q{Umschließt} beschrieben werden -- sie
+wie die öffnenden Klammern vor. Dies ist auch in LilyPond
+ein @strong{Muss} für die drei Klammerarten, die in obiger
+Tabelle mit dem Wort @q{Umschließt} beschrieben werden -- sie
müssen korrekt geschachtelt werden.
-Die restlichen Klammerarten (durch @q{Markiert} beschrieben),
-die Haltebögen und die Triolen brauchen jedoch mit den
-anderen Klammerarten @strong{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
+Die restlichen Klammer-artigen Konstruktionen (durch @q{Markiert}
+in der Tabelle oben beschrieben), die Haltebögen und die Triolen
+brauchen jedoch mit
+den anderen Klammern oder Klammer-artigen Konstrukten @strong{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:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
- { g8\( a b[ c b\) a] }
+@lilypond[quote,verbatim,ragged-right,relative=2]
+{ g8\( a b[ c b\) a] g4 }
@end lilypond
-Im Allgemeinen können die verschiedenen Klammerarten, Haltebögen,
+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
+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,
-ein Haltebogen, der über zwei Triolen läuft, sowie einen
+ein Haltebogen, der über zwei Triolen läuft, sowie einen
Phrasierungsbogen, der in einer Triole beginnt (Zeilen 3 und 4).
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
{
- r16[ g16 \times 2/3 {r16 e'8] }
- g16( a \times 2/3 {b d) e' }
- g8[( a \times 2/3 {b d') e'~]}
- \times 4/5 {e'32\( a b d' e'} a'4.\)
+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.\)
}
@end lilypond
-@node Voices contain music
-@section Voices contain music
+@node Voice enthält Noten
+@section Voice enthält Noten
+@translationof Voices contain music
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
von LilyPond.
-@menu
-* I'm hearing Voices::
-* Explicitly instantiating voices::
-* Voices and vocals::
-@end menu
+@menu
+* Ich höre Stimmen::
+* Stimmen explizit beginnen::
+* Stimmen und Text::
+@end menu
-@node I'm hearing Voices
-@subsection I'm hearing Voices
+@node Ich höre Stimmen
+@subsection Ich höre Stimmen
+@translationof I'm hearing Voices
@cindex Polyphonie
@cindex Ebenen
@cindex Akkorde versus Stimmen
@cindex Noten gleichzeitig
-Die grundegendsten und innersten Ebenen ein einer LilyPond-Partitur
+Die grundlegendsten und innersten Ebenen ein 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
-dagegeben oft mehrere Stimmen, um die verschiedenen gleichzeitig
-erklingenden Noten mit oft unterschiedlichen Rhythmen darstellen
+dagegen oft mehrere Stimmen, um die verschiedenen gleichzeitig
+erklingenden Noten mit oft unterschiedlichen Rhythmen darstellen
zu können.
Eine einzelne Stimme kann natürlich auch vielen Noten in einem Akkord
-enhalten -- wann also braucht man dann mehrere Stimmen? Schauen wir
+enthalten -- wann also braucht man dann mehrere Stimmen? Schauen wir
uns zuerst dieses Beispiel mit vier Akkorden an:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+@lilypond[quote,verbatim,ragged-right,relative=1]
\key g \major
<d g>4 <d fis> <d a'> <d g>
@end lilypond
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
+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
werden, denn sie beginnen ja zur selben Zeit. In diesem Fall also brauchen
@code{@{ ... @}}) zu schreiben und dann mit den spitzen Klammern
(@code{<<...>>}) 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
+getrennt werden, damit sie als zwei unterschiedliche Stimmen erkannt
werden. Ohne diese Trenner würden sie als eine einzige Stimme notiert
werden. Diese Technik ist besonders dann angebracht, wenn es sich bei
den Noten um hauptsächlich homophone Musik handelt, in der hier und da
So sieht es aus, wenn die Akkorde in zwei Stimmen aufgeteilt werden
und zur Durchgangsnote noch ein Bogen hinzugefügt wird:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key g \major
-% Voice "1" Voice "2"
-<< { g4 fis8( g) a4 g } \\ { d4 d d d } >> |
+% Voice "1" Voice "2"
+<< { g4 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,fragment,ragged-right,relative=2]
+@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 } >> |
+<< { 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,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key d \minor
<< {
% Voice "1"
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
+jeder dieser Kontexte wird die vertikale Ausrichtung von Bögen, Hälsen,
+Dynamik usw. entsprechend eingestellt.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
\new Staff \relative c' {
% Main voice
c16 d e f
- % Voice "1" Voice "2" Voice "3"
- << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
- << { d2 e2 } \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
+ % Voice "1" Voice "2" Voice "3"
+ << { g4 f e } \\ { r8 e4 d c8~ } >> |
+ << { d2 e } \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
}
@end lilypond
-Diese Stimmen sind alle getrennt von der Hauptstimme, die die Noten
+Diese Stimmen sind alle getrennt von der Hauptstimme, die die Noten
außerhalb der @code{<< .. >>}-Konstruktion beinhaltet. Lassen wir es
uns die @emph{simultane Konstruktion} nennen. Bindebögen und Legatobögen
können nur Noten in der selben Stimmen miteinander verbinden und können
\new Staff \relative c' {
% Main voice
c16 d e f
- << % Bar 1
+ << % Bar 1
{
\voiceOneStyle
g4 f e
\\
{
\voiceTwoStyle
- r8 e4 d c8 ~
+ r8 e4 d c8~
}
- >>
- << % Bar 2
+ >> |
+ << % Bar 2
% Voice 1 continues
- { d2 e2 }
+ { d2 e }
\\
% Voice 2 continues
- { c8 b16 a b8 g ~ g2 }
+ { c8 b16 a b8 g~ g2 }
\\
{
\voiceThreeStyle
- s4 b4 c2
+ s4 b c2
}
- >>
+ >> |
}
@end lilypond
Stimme als grüne Kreise mit Kreuz und die vierte Stimme (die hier nicht
benutzt wird) hat dunkelrote Kreuze. @code{\voiceNeutralStyle} (hier auch
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{Visibility and color of objects} und
-@ref{Using variables for tweaks}.
+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}.
@cindex Polyphonie und relativer Notationsmodus
@cindex relativer Notationsmodus und Polyphonie
Polyphonie ändert nicht die Verhältnisse der Noten innerhalb eines
-@code{\relative @{ @}}-Blocks. Jede Note wird weiterhin relativ zu
+@code{\relative}-Blocks. Jede Note wird weiterhin relativ zu
der vorherigen Note errechnet, oder relativ zur ersten Note des vorigen
Akkords. So ist etwa hier
@lilypond[quote,ragged-right]
\new Staff \relative c'' {
\key aes \major
- << % Voice one
+ << % Voice one
{ c2 aes4. bes8 }
- \\ % Voice two
- { aes2 f4 fes }
- \\ % No voice three
- \\ % Voice four
+ \\ % Voice two
{
% Ignore these for now - they are explained in Ch 4
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
+ \once \override NoteColumn #'ignore-collision = ##t
+ <ees, c>2
\once \override NoteColumn #'force-hshift = #0.5
des2
}
+ \\ % No voice three
+ \\ % Voice four
+ {
+ \override NoteColumn #'force-hshift = #0
+ aes'2 f4 fes
+ }
>> |
<c ees aes c>1 |
}
@end lilypond
-Die Richtung der Hälse wird oft benutzt, um anzuzeigen, dass zwei
+Die Richtung der Hälse wird oft benutzt, um anzuzeigen, dass zwei
gleichzeitige Melodien sich fortsetzen. Hier zeigen die Hälse aller
oberen Noten nach oben und die Hälse aller unteren Noten nach unten.
-Das ist der erste Anhaltspunkt, dass mehr als eine Stimme benötigt
+Das ist der erste Anhaltspunkt, dass mehr als eine Stimme benötigt
wird.
Aber die wirkliche Notwendigkeit für mehrere Stimmen tritt erst
dann auf, wenn unterschiedliche Noten gleichzeitig erklingen, aber
-unterschiedliche Dauern besitzen. Schauen Sie sich die Noten
+unterschiedliche Dauern besitzen. Schauen Sie sich die Noten
auf dem dritten Schlag im ersten Takt an. Das As ist eine punktierte
Viertel, das F ist eine Viertel und das Des eine Halbe. Sie können
nicht als Akkord geschrieben werden, denn alle Noten in einem Akkord
Taktabschnitt benötigt drei Stimmen, und normalerweise schreibt man
drei Stimmen für den ganzen Takt, wie im Beispiel unten zu sehen ist;
hier sind unterschiedliche Köpfe und Farben für die verschiedenen Stimmen
-eingesetzt. Nocheinmal: der Quellcode für dieses Beispiel wird später
-erklärt werden, deshalb ignorieren Sie alles, was Sie hier nicht
+eingesetzt. Noch einmal: der Quellcode für dieses Beispiel wird später
+erklärt werden, deshalb ignorieren Sie alles, was Sie hier nicht
verstehen können.
@c The following should appear as music without code
\new Staff \relative c'' {
\key aes \major
<<
- { % Voice one
+ { % Voice one
\voiceOneStyle
c2 aes4. bes8
}
\\ % Voice two
{ \voiceTwoStyle
- aes2 f4 fes
+ % Ignore these for now - they are explained in Ch 4
+ \once \override NoteColumn #'ignore-collision = ##t
+ <ees, c>2
+ \once \override NoteColumn #'force-hshift = #0.5
+ des2
}
\\ % No Voice three (we want stems down)
\\ % Voice four
{ \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 |
}
@end lilypond
-Versuchen wir also, diese Musik selber zu notieren. Wie wir sehen
+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,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 }
- >>
- <c ees aes c>1
+ { c2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
+ >> |
+ <c ees aes c>1 |
}
@end lilypond
für die Stimmen 1 und 2 stimmen, aber die Hälse in der dritten Stimme
sollen in diesem Beispiel eigentlich nach unten zeigen. Wir können das
korrigieren, indem wir die dritte Stimme einfach auslassen und die
-Noten in die vierte Stimme verschieben:
+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,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
\new Staff \relative c'' {
\key aes \major
- << % erste Stimme
+ << % Voice one
{ c2 aes4. bes8 }
- \\ % zweite Stimme
- { aes2 f4 fes }
- \\ % Stimme drei auslassen
- \\ % vierte Stimme
- { <ees c>2 des2 }
+ \\ % Voice two
+ { <ees, c>2 des }
+ \\ % Omit Voice three
+ \\ % Voice four
+ { 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 @ref{Fixing
-overlapping notation}.
-
+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{Multiple voices}.
+Notationsreferenz: @ruser{Mehrere Stimmen}.
-@node Explicitly instantiating voices
-@subsection Explicitly instantiating voices
+@node Stimmen explizit beginnen
+@subsection Stimmen explizit beginnen
+@translationof Explicitly instantiating voices
@funindex \voiceOne
@funindex voiceOne
@cindex Voice context, erstellen von
@cindex Stimmenkontexte, erstellen von
-Voice-Kontexte können auch manuell innerhalb
-eines @code{<< >>}-Abschnittes initiiert werden. Mit den Befehlen
-@code{\voiceOne} bis hin zu @code{\voiceFour} kann jeder Stimme
-entsprechendes Verhalten von vertikaler Verschiebung und Richtung
-von Hälsen und anderen Objekten hinzugefügt werden. In längeren
-Partituren können die Stimmen damit besser auseinander gehalten
+Voice-Kontexte können auch manuell innerhalb
+eines @code{<< >>}-Abschnittes initiiert werden. Mit den Befehlen
+@code{\voiceOne} bis hin zu @code{\voiceFour} kann jeder Stimme
+entsprechendes Verhalten von vertikaler Verschiebung und Richtung
+von Hälsen und anderen Objekten hinzugefügt werden. In längeren
+Partituren können die Stimmen damit besser auseinander gehalten
werden.
Die @code{<< \\ >>}-Konstruktion, die wir im vorigen Abschnitt
@cindex Stimmen, mehrere zu einer zusammenführen
@cindex eine Stimme wiederherstellen
-Der @code{\voiceXXX}-Befehl setzt die Richtung von Hälsen,
+Der @code{\voiceXXX}-Befehl setzt die Richtung von Hälsen,
Bögen, Artikulationszeichen, Text, Punktierungen und Fingersätzen.
@code{\voiceOne} und @code{\voiceThree} lassen diese Objekte
nach oben zeigen, @code{\voiceTwo} und @code{\voiceFour}
dagegen lassen sie abwärts zeigen. Diese Befehle erzeugen eine
horizontale Verschiebung, wenn es erforderlich ist, um Zusammenstöße
-zu vermeiden. Der Befehl
+zu vermeiden. Der Befehl
@code{\oneVoice} stellt wieder auf das normale Verhalten um.
Schauen wir uns in einigen einfachen Beispielen an, was genau
mit Text, Bögen und Dynamikbezeichnung anstellen:
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
% Default behavior or behavior after \oneVoice
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
\voiceOne
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
\oneVoice
- c, d8 ~ d e4 ( f g a ) b-> c
+ c,4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
\voiceTwo
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
\oneVoice
- c, d8 ~ d e4 ( f g a ) b-> c
+ c,4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
Schauen wir und nun drei unterschiedliche Arten an, den gleichen
-Abschnitt polyphoner Musik zu notieren, jede Art mit ihren
+Abschnitt polyphoner Musik zu notieren, jede Art mit ihren
Vorteilen in unterschiedlichen Situationen. Wir benutzen dabei
das Beispiel vom vorherigen Abschnitt.
-Ein Ausdruck, der direkt innerhalb einer @code{<< >>}-Umgebung
-auftritt, gehört der Hauptstimme an. Das ist nützlich, wenn zusätzliche
-Stimme auftreten, während die Hauptstimme sich fortsetzt. Hier also
-eine bessere Version des Beispiels aus dem vorigen Abschnitt. Die
-farbigen Kreuz-Notenköpfe zeigen, dass die Hauptstimme sich jetzt in
+Ein Ausdruck, der direkt innerhalb einer @code{<< >>}-Umgebung
+auftritt, gehört der Hauptstimme an. Das ist nützlich, wenn zusätzliche
+Stimme auftreten, während die Hauptstimme sich fortsetzt. Hier also
+eine bessere Version des Beispiels aus dem vorigen Abschnitt. Die
+farbigen Kreuz-Notenköpfe zeigen, dass die Hauptstimme sich jetzt in
einem einzigen Stimmen (@code{voice})-Kontext befindet. Somit kann ein
Phrasierungsbogen ober sie gesetzt werden.
@lilypond[quote,ragged-right,verbatim]
\new Staff \relative c' {
\voiceOneStyle
- % The following notes are monophonic
+ % This section is homophonic
c16^( d e f
% Start simultaneous section of three voices
<<
% Continue the main voice in parallel
- { g4 f e | d2 e2) }
+ { g4 f e | d2 e) | }
% Initiate second voice
\new Voice {
- % Set stems, etc, down
+ % Set stems, etc., down
\voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
+ r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
}
% Initiate third voice
\new Voice {
% Set stems, etc, up
\voiceThree
- s2. | s4 b4 c2
+ s2. | s4 b4 c2 |
}
>>
}
\new Staff \relative c' {
c16^( d e f
<<
- { g4 f e | d2 e2) }
+ { g4 f e | d2 e2) | }
\new Voice {
\voiceTwo
- r8 e4 d c8 ~ |
+ r8 e4 d c8~
<<
- {c8 b16 a b8 g ~ g2}
+ { c8 b16 a b8 g~ g2 | }
\new Voice {
\voiceThree
- s4 b4 c2
+ s4 b4 c2 |
}
>>
}
% Initiate first voice
\new Voice {
\voiceOne
- c16^( d e f g4 f e | d2 e2) |
+ c16^( 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~ | c8 b16 a b8 g~ g2 |
}
% Initiate third voice
\new Voice {
% Set stems, etc, up
\voiceThree
- s1 | s4 b4 c2 |
+ s1 | s4 b c2 |
}
>>
@end lilypond
-@subsubheading Note columns
+@subsubheading Notenkolumnen
@cindex Notenkolumne
@cindex Notenkollision
Dicht notierte Noten in einem Akkord, oder Noten auf der gleichen
Taktzeit aber in unterschiedlichen Stimmen, werden in zwei, manchmal
-auch mehreren Kolumnen getzt, um die Noten am Überschneiden zu
+auch mehreren Kolumnen gesetzt, um die Noten am Überschneiden zu
hindern. Wir bezeichnen sie als Notenkolumnen. Jede Stimme hat
eine eigene Kolumne, und ein stimmenabhängiger Verschiebunsbefehl (engl.
-shift) wird eingesetzt, wenn eine Kollision auftreten könnte.
+shift) wird eingesetzt, wenn eine Kollision auftreten könnte.
Das zeigt das Beispiel oben. Im zweiten Takt wird das C der zweiten
Stimme nach rechts verschoben, relativ gesehen zum D der ersten Stimme,
-und im letzten Akkord wird das C der dritten Stimme auch nach
+und im letzten Akkord wird das C der dritten Stimme auch nach
rechts verschoben im Verhältnis zu den anderen Stimmen.
Die Befehle @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn} und
@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{Real music example}.
+@ref{Beispiele 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
Noten von zwei Stimmen mit den Hälsen in die gleiche Richtung
an der selben Stelle auftreten und in beiden Stimmen ist
keine Verschiebung oder die gleiche Verschiebungsebene
-definiert, wird die Fehlermeldung
+definiert, wird die Fehlermeldung
@qq{zu viele kollidierende Notenspalten werden ignoriert}
ausgegeben.
@seealso
-Notationsreferenz: @ruser{Multiple voices}.
+Notationsreferenz: @ruser{Mehrere Stimmen}.
-@node Voices and vocals
-@subsection Voices and vocals
+@node Stimmen und Text
+@subsection Stimmen und Text
+@translationof Voices and vocals
Die Notation von Vokalmusik ihre eigene Schwierigkeit, nämlich
die Kombination von zwei Ausdrücken: den Noten und dem Text.
@cindex Gesangtext, Verbindung mit Noten
Wir haben schon den @code{\addlyrics@{@}}-Befehl betrachtet,
-mit dem einfache Partituren gut erstellt werden können.
+mit dem einfache Partituren gut erstellt werden können.
Diese Methode ist jedoch recht eingeschränkt. Wenn der Notensatz
komplexer wird, muss der Gesangstext mit einem neuen
@code{Lyrics}-Kontext begonnen werden (mit dem Befehl
mit einer bestimmten Stimme verknüpft werden, indem die
Bezeichnung der Stimme benutzt wird.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
<<
- \new Voice = "one" \relative c'' {
- \autoBeamOff
- \time 2/4
- c4 b8. a16 g4. f8 e4 d c2
+ \new Voice = "one" {
+ \relative c'' {
+ \autoBeamOff
+ \time 2/4
+ c4 b8. a16 | g4. f8 | e4 d | c2 |
+ }
}
\new Lyrics \lyricsto "one" {
- No more let sins and sor -- rows grow.
+ No more let | sins and | sor -- rows | grow. |
}
>>
@end lilypond
Beachten Sie, dass der Notentext nur mit einem @code{Voice}-Kontext
verknüpft werden kann, nicht mit einem @code{Staff}-Kontext.
-In diesem Fall also müssen Sie ein System (@code{Staff}) und
-eine Stimme (@code{Voice}) explizit erstellen, damit alles
+In diesem Fall also müssen Sie ein System (@code{Staff}) und
+eine Stimme (@code{Voice}) explizit erstellen, damit alles
funktioniert.
@cindex Gesangstext und Balken
Die automatischen Balken, die LilyPond in der Standardeinstellung
setzt, eignen sich sehr gut für instrumentale Musik, aber nicht
-so gut für Musik mit Text, wo man entweder gar keine Balken
+so gut für Musik mit Text, wo man entweder gar keine Balken
benutzt oder sie einsetzt, um Melismen zu verdeutlichen.
Im Beispiel oben wird deshalb der Befehl @code{\autoBeamOff}
eingesetzt um die automatischen Balken (engl. beam) auszuschalten.
nicht als Noten interpretiert werden kann.
@lilypond[quote,verbatim]
-global = { \time 6/8 \partial 8 \key f \major}
+global = { \key f \major \time 6/8 \partial 8 }
+
SopOneMusic = \relative c'' {
- c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 }
-SopTwoMusic = \relative c' {
- r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' }
+ c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+}
SopOneLyrics = \lyricmode {
- Let | flee -- cy flocks the | hills a -- dorn, __ }
+ 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'
+}
SopTwoLyrics = \lyricmode {
- Let | flee -- cy flocks the | hills a -- dorn, }
+ Let | flee -- cy flocks the | hills a -- dorn,
+}
\score {
\new ChoirStaff <<
Systeme können hinzugefügt werden, wenn sie gebraucht werden, mehr
Stimmen können zu jedem System hinzugefügt werden, mehr
Strophen können zum Text hinzugefügt werden, und schließlich
-können die Variablen schnell in eine eigene Datei verschoben
+können die Variablen schnell in eine eigene Datei verschoben
werden, wenn sie zu lang werden sollten.
@cindex Choralnotation
Variablen eingesetzt werden, um Inhalt (Noten und Text) und Form
(die Partitur) voneinander zu trennen. Eine Variable wurde
eingesetzt, um die Elemente, die auf beiden Systemen auftauchen,
-aufzunehmen, nämlich Taktart und Tonart. Solch eine
+aufzunehmen, nämlich Taktart und Tonart. Solch eine
Variable wird oft auch mit @qq{global} bezeichnet.
@lilypond[quote,verbatim]
-TimeKey = { \time 4/4 \partial 4 \key c \major}
-SopMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f 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 }
-VerseOne = \lyricmode {
- E -- | ter -- nal fa -- ther, | strong to save, }
-VerseTwo = \lyricmode {
- O | Christ, whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode {
- O | Ho -- ly Spi -- rit, | who didst brood }
-VerseFour = \lyricmode {
- O | Tri -- ni -- ty of | love and pow'r }
+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 }
+
+VerseOne =
+ \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
+VerseTwo =
+ \lyricmode { O | Christ, whose voice the | wa -- ters heard, }
+VerseThree =
+ \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood }
+VerseFour =
+ \lyricmode { O | Tri -- ni -- ty of | love and pow'r }
\score {
\new ChoirStaff <<
\new Staff <<
\clef "treble"
- \new Voice = "Sop" { \voiceOne \TimeKey \SopMusic }
+ \new Voice = "Sop" { \voiceOne \keyTime \SopMusic }
\new Voice = "Alto" { \voiceTwo \AltoMusic }
\new Lyrics \lyricsto "Sop" { \VerseOne }
\new Lyrics \lyricsto "Sop" { \VerseTwo }
>>
\new Staff <<
\clef "bass"
- \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
- \new Voice = "Bass" { \voiceTwo \BassMusic }
- >>
- >>
-}
-@end lilypond
-
-@cindex Strophe und Refrain
-@cindex Refrain
-
-Dieser Abschnitt schließt mit einem Beispiel, das eine Solo-Strophe
-mit anschließendem zweistimmigem Refrain auf zwei Systemen zeigt.
-Die Positionierung des einstimmigen Abschnitss und der mehrstimmigen
-Stelle ist etwas kompliziert; es braucht etwas Aufmerksamkeit,
-um der Erklärung folgen zu können.
-
-Beginnen wir mit einer @code{score}-Umgebung, in der eine
-Chorpartitur (@code{ChoirStaff}) gesetzt wird. Die Partitur soll
-schließlich mit der eckigen Klammer beginnen.
-Normalerweise bräuchten wir spitze Klammern im Quelltext
-nach dem @code{\new ChoirStaff}, damit die Systeme paralell
-gesetzt werden, aber hier wollen wir diese Parallelsierung
-ja erst nach dem Solo. Also benutzen wir geschweifte Klammern.
-Innerhalb der Chorpartitur erstellen wir zuerst das System,
-das die Strophe enthält. Es braucht Noten und Text parallel,
-also setzen wir hier die spitzen Klammern um @code{\new Voice}
-und @code{\new Lyrics}.
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-versewords = \lyricmode {
- One two three four five six
-}
-\score {
- \new ChoirStaff {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes \break
- }
- \new Lyrics \lyricsto verse {
- \versewords
- }
- >>
- }
-}
-@end lilypond
-
-@noindent
-Damit erhalten wir die Strophe.
-
-Jetzt soll @notation{refrainA} auf dem selben System gesetzt
-werden, während gleichzeitig in einem neuen System darunter
-@notation{refrainB} gesetzt wird. Damit die Oberstimme das
-gleiche System benutzt, muss alles direkt auf den Zeilenumbruchbefehl
-(@code{\break} folgen, innerhalb der @notation{verse}-Stimme.
-Ja, tatsächlich, @emph{innerhalb} der @notation{verse}-Stimme.
-Hier haben wir diese parallele Stelle isoliert. Weitere Systeme
-könnten auf die gleiche Weise hinzugefügt werden.
-
-@example
-<<
- \refrainnotesA
- \new Lyrics \lyricsto verse @{
- \refrainwordsA
- @}
- \new Staff <<
- \new Voice = "refrainB" @{
- \refrainnotesB
- @}
- \new Lyrics \lyricsto "refrainB" @{
- \refrainwordsB
- @}
- >>
->>
-@end example
-
-Nun schließlich das Resultat mit zwei Systemen für den Refrain,
-man kann gut sehen, wie sich die parallele Stelle innherhalb
-der @notation{verse}-Stimme befindet.
-
-@lilypond[quote,verbatim, ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
- \time 2/4
- c c g g \bar "|."
-}
-refrainnotesB = \relative c {
- \clef "bass"
- \key g \major
- c e d d
-}
-versewords = \lyricmode {
- One two three four five six
-}
-refrainwordsA = \lyricmode {
- la la la la
-}
-refrainwordsB = \lyricmode {
- dum dum dum dum
-}
-\score {
- \new ChoirStaff {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes \break
- <<
- \refrainnotesA
- \new Lyrics \lyricsto "verse" {
- \refrainwordsA
- }
- \new Staff <<
- \new Voice = "refrainB" {
- \refrainnotesB
- }
- \new Lyrics \lyricsto "refrainB" {
- \refrainwordsB
- }
- >>
- >>
- }
- \new Lyrics \lyricsto "verse" {
- \versewords
- }
- >>
- }
-}
-@end lilypond
-
-@cindex book, Benutzung von
-@funindex \book
-@funindex book
-
-Dies ist zwar eine interessante und nützliche Übung um zu
-verstehen, wie sequentielle und parallele Notationsumgebungen
-funktionieren, in der Praxis würde man diesen Code aber
-vielleicht eher in zwei @code{\score}-Umgebungen trennnen
-und diese dann innerhalb einer @code{\book}-Umgebung
-einsetzen, wie im folgenden Beispiel demonstriert:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
- \time 2/4
- c c g g \bar "|."
-}
-refrainnotesB = \relative c {
- \clef "bass"
- \key g \major
- c e d d
-}
-versewords = \lyricmode {
- One two three four five six
-}
-refrainwordsA = \lyricmode {
- la la la la
-}
-refrainwordsB = \lyricmode {
- dum dum dum dum
-}
-\score {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes
- }
- \new Lyrics \lyricsto "verse" {
- \versewords
- }
- >>
-}
-
-\score {
- \new ChoirStaff <<
- \new Staff <<
- \new Voice = "refrainA" {
- \refrainnotesA
- }
- \new Lyrics \lyricsto "refrainA" {
- \refrainwordsA
- }
- >>
- \new Staff <<
- \new Voice = "refrainB" {
- \refrainnotesB
- }
- \new Lyrics \lyricsto "refrainB" {
- \refrainwordsB
- }
+ \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
}
@seealso
-Notation Reference: @ruser{Vocal music}.
+Notation Reference: @ruser{Notation von Gesang}.
-@node Contexts and engravers
-@section Contexts and engravers
+@node Kontexte und Engraver
+@section Kontexte und Engraver
+@translationof Contexts and engravers
Kontexte und Engraver (@qq{Stempel}) sind in den vorherigen
Abschnitten schon aufgetaucht; hier wollen wir uns ihnen
wichtig, um Feineinstellungen in der LilyPond-Notenausgabe
vornehmen zu können.
-@menu
-* Contexts explained::
-* Creating contexts::
-* Engravers explained::
-* Modifying context properties::
-* Adding and removing engravers::
+@menu
+* Was sind Kontexte?::
+* Kontexte erstellen::
+* Was sind Engraver?::
+* Kontexteigenschaften verändern::
+* Engraver hinzufügen und entfernen::
@end menu
-@node Contexts explained
-@subsection Contexts explained
+@node Was sind Kontexte?
+@subsection Was sind Kontexte?
+@translationof Contexts explained
@cindex Kontexte erklärt
die im Quellcode gar nicht explizit vorkommen. Vergleichen Sie
etwa den Quellcode und die Notenausgabe des folgenden Beispiels:
-@lilypond[quote,verbatim,relative=2,fragment]
-cis4 cis2. g4
+@lilypond[quote,verbatim,relative=2]
+cis4 cis2. | a4 a2. |
@end lilypond
Der Quellcode ist sehr kurz und knapp, während in der
Notenausgabe Taktlinien, Vorzeichen, ein Schlüssel und
eine Taktart hinzugefügt wurden. Während LilyPond
den Eingabetext @emph{interpretiert}, wird die
-musikalische Information in zeitlicher Reihenfolge
-inspiziert, etwa wie man eine Partitur von links nach
+musikalische Information von rechts nach links gelesen,
+in etwa, wie man eine Partitur von links nach
rechts liest. Während das Programm den Code liest,
merkt es sich, wo sich Taktgrenzen befinden und
für welche Tonhöhen Versetzungszeichen gesetzt werden
beziehen sich nur auf ein System, Taktlinien dagegen
üblicherweise auf die gesamte Partitur.
-Innerhalb von LilyPond sind diese Regeln und
+Innerhalb von LilyPond sind diese Regeln und
Informationshappen in @emph{Kontexten} (engl.
-contexts) gruppiert. Wir sind schon auf den
-@code{Voice} (Stimmen)-Kontext gestoßen. Daneben
+contexts) gruppiert. Der @code{Voice} (Stimmen)-Kontext
+wurde schon vorgestellt. Daneben
gibt es noch die @code{Staff} (Notensystem-) und
@code{Score} (Partitur)-Kontexte. Kontexte sind
hierarchisch geschichtet um die hierarchische
verbundene Elemente zu ordnen. Der @code{Voice}-Kontext
zum Beispiel kann eine Vorzeichenregel einführen und der
@code{Staff}-Kontext hält diese Regel dann aufrecht, um
-einzuordenen, ob ein Versetzungszeichen gesetzt werden
+einzuordnen, ob ein Versetzungszeichen gesetzt werden
muss oder nicht.
Ein anderes Beispiel: die Synchronisation der Taktlinien ist
standardmäßig im @code{Score}-Kontext verankert. Manchmal sollen
die Systeme einer Partitur aber unterschiedliche Taktarten
-enthalten, etwa in einer polymetrischen Partitur mit
+enthalten, etwa in einer polymetrischen Partitur mit
4/4- und 3/4-Takt. In diesem Fall müssen also die Standardeinstellungen
der @code{Score}- und @code{Staff}-Kontexte verändert werden.
Zusätzlich zu den @code{Score,} @code{Staff} und
@code{Voice}-Kontexten gibt es noch Kontexte, die zwischen
der Partitur- und Systemebene liegen und Gruppen von Systemen
-kontrollieren. Das sind beispielsweise der
+kontrollieren. Das sind beispielsweise der
@code{PianoStaff} und @code{ChoirStaff}-Kontext. Es gibt zusätzlich
alternative Kontexte für Systeme und Stimmen sowie eigene Kontexte
für Gesangstexte, Perkussion, Griffsymbole, Generalbass usw.
englischen
Wörtern gebildet, dabei wird jedes Wort mit einem Großbuchstaben
begonnen und direkt an das folgende ohne Bindestrich oder Unterstrich
-angeschlossen, etwa
+angeschlossen, etwa
@code{GregorianTranscriptionStaff}.
@seealso
-Notationreferenz: @ruser{Contexts explained}.
+Notationreferenz: @ruser{Was sind Kontexte?}.
-@node Creating contexts
-@subsection Creating contexts
+@node Kontexte erstellen
+@subsection Kontexte erstellen
+@translationof Creating contexts
@funindex \new
@funindex new
@cindex Erstellen von Kontexten
@cindex Kontexte, Erstellen
-Es gibt nur einen Kontext der obersten Ebene: der
-@code{Score}-Kontext. Er wird mit dem @code{\score}-Befehl,
-oder -- in einfacheren Partituren -- automatisch
-erstellt.
+In einer Eingabedatei enthält eine @code{Score}-Umgebung (einen
+Kontext), die mit
+dem Befehl @code{\score} eingeleitet wird, nur einen einzigen
+musikalischen Ausdruck und mit ihm verknüpft eine Ausgabedefinition
+(entweder eine @code{\layout}- oder eine @code{\midi}-Umgebung).
+Üblicherweise wird der @code{Score}-Kontext automatisch von
+LilyPond erstellt, wenn der musikalische Ausdruck interpretiert
+wird.
Wenn nur ein System vorhanden ist, kann man es ruhig
-LilyPond überlassen, die @code{Voice}- und @code{Staff}-Kontexte
-zu erstellen, aber für komplexere Partituren ist es notwendig,
-sie mit einem Befehl zu erstellen. Der einfachste Befehl
-hierzu ist @code{\new}. Er wird dem musikalischen Ausdruck
+LilyPond überlassen, auch die @code{Voice}- und @code{Staff}-Kontexte
+zu erstellen, aber für komplexere Partituren ist es notwendig,
+sie mit einem Befehl zu erstellen. Der einfachste Befehl
+hierzu ist @code{\new}. Er wird dem musikalischen Ausdruck
vorangestellt, etwa so:
@example
@noindent
wobei @var{Typ} eine Kontextbezeichnung (wie etwa @code{Staff} oder
@code{Voice}) ist. Dieser Befehl erstellt einen neuen Kontext und
-beginnt, den @var{muskalischen Ausdruck} innherhalb dieses
+beginnt, den @var{muskalischen Ausdruck} innerhalb dieses
Kontexts auszuwerten.
-Beachten Sie, dass es keinen @code{\new Score}-Befehl gibt: der
-Partitur-Kontext der obersten Ebene wird mit dem Befehl @code{\score}
-begonnen.
+@warning{Der @bs{}@code{new Score}-Befehl sollte nicht benutzt werden,
+weil der Partitur-(Score)-Kontext der obersten Ebene
+normalerweise automatisch erstellt wird, wenn der musikalische Ausdruck
+innerhalb der @code{\score}-Umgebung interpretiert wird. Standard-Werte
+von Kontexteigenschaften, die für einen bestimmten @code{Score} gelten
+sollen, können innerhalb der @bs{}@code{layout}-Umgebung definiert werden.
+Siehe @ref{Kontexteigenschaften verändern}.}
Wir haben schon viele explizite Beispiel gesehen, in denen
neue @code{Staff}- und @code{Voice}-Kontexte erstellt wurden, aber
<< % start of simultaneous staves section
\time 2/4
\new Staff { % create RH staff
- \key g \minor
\clef "treble"
+ \key g \minor
\new Voice { % create voice for RH notes
\relative c'' { % start of RH notes
- d4 ees16 c8. |
- d4 ees16 c8. |
+ d4 ees16 c8.
+ d4 ees16 c8.
} % end of RH notes
} % end of RH voice
} % end of RH staff
\new Staff << % create LH staff; needs two simultaneous voices
- \key g \minor
\clef "bass"
+ \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> |
+ 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 |
+ g4 ees
+ g4 ees
} % end of LH voice two notes
} % end of LH voice two
>> % end of LH staff
(Beachten Sie, dass wir hier alle Zeilen, die eine neue
Umgebung entweder mit einer geschweiften Klammer (@code{@{})
oder doppelten spitzen Klammern (@code{<<}) öffnen, mit
-jeweils zwei Leerzeichen, und die entsprechenden
+jeweils zwei Leerzeichen, und die entsprechenden
schließenden Klammern mit der gleichen Anzahl Leerzeichen
eingerückt werden. Dies ist nicht erforderlich, es wird aber
zu einem großen Teil die nicht passenden Klammerpaar-Fehler
-eliminieren und ist darum sehr empfohlen. Es macht es
+eliminieren und ist darum sehr empfohlen. Es macht es
möglich, die Struktur einer Partitur auf einen Blick zu
-verstehen, und alle nicht passenden Klammern
+verstehen, und alle nicht passenden Klammern
erschließen sich schnell. Beachten Sie auch, dass das
untere Notensystem mit eckigen Klammern erstellt wird,
denn innerhalb dieses Systems brauchen wir zwei Stimmen,
von geschweiften Klammern umschlossen.)
@cindex Kontexte, Benennung
-@cindex Bennenung von Kontexten
+@cindex Benennung von Kontexten
Der @code{\new}-Befehl kann einem Kontext auch einen
Namen zur Identifikation geben, um ihn von anderen Kontexten des
Beachten Sie den Unterschied zwischen der Bezeichnung des
Kontexttyps (@code{Staff}, @code{Voice}, usw.) und dem
Namen, der aus beliebigen Buchstaben bestehen kann
-und vom Benutzer frei erfunden werden kann. Zahlen und
+und vom Benutzer frei erfunden werden kann. Zahlen und
Leerzeichen können auch benutzt werden, in dem Fall
muss der Name aber von doppelten Anführungszeichen
-umgeben werden, also etwa
+umgeben werden, also etwa
@code{\new Staff = "Mein System 1" @var{musikalischer Ausdruck}}.
Der Name wird
-benutzt, um später auf genau diesen spezifischen Kontext
+benutzt, um später auf genau diesen spezifischen Kontext
zu verweisen. Dieses Vorgehen wurde schon in dem Abschnitt
-zu Gesangstexten angewandt, siehe @ref{Voices and vocals}.
+zu Gesangstexten angewandt, siehe @ref{Stimmen und Text}.
@seealso
-Notationsreferenz: @ruser{Creating contexts}.
+Notationsreferenz: @ruser{Kontexte erstellen}.
-@node Engravers explained
-@subsection Engravers explained
+@node Was sind Engraver?
+@subsection Was sind Engraver?
+@translationof Engravers explained
@cindex Engraver
@cindex Stempel (Engraver)
und Ausgabe sich auf die gesamte Partitur bezieht, wirken
in der obersten Kontextebene -- dem @code{Score}-Kontext.
-Der @code{Clef_engraver} (Schlüssel-Stempel) und der
+Der @code{Clef_engraver} (Schlüssel-Stempel) und der
@code{Key_engraver} (Vorzeichen-Stempel) finden sich in
jedem @code{Staff}-Kontext, denn unterschiedliche Systeme
könnten unterschiedliche Tonarten und Notenschlüssel
den (englischen) Wörtern ihrer Funktionsweise bestehen. Nur
das erste Wort hat einen Großbuchstaben, und die restlichen
Wörter werden mit einem Unterstrich angefügt. Ein
-@code{Staff_symbol_engraver} verantwortet also die Erstellung
+@code{Staff_symbol_engraver} verantwortet also die Erstellung
der Notenlinien, ein @code{Clef_engraver} entscheidet über die
Art der Notenschlüssel und setzt die entsprechenden Symbole; damit
wird gleichzeitig die Referenztonhöhe auf dem Notensystem festgelegt.
@item Rest_engraver
@tab Erstellt Pausen.
@item Staff_symbol_engraver
- @tab Ersetllt die (standardmäßig) fünf Notenlinien des Systems.
+ @tab Erstellt die (standardmäßig) fünf Notenlinien des Systems.
@item Stem_engraver
@tab Erstellt die Notenhälse und Tremolos mit einem Hals.
@item Time_signature_engraver
Referenz der Interna: @rinternals{Engravers and Performers}.
-@node Modifying context properties
-@subsection Modifying context properties
+@node Kontexteigenschaften verändern
+@subsection Kontexteigenschaften verändern
+@translationof Modifying context properties
@cindex Kontext-Eigenschaften, Verändern
@cindex Eigenschaften von Kontexten
@noindent
verwendet, wobei @var{KontextBezeichnung} üblicherweise
- @code{Score},
+@code{Score},
@code{Staff} oder @code{Voice} ist. Der erste Teil kann auch
-ausgelassen werden; in diesem Fall wird @code{Voice} eingesetzt.
+ausgelassen werden; in diesem Fall wird der aktuelle
+Kontext (üblicherweise @code{Voice}) eingesetzt.
Die Bezeichnung von Kontexten-Eigenschaften besteht
aus zwei Wörtern, die ohne Unterstrich oder Bindestrich
@tab Beispiel-Wert
@item extraNatural
@tab boolescher Wert
- @tab Wenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt.
+ @tab Wenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt.
@tab @code{#t}, @code{#f}
@item currentBarNumber
@tab Integer
@end multitable
@noindent
-Ein boolischer Wert ist entweder wahr (@code{#t})
+Ein boolescher Wert ist entweder wahr (@code{#t})
oder falsch (@code{#f}),
-ein Integer eine positive ganze Zahl, eine reale Zahl eine positive
+ein Integer eine positive ganze Zahl, ein Real (reelle Zahl) eine positive
oder negative Dezimalzahl, und Text wird in doppelte
Anführungszeichen (Shift+2) eingeschlossen. Beachten Sie
das Vorkommen des Rautenzeichens
sich von selbst, aber in einigen Fällen kann es zunächst
unverständlich erscheinen. Wenn der falsche Kontext angegeben
wird, wird keine Fehlermeldung produziert, aber die
-Veränderung wird einfach nicht ausgeführt.
+Veränderung wird einfach nicht ausgeführt.
@code{instrumentName} befindet sich offensichtlich innerhalb
von einem @code{Staff}-Kontext, denn das Notensystem soll
benannt werden. In dem folgenden Beispiel erhält das erste
<<
\new Staff \relative c'' {
\set Staff.instrumentName = #"Soprano"
- c4 c
+ c2 c
}
\new Staff \relative c' {
- \set instrumentName = #"Alto" % Wrong!
- d4 d
+ \set instrumentName = #"Alto" % Wrong!
+ d2 d
}
>>
@end lilypond
im @code{Voice}-Kontext auf @qq{Alto}, gesetzt, aber weil LilyPond diese
Eigenschaft nicht im @code{Voice}-Kontext vermutet, passiert einfach
gar nichts. Das ist kein Fehler, und darum wird auch keine Fehlermeldung
-prodziert.
+produziert.
Ebenso gibt es keine Fehlermeldung, wenn die Kontext-Bezeichnung
falsch geschrieben wird und die Änderung also nicht ausgeführt werden
fährt (wie etwa JEdit mit dem LilyPondTool), oder markieren
unbekannte Bezeichnungen anders (wie ConTEXT). Wenn Sie keinen
Editor mit LilyPond-Unterstützung einsetzen, wird empfohlen, die
-Bezeichnungen in der Interna-Referenz zu überprüfen: siehe
+Bezeichnungen in der Interna-Referenz zu überprüfen: siehe
@rinternals{Tunable context properties}, oder
@rinternals{Contexts}.
Die Eigenschaft @code{instrumentName} wird erst aktiv, wenn sie
-ineinem @code{Staff}-Kontext gesetzt wird, aber manche Eigenschaften
+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
setzt. Die Standardeinstellung ist ##t (wahr) in allen Systemen.
-Wenn sie nur in einem @code{Staff} (Notensystem) auf ##f (falsch)
+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 Erniedrigungszeichen in einem System
ausgeschaltet sind:
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- ais4 aes
- }
+ aeses2 aes
+ }
\new Staff \relative c'' {
\set Staff.extraNatural = ##f
- ais4 aes
- }
+ aeses2 aes
+ }
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- ais4 aes
- }
+ aeses2 aes
+ }
\new Staff \relative c'' {
\set Score.extraNatural = ##f
- ais4 aes
- }
+ aeses2 aes
+ }
>>
@end lilypond
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,fragment]
-c4
+@lilypond[quote,verbatim,ragged-right,relative=1]
+c4 d
% make note heads smaller
\set fontSize = #-4
-d e
+e4 f |
% make note heads larger
\set fontSize = #2.5
-f g
+g4 a
% return to default size
\unset fontSize
-a b
+b4 c |
@end lilypond
Wir haben jetzt gesehen, wie sich die Werte von unterschiedlichen
-Eigenschaften ändern lassen. Beachten Sie, dass Integre und
+Eigenschaften ändern lassen. Beachten Sie, dass Integer und
Zahlen immer mit einem Rautenzeichen beginnen, während
die Werte wahr und falsch (mit @code{##t} und @code{##f}
notiert) immer mit zwei Rauten beginnen. Eine Eigenschaft, die
aus Text besteht, muss in doppelte Anführungsstriche gesetzt werden,
auch wenn wir später sehen werden, dass Text auf eine sehr viel
-allgmeinere und mächtigere Art mit dem @code{markup}-Befehl
+allgemeinere und mächtigere Art mit dem @code{\markup}-Befehl
eingegeben werden kann.
-@subsubheading Setting context properties with @code{\with}
+@subsubheading Kontexteigenschaften mit @code{\with} setzen
@funindex \with
@funindex with
@cindex Kontexteigenschaft, setzen mit \with
-Kontexteigenschaften können auch gesetzt werden, wenn der Kontext
-erstellt wird. Das ist in manchen Fällen eine deutlichere Art,
-eine Eigenschaft zu bestimmen, die für die gesamte Partitur
-erhalten bleichen soll. Wenn ein Kontext mit einem
-@code{\new}-Befehl erstellt wird, dem direkt eine
-@code{\with @{ .. @}}-Umgebung folgt, können hier die
-Eigenschaften bestimmt werden. Wenn also die zusätzlichen
+Die Standardwerte von Kontexteigenschaften können zu dem Zeitpunkt
+definiert werden, an welchem der Kontext erstellt wird. Manchmal
+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
+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'' {
- gis ges aes ais
- }
- \new Staff \with { extraNatural = ##f }
- \relative c'' {
- gis ges aes ais
+ \relative c'' {
+ gisis4 gis aeses aes
+ }
+ \new Staff \with { extraNatural = ##f } {
+ \relative c'' {
+ gisis4 gis aeses aes
+ }
}
>>
@end lilypond
Eigenschaften, die auf diese Arte gesetzt werden, können immer noch
dynamisch mit dem @code{\set}-Befehl geändert werden und mit
-@code{\unset} auf ihre Standardeinstellungen zurückgesetzt werden.
+@code{\unset} auf ihre Standardeinstellungen zurückgesetzt werden,
+wie sie vorher in der @code{\with}-Umgebung definiert wurden.
@cindex Schriftgröße, Standardeinstellung
@cindex fontSize (Schriftgröße), Standardeinstellung
-Die @code{fontSize}-Eigenschaft wird anders behandelt. Wenn sie mit
-einer @code{\with}-Umgebung gesetzt wird, wird die Standardschriftgröße
-neu gesetzt. Wenn die Schriftgröße später mit @code{\set} verändert
+Wenn also die @code{fontSize}-Eigenschaft in einer @code{\with}-Umgebung
+definiert wird, wird der Standardwert für die Schriftgröße
+festgelegt. Wenn dieser Wert später mit @code{\set} verändert
wird, kann dieser neue Standardwert mit dem Befehl
-@code{\unset fontSize} erreicht werden.
+@code{\unset fontSize} wieder erreicht werden.
-@subsubheading Setting context properties with @code{\context}
+@subsubheading Kontexteigenschaften mit @code{\context} setzen
@cindex Kontexteigenschaften, mit \context setzen
@cindex Eigenschaften von Kontexten, mit \context setzen
@funindex context
Die Werte von Kontext-Eigenschaften können in @emph{allen} Kontexten
-eines bestimmten Typs (etwa alle @code{Staff}-Kontexte)
+eines bestimmten Typs (etwa alle @code{Staff}-Kontexte)
gleichzeitig mit einem Befehl gesetzt werden. Der Kontext wird
-spezifieziert, indem seine Bezeichnung benutzt wird, also etwa
+spezifiziert, indem seine Bezeichnung benutzt wird, also etwa
@code{Staff}, mit einem Backslash davor: @code{\Staff}. Der Befehl
-für die Eigenschaft ist der gleiche, wie er auch in der
+für die Eigenschaft ist der gleiche, wie er auch in der
@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
-aktuellen Partitur befinden (d. h. innherhalb einer @code{\score}-
-oder @code{\book}-Umgebung. Hier ist ein Beispiel, wie man diese
+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'' {
- cis4 e d ces
+ cisis4 e d cis
}
}
\layout {
}
@end lilypond
+Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer
+@code{score}-Umgebung beziehen soll:
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff {
+ \relative c'' {
+ gisis4 gis aeses aes
+ }
+ }
+ \new Staff {
+ \relative c'' {
+ gisis4 gis aeses aes
+ }
+ }
+ >>
+ \layout {
+ \context {
+ \Score extraNatural = ##f
+ }
+ }
+}
+@end lilypond
+
@noindent
-Kontext-Eigenschaften, die auf diese Weise gestzt werden, können für
-bestimmten Kontexte überschrieben werden, indem die
+Kontext-Eigenschaften, die auf diese Weise gesetzt werden, können für
+bestimmten Kontexte überschrieben werden, indem die
@code{\with}-Konstruktion eingesetzt wird, oder mit @code{\set}-Befehlen
innerhalb der aktuellen Noten.
@seealso
Notationsreferenz:
-@ruser{Changing context default settings}.
-@c FIXME
-@c uncomment when backslash-node-name issue is resolved -pm
-@c @ruser{The set command}.
+@ruser{Die Standardeinstellungen von Kontexten ändern},
+@ruser{Der set-Befehl}.
Referenz der Interna:
@rinternals{Contexts},
@rinternals{Tunable context properties}.
-@node Adding and removing engravers
-@subsection Adding and removing engravers
+@node Engraver hinzufügen und entfernen
+@subsection Engraver hinzufügen und entfernen
+@translationof Adding and removing engravers
@cindex Engraver, Hinzufügen von
@cindex Engraver, Entfernen von
Nutzen sein.
-@subsubheading Changing a single context
+@subsubheading Einen einzelnen Kontext verändern
Um einen Engraver von einem einzelnen Kontext zu entfernen,
wir der @code{\with}-Befehl eingesetzt, direkt hinter
\remove Staff_symbol_engraver
}
\relative c' {
- c4
+ c4 d
\set fontSize = #-4 % make note heads smaller
- d e
+ e4 f |
\set fontSize = #2.5 % make note heads larger
- f g
+ g4 a
\unset fontSize % return to default size
- a b
+ b4 c |
}
@end lilypond
@code{Ambitus_engraver} erstellt, der normalerweise
in keinem Kontext enthalten ist. Wenn wir
ihn zum @code{Voice}-Kontext hinzufügen, errechnet
-er automatisch den Stimmumfang für diese einzelne Stimme
+er automatisch den Stimmumfang für diese einzelne Stimme
und zeigt ihn an:
@lilypond[quote,verbatim,ragged-right]
\new Staff <<
\new Voice \with {
\consists Ambitus_engraver
+ } {
+ \relative c'' {
+ \voiceOne
+ c4 a b g
+ }
}
- \relative c'' {
- \voiceOne
- c a b g
- }
- \new Voice
- \relative c' {
- \voiceTwo
- c e d f
+ \new Voice {
+ \relative c' {
+ \voiceTwo
+ c4 e d f
+ }
}
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
- \consists Ambitus_engraver
- }
- <<
- \new Voice
- \relative c'' {
- \voiceOne
- c a b g
+ \consists Ambitus_engraver
+}
+<<
+ \new Voice {
+ \relative c'' {
+ \voiceOne
+ c4 a b g
+ }
}
- \new Voice
- \relative c' {
- \voiceTwo
- c e d f
+ \new Voice {
+ \relative c' {
+ \voiceTwo
+ c4 e d f
+ }
}
>>
@end lilypond
-@subsubheading Changing all contexts of the same type
+@subsubheading Alle Kontexte des gleichen Typs verändern
@funindex \layout
auch möglich, Engraver in jedem Kontext eines bestimmten
Typs hinzuzufügen oder zu entfernen. Dazu werden die
Befehle in dem entsprechenden Kontext in einer
-@code{\layout}-Umgebung gesetzt. Wenn wir also z. B.
-den Ambitus für jedes Notensystem in einer Partitur
+@code{\layout}-Umgebung gesetzt. Wenn wir also z. B.
+den Ambitus für jedes Notensystem in einer Partitur
mit vier Systemen anzeigen wollen, könnte das so aussehen:
@lilypond[quote,verbatim,ragged-right]
\score {
<<
- \new Staff <<
- \relative c'' { c a b g }
- >>
- \new Staff <<
- \relative c' { c a b g }
- >>
- \new Staff <<
+ \new Staff {
+ \relative c'' {
+ c4 a b g
+ }
+ }
+ \new Staff {
+ \relative c' {
+ c4 a b g
+ }
+ }
+ \new Staff {
\clef "G_8"
- \relative c' { c a b g }
- >>
- \new Staff <<
+ \relative c' {
+ c4 a b g
+ }
+ }
+ \new Staff {
\clef "bass"
- \relative c { c a b g }
- >>
+ \relative c {
+ c4 a b g
+ }
+ }
>>
\layout {
\context {
@end lilypond
@noindent
-Die Werte der Kontext-Eigenschaften können auch für
+Die Werte der Kontext-Eigenschaften können auch für
alle Kontexte eines bestimmten Typs auf die gleiche
Weise geändert werden, indem der @code{\set}-Befehl in
einer @code{\context}-Umgebung angewendet wird.
@seealso
-Notationsreferenz: @ruser{Modifying context plug-ins},
-@ruser{Changing context default settings}.
+Notationsreferenz: @ruser{Umgebungs-Plugins verändern},
+@ruser{Die Standardeinstellungen von Kontexten ändern}.
+
+@knownissues
+Die @code{Stem_engraver} und @code{Beam_engraver} fügen ihre
+Objekte an Notenköpfe an. Wenn der @code{Note_heads_engraver}
+entfernt wird, werden keine Notenköpfe erstellt und demzufolge auch keine
+Hälse oder Bögen dargestellt.
-@node Extending the templates
-@section Extending the templates
+@node Erweiterung der Beispiele
+@section Erweiterung der Beispiele
+@translationof Extending the templates
Sie haben sich durch die Übung 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
gibt eine ganze Anzahl an fertigen Vorlagen
-(siehe @ref{Templates}), mit denen Sie beginnen
+(siehe @ref{Vorlagen}), mit denen Sie beginnen
können. Aber was, wenn Sie nicht genau das finden,
was Sie brauchen? Lesen Sie weiter.
@menu
-* Soprano and cello::
-* Four-part SATB vocal score::
-* Building a score from scratch::
+* Sopran und Cello::
+* Vierstimmige SATB-Partitur::
+* Eine Partitur von Grund auf erstellen::
+* Tipparbeit durch Variablen und Funktionen ersparen::
+* Partitur und Stimmen::
@end menu
-@node Soprano and cello
-@subsection Soprano and cello
+@node Sopran und Cello
+@subsection Sopran und Cello
+@translationof Soprano and cello
@cindex Template, Verändern von
@cindex Vorlage, Verändern von
Beginnen Sie mit der Vorlage, die Ihren Vorstellungen
am nächsten kommt. Nehmen wir einmal an, Sie wollen
-ein Stück für Sopran und Cello schreiben. In diesem
-Fall könnten Sie mit der Vorlage @qq{Noten und Text}
+ein Stück für Sopran und Cello schreiben. In diesem
+Fall könnten Sie mit der Vorlage @qq{Noten und Text}
(für die Sopran-Stimme) beginnen.
@example
\version @w{"@version{}"}
melody = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
@example
\version @w{"@version{}"}
+
melody = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
@end example
Wir brauchen den @code{\version}-Befehl nicht zweimal. Wir
-brauchen aber den @code{melody}-Abschnitt. Wir wollen
+brauchen aber den @code{melody}-Abschnitt. Wir wollen
keine zwei @code{\score} (Partitur)-Abschnitte -- mit zwei
@code{\score}-Abschnitten würden wir zwei Stimmen
getrennt voneinander erhalten. In diesem Fall wollen wir
-sie aber zusammen, als Duett. Schließlich brauchen wir
+sie aber zusammen, als Duett. Schließlich brauchen wir
innerhalb des @code{\score}-Abschnittes nur einmal die
Befehle @code{\layout} und @code{\midi}.
-Wenn wir jetzt einfach zwei @code{melody}-Abschnitte in
+Wenn wir jetzt einfach zwei @code{melody}-Abschnitte in
unsere Datei kopieren würden, hätten wir zwei @code{melody}-Variable.
Das würde zu keinem Fehler führen, aber die zweite von ihnen
würde für beide Melodien eingesetzt werden. Wir müssen
@example
\version @w{"@version{}"}
+
SopranNoten = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
@}
CelloNoten = \relative c @{
- \clef bass
+ \clef "bass"
\key c \major
\time 4/4
d4 g fis8 e d4
@}
@end example
-Das sieht schon vielversprechend aus, aber die Cello-Stimme
+Das sieht schon vielversprechend aus, aber die Cello-Stimme
erscheint noch nicht im Notensatz -- wir haben vergessen,
sie in den @code{\score}-Abschnitt einzufügen. Wenn die
Cello-Stimme unterhalb des Soprans erscheinen soll, müssen
@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 @{ @}
@lilypond[quote,verbatim,ragged-right,addversion]
sopranoMusic = \relative c' {
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
}
celloMusic = \relative c {
- \clef bass
+ \clef "bass"
\key c \major
\time 4/4
d4 g fis8 e d4
@seealso
Die Vorlagen, mit denen wir begonnen haben, können im
Anhang @qq{Vorlagen} gefunden werden, siehe
-@ref{Single staff}.
+@ref{Ein einzelnes System}.
-@node Four-part SATB vocal score
-@subsection Four-part SATB vocal score
+@node Vierstimmige SATB-Partitur
+@subsection Vierstimmige SATB-Partitur
+@translationof Four-part SATB vocal score
@cindex Vorlage, SATB
@cindex Vorlage, Chorpartitur
@c The following should appear as music without code
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }
+
sopranoMusic = \relative c'' {
\clef "treble"
r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
- Wor -- thy is the lamb that was slain
+ Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative a' {
\clef "treble"
upper = \relative a' {
\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, {
\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 {
\new ChoirStaff <<
\new Staff = "sopranos" <<
\set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" { \global \sopranoMusic }
+ \new Voice = "sopranos" {
+ \global
+ \sopranoMusic
+ }
>>
- \new Lyrics \lyricsto "sopranos" { \sopranoWords }
+ \new Lyrics \lyricsto "sopranos" {
+ \sopranoWords
+ }
\new Staff = "altos" <<
\set Staff.instrumentName = #"Alto"
- \new Voice = "altos" { \global \altoMusic }
+ \new Voice = "altos" {
+ \global
+ \altoMusic
+ }
>>
- \new Lyrics \lyricsto "altos" { \altoWords }
+ \new Lyrics \lyricsto "altos" {
+ \altoWords
+ }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" { \global \tenorMusic }
+ \new Voice = "tenors" {
+ \global
+ \tenorMusic
+ }
>>
- \new Lyrics \lyricsto "tenors" { \tenorWords }
+ \new Lyrics \lyricsto "tenors" {
+ \tenorWords
+ }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
- \new Voice = "basses" { \global \bassMusic }
+ \new Voice = "basses" {
+ \global
+ \bassMusic
+ }
>>
- \new Lyrics \lyricsto "basses" { \bassWords }
+ \new Lyrics \lyricsto "basses" {
+ \bassWords
+ }
>> % end ChoirStaff
\new PianoStaff <<
@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{Vocal ensembles}. Wir müssen diese
+am nächsten daran liegt, ist @qq{SATB-Partitur und automatischer
+Klavierauszug}, siehe @ref{Vokalensemble}. 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
in dem Beispiel oben. Wir wollen sie so sortieren, dass die
Texte jeder Stimme direkt unter den Noten notiert werden.
Alle Stimmen sollten als @code{\voiceOne} notiert werden,
-welches die Standardeinstellung ist; wir können also die
+welches die Standardeinstellung ist; wir können also die
@code{\voiceXXX}-Befehle entfernen. Wir müssen auch noch
den Schlüssel für den Tenor ändern. Die Methode, mit der
-der Text den Stimmen zugewiesen wird, ist uns noch nicht
+der Text den Stimmen zugewiesen wird, ist uns noch nicht
bekannt, darum wollen wir sie umändern auf die Weise, die
wir schon kennen. Wir fügen auch noch Instrumentbezeichnungen
zu den Systemen hinzu.
Damit erhalten wir folgenden @code{ChoirStaff}:
@example
- \new ChoirStaff <<
- \new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" @{ \global \SopranNoten @}
- >>
- \new Lyrics \lyricsto "sopranos" @{ \SopranText @}
- \new Staff = "altos" <<
- \set Staff.instrumentName = #"Alto"
- \new Voice = "altos" @{ \global \AltNoten @}
- >>
- \new Lyrics \lyricsto "altos" @{ \AltText @}
- \new Staff = "tenors" <<
- \set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" @{ \global \TenorNoten @}
- >>
- \new Lyrics \lyricsto "tenors" @{ \TenorText @}
- \new Staff = "basses" <<
- \set Staff.instrumentName = #"Bass"
- \new Voice = "basses" @{ \global \BassNoten @}
- >>
- \new Lyrics \lyricsto "basses" @{ \BassText @}
- >> % Ende ChoirStaff
+\new ChoirStaff <<
+ \new Staff = "sopranos" <<
+ \set Staff.instrumentName = #"Sopran"
+ \new Voice = "sopranos" @{
+ \global
+ \sopranoMusic
+ @}
+ >>
+ \new Lyrics \lyricsto "sopranos" @{
+ \sopranoWords
+ @}
+ \new Staff = "altos" <<
+ \set Staff.instrumentName = #"Alt"
+ \new Voice = "altos" @{
+ \global
+ \altoMusic
+ @}
+ >>
+ \new Lyrics \lyricsto "altos" @{
+ \altoWords
+ @}
+ \new Staff = "tenors" <<
+ \set Staff.instrumentName = #"Tenor"
+ \new Voice = "tenors" @{
+ \global
+ \tenorMusic
+ @}
+ >>
+ \new Lyrics \lyricsto "tenors" @{
+ \tenorWords
+ @}
+ \new Staff = "basses" <<
+ \set Staff.instrumentName = #"Bass"
+ \new Voice = "basses" @{
+ \global
+ \bassMusic
+ @}
+ >>
+ \new Lyrics \lyricsto "basses" @{
+ \bassWords
+ @}
+>> % end ChoirStaff
@end example
Als nächstes müssen wir das Klaviersystem bearbeiten.
Das Chorsystem und das Pianosystem müssen mit
spitzen Klammern kombiniert werden, damit beide
-übereinandern erscheinen:
+übereinander erscheinen:
@example
<< % ChoirStaff und PianoStaff parallel kombinieren
\new ChoirStaff <<
\new Staff = "sopranos" <<
- \new Voice = "sopranos" @{ \global \SopranNoten @}
+ \new Voice = "sopranos" @{
+ \global
+ \sopranoMusic
+ @}
>>
- \new Lyrics \lyricsto "sopranos" @{ \SopranText @}
+ \new Lyrics \lyricsto "sopranos" @{
+ \sopranoWords
+ @}
\new Staff = "altos" <<
- \new Voice = "altos" @{ \global \AltNoten @}
+ \new Voice = "altos" @{
+ \global
+ \altoMusic
+ @}
>>
- \new Lyrics \lyricsto "altos" @{ \AltText @}
+ \new Lyrics \lyricsto "altos" @{
+ \altoWords
+ @}
\new Staff = "tenors" <<
- \clef "G_8" % Tenorschlüssel
- \new Voice = "tenors" @{ \global \TenorNoten @}
+ \clef "G_8" % tenor clef
+ \new Voice = "tenors" @{
+ \global
+ \tenorMusic
+ @}
>>
- \new Lyrics \lyricsto "tenors" @{ \TenorText @}
+ \new Lyrics \lyricsto "tenors" @{
+ \tenorWords
+ @}
\new Staff = "basses" <<
\clef "bass"
- \new Voice = "basses" @{ \global \BassNoten @}
+ \new Voice = "basses" @{
+ \global
+ \bassMusic
+ @}
>>
- \new Lyrics \lyricsto "basses" @{ \BassText @}
- >> % Ende ChoirStaff
+ \new Lyrics \lyricsto "basses" @{
+ \bassWords
+ @}
+ >> % end ChoirStaff
\new PianoStaff <<
\set PianoStaff.instrumentName = #"Piano"
- \new Staff = "oben" \oben
- \new Staff = "unten" \unten
+ \new Staff = "upper" \upper
+ \new Staff = "lower" \lower
>>
>>
@end example
Takte sieht unser Beispiel nun so aus:
@lilypond[quote,verbatim,ragged-right,addversion]
-global = { \key d \major \time 4/4 }
+global = {
+ \key d \major
+ \time 4/4
+}
sopranoMusic = \relative c'' {
\clef "treble"
r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
- Wor -- thy is the lamb that was slain
+ Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative a' {
\clef "treble"
upper = \relative a' {
\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, {
\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 {
\new ChoirStaff <<
\new Staff = "sopranos" <<
\set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" { \global \sopranoMusic }
+ \new Voice = "sopranos" {
+ \global
+ \sopranoMusic
+ }
>>
- \new Lyrics \lyricsto "sopranos" { \sopranoWords }
+ \new Lyrics \lyricsto "sopranos" {
+ \sopranoWords
+ }
\new Staff = "altos" <<
\set Staff.instrumentName = #"Alto"
- \new Voice = "altos" { \global \altoMusic }
+ \new Voice = "altos" {
+ \global
+ \altoMusic
+ }
>>
- \new Lyrics \lyricsto "altos" { \altoWords }
+ \new Lyrics \lyricsto "altos" {
+ \altoWords
+ }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" { \global \tenorMusic }
+ \new Voice = "tenors" {
+ \global
+ \tenorMusic
+ }
>>
- \new Lyrics \lyricsto "tenors" { \tenorWords }
+ \new Lyrics \lyricsto "tenors" {
+ \tenorWords
+ }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
- \new Voice = "basses" { \global \bassMusic }
+ \new Voice = "basses" {
+ \global
+ \bassMusic
+ }
>>
- \new Lyrics \lyricsto "basses" { \bassWords }
+ \new Lyrics \lyricsto "basses" {
+ \bassWords
+ }
>> % end ChoirStaff
\new PianoStaff <<
@end lilypond
-@node Building a score from scratch
-@subsection Building a score from scratch
+@node Eine Partitur von Grund auf erstellen
+@subsection Eine Partitur von Grund auf erstellen
+@translationof Building a score from scratch
@cindex Template, eigene schreiben
@cindex Vorlagen, eigene schreiben
@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,
-das untere und das Pedalsystem jeweils nur eine. Wir
+das untere und das Pedalsystem jeweils nur eine. Wir
brauchen also vier Variablen für die Noten und eine, um
Taktart und Tonart zu definieren.
title = "Jesu, meine Freude"
composer = "J. S. Bach"
@}
-TimeKey = @{ \time 4/4 \key c \minor @}
-ManualOneVoiceOneMusic = @{s1@}
-ManualOneVoiceTwoMusic = @{s1@}
-ManualTwoMusic = @{s1@}
-PedalOrganMusic = @{s1@}
+keyTime = @{ \key c \minor \time 4/4 @}
+ManualOneVoiceOneMusic = @{ s1 @}
+ManualOneVoiceTwoMusic = @{ s1 @}
+ManualTwoMusic = @{ s1 @}
+PedalOrganMusic = @{ s1 @}
\score @{
@}
wird meistens auf drei Systemen notiert, eins
für jedes Manual und ein drittes für die Pedalnoten.
Die Systeme für die Manuale werden mit einer
-geschweiften Klammer verbunden, wir
+geschweiften Klammer verbunden, wir
benutzen hier also ein @code{PianoStaff}.
Das erste Manualsystem braucht zwei Stimmen,
das zweite nur eine.
@example
- \new PianoStaff <<
- \new Staff = "ManualOne" <<
- \new Voice @{ \ManualOneVoiceOneMusic @}
- \new Voice @{ \ManualOneVoiceTwoMusic @}
- >> % end ManualOne Staff context
- \new Staff = "ManualTwo" <<
- \new Voice @{ \ManualTwoMusic @}
- >> % end ManualTwo Staff context
- >> % end PianoStaff context
+\new PianoStaff <<
+ \new Staff = "ManualOne" <<
+ \new Voice @{
+ \ManualOneVoiceOneMusic
+ @}
+ \new Voice @{
+ \ManualOneVoiceTwoMusic
+ @}
+ >> % Ende ManualOne Systemkontext
+ \new Staff = "ManualTwo" <<
+ \new Voice @{
+ \ManualTwoMusic
+ @}
+ >> % Ende ManualTwo Systemkontext
+>> % Ende PianoStaff Kontext
@end example
Als nächstes soll das System für das Pedal hinzugefügt
Wir brauchen also spitze Klammern um beide
Definitionen. Sie wegzulassen würde eine Fehlermeldung
in der Log-Datei hervorrufen. Das ist ein sehr
-häufiger Fehler, der wohl auch Ihnen früher
+häufiger Fehler, der wohl auch Ihnen früher
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
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \new Voice @{ \ManualOneVoiceOneMusic @}
- \new Voice @{ \ManualOneVoiceTwoMusic @}
+ \new Voice @{
+ \ManualOneVoiceOneMusic
+ @}
+ \new Voice @{
+ \ManualOneVoiceTwoMusic
+ @}
>> % end ManualOne Staff context
\new Staff = "ManualTwo" <<
- \new Voice @{ \ManualTwoMusic @}
+ \new Voice @{
+ \ManualTwoMusic
+ @}
>> % end ManualTwo Staff context
>> % end PianoStaff context
\new Staff = "PedalOrgan" <<
- \new Voice @{ \PedalOrganMusic @}
+ \new Voice @{
+ \PedalOrganMusic
+ @}
>>
>>
@end example
zu schreiben, und es ist eine gute Angewohnheit, immer
die spitzen Klammern nach einem @code{\new Staff} zu
schreiben, wenn mehr als eine Stimme vorkommen könnten.
-Für Stimmen (@code{Voice}) dagegengilt genau das
-Gegenteil: eine neue Stimme sollte immer von
+Für Stimmen (@code{Voice}) dagegen gilt genau das
+Gegenteil: eine neue Stimme sollte immer von
geschweiften Klammern (@code{@{ .. @}}) gefolgt
werden, falls Sie ihre Noten in mehrere Variable aufteilen,
die nacheinander gesetzt werden sollen.
kontrollieren, indem die obere Stimme ein
@code{\voiceOne}, die untere dagegen ein @code{\voiceTwo}
erhält. Die Taktart und Tonart werden mit unserer fertigen
-Variable @code{\TimeKey} eingefügt.
+Variable @code{\keyTime} eingefügt.
@example
\score @{
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \TimeKey % set time signature and key
+ \keyTime % set time signature and key
\clef "treble"
- \new Voice @{ \voiceOne \ManualOneVoiceOneMusic @}
- \new Voice @{ \voiceTwo \ManualOneVoiceTwoMusic @}
+ \new Voice @{
+ \voiceOne
+ \ManualOneVoiceOneMusic
+ @}
+ \new Voice @{
+ \voiceTwo
+ \ManualOneVoiceTwoMusic
+ @}
>> % end ManualOne Staff context
\new Staff = "ManualTwo" <<
- \TimeKey
+ \keyTime
+ \clef "bass"
+ \new Voice @{
+ \ManualTwoMusic
+ @}
+ >> % end ManualTwo Staff context
+ >> % end PianoStaff context
+ \new Staff = "PedalOrgan" <<
+ \keyTime
+ \clef "bass"
+ \new Voice @{
+ \PedalOrganMusic
+ @}
+ >> % end PedalOrgan Staff
+ >>
+@} % end Score context
+@end example
+
+@cindex Spreizbarkeit von Systemen
+@cindex Dehnung von Systemen, vertikal
+@cindex Systeme, vertikales Dehnen
+
+Das Layout des Orgelsystems oben ist fast perfekt, es hat jedoch einen kleinen
+Fehler, den man nicht bemerken kann, wenn man nur ein einzelnes System
+betrachtet: Der Abstand des Pedalsystems zum System der linken Hand
+sollte in etwa der gleiche sein wie der Abstand zwischen den Systemen
+der linken und rechten Hand. Die Dehnbarkeit von Systemen in einem
+Klaviersystem (@code{PianoStaff})-Kontext ist beschränkt (sodass der
+Abstand zwischen den Systemen der linken und rechten Hand nicht zu groß
+wird), und das Pedalsystem sollte sich genauso verhalten.
+
+@cindex Untereigenschaft
+@cindex sub-properties
+@cindex graphische Objekte
+@cindex Grobs
+@cindex Objekte, graphische
+
+Die Spreizbarkeit von Systemen kann mit der @code{staff-staff-spacing}-Eigenschaft
+des @code{VerticalAxisGroup}-@qq{graphischen Objekts} (üblicherweise als
+@qq{Grob} innerhalb der LilyPond-Dokumentation bezeichnet) kontrolliert
+werden. An dieser Stelle brauchen Sie sich um die Details nicht zu
+sorgen, sie werden später erklärt. Sehr Neugierige können sich den
+Abschnitt @ruser{Grundlagen zum Verändern von Eigenschaften} anschauen. Im Moment
+kann man nicht nur die @code{strechability} (Spreizbarkeit)-Untereigenschaft verändern,
+darum müssen hier auch die anderen Untereigenschaften kopiert werden. Die
+Standardeinstellungen dieser Untereigenschaften finden sich in der Datei
+@file{scm/define-grobs.scm} in den Definitionen für den
+@code{VerticalAxisGroup}-Grob. Der Wert für @code{strechability} wird aus
+der Definition für das Klaviersystem (@code{PianoStaff}) entnommen
+(in der Datei @file{ly/engraver-init.ly}), damit die Werte identisch
+sind.
+
+@example
+\score @{
+ << % PianoStaff and Pedal Staff must be simultaneous
+ \new PianoStaff <<
+ \new Staff = "ManualOne" <<
+ \keyTime % set key and time signature
+ \clef "treble"
+ \new Voice @{
+ \voiceOne
+ \ManualOneVoiceOneMusic
+ @}
+ \new Voice @{
+ \voiceTwo
+ \ManualOneVoiceTwoMusic
+ @}
+ >> % end ManualOne Staff context
+ \new Staff = "ManualTwo" \with @{
+ \override VerticalAxisGroup
+ #'staff-staff-spacing #'stretchability = 5
+ @} <<
+ \keyTime
\clef "bass"
- \new Voice @{ \ManualTwoMusic @}
+ \new Voice @{
+ \ManualTwoMusic
+ @}
>> % end ManualTwo Staff context
>> % end PianoStaff context
\new Staff = "PedalOrgan" <<
- \TimeKey
+ \keyTime
\clef "bass"
- \new Voice @{ \PedalOrganMusic @}
+ \new Voice @{
+ \PedalOrganMusic
+ @}
>> % end PedalOrgan Staff
>>
@} % end Score context
title = "Jesu, meine Freude"
composer = "J S Bach"
}
-TimeKey = { \time 4/4 \key c \minor }
+keyTime = { \key c \minor \time 4/4 }
ManualOneVoiceOneMusic = \relative g' {
- g4 g f ees | d2 c2 |
+ g4 g f ees |
+ d2 c2 |
}
ManualOneVoiceTwoMusic = \relative c' {
ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
- c c4 b8 c8. g16 c b c d |
+ c8 c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative c' {
c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
- f ees f d g aes g f ees d e8~ ees16 f ees d |
+ f16 ees f d g aes g f ees d e8~ ees16 f ees d |
}
PedalOrganMusic = \relative c {
r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
r16 g ees f g f g8 c,2 |
- }
+}
\score {
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \TimeKey % set time signature and key
+ \keyTime % set time signature and key
\clef "treble"
- \new Voice { \voiceOne \ManualOneVoiceOneMusic }
- \new Voice { \voiceTwo \ManualOneVoiceTwoMusic }
+ \new Voice {
+ \voiceOne
+ \ManualOneVoiceOneMusic
+ }
+ \new Voice {
+ \voiceTwo
+ \ManualOneVoiceTwoMusic
+ }
>> % end ManualOne Staff context
- \new Staff = "ManualTwo" <<
- \TimeKey
+ \new Staff = "ManualTwo" \with {
+ \override VerticalAxisGroup
+ #'staff-staff-spacing #'stretchability = 5
+ } <<
+ \keyTime
\clef "bass"
- \new Voice { \ManualTwoMusic }
+ \new Voice {
+ \ManualTwoMusic
+ }
>> % end ManualTwo Staff context
>> % end PianoStaff context
\new Staff = "PedalOrgan" <<
- \TimeKey
+ \keyTime
\clef "bass"
- \new Voice { \PedalOrganMusic }
+ \new Voice {
+ \PedalOrganMusic
+ }
>> % end PedalOrgan Staff context
>>
} % end Score context
@end lilypond
+@seealso
+Glossar:
+@rglos{system}.
+
+
+@node Tipparbeit durch Variablen und Funktionen ersparen
+@subsection Tipparbeit durch Variablen und Funktionen ersparen
+@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 }
+
+\score {
+ {
+ \hornNotes
+ }
+}
+@end lilypond
+
+Sie können sich vorstellen, dass das etwa für minimalistische
+Musik sehr nützlich sein könnte:
+
+@lilypond[quote,verbatim,ragged-right]
+fragmentA = \relative c'' { a4 a8. b16 }
+fragmentB = \relative c'' { a8. gis16 ees4 }
+violin = \new Staff {
+ \fragmentA \fragmentA |
+ \fragmentB \fragmentA |
+}
+
+\score {
+ {
+ \violin
+ }
+}
+@end lilypond
+
+Diese Variablen (die man auch als Makros oder Benutzer-Befehl
+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
+}
+
+violin = \relative c'' {
+ \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-.
+ }
+}
+
+\score {
+ {
+ \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
+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'' @{
+ \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 @{
+ \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
+all dem Code, mit dem wir es definiert haben (also alles,
+was sich rechts von @code{padtext=} 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)
+ (number?)
+ #{
+ \once \override TextScript #'padding = #padding
+ #})
+
+\relative c''' {
+ c4^"piu mosso" b a b |
+ \padText #1.8
+ c4^"piu mosso" d e f |
+ \padText #2.6
+ c4^"piu mosso" fis a g |
+}
+@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}).
+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
+@translationof Scores and parts
+In Orchestermusik werden alle Noten zweimal gedruckt. Einmal
+in einer Stimme für die Spieler, und einmal ein der Partitur
+für den Dirigenten. Variablen können benutzen, um sich doppelte
+Arbeit zu ersparen. Die Noten werden nur einmal eingegeben und
+in einer Variable abgelegt. Der Inhalt der Variable wird dann
+benutzt um sowohl die Stimme als auch die Partitur zu erstellen.
+Es bietet sich an, die Noten in einer extra Datei abzulegen.
+Nehmen wir an, dass die Datei @file{horn-music.ly} folgende
+Noten eines Horn/@/Fagott-Duos enthält:
+
+@example
+hornNotes = \relative c @{
+ \time 2/4
+ r4 f8 a | cis4 f | e4 d |
+@}
+@end example
+@noindent
+Eine Stimme wird also erstellt, indem man folgendes in eine
+Datei schreibt:
+
+@example
+\include "horn-music.ly"
+
+\header @{
+ instrument = "Horn in F"
+@}
+
+@{
+ \transpose f c' \hornNotes
+@}
+@end example
+
+Die Zeile
+
+@example
+\include "horn-music.ly"
+@end example
+
+@noindent
+ersetzt den Inhalt von @file{horn-music.ly} an dieser Position
+in der Datei, sodass @code{hornNotes} im Folgenden definiert
+ist. Der Befehl @code{\transpose f@tie{}c'} zeigt an, dass
+das Argument (@code{\hornNotes}) eine Quinte nach oben transponiert
+werden soll. Klingendes @code{f} wird als @code{c'}, wie es
+die Stimmung eines normalen F-Hornes verlangt. Die Transposition
+kann in folgender Notenausgabe gesehen werden:
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+ \time 2/4
+ r4 f8 a | cis4 f | e4 d |
+}
+@end lilypond
+
+In Ensemblestücken sind manche Stimmen für viele Takte stumm.
+Das wird durch eine besondere Pause notiert, die Mehrtaktpause.
+Sie wird mit einem großen @code{R} notiert, gefolgt von der
+Dauer (@code{1}@tie{}für eine Ganze, @code{2}@tie{}für eine Halbe usw.). Indem man die Dauern multipliziert, kann man auch
+längere Dauern erzeugen. Diese Pause etwa dauert drei Takte
+in einem 2/4-Takt:
+
+@example
+R2*3
+@end example
+
+Wenn die Stimme gesetzt wird, werden Mehrtaktpausen komprimiert. Das geschieht, indem man folgendes in die Datei
+schreibt:
+
+@example
+\set Score.skipBars = ##t
+@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:
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+ \time 2/4
+ \set Score.skipBars = ##t
+ R2*3 |
+ r4 f8 a | cis4 f | e4 d |
+}
+@end lilypond
+
+Die Partitur wird erstellt, indem man alle Noten kombiniert.
+Angenommen, die andere Stimme ist in @code{bassoonNotes}
+in der Datei @file{bassoon-music.ly} definiert, würde eine
+Partitur erstellt mit:
+
+@example
+\include "bassoon-music.ly"
+\include "horn-music.ly"
+
+<<
+ \new Staff \hornNotes
+ \new Staff \bassoonNotes
+>>
+@end example
+
+@noindent
+woraus sich ergibt:
+
+@lilypond[quote,ragged-right]
+\relative c <<
+ \new Staff {
+ \clef "treble"
+ \time 2/4
+ R2*3 |
+ r4 f8 a | cis4 f | e4 d |
+ }
+ \new Staff {
+ \clef "bass"
+ \time 2/4
+ r4 d,8 f | gis4 c | b4 bes |
+ a8 e f4 | g4 d | gis4 f |
+ }
+>>
+@end lilypond