@c -*- coding: utf-8; mode: texinfo; -*-
@c This file is part of lilypond.tely
@ignore
    Translation of GIT committish: b8d54460424b040bbc3d273048707ed2fcfd118d

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  See TRANSLATION for details.
@end ignore

@node Putting it all together
@chapter Putting it all together

Dieses Kapitel behandelt das allgemeine Konzept von LilyPond
und wie man  @code{\score}-Blöcke erstellt.


@menu
* Extending the templates::     
* How LilyPond files work::     
* Score is a single musical expression::  
* An orchestral part::          
@end menu


@node Extending the templates
@section Extending the templates

Wenn Sie das Übungskapitel gelesen haben, wissen Sie, wie man Noten 
schreibt. Aber wie erhalten Sie genau die Notensysteme, die Sie sich 
vorstellen? Die Vorlagen sind gut, aber was, wenn Sie etwas anderen 
wollen?

Beginnen Sie mit der Vorlage, die am ehesten dem nahe kommt, was Sie als 
Ergebnis haben wollen. Sagen wir, Sie wollen ein Stück für Sopran und 
Cello notieren. In diesem Fall beginnen Sie mit 
 @qq{Noten und Text} (für die Sopranstimme).

@example
\version "2.11.15"
melodie = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
@}

text = \lyricmode @{
  Aaa Bee Cee Dee
@}

\score@{
  <<
    \new Voice = "one" @{
      \autoBeamOff
      \melodie
    @}
    \new Lyrics \lyricsto "one" \text
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

Jetzt wollen wir die Cellostimme hinzufügen. Schauen wir uns das 
@qq{Nur Noten}-Beispiel an:

@example
\version "2.11.15"
melodie = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
@}

\score @{
\new Staff \melodie
\layout @{ @}
\midi @{ @}
@}
@end example

Wir brauchen nicht zwei @code{\version}-Befehle. Wir brauchen den 
@code{melodie}-Abschnitt. Wir brauchen keine zwei 
@code{\score}-Abschnitte,
denn damit würden wir ja zwei voneinander getrennte Notensysteme 
erhalten. Wir wollen sie aber zusammen, als Duo. Innerhalb eines 
@code{\score}-Abschnittes brauchen wir auch nicht zweimal 
@code{\layout} und @code{\midi}.

Kopieren wir aber nur den @code{melodie}-Abschnitt, hätte wir zwei 
@code{melodie}-Abschnitte. Also nennen wir diesen Bezeichner anders. 
Die Noten für den Sopran nennen wir @code{sopranNoten}, die Noten 
für das Cello @code{celloNoten}. Gleichzeitig können wir auch noch 
den Abschnitt @code{text} in @code{sopranText} umbenennen. Es ist
wichtig, beide Befehle umzubenennen, einmal die Definition (also den 
@code{melodie = \relative c' @{ }-Teil), zweitens die Anwendung des 
Namens in der Partitur (also in dem @code{\score}-Abschnitt).

Während wir hier diese Änderungen vornehmen, können wir auch gleich 
das Cello-System anpassen -- Celli brauchen im Normalfall den 
Bass-Schlüssel.
Wir setzen hier auch ein paar andere Noten für das Cello.


@example
\version "2.11.15"
sopranNoten = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
@}

sopranText = \lyricmode @{
  Aaa Bee Cee Dee
@}

celloNoten = \relative c @{
  \clef bass
  \key c \major
  \time 4/4

  d4 g fis8 e d4
@}

\score@{
  <<
    \new Voice = "one" @{
      \autoBeamOff
      \sopranoNoten
    @}
    \new Lyrics \lyricsto "one" \sopranText
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

Das sieht schon ganz gut aus, aber das Cello-System erscheint noch 
nicht in der Partitur. Wir haben den Bezeichner ja auch nicht im 
@code{\score}-Abschnitt benutzt. Wenn wir wollen, dass die Noten 
auch gedruckt werden, müssen wir noch

@example
\new Staff \celloNoten
@end example

@noindent
unter dem Sopran-System einfügen. Wir müssen auch die Zeichen
 @code{<<} und unter der Musik dann die Zeichen @code{>>} einfügen,
 denn dadurch wird LilyPond 
mitgeteilt, dass mehrere Ausdrücke (hier unsere zwei Systeme 
(@code{Staff})
gleichzeitig gesetzt werden sollen. Der @code{\score}-Abschnitt 
sieht jetzt so aus:

@example
\score@{
  <<
    <<
      \new Voice = "one" @{
        \autoBeamOff
        \sopranNoten
      @}
      \new Lyrics \lyricsto "one" \sopranText
    >>
    \new Staff \celloNoten
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
Das sieht noch etwas durcheinander aus, die Einzüge sind in 
Unordnung geraden. Aber das ist einfach wieder hergestellt. Hier die 
vollständige Vorlage für Sopran und Cello:

@lilypond[quote,verbatim,ragged-right]
\version "2.11.15"
sopranoMusic = \relative c' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

sopranoLyrics = \lyricmode {
  Aaa Bee Cee Dee
}

celloMusic = \relative c {
  \clef bass
  \key c \major
  \time 4/4

  d4 g fis8 e d4
}

\score{
  <<
    <<
      \new Voice = "one" {
        \autoBeamOff
        \sopranoMusic
      }
      \new Lyrics \lyricsto "one" \sopranoLyrics
    >>
    \new Staff \celloMusic
  >>
  \layout { }
  \midi { }
}
@end lilypond



@node How LilyPond files work
@section How LilyPond 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 @ref{File structure}.

Die meisten Beispiele in diesem Handbuch sind kleine Schnipsel, wie 
etwa dieser:

@example
c4 a b c
@end example

Wie hoffentlich bekannt ist, lässt sich solch ein Schnipsel nicht 
in dieser Form übersetzen. Diese Beispiele sind also nur Kurzformen 
von wirklichen Beispielen. Sie müssen wenigstens zusätzlich in 
geschweifte Klammern gesetzt werden.

@example
@{
  c4 a b c
@}
@end example

Die meisten Beispiele benutzen auch den @code{\relative c'}-Befehl. 
Der ist nicht nötig, um die Dateien zu übersetzen, aber in den meisten 
Fällen sieht der Notensatz seltsam aus, wenn man den Befehl 
weglässt.

@lilypond[quote,fragment,ragged-right,verbatim]
\relative c'' {
  c4 a b c
}
@end lilypond

Jetzt kommt noch eine Ebene dazu: LilyPond-Code in der obigen Form 
ist in Wirklichkeit auch wieder eine Abkürzung. Auch wenn man so 
Dateien schreiben kann und sie auch korrekt gesetzt werden, heißt 
der wirkliche Code, der hier gemeint ist, eigentlich:

@example
\score @{
  \relative c'' @{
    c4 a b c
  @}
@}
@end example

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}):

@example
@{
  \new GrandStaff <<
    hier die gesamte Partitur 
  >>
@}
@end example

@noindent
Da sich alles innerhalb der geschweiften Klammern @code{@{ ... @}} 
befindet, wird es wie ein einziger musikalischer Ausdruck behandelt.


Ein @code{\score} auch andere Dinge enthalten, wie etwa

@example
\score @{
  @{ c'4 a b c' @}
  \layout @{ @}
  \midi @{ @}
  \header @{ @}
@}
@end example

@noindent
Viele setzen einige dieser Befehle außerhalb des 
@code{\score}-Blocks, zum Beispiel wird der @code{\header} 
sehr oft oberhalb der  @code{\score}-Umgebung gesetzt. Das 
funktioniert genauso gut.

@cindex Variablen
@cindex Bezeichner

Eine gute Möglichkeit zur Vereinfachung sind selbst definierte Variablen. 
Alle Vorlagen verwenden diese Möglichkeit.

@example
melodie = \relative c' @{
  c4 a b c
@}

\score @{
  @{ \melodie @}
@}
@end example

Wenn LilyPond diese Datei analysiert, nimmt es den Inhalt
von @code{melodie} (alles, was nach dem Gleichheitszeichen
kommt) 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 identifiers and functions}.

Eine komplette Definition des Eingabeformats findet sich
im Kapitel @ref{File structure}.


@node Score is a single musical expression
@section Score is a single musical expression

Im vorigen Kapitel, @ref{How LilyPond files work}, 
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 
Zeile ist die Antwort:


@quotation
@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 GrandStaff <<
      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 Orchesterpartitur (@code{GrandStaff}) dafür, darum lassen wir 
den Befehl weg. Wir brauchen aber einen Sänger und ein Klavier.

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

Zur Erinnerung: mit @code{<<} und @code{>>} werden Noten gleichzeitig
gesetzt; wir wollen ja auch Klavier- und Sängerstimme gleichzeitig 
haben.

@example
\score @{
  @{
    <<
      \new Staff = "Sänger" <<
        \new Voice = "vocal" @{ @}
      >>
      \new Lyrics \lyricsto vocal \new Lyrics @{ @}
      \new PianoStaff = "piano" <<
        \new Staff = "upper" @{ @}
        \new Staff = "lower" @{ @}
      >>
    >>
  @}
  \layout @{ @}
@}
@end example

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 ("upper" für die rechte Hand und 
"lower" 
für die linke) erstellt werden.

Jetzt könnte man in diese Umgebung Noten einfügen. Innerhalb der 
geschweiften 
Klammern neben @code{\new Voice = vocal} könnte man


@example
\relative c'' @{
  a4 b c d
@}
@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.


@example
melodie = @{ @}
text = @{ @}
upper = @{ @}
lower = @{ @}
\score @{
  @{
    <<
      \new Staff = "Sänger" <<
        \new Voice = "vocal" @{ \melodie @}
      >>
      \new Lyrics \lyricsto vocal \new Lyrics @{ \text @}
      \new PianoStaff = "piano" <<
        \new Staff = "upper" @{ \upper @}
        \new Staff = "lower" @{ \lower @}
      >>
    >>
  @}
  \layout @{ @}
@}
@end example

@noindent
Nochmal: der Bezeichner kann aller möglicher Text sein. Die 
Einschränkungen sind in
@ref{File structure} genau aufgelistet.

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.







@node An orchestral part
@section An orchestral part

Orchesternoten werden alle zweimal gesetzt. Erstens als Stimmen für 
die Musiker, und dann als große Partitur für den Dirigenten. Mit 
Variablen 
kann hier doppelte Arbeit erspart werden. Die Musik muss nur einmal 
eingegeben werden und wird in einer Variable abgelegt. Der Inhalt 
dieser 
Variable wird dann benutzt, um sowohl die Stimme als auch die Partitur 
zu erstellen.

Es bietet sich an, die Noten in eigenen Dateien zu speichern. Sagen wir 
beispielsweise, dass in der Datei @file{Horn-Noten.ly} die folgenden 
Noten eines Duetts für Horn und Fagott gespeichert sind:

@example
HornNoten = \relative c @{
  \time 2/4
  r4 f8 a cis4 f e d
@}
@end example

@noindent
Daraus wird dann eine eigene Stimme gemacht, indem folgende Datei 
erstellt 
wird:

@example
\include "Horn-Noten.ly"
\header @{
  instrument = "Horn in F"
@}

@{
 \transpose f c' \HornNoten
@}
@end example

Die Zeile

@example
\include "Horn-Noten.ly"
@end example

@noindent
setzt den Inhalt der Datei @file{Horn-Noten.ly} an die Stelle des 
Befehls in die aktuelle Datei. Damit besteht also eine Definition 
für @code{HornNoten}, so dass die Variable verwendet werden kann. 
Der Befehl @code{\transpose f@tie{}c'} zeigt an, dass das Argument, 
also @code{\HornNoten}, um eine Quinte nach oben transponiert wird.
Klingendes @q{f} wird also als @code{c'} notiert. Das entspricht 
der Notation eines Waldhorn in F. Die Transposition zeigt die folgende 
Ausgabe:

@lilypond[quote,ragged-right]
\transpose f c' \relative c {
  \time 2/4
  r4 f8 a cis4 f e d
}
@end lilypond

In Musik für mehrere Instrumente kommt es oft vor, dass eine Stimme 
für mehrere Takte nicht spielt. Das wird mit einer besonderen Pause 
angezeigt, dem Pausenzeichen für mehrere Takte (engl. multi-measure 
rest). Sie wird mit dem @emph{großen} Buchstaben @samp{R} eingegeben, 
gefolgt von einer Dauer (@code{1}@tie{}für eine Ganze, @code{2}@tie{}
für eine Halbe usw.). Indem man die Dauer multipliziert, können längere  
Pausen erstellt werden. Z. B. dauert diese Pause drei Takte eines 
2/4-Taktes:

@example
R2*3
@end example

Wenn die Stimme gedruckt wird, müssen diese Pausen zusammengezogen 
werden. 
Das wird durch eine Variable erreicht:

@example
\set Score.skipBars = ##t
@end example

@noindent
Dieser Befehl setzt die Eigenschaft des @code{skipBars} (@qq{überspringe 
Takte}) auf wahr (@code{##t}).  Wenn diese Option und die Pause 
zu der Musik des Beispiels gesetzt wird, erhält man folgendes Ergebnis:

@lilypond[quote,ragged-right]
\transpose f c' \relative c {
  \time 2/4
  \set Score.skipBars = ##t
  R2*3
  r4 f8 a cis4 f e d
}
@end lilypond

Die Partitur wird erstellt, indem alle Noten zusammengesetzt werden. 
Angenommen, die andere Stimme trägt den Namen @code{FagottNoten} 
 und ist in der Datei @file{Fagott-Noten.ly} gespeichert. Die
Partitur sieht dann folgendermaßen aus:

@example
\include "Fagott-Noten.ly"
\include "Horn-Noten.ly"

<<
  \new Staff \HornNoten
  \new Staff \FagottNoten
>>
@end example

@noindent
Und mit LilyPond übersetzt:

@lilypond[quote,ragged-right]
\relative c <<
  \new Staff {
    \time 2/4 R2*3
    r4 f8 a cis4 f e d
  }
  \new Staff {
    \clef bass
    r4 d,8 f | gis4 c | b bes |
    a8 e f4 | g d | gis f
  }
>>
@end lilypond

Tiefer gehende Information darüber, wie Stimmauszüge und Partituren 
erstellt werden, finden sich im Notationshandbuch, siehe 
@ref{Orchestral music}.

Das Setzen der Variablen, die das Verhalten von LilyPond beeinflussen 
(@q{properties}), wird im Kapitel
@ref{Changing context properties on the fly} besprochen.



