@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*-

@ignore
    Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
    Guide, node Updating translation committishes.
@end ignore

@c \version "2.19.22"
@c Translators: Pavel Fric

@node Základní pojmy
@chapter Základní pojmy
@translationof Fundamental concepts

Poté co ve cvičení bylo ukázáno, jak lze z jednoduchého textového souboru
vytvořit překrásně formátované hudební noty, jsou v této kapitole
představeny koncepty a techniky, jak se dají tvořit i složitější
notové zápisy.

@menu
* Jak pracují vstupní soubory LilyPondu::
* Hlasy obsahují noty::
* Prostředí a rytci::
* Rozšíření příkladů::
@end menu

@node Jak pracují vstupní soubory LilyPondu
@section Jak pracují vstupní soubory LilyPondu
@translationof How LilyPond input files work

Vstupní formát pro LilyPond měl poměrně volnou podobu, takže
zkušení uživatele tu mají hodně volnosti v ovlivnění stavby jejich
zdrojových souborů.  Pro nováčky ale tato ohebnost může být zprvu
matoucí.  V této kapitole by proto z toho důvodu měla být představena
část z těchto staveb. Mnohé ale bude pro zjednodušení
vynecháno.  Na úplný popis vstupního formátu se podívejte
na @ruser{Stavba souboru}.

Většinu příkladů v této příručce představují malé úryvky, jako
je tento:

@example
c4 a b c
@end example

Jak je snad známo, nedá se takový úryvek v této podobě
přeložit.  Tyto příklady jsou tedy jen zkrácenou formou
skutečných příkladů.  Přinejmenším se musí dodatečně uzavřít ve
složených závorkách.

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

Většina příkladů rovněž používá příkaz @code{\relative c'}.
Ten pro překlad souborů není nezbytný, ale ve většině případů
tak notová sazba vypadá zřídka, když se tento příkaz
vynechá.

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

Úplné vymezení vstupního formátu se nachází
v kapitole @ruser{Stavba souboru}.

@menu
* Uvedení do stavby souboru v LilyPondu::
* Notový zápis je jedním (jediným) složeným hudebním výrazem::
* Naskládání hudebních výrazů do sebe::
* O ne-naskládatelnosti závorek a ligatur::
@end menu

@node Uvedení do stavby souboru v LilyPondu
@subsection Uvedení do stavby souboru v LilyPondu
@translationof Introduction to the LilyPond file structure

@cindex Vstupní formát
@cindex Stavba souboru
@cindex Stavba, soubor

Základní příklad vstupního souboru pro LilyPond zní:

@example
\version @w{"@version{}"}

\header @{ @}

\score @{
  @var{...složený hudební výraz...}  % Celé noty přijdou sem!
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
Na základě pružnosti LilyPond je mnoho obměn tohoto schématu,
ale tento příklad slouží jako jednoduchý výchozí bod.

@funindex \book
@funindex \score
@funindex book
@funindex score
@cindex book
@cindex score

Až dosud ještě žádný z příkladů příkaz @code{\score@{@}}
nepoužil, neboť LilyPond takové dodatečné příkazy automaticky
vkládá v případě potřeby, když má vstupní soubor jednoduchou
stavbu.

Podívejme se na jeden takový jednoduchý příklad:

@example
\relative @{
  c''4 a d c
@}
@end example

@noindent
Na pozadí k tomu přichází ještě několik rovin: LilyPondovský kód
v hořejší podobě je ve skutečnosti zestručněním.  I když by se
takové soubory daly napsat a také správně zapsat, znamená
úplný kód, který je zde míněn, vlastně:

@example
\book @{
  \score @{
    \new Staff @{
      \new Voice @{
        \relative @{
          c''4 a b c
        @}
      @}
    @}
    \layout @{ @}
  @}
@}
@end example

@noindent
Jinými slovy:  Když vstupní soubor obsahuje nějaký jednoduchý výraz,
LilyPond bude soubor vykládat tak, jakoby byl onen výraz zadán uvnitř
výše ukázaných příkazů.  Tato nutná stavba je vytvořena automaticky
v paměti při vyvolání LilyPondu,
aniž by si uživatel něčeho z toho všiml.

@cindex Skrytá prostředí
@cindex Prostředí, skrytá

@strong{Slovo varování je však vysloveno!} Mnohé z příkladů
v dokumentaci k LilyPondu vědomě vynechávají příklady @code{\new Staff}
a @code{\new Voice} k vytvoření notové osnovy a hlasu (obojí je v
LilyPondu tak zvané prostředí),
aby byla LilyPondem v paměti vytvořena skrytě.
Pro jednoduché dokumenty to obecně pracuje velmi dobře, u
složitějších notových zápisů z toho ale mohou povstat neočekávané
výsledky, částečně dokonce neočekávané prázdné notové osnovy.  Jak
otevřeně vytvářet odpovídající prostředí v takovém případě,
se podívejte na @ref{Prostředí a rytci,,prostředí a rytce}.

@warning{Když se zadává více jak dvojice notových řádků,
doporučuje se vytvořit notové osnovy a hlasy vždy otevřeně
pomocí @code{\new Staff} a @code{\new Voice}.}

V této chvíli se ale chceme vrátit k našemu prvnímu příkladu a
blíže se podívat jen na příkaz @code{\score}.

Notový zápis (@code{\score}) musí vždy začínat nějakým hudebním
výrazem.  To je koneckonců každá hudba, počínaje jednotlivou
notou až po rostoucí notový zápis s mnoha notovými osnovami
(zde označeno pomocí @code{GrandStaff}):

@example
@{
  \new GrandStaff <<
    @var{...zde celý notový zápis...}
  >>
@}
@end example

@noindent
Protože se vše nachází uvnitř složených závorek @code{@{ ... @}},
zachází se s tím jako s jediným hudebním výrazem.


Jak již bylo řečeno předtím, může blok @code{\score} obsahovat i jiné věci, jako například

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

@funindex \header
@funindex \layout
@funindex \midi
@funindex header
@funindex layout
@funindex midi
@cindex header
@cindex midi
@cindex Layout
@cindex Hlavička

@noindent
Jak je vidět, jsou ty tři příkazy @code{\header}, @code{\layout} a
@code{\midi} zvláštní povahy: V protikladu k mnoha jiným příkazům,
které také začínají zpětným lomítkem @code{\}, @emph{nejsou} hudebním výrazem
a také nejsou částí nějakého hudebního výrazu.  Z toho důvodu mohou být umístěny
jak dovnitř bloku @code{\score} tak mimo
něj.  Ve skutečnosti jsou tyto příkazy většinou umisťovány mimo blok
@code{\score}, například se příkaz @code{\header} nachází
velice často nad prostředím @code{\score}, jak ukazuje příklad na
začátku tohoto oddílu.  Pracuje to právě tak dobře.

Dvěma dosud neviděnými příkazy jsou
@code{\layout @{ @}} a @code{\midi @{@}}.  Když se objeví v nějakém
souboru, vede to k tomu, že LilyPond vytvoří tisknutelný soubor PDF
popřípadě soubor MIDI.  Přesněji jsou popsány v uživatelské příručce -
notace -- @ruser{Rozvržení notového zápisu} a
@ruser{Vytváření souborů MIDI}.

@cindex Notové zápisy, více
@cindex Prostředí book, skryté
@cindex Skryté prostředí book
@funindex \book

Váš LilyPondovský kód může obsahovat více bloků @code{\score}.
Každý z nich je vykládán jako samostatný notový zápis, ovšem
všechny jsou umístěny v tomtéž výstupním souboru.
Příkaz @code{\book} není otevřeně nezbytný -- je vytvořen
skrytě.  Když však má být vytvořen pro každý blok @code{\score} v
souboru @file{.ly} vlastní výstupní soubor,
potom se musí každý z těchto bloků zapsat do vlastního bloku @code{\book}:
 Každý blok @code{\book} pak vytváří vlastní výstupní soubor.

Shrnutí:

Každý blok @code{\book} vytváří vlastní výstupní soubor (např. soubor
PDF).  Pokud jste otevřeně žádný takový blok nezadali,
LilyPond celý obsah souboru zapíše dovnitř jednoho jediného
skrytého bloku @code{\book}.

Každý blok @code{\score} popiseje jeden samostatný hudební kus
uvnitř bloku @code{\book}.

@cindex Prostředí Layout, umístění
@cindex Umístění prostředí layout

Každý blok @code{\layout} ovlivňuje @code{\score} nebo
@code{\book}, ve kterém se vyskytuje.  Tak působí například blok
@code{\layout} uvnitř bloku @code{\score} jen na tento jeden
blok a celý jeho obsah, blok @code{\layout} mimo
blok @code{\score} (a proto uvnitř skrytě vytvořeného
otevřeně zadaného bloku @code{\book}) však na
všechny bloky @code{\score} uvnitř tohoto bloku @code{\book}.

Více podrobností se nachází v části @ruser{Více notových zápisů v knize}.

@cindex Proměnné
@cindex Identifikátor

Dobrou možností pro zjednodušení jsou vlastní vymezené proměnné,
jak je to také ukázáno v @ref{Pořádání děl pomocí proměnných}.
Všechny předlohy používají tuto možnost:

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

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

Když LilyPond zpracovává tento soubor, bere obsah
z @code{melodie} (vše po rovnítku) a vkládá to,
kdykoli vidí @code{\melodie}. Názvy jsou
volně volitelné, proměnná se právě tak dobře může
jmenovat  @code{melodie}, @code{GLOBAL}, @code{praváRukaKlavír},
nebo @code{cokoliDalšího}.
Jako název proměnné se dá použít skoro jakýkoli oblíbený název,
musí se v něm ovšem vyskytovat jen písmena (takže žádná čísla, podtržítka,
zvláštní znaky, atd.) a nesmí znít jako příkaz pro LilyPond.  Pro více
informací se podívejte na
@ref{Úspora psaní na stroji pomocí proměnných a funkcí,,úsporu psaní na stroji pomocí proměnných a funkcí}.  Přesně jsou
tato omezení popsána v části @ruser{Stavba souboru}.


@seealso
Úplné vymezení vstupního souboru se nachází v
@ruser{Stavba souboru}.


@node Notový zápis je jedním (jediným) složeným hudebním výrazem
@subsection Notový zápis je jedním (jediným) složeným hudebním výrazem
@translationof Score is a (single) compound musical expression

@funindex \score
@cindex score
@cindex Notový zápis
@cindex Hudební kus
@cindex Složený hudební výraz
@cindex Hudební výraz, složený


V předchozí kapitole, @ref{Uvedení do stavby souboru v LilyPondu},
byla popsána obecná stavba jednoho LilyPondovského zdrojového
souboru.  Ale zjevně jsme vypustili nejdůležitější
otázku, totiž jak se zjistí, co se má napsat
po @code{\score}.

Ve skutečnosti to ale není vůbec žádným tajemstvím.  Tento
řádek je odpovědí:

@quotation
@emph{Notový zápis začíná vždy @code{\score}, který je následován
jedním hudebním výrazem.}
@end quotation

@noindent
Možná byste si měl ještě jednou zběžně přečíst, abyste pochopil, co jsou to hudební výrazy,
@ref{Vysvětlení hudebních výrazů,,vysvětlení hudebních výrazů}.  V této
kapitole bylo ukázáno, jak se velké hudební výrazy
skládají z malých částí.  Noty mohou být spojeny s akordy
atd. Nyní ale jdeme v jiném směru a pozorujeme,
jak se dá rozložit velký hudební výraz. Kvůli zjednodušení
v našem příkladu použijeme jen jednoho zpěváka a
klavír.  Nepotřebujeme žádnou skupinu
osnov (@code{StaffGroup}), která jednoduše způsobeje jen to,
že osnovy jsou spojeny závorkami, seskupuje je; ty tedy budou
odstraněny.  @emph{Potřebujeme} ale osnovy pro zpěváka a klavír.

@example
\score @{
  @{
    <<
      \new Staff = "Zpěvák" <<
      >>
      \new PianoStaff = "Klavír" <<
      >>
    >>
  @}
  \layout @{ @}
@}
@end example

Zde byly osnovy pojmenovány: @qq{Zpěvák} a
@qq{Klavír}.  To v tomto případě není přímo nutné,
ale je dobré zvyknout si na tento způsob psaní, aby se hned
poznalo, o kterou osnovu se jedná.

K zapamatování: @code{<<} a @code{>>} jsou noty vysázeny
zároveň.  To způsobuje, že se hlasová část a klavírní osnova objevují
v notovém zápisu nad sebou.  Konstrukce @code{<< ... >>} pro zpěvákovu osnovu
v příkladu výše není nutná, protože zde se mají vkládat noty jen
jednoho hlasu, ale @code{<< ... >>}
namísto závorek jsou nezbytné, hned jak se má vkládat
více než jeden hlas, tedy dva a více současných výrazů, nebo jeden notový hlas a text
písně.  V našem případě se má zapsat jeden hlas s textem písně,
takže jsou potřeba špičaté závorky. Noty přidáme teprve později,
pro teď tedy přidáme nějaké noty a text.  Pokud si nevzpomínáte,
jak se text písně zapisuje, přečtěte si ještě
jednou o @code{\addlyrics} v @ref{Zápis jednoduchých písní,,zápisu jednoduchých písní}.

@lilypond[verbatim,quote,ragged-right]
\score {
  <<
    \new Staff = "singer" <<
      \new Voice = "vocal" { c'1 }
      \addlyrics { And }
    >>
    \new PianoStaff = "piano" <<
      \new Staff = "upper" { c'1 }
      \new Staff = "lower" { c'1 }
    >>
  >>
  \layout { }
}
@end lilypond

Nyní máme mnohem více podrobností.  Máme osnovu (angl. staff)
pro jednoho zpěváka, ve které se zase nachází jeden hlas
(angl. voice).  @code{Voice} znamená pro LilyPond hlas (jak
zazpívaný tak zahraný; prostě soubor not, nikoli nutně zpívaných zpěvákem
 -- například housle hrají jeden hlas) a případně dodatečný text.  Dodatečně
se zapíší dvě notové osnovy pro klavír příkazem @code{\new
PianoStaff}.  @code{PianoStaff} označuje prostředí klavíru (procházející
taktové čáry a složené závorky na začátku), v němž se potom opět
zřizují dvě vlastní osnovy ("nahoře" pro pravou ruku a
"dole" pro levou), i když spodní osnova musí ještě dostat
basový klíč.

Nyní bychom do tohoto prostředí mohli začít vkládat noty.  Uvnitř
složených závorek vedle @code{\new Voice = "Zpěvní hlas"}
bychom mohli zapisovat

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

@noindent
Ale když se soubor píše takto přímo, začne být
část @code{\score} velmi dlouhá a je dosti obtížné porozumět tomu,
jak vše souvisí.  Z toho důvodu se nabízí použití identifikátorů
(nebo jinak také proměnných).  Byly vysvětleny na začátku předchozí
části, jak si zajisté vzpomínáte?  Abychom zajistili,
že obsah proměnné @code{text} je vykládán jako text písně,
interpretiert wird, uvedeme jej @code{\lyricmode}.  Tak jako
@code{\addlyrics}, je tímto vstupní režim přepnut na
text písně. Bez tohoto příkazu by se LilyPond pokoušel vykládat obsah
proměnné jako noty a přitom by docházelo k vytváření
množství chyb. (Kromě toho je dostupných ještě několik dalších
zadávacích režimů, podívejte se na @ruser{Vstupní režimy}.)

Takže nyní máme, když přidáme několik not a basový klíč
pro levou ruku, následující příklad:

@lilypond[verbatim,quote,ragged-right]
melody = \relative { r4 d''8\noBeam g, c4 r }
text   = \lyricmode { And God said, }
upper  = \relative { <g' d g,>2~ <g d g,> }
lower  = \relative { b,2 e }

\score {
  <<
    \new Staff = "singer" <<
      \new Voice = "vocal" { \melody }
      \addlyrics { \text }
    >>
    \new PianoStaff = "piano" <<
      \new Staff = "upper" { \upper }
      \new Staff = "lower" {
        \clef "bass"
        \lower
      }
    >>
  >>
  \layout { }
}
@end lilypond

Při zapisování (nebo při čtení) prostředí @code{\score}
by se mělo postupovat pomalu a pečlivě.  Nejlepší je začít s největšími
útvary, a pak vymezit v nich obsažené menší útvary.  Také pomáhá velice
dbát na přesné odsazení, aby každý řádek, jenž přísluší k
téže úrovni, skutečně vodorovně začínal na tom
samém místě.


@seealso
Notace: @ruser{Stavba notového zápisu}.


@node Naskládání hudebních výrazů do sebe
@subsection Naskládání hudebních výrazů do sebe
@translationof Nesting music expressions

@cindex Notové osnovy, dočasné
@cindex Ossia
@cindex Dočasné notové osnovy

Notové osnovy (prostředí @q{Staff}) není bezpodmínečně potřeba
vytvořit hned na začátku -- mohou být uvedeny i kdykoli
později.  To je obzvláště užitečné při vytváření oddílů
@rglosnamed{ossia,Ossias}.  Zde následuje krátký příklad toho,
jak je možné vytvořit dodatečnou dočasnou notovou osnovu
jen pro dobu trvání tří not:

@lilypond[verbatim,quote,ragged-right]
\new Staff {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff {
        f8 f c
      }
    >>
    r4 |
  }
}
@end lilypond

@noindent
Jak je vidět, velikost notového klíče je tatáž, jaká se vyskytuje
i při změně klíče -- o něco menší, než
jakou má klíč na začátku notové osnovy.   Toto je obvyklé u
notových klíčů, které jsou zapsány uvnitř notové osnovy.

@cindex Notová osnova, umístění
@cindex Umístění notové osnovy

Oddíl ossia může být zapsán i mimo hlavní notovou
osnovu:

@lilypond[verbatim,quote,ragged-right]
\new Staff = "main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
      } { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

Tento příklad používá příkaz @code{\with}, který bude později
vysvětlen ještě přesněji.  Jím lze měnit výchozí chování jedné
notové osnovy: Zde se jednoduše říká, že nová notová osnova
se má umístit nad již jsoucí osnovu s názvem
@qq{main} namísto výchozího umístění, které je
pod ní.


@seealso
Ossia jsou často tisknuta bez notového klíče a bez taktového označení,
většinou také o něco menší, než jiné osnovy.  Toto je přirozeně možné
i v LilyPondu, vyžaduje to ale příkazy, jež dosud ještě nebyly
představeny.  Podívejte se na @ref{Velikost předmětů,,velikosti předmětů}
a @ruser{Osnovy ossia}.


@node O ne-naskládatelnosti závorek a ligatur
@subsection O ne-naskládatelnosti závorek a ligatur
@translationof On the un-nestedness of brackets and ties

@cindex Závorky, naskládání
@cindex Naskládání závorek
@cindex Typy závorek

Již jste při psaní vstupního souboru pro LilyPond poznali
četné různé druhy závorek a staveb na způsob závorek.  Tyto
se řídí různými pravidly, která mohou zpočátku působit
matoucím dojmem.  Předtím než budou představena přesná pravidla,
pojďme si tyto různé druhy závorek a staveb na způsob závorek
krátce projít znovu:

@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .3 .7
@headitem Druh závorek
  @tab Funkce
@item @code{@{ .. @}}
  @tab Uzavírá postupnou část hudby
@item @code{< .. >}
  @tab Uzavírá noty jednoho akordu
@item @code{<< .. >>}
  @tab Uzavírá souběžné hudební výrazy
@item @code{( .. )}
  @tab Označuje začátek a konec obloučku
@item @code{\( .. \)}
  @tab Označuje začátek a konec frázovacího obloučku
@item @code{[ .. ]}
  @tab Označuje začátek a konec ručně vytvořeného trámce
@end multitable

Dodatečně by snad měly být ještě dále zmíněny některé další
konstrukce, které noty ať už jakkoli spojují:
ligatury (označované vlnovkou @code{~}),
trioly (psané jako @code{\times x/y @{..@}}) und
ozdoby (poznamenávané jako @code{\grace@{..@}}).

Mimo LilyPond vyžaduje běžné používání závorek,
aby byly jejich odpovídající druhy správně seskládány,
jako je tomu například tady @code{<< [ @{ ( .. ) @} ] >>}.  Uzavírající
závorky přitom přicházejí v obráceném pořadí k
otevírajícím závorkám.  Toto je také v LilyPondu
@strong{nutnost} pro ony tři druhy závorek, jež byly v hořejší
tabulce popsány slovem @q{uzavírá} -- musí být správně
vkládány.
Nicméně zbývající stavby na způsob závorek (v tabulce popsány
slovem @q{označuje}), ligatury a trioly
bezpodmínečně s jinými závorkami nebo stavbami na způsob závorek
seskládány být čistě @strong{nemusí}.  Vlastně také ani nejsou nějakými
závorkami v tom smyslu, že by něco svíraly, nýbrž mnohem více
jsou ukazateli, na kterém místě určitý hudební předmět
začíná nebo končí.

Tak tedy může například takový frázovací oblouček začínat před
ručně vloženým trámcem, a přece končit již před jeho koncem.
Toto sice může z hudebního pohledu dávat málo smyslu, ale v LilyPondu
je možné i toto:

@lilypond[quote,verbatim,ragged-right,relative=2]
{ g8\( a b[ c b\) a] g4 }
@end lilypond

Ve všeobecnosti se dá říct, že mohou být různé druhy závorek,
staveb na způsob závorek, legatových obloučků,
triol a ozdob libovolně dávány dohromady.
Následující příklad ukazuje trámec, který sahá až k triole
(řádek 1), ligaturu, která rovněž dosahuje k triole
(řádek 2), trámec a ligaturu sahající k triole,
oblouček, který běží přes dvě trioly, jakož i frázovací
oblouček, který začíná u trioly (řádky 3 a 4).

@lilypond[quote,verbatim,ragged-right]
{
r16[ g \tuplet 3/2 { r16 e'8] }
g16( a \tuplet 3/2 { b16 d) e' }
g8[( a \tuplet 3/2 { b8 d') e'~] } |
\tuplet 5/4 { e'32\( a b d' e' } a'4.\)
}
@end lilypond


@node Hlasy obsahují noty
@section Hlasy obsahují noty
@translationof Voices contain music

Zpěváci potřebují ke zpívání hlasy, a LilyPond je potřebuje také:
ve skutečnosti jsou všechny noty pro všechny nástroje zapsány v
v notovém zápisu uvnitř hlasů.  Hlas je v LilyPondu
tím nejzákladnějším pojmem.

@menu
* Slyším hlasy::
* Přesně vyjádřené začátky hlasů::
* Hlasy a zpěvy::
@end menu

@node Slyším hlasy
@subsection Slyším hlasy
@translationof I'm hearing Voices

@cindex Vícehlasost
@cindex Úrovně
@cindex Vícehlasy
@cindex Hlasy, více
@cindex Voice context
@cindex context, Voice
@cindex Prostředí hlasu
@cindex Prostředí, hlas
@cindex Současné noty
@cindex Hlasy proti akordům
@cindex Akordy proti hlasům
@cindex Noty současně

Nejnižší, nejzákladnější a nejvnitřnější úrovně v LilyPondovském notovém
zápisu jsou nazvány @qq{Voice context} (prostředí hlasu) nebo také jen @qq{Voice}
(hlas).  Hlasy jsou v jiných notačních programech někdy označovány
jako @qq{layer} (úroveň).

Skutečně je úroveň hlasu tou jedinou, která opravdu může obsahovat
noty.  Pokud není otevřeně vytvořeno žádné prostředí hlasu,
je jedno vytvořeno automaticky, jak to bylo ukázáno na začátku
této kapitoly.  Některé nástroje, jako je tomu například u hoboje, mohou
zároveň zahrát jen jednu notu.  Noty pro takové nástroje jsou jednohlasé
a potřebují jen jeden hlas.  Nástroje, které současně dokáží zahrát
více not, jako klavír, naproti tomu často potřebují více
hlasů, aby mohly popsat různé současně zaznívající noty
s často rozdílnými rytmy.

Jeden hlas přirozeně může v jednom akordu obsahovat více not
-- takže kdy přesně je potřeba více hlasů? Podívejme se nejprve na
tento příklad se čtyřmi akordy:

@lilypond[quote,verbatim,ragged-right]
\relative {
  \key g \major
  <d' g>4 <d fis> <d a'> <d g>
}
@end lilypond

To lze vyjádřit tak, že se pro ukázání akordů použijí jednoduché špičaté
závorky @code{< ... >}.  A pro to je potřeba jen jednoho
hlasu.  Ale předpokládejme, že by Fis bylo vlastně osminovou
notou, kterou následuje osminová nota G (jako průchodný tón
k A)? Zde máme dvě noty, které začínají ve stejnou dobu,
ale mají rozdílné doby trvání: čtvrťová nota D a osminová nota
Fis.  Jak by je šlo zapsat? Jako akord je napsat nejde,
protože v jednom akordu musejí mít všechny noty stejnou
délku.  Ani nemohou být zapsány jako po sobě jdoucí noty,
neboť začínají v ten samý čas.  V takovém případě tedy potřebujeme dva
hlasy.

Jak se to ale vyjádří v LilyPondovské skladbě?

@funindex << \\ >>
@funindex \\

Nejjednodušším způsobem, jak provést zápis částí s více než jedním hlasem
na osnovu, je hlasy zapsat za sebou (pokaždé se závorkami
@code{@{ ... @}}), a pak je souběžně spojit špičatými závorkami
(@code{<<...>>}).  Obě části ještě dodatečně musejí být jedna od druhé
odděleny dvěma zpětnými lomítky (@code{\\}),
aby byly rozpoznány jako dva různé hlasy.  Bez těchto oddělovačů by
byly zapsány jako jeden hlas.  Tato technika je obzvláště vhodná, když
se jedná o noty, které jsou jako hudba především jednohlasé,
v nichž se ale příležitostně sem tam vyskytují místa, která jsou
vícehlasá.

Takto to vypadá, když jsou akordy rozděleny do dvou hlasů
a k průchodnému tónu je ještě přidán legatový oblouček:

@lilypond[quote,verbatim,ragged-right]
\relative {
  \key g \major
  %    Voice = "1"             Voice = "2"
  << { g'4 fis8( g) a4 g } \\ { d4 d d d }  >>
}
@end lilypond

Všimněte si, že nožičky druhého hlasu nyní ukazují dolů.

Tady je jiný jednoduchý příklad:

@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 }       >>
@end lilypond

Není nutné používat pro každý takt vlastní stavbu
@code{<< \\ >>}.  U hudby s jen málo notami na takt to může
zdrojový soubor udělat čitelnějším, ale když se v jednom taktu vyskytuje
mnoho not, může být lepší napsat každý hlas odděleně,
jako zde:

@lilypond[quote,verbatim,ragged-right]
<<
  \key d \minor
  \relative { % Voice = "1"
    r4 g' g4. a8 |
    bes4 bes c bes |
    a2. r4 |
  } \\
  \relative { % Voice = "2"
    d'2 d4 g |
    g4 g g8( a) g4 |
    fis2. s4 |
  }
>>
@end lilypond

Tento příklad má jen dva hlasy, ale stejné stavby lze použít,
když máme tři nebo více hlasů, tak, že přidáme více oddělovačů,
zpětných lomítek.

Hlasová prostředí nesou názvy @code{"1"}, @code{"2"} atd. V každém
z těchto prostředí je nastaven svislý směr nožiček, legatových obloučků,
ligatur, značek pro dynamiku atd. tak, jak se patří.

@lilypond[quote,verbatim]
\new Staff \relative {
  % Main voice
  c'16 d e f
  %    Voice = "1"   Voice = "2"              Voice = "3"
  << { g4 f e } \\ { r8 e4 d c8~ } >> |
  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
}
@end lilypond

Tyto hlasy jsou všechny odděleny od hlavního hlasu, který obsahuje noty
mimo stavbu @code{<< .. >>}.  Pojmenujme ji
@emph{souběžná stavba}.  Ligatury a legatové obloučky
mohou dohromady spojovat pouze noty uvnitř těchže hlasů a nemohou tedy
přesahovat do souběžné stavby a ze souběžné stavby.  Obráceně platí,
že současné hlasy z vlastní souběžné stavby ve stejné notové osnově
jsou týmiž hlasy.  Na všechny souběžné stavby se vztahují i jiné
s prostředím hlasu spojené vlastnosti.  Zde je stejný příklad,
ale s různými barvami a hlavičkami not pro každý hlas.
Všimněte si, že změny v jednom hlasu se nevztahují na jiné hlasy,
ale nadále trvají v tomtéž hlase a jsou v něm přítomny ještě později.
Všimněte si také, že spojené noty mohou být rozděleny přes stejný hlas
do dvou staveb, jak je to ukázáno zde na modrém trojúhelníkovém hlase.

@lilypond[quote,verbatim]
\new Staff \relative {
  % Main voice
  c'16 d e f
  <<   % Bar 1
    {
      \voiceOneStyle
      g4 f e
    }
  \\
    {
      \voiceTwoStyle
      r8 e4 d c8~
    }
  >> |
  <<  % Bar 2
     % Voice 1 continues
    { d2 e }
  \\
     % Voice 2 continues
    { c8 b16 a b8 g~ 2 }
  \\
    {
      \voiceThreeStyle
      s4 b c2
    }
  >> |
}
@end lilypond

@funindex \voiceOneStyle
@funindex \voiceTwoStyle
@funindex \voiceThreeStyle
@funindex \voiceFourStyle
@funindex \voiceNeutralStyle

Příkazy @code{\voiceXXXStyle} jsou tu především k tomu, aby se používaly
v vzdělávacích dokumentech, jako je tento.
Mění barvu notové hlavičky, nožičky a trámce, a dodatečně
podobu notové hlavičky, takže se hlasy dají snadno od sebe
rozlišit.  První hlas je nastaven jako červený kosočtverec,
druhý hlas je nastaven jako modrý trojúhelník, třetí hlas je
nastaven jako zelený kruh s křížkem a čtvrtý hlas (který tu použit
není) má tmavěčervený kříž.  @code{\voiceNeutralStyle} (zde také
není použit) změny vrací zpět na výchozí styl.  Později bude
ukázáno, jak mohou být příkazy, jako je tento, vytvářeny samotným
uživatelem.  Podívejte se také na @ref{Viditelnost a barva předmětů} a
@ref{Použití proměnných pro ladění}.

@cindex Vícehlasost a relativní notační režim
@cindex Relativní notační režim a vícehlasost

Vícehlasost nemění vztahy not uvnitř bloku
@code{\relative}.  Každá nota je nadále počítána ve vztahu k
předchozí notě, nebo poměrně k první notě předchozího
akordu.  Tak například zde je spočítáno

@example
\relative c' @{ NoteA << < NoteB NoteC > \\ NoteD >> NoteE @}
@end example

@noindent
@code{NoteB} se zřetelem na @code{NoteA}                      @*
@code{NoteC} se zřetelem na @code{NoteB}, ne @code{noteA};   @*
@code{NoteD} se zřetelem na @code{NoteB}, ne @code{NoteA} nebo
@code{NoteC};                                                 @*
@code{NoteE} se zřetelem na @code{NoteD}, ne @code{NoteA}.

Jinou možností je umístit příkaz @code{\relative} na začátek
před každý hlas.  To se nabízí, když jsou hlasy od sebe ve větší
vzdálenosti. Může to být, když jsou noty v hlasech
široce odděleny, přehlednější.

@example
\relative c' @{ NoteA ... @}
<<
  \relative c'' @{ < NoteB NoteC > ... @}
\\
  \relative g' @{ NoteD ... @}
>>
\relative c' @{ NoteE ... @}
@end example

Pojďme konečně rozebrat hlasy ve složitějším kuse hudby.
Zde jsou noty prvních dvou taktů Chopinových
@notation{Deux Nocturnes}, Op. 32.  Tento příklad bude později použit
v této a další kapitole, aby na něm byly názorně ukázány různé techniky,
jak vytvářet noty.  Proto si na tomto místě v kódu nevšímejte čehokoli,
co by vám přišlo záhadné, a soustřeďte se jen na noty
a hlasy.  Složitější věci budou vysvětleny v pozdějších částech.

@c The following should appear as music without code
@lilypond[quote,ragged-right]
\new Staff \relative {
  \key aes \major
  <<  % Voice one
    { c''2 aes4. bes8 }
  \\  % Voice two
    { aes2 f4 fes }
  \\  % No voice three
  \\  % Voice four
    {
      % 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
    }
  >> |
  <c ees aes c>1 |
}
@end lilypond

Směr nožičky se často používá k tomu, aby se ukázala souvislost
dvou souběžných melodií.  Zde ukazují nožičky všech horních
not nahoru a nožičky všech dolních not dolů.
To je první známkou toho, že je potřeba více než jeden
hlas.

Ale skutečná nezbytnost více hlasů nadejde teprve tehdy,
když současně zaznívají různé noty, které začínají ve stejnou dobu,
mají rozdílné doby trvání.  Podívejte se na noty, jež začínají na
třetí době prvního taktu.  As je tečkovaná čtvrťová nota,
F je čtvrťová nota a Des je půlová nota.  Nemohou být
zapsány jako akord, protože všechny noty jednoho akordu
mají stejnou dobu trvání.  Nemohou být ale zapsány ani jako jdoucí po sobě,
protože musí začínat v tutéž dobu.  Tato část taktu
potřebuje tři hlasy, a běžně se zapisují tři hlasy
pro celý takt, jak je to vidět na příkladu níže;
kde jsou použity různé hlavičky not a barvy pro různé
hlasy.  Ještě jednou: Zdrojový kód pro tento příklad bude později
vysvětlen znovu, proto si nevšímejte ničeho, čemu zde nemůžete
porozumět.

@c The following should appear as music without code
@c The three voice styles should be defined in -init
@lilypond[quote,ragged-right]
\new Staff \relative {
  \key aes \major
  <<
    {  % Voice one
      \voiceOneStyle
      c''2 aes4. bes8
    }
  \\  % Voice two
    { \voiceTwoStyle
      aes2 f4 fes
    }
  \\  % 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
    }
  >>
  <c ees aes c>1
}
@end lilypond

Pokusme se tedy tyto noty zapsat od začátku.  Jak je zde
vidět, je tu obsaženo několik potíží.  Začneme, jak jsme
se to naučili, pomocí konstrukcí @code{<< \\  >>},
kterou zapíšeme tři hlasy prvního taktu:

@lilypond[quote,verbatim,ragged-right]
\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des }
  >> |
  <c ees aes c>1 |
}
@end lilypond

@cindex Nožička dolů
@cindex Nožička nahoru
@cindex Notová nožička, Směr
@cindex Směr notové nožičky
@cindex Hlasy a směr notové nožičky
@cindex Směr notové nožičky ve hlasech

Směr notové nožičky je přiřazen automaticky; hlasy s lichým
číslem nesou nožičky nahoru, sudé mají nožičky dolů.  Nožičky
pro hlasy 1 a 2 jsou správně, ale nožičky třetího hlasu
by v tomto příkladu měly vlastně ukazovat dolů.  Můžeme to opravit
jednoduše tak, že vypustíme třetí hlas, přeskočíme jej a noty
umístíme do čtvrtého hlasu.  To se udělá jednoduše přidáním
páru @code{\\}.

@lilypond[quote,verbatim,ragged-right]
\new Staff \relative {
  \key aes \major
  <<  % Voice one
    { c''2 aes4. bes8 }
  \\  % Voice two
    { aes2 f4 fes }
  \\  % Omit Voice three
  \\  % Voice four
    { <ees c>2 des }
  >> |
  <c ees aes c>1 |
}
@end lilypond

@noindent
Vidíme, že se tím mění směr nožiček, ale ukazuje se jiný
problém, na který se někdy při více hlasech narazí:
Nožičky not jednoho hlasu se mohou střetávat s nožičkami jiného hlasu.
LilyPond dovoluje notám různých hlasů, aby se nacházely ve
stejné svislé poloze, za předpokladu že nožičky ukazují v opačných
směrech, a třetí a čtvrtý hlas pak umísťuje tak, aby pokud možno
k vzájemnému střetu nedocházelo.  Obvykle to pracuje
dobře, ale v tomto případě jsou noty nejnižšího hlasu
zřetelně nedobře umístěny.  LilyPond nabízí několik různých způsobů,
jak vodorovnou polohu not přizpůsobit.  Nejsme však ještě tak daleko,
abychom tyto funkce mohli použít. Proto
tento problém odložíme na později; viz vlastnost @code{force-hshift} v
@ref{Oprava překrývajících se not}.


@seealso
Notace: @ruser{Více hlasů}.


@node Přesně vyjádřené začátky hlasů
@subsection Přesně vyjádřené začátky hlasů
@translationof Explicitly instantiating voices

@funindex \voiceOne
@funindex \voiceTwo
@funindex \voiceThree
@funindex \voiceFour
@funindex \oneVoice
@funindex \new Voice
@cindex Vytvoření prostředí hlasu
@cindex Prostředí hlasu, vytvoření

Prostředí hlasů lze vytvářet i ručně uvnitř bloku @code{<< >>}
pro vytvoření vícehlesé hudby.  Pomocí příkazů @code{\voiceOne} až
@code{\voiceFour} lze ke každému hlasu přidat odpovídající chování
svislého posunu a požadované směry nožiček, legatové obloučky
a jiné předměty.  V delších notových zápisech je tento způsob čistší,
protože dovoluje, aby byly hlasy odděleny a aby se jim daly
popisnější názvy.

Stavba @code{<< \\ >>}, kterou jsme použili v předchozím
úryvku:

@example
\new Staff @{
  \relative @{
    << @{ e'4 f g a @} \\ @{ c,4 d e f @} >>
  @}
@}
@end example

@noindent
ist identisch mit

@example
\new Staff <<
  \new Voice = "1" @{ \voiceOne \relative @{ e'4 f g a @} @}
  \new Voice = "2" @{ \voiceTwo \relative @{ c'4 d e f @} @}
>>
@end example

Obojí výše by vytvořilo následující notový obraz:

@c The following example should not display the code
@lilypond[ragged-right,quote]
\new Staff <<
  \new Voice = "1" { \voiceOne \relative { e'4 f g a } }
  \new Voice = "2" { \voiceTwo \relative { c'4 d e f } }
>>
@end lilypond

@cindex Hlasy, sloučení více do jednoho
@cindex Obnovení jednoho hlasu

Příkazy @code{\voiceXXX} nastavuje směr nožiček, legata
ligatury, artikulace, textové poznámky, tečkování tečkovaných not
a prstoklady. @code{\voiceOne} a @code{\voiceThree} nechají tyto
předměty ukazovat nahoru, @code{\voiceTwo} a @code{\voiceFour} je
naproti tomu nechají ukazovat dolů. Tyto příkazy rovněž vytvářejí
vodorovný posun pro každý hlas, když se vyžaduje vyvarování se
střetům notových hlaviček.  Příkaz @code{\oneVoice} nastavení vrací
na obvyklou hodnotu pro jeden hlas.

Podívejme se na některých jednoduchých příkladech, jaký přesně
mají příkazy @code{\oneVoice}, @code{\voiceOne} a @code{voiceTwo}
účinek na text, obloučky a označení dynamiky:

@lilypond[quote,ragged-right,verbatim]
\relative {
  % Default behavior or behavior after \oneVoice
  c'4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond

@lilypond[quote,ragged-right,verbatim]
\relative {
  \voiceOne
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond

@lilypond[quote,ragged-right,verbatim]
\relative {
  \voiceTwo
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond

Nyní se podívejme na tři různé způsoby zápisu té samé pasáže
vícehlasé hudby, z nichž každý má své výhody za jiných
okolností.  Použijeme k tomu příklad z předchozí části.

Výraz, který se vyskytuje přímo uvnitř @code{<< >>}, náleží
hlavnímu hlasu (ale všimněte si @strong{not} ve stavbě @code{<< \\ >>}).
Toto je užitečné, když se objeví dodatečné hlasy, zatímco hlavní hlas pokračuje.
Zde je lepší verze našeho příkladu z předchozí části.  Hlavičky not ve
tvaru červeného diamantu ukazují, že se hlavní hlas nachází v prostředí
jednotlivého hlasu. Tím se může frázovací oblouček malovat nad ně.

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative {
  \voiceOneStyle
  % The following notes are monophonic
  c'16^( d e f
  % Start simultaneous section of three voices
  <<
    % Continue the main voice in parallel
    { g4 f e | d2 e) | }
    % Initiate second voice
    \new Voice {
      % Set stems, etc., down
      \voiceTwo
      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
    }
    % Initiate third voice
    \new Voice {
      % Set stems, etc, up
      \voiceThree
      s2. | s4 b4 c2 |
    }
  >>
}
@end lilypond

@cindex Vnoření hudebních výrazů
@cindex Verschachteln von gleichzeitigen Ausdrücken
@cindex Výrazy, vnoření
@cindex Hlasy, dočasné
@cindex Hlasy, vnoření
@cindex Vnoření hlasů
@cindex Dočasné hlasy

Hlouběji vnořené vícehlasé stavby jsou možné, a pokud se
hlas objeví jen krátce, může to být přirozenější způsob
sázení not:

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative {
  c'16^( d e f
  <<
    { g4 f e | d2 e2) | }
    \new Voice {
      \voiceTwo
      r8 e4 d c8~
      <<
        { c8 b16 a b8 g~ 2 | }
        \new Voice {
          \voiceThree
          s4 b4 c2 |
        }
      >>
    }
  >>
}
@end lilypond

@cindex Noty držící místo
@cindex Neviditelné noty
@cindex Skrytí not

Tento způsob krátkodobého vnoření nových hlasů je užitečný,
když jsou vícehlasé jen malé části hudby. Ale když je vícehlasá celá
osnova, je většinou jasnější použití více hlasů v celé osnově. Tady
se dají místa, kde se hlas nevyskytuje, přeskočit pomocí neviditelných not,
jako je tomu zde:

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative <<
  % Initiate first voice
  \new Voice {
    \voiceOne
    c'16^( d e f g4 f e | d2 e) |
  }
  % Initiate second voice
  \new Voice {
    % Set stems, etc, down
    \voiceTwo
    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
  }
  % Initiate third voice
  \new Voice {
    % Set stems, etc, up
    \voiceThree
    s1 | s4 b c2 |
  }
>>
@end lilypond

@subsubheading Notové sloupce

@cindex Notové sloupce
@cindex Notové střety
@cindex Svislé umístění
@cindex Příkazy shift
@cindex Posunutí not
@funindex \shiftOff
@funindex \shiftOn
@funindex \shiftOnn
@funindex \shiftOnnn
@funindex shiftOff
@funindex shiftOn
@funindex shiftOnn
@funindex shiftOnnn

Hustě zapisované noty v akordu, nebo noty vyskytující se ve stejnou
dobu ale v různých hlasech, jsou uspořádány do dvou, někdy i do více,
sloupců, aby se zabránilo překrytí hlaviček not.  Označují se jako
notové sloupce.  Každý hlas má svůj vlastní sloupec, a příkaz pro posun
závislý na hlase (ang. shift) se na notový sloupec použije, jestliže
by jinak došlo ke střetu.  To ukazuje příklad výše.  Ve druhém taktu
je C druhého hlasu posunuto doprava, ve vztahu k D v prvním hlasu, a
v posledním akordu je C v třetím hlasu posunuto doprava, ve vztahu
k jiným hlasům.

Příkazy @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn} a
@code{\shiftOff} určují stupeň, k němuž se mají noty a akordy
hlasu posunout, když se nedá vyhnout střetu jinak.  Ve výchozím
nastavení se vnější hlasy nastavují (obyčejně jde o hlasy
jedna a dva) tak, že mají stanoveno @code{\shiftOff}, zatímco pro
vnitřní hlasy (tři a čtyři) je stanoveno @code{\shiftOn}.
Když se použije posunutí, posunou se hlasy jedna a tři doprava
a hlasy dva a čtyři doleva.

@code{\shiftOnn} a @code{\shiftOnnn} stanovují další úrovně posunu,
které mohou být stanoveny krátkodobě kvůli vyřešení střetů
ve složitých situacích. Podívejte se také na @ref{Příklady ze života}.

Notový sloupec může obsahovat jen jednu notu (nebo jeden akord) hlasu
s nožičkami nahoru a jednu notu (nebo jeden akord) hlasu
s nožičkami dolů.  Pokud jsou na témže místě umístěny noty dvou hlasů,
které mají své nožičky v tomtéž směru, a u obou hlasů není žádný
posun, nebo je stanoven stejný posun, je vydáno hlášení o chybě
@qq{Příliš mnoho střetávajících se notových sloupců}.


@seealso
Notace: @ruser{Více hlasů}.


@node Hlasy a zpěvy
@subsection Hlasy a zpěvy
@translationof Voices and vocals

Notový zápis vokální hudby má své vlastní obtíže, je totiž
potřeba spojení dvou výrazů: not a textu.
Pozor: Textu písně se v angličtině říká @qq{lyrics}.


@funindex \new Lyrics
@funindex \lyricsto
@funindex Lyrics
@cindex Prostředí text písně, vytvoření
@cindex Text písně, spojení s notami

Již jste viděli příkaz @code{\addlyrics@{@}}, s nímž lze
dobře vytvářet jednoduché osnovy.  Tento způsobem je ale docela
omezený.  U složitějších not se musí text písně začít novým prostředím
@code{Lyrics} (pomocí příkazu @code{\new Lyrics}) a přesně
spojit text s notami určitého hlasu příkazem @code{\lyricsto@{@}} tak, že
se použije označení přiřazené hlasu.

@lilypond[quote,verbatim]
<<
  \new Voice = "one" {
    \relative {
      \autoBeamOff
      \time 2/4
      c''4 b8. a16 | g4. f8 | e4 d | c2 |
    }
  }
  \new Lyrics \lyricsto "one" {
    No more let | sins and | sor -- rows | grow. |
  }
>>
@end lilypond

Všimněte si, že text k notám může být spojen jedině s prostředím
@code{Voice}, @emph{ne} s prostředím @code{Staff}.  V tomto
případě je také nutné přesně vytvořit prostředí osnovy @code{Staff}
a hlasu @code{Voice}, aby všechno fungovalo.

@cindex Text písně a trámce
@cindex Text a trámce
@cindex Trámce a text
@funindex \autoBeamOff

Automatické trámce, jež LilyPond používá ve výchozím nastavení, pracují
dobře pro instrumentální hudbu, ale ne tak dobře v případě hudby s textem,
kde se trámce nepožadují buď vůbec, nebo se jich užívá na ukázání
melismat v textu písně.  V příkladu výše se používá příkaz
@code{\autoBeamOff} k vypnutí automatických trámců (ang. beam).

@funindex \new ChoirStaff
@funindex \lyricmode
@funindex ChoirStaff
@funindex lyricmode
@cindex Vokální notový zápis, stavba
@cindex Sborový notový zápis, stavba

Chceme použít dřívější příklad @notation{Judas Maccabæus}
na znázornění těchto průžných technik pro texty písní. Příklad
byl předělán tak, aby se teď dosadily proměnné, aby byl oddělen
text a noty od stavby notového zápisu.  Byla dodatečně přidána
závorka sborového notového zápisu.  Text písně se musí zadat s
@code{\lyricmode}, aby byl vykládán jako text a
ne jako noty.

@lilypond[quote,verbatim]
global = { \key f \major \time 6/8 \partial 8 }

SopOneMusic = \relative {
  c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
}
SopOneLyrics = \lyricmode {
  Let | flee -- cy flocks the | hills a -- dorn, __
}
SopTwoMusic = \relative {
  r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
}
SopTwoLyrics = \lyricmode {
  Let | flee -- cy flocks the | hills a -- dorn,
}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice = "SopOne" {
        \global
        \SopOneMusic
      }
      \new Lyrics \lyricsto "SopOne" {
        \SopOneLyrics
      }
    >>
    \new Staff <<
      \new Voice = "SopTwo" {
        \global
        \SopTwoMusic
      }
      \new Lyrics \lyricsto "SopTwo" {
        \SopTwoLyrics
      }
    >>
  >>
}
@end lilypond

Toto je základní stavba pro všechny notové zápisy sboru.  Je
možné přidat více velkých osnov, když jsou potřeba. Ke každé
velké osnově je možné přidat více hlasů, je možné přidat více
slok k textu, a konečně lze proměnné rychle přesunout do
vlastního souboru, když by se staly příliš dlouhými.

@cindex Chorálová notace
@cindex Notace hymnu
@cindex Notový zápis SATB
@cindex Více slok
@cindex Sloky, více
@cindex Choral s více slokami

Zde příklad prvního řádku chorálu se čtyřmi slokami
pro smíšený sbor.  V tomto případě je text pro všechny
čtyři hlasy stejný.  Všimněte si, jak se dosazují proměnné,
aby od sebe oddělily obsah (noty a text) a formu (notový
zápis).  Byla dosazena proměnné, aby přijala prvky,
které se objevují na obou, osnovách, totiž druh taktu a
tóninu.  Taková proměnná se často označuje @qq{global}.

@lilypond[quote,verbatim]
keyTime = { \key c \major \time 4/4 \partial 4 }

SopMusic   = \relative { c'4 | e4. e8 g4  g    | a4   a   g  }
AltoMusic  = \relative { c'4 | c4. c8 e4  e    | f4   f   e  }
TenorMusic = \relative  { e4 | g4. g8 c4.   b8 | a8 b c d e4 }
BassMusic  = \relative  { c4 | c4. c8 c4  c    | f8 g a b c4 }

VerseOne =
  \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
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 \keyTime \SopMusic }
      \new Voice = "Alto" { \voiceTwo \AltoMusic }
      \new Lyrics \lyricsto "Sop" { \VerseOne   }
      \new Lyrics \lyricsto "Sop" { \VerseTwo   }
      \new Lyrics \lyricsto "Sop" { \VerseThree }
      \new Lyrics \lyricsto "Sop" { \VerseFour  }
    >>
    \new Staff <<
      \clef "bass"
      \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
      \new Voice = "Bass"  { \voiceTwo \BassMusic }
    >>
  >>
}
@end lilypond


@seealso
Notace: @ruser{Notový zápis zpěvu}.


@node Prostředí a rytci
@section Prostředí a rytci
@translationof Contexts and engravers

Prostředí a rytci (@qq{Stempel}) sind in den vorherigen
Abschnitten schon aufgetaucht; hier wollen wir uns ihnen
nun etwas ausführlicher widmen, denn sie sind sehr
wichtig, um Feineinstellungen in der LilyPond-Notenausgabe
vornehmen zu können.

@menu
* Vysvětlení prostředí::
* Vytvoření prostředí::
* Vysvětlení rytců::
* Změna vlastností prostředí::
* Přidání a odstranění rytců::
@end menu

@node Vysvětlení prostředí
@subsection Vysvětlení prostředí
@translationof Contexts explained

@cindex Kontexte erklärt

Wenn Noten gesetzt werden, müssen viele Elemente zu der Notenausgabe
hinzugefügt werden,
die im Quellcode gar nicht explizit vorkommen.  Vergleichen Sie
etwa den Quellcode und die Notenausgabe des folgenden Beispiels:

@lilypond[quote,verbatim]
\relative { cis''4 cis2. | a4 a2. | }
@end lilypond

Der Quellcode ist sehr kurz und knapp, während in der
Notenausgabe Taktlinien, Vorzeichen, ein Schlüssel und
eine Taktart hinzugefügt wurden.  Während LilyPond
den Eingabetext @emph{interpretiert}, wird die
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
müssen.  Diese Information muss auf mehreren Ebenen
gehandhabt werden, denn Versetzungszeichen etwa
beziehen sich nur auf ein System, Taktlinien dagegen
üblicherweise auf die gesamte Partitur.

Innerhalb von LilyPond sind diese Regeln und
Informationshappen in @emph{Kontexten} (engl.
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
Struktur einer Partitur zu spiegeln.  Ein @code{Staff}-Kontext
kann zum Beispiel viele @code{Voice}-Kontexte beinhalten,
und ein @code{Score}-Kontext kann viele
@code{Staff}-Kontexte beinhalten.

@quotation
@sourceimage{context-example,5cm,,}
@end quotation

Jeder Kontext hat die Aufgabe, bestimmte Notationsregeln
zu erzwingen, bestimmte Notationsobjekte zu erstellen und
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
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
4/4- und 3/4-Takt.  In diesem Fall müssen also die Standardeinstellungen
der @code{Score}- und @code{Staff}-Kontexte verändert werden.

In einfachen Partituren werden die Kontexte implizit erstellt,
und es kann sein, dass Sie sich dessen gar nicht bewusst sind.
Für etwas größere Projekte, etwa mit vielen Systemen, müssen
die Kontexte aber explizit erstellt werden, um sicher zu gehen,
dass man auch wirklich die erwünschte Zahl an Systemen in der
richtigen Reihenfolge erhält.  Wenn Stücke mit spezialisierter
Notation gesetzt werden sollen, ist es üblich, die existierenden
Kontexte zu verändern oder gar gänzlich neue zu definieren.

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
@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.

Die Bezeichnungen all dieser Kontexte werden von einem oder mehreren
englischen
Wörtern gebildet, dabei wird jedes Wort mit einem Großbuchstaben
begonnen und direkt an das folgende ohne Bindestrich oder Unterstrich
angeschlossen, etwa
@code{GregorianTranscriptionStaff}.


@seealso
Notationreferenz: @ruser{Vysvětlení prostředí}.


@node Vytvoření prostředí
@subsection Vytvoření prostředí
@translationof Creating contexts

@funindex \new
@cindex Neue Kontexte
@cindex Erstellen von Kontexten
@cindex Kontexte, Erstellen

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, 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
\new @var{Typ} @var{musikalischer Ausdruck}
@end 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} innerhalb dieses
Kontexts auszuwerten.

@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{Změna vlastností prostředí,,změnu vlastností prostředí}.}

Wir haben schon viele explizite Beispiel gesehen, in denen
neue @code{Staff}- und @code{Voice}-Kontexte erstellt wurden, aber
um noch einmal ins Gedächtnis zu rufen, wie diese Befehle benutzt
werden, hier ein kommentiertes Beispiel aus dem richtigen Leben:

@lilypond[quote,verbatim,ragged-right]
\score {  % start of single compound music expression
  <<  % start of simultaneous staves section
    \time 2/4
    \new Staff {  % create RH staff
      \clef "treble"
      \key g \minor
      \new Voice {  % create voice for RH notes
        \relative {  % start of RH notes
          d''4 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
      \clef "bass"
      \key g \minor
      \new Voice {  % create LH voice one
        \voiceOne
        \relative {  % start of LH voice one notes
          g8 <bes d> ees, <g c>
          g8 <bes d> ees, <g c>
        }  % end of LH voice one notes
      }  % end of LH voice one
      \new Voice {  % create LH voice two
        \voiceTwo
        \relative {  % start of LH voice two notes
          g4 ees
          g4 ees
        }  % end of LH voice two notes
      }  % end of LH voice two
    >>  % end of LH staff
  >>  % end of simultaneous staves section
}  % end of single compound music expression
@end lilypond

(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
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
möglich, die Struktur einer Partitur auf einen Blick zu
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,
um die Noten darzustellen.  Das obere System braucht
nur einen einzigen musikalischen Ausdruck und ist deshalb
von geschweiften Klammern umschlossen.)

@cindex Kontexte, Benennung
@cindex Benennung von Kontexten

Der @code{\new}-Befehl kann einem Kontext auch einen
Namen zur Identifikation geben, um ihn von anderen Kontexten des
selben Typs zu unterscheiden:

@example
\new @var{Typ} = @var{Name} @var{musikalischer Ausdruck}
@end example

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
Leerzeichen können auch benutzt werden, in dem Fall
muss der Name aber von doppelten Anführungszeichen
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
zu verweisen.  Dieses Vorgehen wurde schon in dem Abschnitt
zu Gesangstexten angewandt, siehe @ref{Hlasy a zpěvy,,hlasy a zpěvy}.


@seealso
Notationsreferenz: @ruser{Vytvoření prostředí}.


@node Vysvětlení rytců
@subsection Vysvětlení rytců
@translationof Engravers explained

@cindex Engraver
@cindex Stempel (Engraver)

Jedes Zeichen des fertigen Notensatzes von LilyPond wird
von einem @code{Engraver} (Stempel) produziert.  Es gibt
also einen Engraver, der die Systeme erstellt, einen, der die
Notenköpfe ausgibt, einen für die Hälse, einen für die
Balken usw. Insgesamt gibt es über 120 Engraver! Zum
Glück braucht man für die meisten Partituren nur ein
paar Engraver, und für einfache Partituren muss man eigentlich
überhaupt nichts über sie wissen.

Engraver leben und wirken aus den Kontexten heraus.  Engraver
wie der @code{Metronome_mark_engraver}, dessen Aktion
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
@code{Key_engraver} (Vorzeichen-Stempel)  finden sich in
jedem @code{Staff}-Kontext, denn unterschiedliche Systeme
könnten unterschiedliche Tonarten und Notenschlüssel
brauchen.

Der @code{Note_heads_engraver} (Notenkopf-Stempel) und der
@code{Stem_engraver} (Hals-Stempel) befinden sich in jedem
@code{Voice}-Kontext, der untersten Kontextebene.

Jeder Engraver bearbeitet die bestimmten Objekte, die mit
seiner Funktion assoziiert sind, und verwaltet die Eigenschaften
dieser Funktion.  Diese Eigenschaften, wie etwa die Eigenschaften,
die mit Kontexten assoziiert sind, können verändert werden,
um die Wirkungsweise des Engravers oder das Erscheinungsbild
der von ihm produzierten Elemente in der Partitur zu ändern.

Alle Engraver haben zusammengesetzte Bezeichnung, die aus
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
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.

Hier die meistgebräuchlichen Engraver mit ihrer Funktion.
Sie werden sehen, dass es mit etwas Englischkenntnissen
einfach ist, die Funktion eines Engravers von seiner Bezeichnung
abzuleiten.

@multitable @columnfractions .3 .7
@headitem Engraver
  @tab Funktion
@item Accidental_engraver
  @tab Erstellt Versetzungszeichen, vorgeschlagene und Warnversetzungszeichen.
@item Beam_engraver
  @tab Erstellt Balken.
@item Clef_engraver
  @tab Erstellt Notenschlüssel.
@item Completion_heads_engraver
  @tab Teilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen.
@item Dynamic_engraver
  @tab Erstellt Dynamik-Klammern und Dynamik-Texte.
@item Forbid_line_break_engraver
  @tab Verbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist.
@item Key_engraver
  @tab Erstellt die Vorzeichen.
@item Metronome_mark_engraver
  @tab Erstellt Metronom-Bezeichnungen.
@item Note_heads_engraver
  @tab Erstellt Notenköpfe.
@item Rest_engraver
  @tab Erstellt Pausen.
@item Staff_symbol_engraver
  @tab Ersetllt 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
  @tab Erstellt die Taktartbezeichnung.
@end multitable

@smallspace

Es soll später gezeigt werden, wie die LilyPond-Ausgabe
verändert werden kann, indem die Wirkungsweise der
Engraver beeinflusst wird.


@seealso
Referenz der Interna: @rinternals{Engravers and Performers}.


@node Změna vlastností prostředí
@subsection Změna vlastností prostředí
@translationof Modifying context properties

@cindex Kontext-Eigenschaften, Verändern
@cindex Eigenschaften von Kontexten
@cindex Verändern von Kontext-Eigenschaften
@funindex \set
@funindex \unset
@funindex set
@funindex unset

Kontexte sind dafür verantwortlich, die Werte bestimmter
Kontext-@emph{Eigenschaften} zu speichern.  Viele davon
können verändert werden, um die Interpretation der
Eingabe zu beeinflussen und die Ausgabe zu verändern.
Kontexte werden mit dem @code{\set}-Befehl geändert.
Er wird in Form

@example
\set @var{KontextBezeichnung}.@var{eigenschaftsBezeichnung} = #@var{Wert}
@end example

@noindent
verwendet, wobei @var{KontextBezeichnung} üblicherweise
@code{Score},
@code{Staff} oder @code{Voice} ist.  Der erste Teil kann auch
ausgelassen werden; in diesem Fall wird der aktuelle
Kontext (üblicherweise @code{Voice}) eingesetzt.

Die Bezeichnung von Kontexten-Eigenschaften besteht
aus zwei Wörtern, die ohne Unterstrich oder Bindestrich
verbunden sind.  Alle außer dem ersten werden am Anfang
groß geschrieben.  Hier einige Beispiele der gebräuchlichsten
Kontext-Eigenschaften.  Es gibt sehr viel mehr.

@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .25 .15 .45 .15
@headitem eigenschaftsBezeichnung
  @tab Typ
  @tab Funktion
  @tab Beispiel-Wert
@item extraNatural
  @tab boolescher Wert
  @tab Wenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt.
  @tab @code{#t}, @code{#f}
@item currentBarNumber
  @tab Integer
  @tab Setzt die aktuelle Taktnummer.
  @tab @code{50}
@item doubleSlurs
  @tab boolescher Wert
  @tab Wenn wahr, werden Legatobögen über und unter die Noten gesetzt.
  @tab @code{#t}, @code{#f}
@item instrumentName
  @tab Text
  @tab Setzt die Instrumentenbezeichnung am Anfang eines Systems.
  @tab @code{"Cello I"}
@item fontSize
  @tab reale Zahl
  @tab Vergrößert oder verkleinert die Schriftgröße.
  @tab @code{2.4}
@item stanza
  @tab Text
  @tab Setzt den Text zu Beginn einer Strophe.
  @tab @code{"2"}
@end multitable

@noindent
Ein boolescher Wert ist entweder wahr  (@code{#t})
oder falsch (@code{#f}),
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
(@code{#}) an unterschiedlichen Stellen: als Teil eines
booleschen Wertes vor dem @code{t} oder @code{f}, aber
auch vor einem @emph{Wert} in der
@code{\set}-Befehlskette.  Wenn ein boolescher Wert
eingegeben werden soll, braucht man also zwei
Rautenzeichen, z. B. @code{##t}.

@cindex Eigenschaften in Kontexten
@cindex Veränderung von Eigenschaften in Kontexten

Bevor eine Eigenschaft geändert werden kann, muss man wissen,
in welchem Kontext sie sich befindet.  Manchmal versteht das
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.
@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
System korrekt die Instrumentenbezeichnung, das zweite aber
nicht, weil der Kontext ausgelassen wurde.

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative {
    \set Staff.instrumentName = "Soprano"
    c''2 c
 }
  \new Staff \relative {
    \set instrumentName = "Alto"  % Wrong!
    d'2 d
 }
>>
@end lilypond

Denken Sie daran, dass der Standardkontext @code{Voice} ist; in dem
zweiten @code{\set}-Befehl wird also die Eigenschaft @code{instrumentName}
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
produziert.

Ebenso gibt es keine Fehlermeldung, wenn die Kontext-Bezeichnung
falsch geschrieben wird und die Änderung also nicht ausgeführt werden
kann.  Tatsächlich kann eine beliebige (ausgedachte) Kontextbezeichnung
mit dem @code{\set}-Befehl eingesetzt werden, genauso wie die, die
wirklich existieren.  Aber wenn LilyPond diese Bezeichnung nicht
zuordnen kann, bewirkt der Befehl einfach gar nichts.  Manche Editoren,
die Unterstützung für LilyPond-Befehle mitbringen, markieren existierende
Kontextbezeichnungen mit einem Punkt, wenn man mit der Maus darüber
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
@rinternals{Tunable context properties}, oder
@rinternals{Contexts}.

Die Eigenschaft @code{instrumentName} wird erst aktiv, wenn sie
in einem @code{Staff}-Kontext gesetzt wird, aber manche Eigenschaften
können in mehr als einem Kontext benutzt werden.  Als Beispiel mag die
@code{extraNatural}-Eigenschaft dienen, die zusätzliche Erniedrigungszeichen
setzt.  Die Standardeinstellung ist ##t (wahr) in allen Systemen.
Wenn sie nur in einem @code{Staff} (Notensystem) auf ##f (falsch)
gesetzt wird, wirkt sie sich auf alle Noten in diesem System aus.  Wird
sie dagegen in der @code{Score}-Umgebung gesetzt, wirkt sich das
auf alle darin enthaltenen Systeme aus.

Das also bewirkt, dass die zusätzlichen Erniedrigungszeichen in einem System
ausgeschaltet sind:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative {
    ais'2 aes
  }
  \new Staff \relative {
    \set Staff.extraNatural = ##f
    ais'2 aes
  }
>>
@end lilypond

@noindent
während das dazu dient, sie in allen Systemen auszuschalten:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative {
    ais'2 aes
  }
  \new Staff \relative {
    \set Score.extraNatural = ##f
    ais'2 aes
  }
>>
@end lilypond

Ein anderes Beispiel ist die Eigenschaft @code{clefTransposition}:
wenn sie im @code{Score}-Kontext gesetzt wird, ändert sich sofort
der Wert der Oktavierung in allen aktuellen Systemen und wird
auf einen neuen Wert gesetzt, der sich auf alle Systeme auswirkt.

Der gegenteilige Befehl, @code{\unset}, entfernt die Eigenschaft
effektiv wieder von dem Kontext: in den meisten Fällen wird der
Kontext auf ihre Standardeinstellungen zurückgesetzt.
Normalerweise wird aber @code{\unset} nicht benötigt,
denn ein neues @code{\set} erledigt alles, was man braucht.

Die @code{\set}- und @code{\unset}-Befehle könne überall im
Eingabequelltext erscheinen und werden aktiv von dem Moment, an
dem sie auftreten bis zum Ende der Partitur oder bis die Eigenschaft
mit @code{\set} oder @code{\unset} neu gesetzt wird.  Versuchen
wir als Beispiel, die Schriftgröße mehrmals zu ändern, was sich unter anderem
auf die Notenköpfe auswirkt.  Die Änderung bezieht sich immer auf den Standard,
nicht vom letzten gesetzten Wert.

@lilypond[quote,verbatim,ragged-right]
\relative {
  c'4 d
  % make note heads smaller
  \set fontSize = #-4
  e4 f |
  % make note heads larger
  \set fontSize = #2.5
  g4 a
  % return to default size
  \unset fontSize
  b4 c |
}
@end lilypond

Wir haben jetzt gesehen, wie sich die Werte von unterschiedlichen
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
allgemeinere und mächtigere Art mit dem @code{\markup}-Befehl
eingegeben werden kann.

@subsubheading Kontexteigenschaften mit @code{\with} setzen

@funindex \with
@cindex Kontexteigenschaft, setzen mit \with

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 bleichen 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:

@example
\new Staff \with @{ extraNatural = ##f @}
@end example

@noindent
etwa so:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff
    \relative {
      gis'4 ges aes ais
    }
  \new Staff \with { extraNatural = ##f } {
    \relative {
      gis' ges aes ais
    }
  }
>>
@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,
wie sie vorher in der @code{\with}-Umgebung definiert wurden.

@cindex Schriftgröße, Standardeinstellung
@cindex fontSize (Schriftgröße), Standardeinstellung

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} wieder erreicht werden.

@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)
gleichzeitig mit einem Befehl gesetzt werden.  Der Kontext wird
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
@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. innerhalb einer @code{\score}-
oder @code{\book}-Umgebung).  Hier ist ein Beispiel, wie man diese
Funktion anwendet:

@lilypond[verbatim,quote]
\score {
  \new Staff {
    \relative {
      cis''4 e d ces
    }
  }
  \layout {
    \context {
      \Staff
      extraNatural = ##t
    }
  }
}
@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 {
        gis'4 ges aes ais
      }
    }
    \new Staff {
      \relative {
        gis'4 ges aes ais
      }
    }
  >>
  \layout {
    \context {
      \Score extraNatural = ##f
    }
  }
}
@end lilypond

@noindent
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{Die Standardeinstellungen von Kontexten ändern},
@ruser{Der set-Befehl}.

Referenz der Interna:
@rinternals{Contexts},
@rinternals{Tunable context properties}.


@node Přidání a odstranění rytců
@subsection Přidání a odstranění rytců
@translationof Adding and removing engravers

@cindex Engraver, Hinzufügen von
@cindex Engraver, Entfernen von
@cindex Hinzufügen von Engravern
@cindex Entfernen von Engravern

@funindex \consists
@funindex \remove
@funindex consists
@funindex remove

Wir haben gesehen, dass jeder Kontext eine Anzahl an Engravern
(Stempeln) beinhaltet, von denen ein jeder einen bestimmten
Teil des fertigen Notensatzes produziert, wie z. B. Taktlinien,
Notenlinien, Notenköpfe, Hälse usw. Wenn ein Engraver aus
einem Kontext entfernt wird, kann er seine Objekte nicht
länger produzieren.  Das ist eine eher grobe Methode, die
Notenausgabe zu beeinflussen, aber es kann von großem
Nutzen sein.


@subsubheading Einen einzelnen Kontext verändern

Um einen Engraver von einem einzelnen Kontext zu entfernen,
wir der @code{\with}-Befehl eingesetzt, direkt hinter
den Befehl zur Kontext-Erstellung geschrieben, wie
in dem vorigen Abschnitt gezeigt.

Als ein Beispiel wollen wir das Beispiel aus dem letzten
Abschnitt produzieren, aber die Notenlinien entfernen.  Erinnern
Sie sich, dass die Notenlinien vom @code{Staff_symbol_engraver}
erstellt werden.

@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
  \remove "Staff_symbol_engraver"
}
\relative {
  c'4 d
  \set fontSize = #-4  % make note heads smaller
  e4 f |
  \set fontSize = #2.5  % make note heads larger
  g4 a
  \unset fontSize  % return to default size
  b4 c |
}
@end lilypond

@cindex Ambitus-Engraver

Engraver können auch zu einem bestimmten
Kontext hinzugefügt werden.  Dies geschieht
mit dem Befehl

@code{\consists @var{Engraver_bezeichnung}}

@noindent
welcher auch wieder innerhalb der @code{\with}-Umgebung
gesetzt wird.  Einige Chorpartituren zeigen einen
Ambitus direkt zu Beginn der ersten Notenzeile, um
den Stimmumfang des Stückes anzuzeigen, siehe auch
@rglos{ambitus}.  Der Ambitus wird vom
@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
und zeigt ihn an:

@lilypond[quote,verbatim,ragged-right]
\new Staff <<
  \new Voice \with {
    \consists "Ambitus_engraver"
  } {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>
@end lilypond

@noindent
wenn wir den Ambitus-Engraver allerdings zum
@code{Staff}-Kontext hinzufügen, wird der Stimmumfang aller
Stimmen in diesem Notensystem errechnet:

@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
  \consists "Ambitus_engraver"
}
<<
  \new Voice {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>
@end lilypond


@subsubheading Alle Kontexte des gleichen Typs verändern

@funindex \layout

Die vorigen Beispiele zeigen, wie man Engraver in einem
bestimmten Kontext hinzufügen oder entfernen kann.  Es ist
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
mit vier Systemen anzeigen wollen, könnte das so aussehen:

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new Staff {
      \relative {
        c''4 a b g
      }
    }
    \new Staff {
      \relative {
        c'4 a b g
      }
    }
    \new Staff {
      \clef "G_8"
      \relative {
        c'4 a b g
      }
    }
    \new Staff {
      \clef "bass"
      \relative {
        c4 a b g
      }
    }
  >>
  \layout {
    \context {
      \Staff
      \consists "Ambitus_engraver"
    }
  }
}
@end lilypond

@noindent
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{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 Rozšíření příkladů
@section Rozšíření příkladů
@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{Předlohy}), mit denen Sie beginnen
können.  Aber was, wenn Sie nicht genau das finden,
was Sie brauchen? Lesen Sie weiter.

@menu
* Soprán a violoncello::
* Čtyřhlasý notový zápis SATB::
* Vytvoření notového zápisu od základu::
* Úspora psaní na stroji pomocí proměnných a funkcí::
* Notové zápisy a hlasy::
@end menu


@node Soprán a violoncello
@subsection Soprán a violoncello
@translationof Soprano and cello

@cindex Template, Verändern von
@cindex Vorlage, Verändern von
@cindex Veränderung von Vorlagen

Beginnen Sie mit der Vorlage, die Ihren Vorstellungen
am nächsten kommt.  Nehmen wir einmal an, Sie wollen
ein Stück für Soprán a violoncello 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 @{
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
@}

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

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

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

@example
\version @w{"@version{}"}

melody = \relative @{
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
@}

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

Wir brauchen den @code{\version}-Befehl nicht zweimal.  Wir
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
innerhalb des @code{\score}-Abschnittes nur einmal die
Befehle @code{\layout} und @code{\midi}.

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
ihnen also andere Bezeichnungen zuweisen, um sie voneinander
zu unterscheiden.  Nennen wir die Abschnitte also @code{SopranNoten}
für den Sopran und @code{CelloNoten} für die Cellostimme.  Wenn
wir schon dabei sind, können wir @code{text}auch nach
@code{SoprText} umbenennen.  Denken Sie daran, beide
Vorkommen der Bezeichnung zu ändern: einmal die Definition
gleich am Anfang (@code{melody = \relative c' @{ }) und
dann auch noch die Benutzung der Variable innerhalb des
@code{\score}-Abschnittes.

Gleichzeitig können wir auch noch das Notensystem für das
Cello ändern -- das Cello hat normalerweise einen Bassschlüssel.
Wir ändern auch die Noten etwas ab.

@example
\version @w{"@version{}"}

SopranNoten = \relative @{
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
@}

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

CelloNoten = \relative @{
  \clef "bass"
  \key c \major
  \time 4/4
  d4 g fis8 e d4
@}

\score @{
  <<
    \new Voice = "eins" @{
      \autoBeamOff
      \SopranNoten
    @}
    \new Lyrics \lyricsto "eins" \Soprantext
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

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
wir

@example
\new Staff \CelloNoten
@end example

@noindent
unter dem Befehl für den Sopran hinzufügen.  Wir brauchen auch
die spitzen Klammern (@code{<<} und @code{>>}) um die
Noten, denn damit wird LilyPond mitgeteilt, dass mehr als
ein Ereignis gleichzeitig stattfindet (in diesem Fall sind es
zwei @code{Staff}-Instanzen).  Der @code{\score}-Abschnitt
sieht jetzt so aus:

@c Indentation in this example is deliberately poor
@example
\score @{
  <<
    <<
      \new Voice = "eins" @{
        \autoBeamOff
        \SopranNoten
      @}
      \new Lyrics \lyricsto "eins" \SoprText
    >>
    \new Staff \CelloNoten
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
Das sieht etwas unschön aus, vor allem die Einrückung stimmt
nicht mehr.  Das können wir aber schnell in Ordnung bringen.
Hier also die gesamte Vorlage für Soprán a violoncello:

@lilypond[quote,verbatim,ragged-right,addversion]
sopranoMusic = \relative {
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
}

sopranoLyrics = \lyricmode {
  Aaa Bee Cee Dee
}

celloMusic = \relative {
  \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


@seealso
Die Vorlagen, mit denen wir begonnen haben, können im
Anhang @qq{Předlohy} gefunden werden, siehe
@ref{Jednotlivá notová osnova}.


@node Čtyřhlasý notový zápis SATB
@subsection Čtyřhlasý notový zápis SATB
@translationof Four-part SATB vocal score

@cindex Vorlage, SATB
@cindex Vorlage, Chorpartitur
@cindex SATB-Vorlage
@cindex Chorpartitur, Vorlage

Die meisten Partituren für vierstimmigen gemischten Chor
mit Orchesterbegleitung (wie etwa Mendelssohns @notation{Elias}
oder Händels @notation{Messias})  sind so aufgebaut, dass
für jede der vier Stimmen ein eigenes System besteht und
die Orchesterbegleitung dann als Klavierauszug darunter
notiert wird.  Hier ein Beispiel aus Händels @notation{Messias}:

@c The following should appear as music without code
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }

sopranoMusic = \relative {
  \clef "treble"
  r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
  Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative {
  \clef "treble"
  r4 a'2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords
tenorMusic = \relative {
  \clef "G_8"
  r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
bassMusic = \relative {
  \clef "bass"
  r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
upper = \relative {
  \clef "treble"
  \global
  r4 <a' d fis>2 <a e' a>4
  <d fis d'>4. <d fis d'>8 <a d a'>2
  <g cis g'>4 <a d fis> <a cis e>2
}
lower = \relative {
  \clef "bass"
  \global
  <d, d'>4 <d d'>2 <cis cis'>4
  <b b'>4. <b' b'>8 <fis fis'>2
  <e e'>4 <d d'> <a' a'>2
}

\score {
  <<  % combine ChoirStaff and PianoStaff in parallel
    \new ChoirStaff <<
      \new Staff = "sopranos" <<
        \set Staff.instrumentName = "Soprano"
        \new Voice = "sopranos" {
          \global
          \sopranoMusic
        }
      >>
      \new Lyrics \lyricsto "sopranos" {
        \sopranoWords
      }
      \new Staff = "altos" <<
        \set Staff.instrumentName = "Alto"
        \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

    \new PianoStaff <<
      \set PianoStaff.instrumentName = "Piano"
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
}
@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{Vokální soubor}.  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
müssen nun noch Variablen für die Klaviernoten hinzufügen.

Die Reihenfolge, in welcher die Variablen in das Chorsystem
(@code{ChoirStaff}) eingefügt werden, entspricht nicht der
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
@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
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 = "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 ist einfach: wir nehmen einfach den Klavierteil
aus der @qq{Piano solo}-Vorlage:

@example
\new PianoStaff <<
  \set PianoStaff.instrumentName = "Piano  "
  \new Staff = "oben" \oben
  \new Staff = "unten" \unten
>>
@end example

@noindent
und fügen die Variablen @code{oben}
und @code{unten} hinzu.

Das Chorsystem und das Pianosystem müssen mit
spitzen Klammern kombiniert werden, damit beide
übereinander erscheinen:

@example
<<  % ChoirStaff und PianoStaff parallel kombinieren
  \new ChoirStaff <<
    \new Staff = "sopranos" <<
      \new Voice = "sopranos" @{
        \global
        \sopranoMusic
      @}
    >>
    \new Lyrics \lyricsto "sopranos" @{
      \sopranoWords
     @}
    \new Staff = "altos" <<
      \new Voice = "altos" @{
        \global
        \altoMusic
      @}
    >>
    \new Lyrics \lyricsto "altos" @{
      \altoWords
    @}
    \new Staff = "tenors" <<
      \clef "G_8"  % tenor clef
      \new Voice = "tenors" @{
        \global
        \tenorMusic
      @}
    >>
    \new Lyrics \lyricsto "tenors" @{
      \tenorWords
    @}
    \new Staff = "basses" <<
      \clef "bass"
      \new Voice = "basses" @{
        \global
        \bassMusic
      @}
    >>
    \new Lyrics \lyricsto "basses" @{
      \bassWords
    @}
  >>  % end ChoirStaff

  \new PianoStaff <<
    \set PianoStaff.instrumentName = "Piano"
    \new Staff = "upper" \upper
    \new Staff = "lower" \lower
  >>
>>
@end example

Alles miteinander kombiniert und mit den Noten für drei
Takte sieht unser Beispiel nun so aus:

@lilypond[quote,verbatim,ragged-right,addversion]
global = {
  \key d \major
  \time 4/4
}
sopranoMusic = \relative {
  \clef "treble"
  r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
  Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative {
  \clef "treble"
  r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 |
}
altoWords = \sopranoWords
tenorMusic = \relative {
  \clef "G_8"
  r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
bassMusic = \relative {
  \clef "bass"
  r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
upper = \relative {
  \clef "treble"
  \global
  r4 <a' d fis>2 <a e' a>4
  <d fis d'>4. <d fis d'>8 <a d a'>2
  <g cis g'>4 <a d fis> <a cis e>2
}
lower = \relative {
  \clef "bass"
  \global
  <d, d'>4 <d d'>2 <cis cis'>4
  <b b'>4. <b' b'>8 <fis fis'>2
  <e e'>4 <d d'> <a' a'>2
}

\score {
  <<  % combine ChoirStaff and PianoStaff in parallel
    \new ChoirStaff <<
      \new Staff = "sopranos" <<
        \set Staff.instrumentName = "Soprano"
        \new Voice = "sopranos" {
          \global
          \sopranoMusic
        }
      >>
      \new Lyrics \lyricsto "sopranos" {
        \sopranoWords
      }
      \new Staff = "altos" <<
        \set Staff.instrumentName = "Alto"
        \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

    \new PianoStaff <<
      \set PianoStaff.instrumentName = "Piano  "
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
}
@end lilypond


@node Vytvoření notového zápisu od základu
@subsection Vytvoření notového zápisu od základu
@translationof Building a score from scratch

@cindex Template, eigene schreiben
@cindex Vorlagen, eigene schreiben
@cindex eigene Vorlagen erstellen
@cindex Erstellen von eigenen Vorlagen
@cindex Schreiben von eigenen Vorlagen

Wenn Sie einige Fertigkeit im Schreiben von LilyPond-Code
gewonnen haben, werden Sie vielleicht feststellen, dass es
manchmal einfacher ist, von Grund auf anzufangen, anstatt
die fertigen Vorlagen zu verändern.  Auf diese Art könne Sie
auch Ihren eigenen Stil entwickeln, und ihn der Musik anpassen,
die Sie notieren wollen.  Als Beispiel wollen wir demonstrieren,
wie man die Partitur für ein Orgelpreludium von Grund auf
konstruiert.

Beginnen wir mit dem Kopf, dem @code{header}-Abschnitt.
Hier notieren wir den Titel, den Namen des Komponisten usw.
Danach schreiben wir die einzelnen Variablen auf und
schließlich am Ende die eigentliche Partitur, den
@code{\score}-Abschnitt.  Beginnen wir mit einer groben
Struktur, in die wir dann die Einzelheiten nach und nach
eintragen.

Als Beispiel benutzen wir zwei Takte aus dem Orgelpreludium
@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
brauchen also vier Variablen für die Noten und eine, um
Taktart und Tonart zu definieren.

@example
\version @w{"@version{}"}
\header @{
  title = "Jesu, meine Freude"
  composer = "J. S. Bach"
@}
keyTime = @{ \key c \minor \time 4/4 @}
ManualOneVoiceOneMusic = @{ s1 @}
ManualOneVoiceTwoMusic = @{ s1 @}
ManualTwoMusic = @{ s1 @}
PedalOrganMusic = @{ s1 @}

\score @{
@}
@end example

Im Moment haben wir eine unsichtbare
Note in jede Stimme eingesetzt (@code{s1}).
Die Noten werden später hinzugefügt.

Als nächstes schauen wir uns an, was in die
Partitur (die @code{\score}-Umgebung)
kommt.  Dazu wird einfach die Notensystemstruktur
konstruiert, die wir benötigen.  Orgelmusik
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
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
    @}
  >>  % 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
werden.  Es soll unter das Klaviersystem gesetzt
werden, aber muss gleichzeitig mit ihm erscheinen.
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
oder später unterläuft.  Sie können das fertige
Beispiel am Ende des Abschnittes kopieren und die
Klammern entfernen, um zu sehen, wie die
Fehlermeldung aussehen kann, die Sie in solch
einem Fall erhalten würden.

@example
<<  % PianoStaff and Pedal Staff must be simultaneous
  \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 Staff = "PedalOrgan" <<
    \new Voice @{
      \PedalOrganMusic
    @}
  >>
>>
@end example

Es ist nicht notwendig, die simultane Konstruktion
@code{<< .. >>} innerhalb des zweiten Manualsystems
und des Pedalsystems zu benutzen, denn sie enthalten
nur eine Stimme.  Andererseits schadet es nichts, sie
zu schreiben, und es ist eine gute Angewohnheit, immer
die spitzen Klammern nach einem @code{\new Staff} zu
schreiben, wenn mehr als eine Stimme vorkommen könnten.
Für Stimmen (@code{Voice}) dagegen gilt genau das
Gegenteil: eine neue Stimme sollte immer von
geschweiften Klammern (@code{@{ .. @}}) gefolgt
werden, falls Sie ihre Noten in mehrere Variable aufteilen,
die nacheinander gesetzt werden sollen.

Fügen wir also diese Struktur zu der @code{\score}-Umgebung
hinzu und bringen wir die Einzüge in Ordnung.  Gleichzeitig
wollen wir die richtigen Schlüssel setzen und die Richtung der
Hälse und Bögen in den Stimmen des oberen Systems
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{\keyTime} eingefügt.

@example
\score @{
  <<  % PianoStaff and Pedal Staff must be simultaneous
    \new PianoStaff <<
      \new Staff = "ManualOne" <<
        \keyTime  % set time signature and key
        \clef "treble"
        \new Voice @{
          \voiceOne
          \ManualOneVoiceOneMusic
        @}
        \new Voice @{
          \voiceTwo
          \ManualOneVoiceTwoMusic
        @}
      >>  % end ManualOne Staff context
      \new Staff = "ManualTwo" <<
        \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
        @}
      >>  % end ManualTwo Staff context
    >>  % end PianoStaff context
    \new Staff = "PedalOrgan" <<
      \keyTime
      \clef "bass"
      \new Voice @{
        \PedalOrganMusic
      @}
    >>  % end PedalOrgan Staff
  >>
@}  % end Score context
@end example

Damit ist das Grundgerüst fertig.  Jede Orgelmusik mit drei
Systemen hat die gleiche Struktur, auch wenn die Anzahl der Stimmen
in einem System sich ändern kann.  Jetzt müssen wir nur noch
die Noten einfügen und alle Teile zusammenfügen, indem wir
die Variablen mit einem Backslash in die Partitur einbauen.

@lilypond[quote,verbatim,ragged-right,addversion]
\header {
  title = "Jesu, meine Freude"
  composer = "J S Bach"
}
keyTime = { \key c \minor \time 4/4 }
ManualOneVoiceOneMusic = \relative {
  g'4 g f ees |
  d2 c2 |
}
ManualOneVoiceTwoMusic = \relative {
  ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
  8 c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative {
  c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
  f16 ees f d g aes g f ees d e8~ 8es16 f ees d |
}
PedalOrganMusic = \relative {
  r8 c16 d ees d ees8~ 16 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" <<
        \keyTime  % set time signature and key
        \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
        }
      >>  % end ManualTwo Staff context
    >>  % end PianoStaff context
    \new Staff = "PedalOrgan" <<
      \keyTime
      \clef "bass"
      \new Voice {
        \PedalOrganMusic
      }
    >>  % end PedalOrgan Staff context
  >>
}  % end Score context
@end lilypond

@seealso
Glossar:
@rglos{system}.


@node Úspora psaní na stroji pomocí proměnných a funkcí
@subsection Úspora psaní na stroji pomocí proměnných a funkcí
@translationof Saving typing with variables and functions

@cindex Variablen

Bis jetzt wurde immer derartige Notation vorgestellt:

@lilypond[quote,verbatim,ragged-right]
hornNotes = \relative { c''4 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 { a'4 a8. b16 }
fragmentB = \relative { a'8. 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 {
  \repeat volta 2 {
    c''4._\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 @{
  \repeat volta 2 @{
    c''4._\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
     (padding)
     (number?)
   #{
     \once \override TextScript.padding = $padding
   #})

\relative {
  c'''4^"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 Notové zápisy a hlasy
@subsection Notové zápisy a hlasy
@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 @{
  \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 {
  \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 {
  \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 <<
  \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
