LilyPond – Learning Manual

Tento soubor poskytuje úvod pro LilyPond verze 2.24.4.

Pro více informací, jaké místo má tato příručka mezi jinými příručkami, nebo kvůli čtení této příručky v jiném formátu, navštivte, prosím, Manuals.

Pokud vám příručky chybí, naleznete celou dokumentaci pod https://lilypond.org/.


1. Installing

This gentle, step-by-step installation tutorial guides you through installing LilyPond and creating a first music score.

LilyPond input files are simple text files. You can use any raw text editor to edit a LilyPond file (not a rich text editor such as Microsoft Word), but there are several editors tailored specifically for LilyPond, making the editing process very comfortable. Because a choice has to be made, this tutorial uses Frescobaldi, which is the most popular among such editors right now. However, there are several other options available. For more information, see editing Easier editing.

Please choose the tutorial according to your needs. (If you don’t know what the „command line“ is, you want the graphical setup!)


1.1 Graphical setup under GNU/Linux

These instructions work for the GNOME environment, for example on the default flavors of Ubuntu and Fedora. In other desktop environments, they can likely be adapted. For more minimal GNU/Linux distributions, see Command line setup.

First, find the GNOME Software app.

linux-1-search-gnome-software

In GNOME Software, search „Frescobaldi“.

linux-2-search-frescobaldi

Install Frescobaldi. Behind the scenes, this should also automatically install some version of LilyPond.

linux-3-install-frescobaldi

Open Frescobaldi. It starts on a new file with some pre-filled text that will be explained later.

linux-4-frescobaldi-start

After the \version line, enter a new line containing exactly this:

{ c' }

Now click on the LilyPond icon, or press Control-M. On the right, a simple score appears.

linux-5-frescobaldi-simple-file

Congratulations, you have just created your first music sheet with LilyPond! If you’re satisfied now, you can skip the rest of this section. However, it may be that the version of LilyPond that was installed is not the same one as this documentation is for. If you want a different LilyPond version, you can register it in Frescobaldi, without losing the initial one. To do this, first download the archive from Download, and double-click to unpack it.

linux-6-download-and-unpack-archive

Move the unpacked folder out of your Downloads folder to the folder where you want to permanently store it. For example, put it in your home folder.

Now, in Frescobaldi, go the Preferences.

linux-7-frescobaldi-find-preferences

Select „LilyPond Preferences“, and click „Add“ to register a new LilyPond version.

linux-8-frescobaldi-add-lilypond-version

Click on the file explorer icon.

linux-9-frescobaldi-select-lilypond-executable

Navigate to the folder you just extracted, then inside this folder, to ‘bin’ and finally ‘lilypond’.

linux-10-navigate-to-lilypond-executable

You’re done! You can click ‘OK’. You now have two versions of LilyPond installed.

linux-11-frescobaldi-new-version-added

Now turn to Cvičení to learn more about LilyPond’s syntax.


1.2 Graphical setup under Windows

Download LilyPond for Windows from Download. The file will a ZIP archive called ‘lilypond-x.y.z-mingw-x86_64.zip’ (where „mingw“ means it’s for Windows). Extract this in the file explorer. Place the resulting directory lilypond-x.y.z-mingw-x86_64 in a permanent location; the actual folder doesn’t matter, you just need to put it somewhere you won’t move it afterwards. For example, you could choose your home folder.

After this, download the latest release of Frescobaldi from the project’s download page. Choose the ‘.exe’ file.

windows-1-frescobaldi-download-github

Double-click on the downloaded file in the file explorer. This launches the setup wizard.

windows-2-frescobaldi-installer

Accept the license and install Frescobaldi using the wizard. You will find a startup screen like this:

windows-3-frescobaldi-startup

Navigate to the Frescobaldi preferences.

windows-4-frescobaldi-find-preferences

Navigate to „LilyPond Preferences“ on the left.

windows-5-frescobaldi-find-lilypond-preferences

Click „Edit“ on the right. This leads to a dialog for choosing the LilyPond executable.

windows-6-frescobaldi-select-lilypond-executable

Click on the folder icon and navigate to the lilypond-x.y.z-mingw-x86_64 folder you previously created. Inside this folder, open ‘lilypond-x.y.z’, then ‘bin’, and finally select ‘lilypond’.

windows-7-frescobaldi-find-executable-from-explorer

Now click „OK“.

windows-8-frescobaldi-ok

Click „OK“ again.

windows-9-frescobaldi-ok-2

Type this simple file in the window:

\version "2.24.4"

{ c' }

Compile it with Control-M or using the „LilyPond“ icon. A minimal score appears.

windows-10-frescobaldi-done

Congratulations, you have just created your first music sheet with LilyPond! Now continue with the Cvičení to learn more about LilyPond’s syntax.


1.3 Graphical setup under macOS

Download LilyPond for macOS from Download. The file will be an archive called ‘lilypond-x.y.z-darwin-x86_64.tar.gz’ (where „darwin“ means it’s for macOS). In the Finder, extract this archive. Place the resulting directory lilypond-x.y.z-darwin-x86_64 in a permanent location; the actual folder doesn’t matter, you just need to put it somewhere you won’t move it afterwards. For example, you could choose your home folder.

After this, download the latest release of Frescobaldi from the project’s download page. Choose the ‘.dmg’ file.

macos-1-frescobaldi-download-github

In the Finder, double-click on the file to run the installer. At this point, you might encounter a problem:

macos-2-frescobaldi-cant-be-opened

This is because Frescobaldi is developed independently from Apple. Nevertheless, it is totally secure software, but you have to tell Apple so. To do this, you first need to click „Cancel“. After having clicked „Cancel“, open the „System Preferences“ app and select „Security & Privacy“.

macos-3-open-system-preferences-security

Then click „Open Anyway“.

macos-4-allow-open-anyway

This leads to a new security warning. This time, you have the option to accept. Select „Open“. Again, do not fear: Frescobaldi is completely secure for your system.

macos-5-accept-security-warning

Frescobaldi is now open. Find the Preferences.

macos-6-frescobaldi-find-preferences

Click on „LilyPond Preferences“ on the left.

macos-7-frescobaldi-find-lilypond-preferences

Click „Edit“ on the right. This opens a new window:

macos-8-frescobaldi-edit-lilypond-executable

Click on the ‚folder‘ icon. A Finder window opens. Navigate to the ‘lilypond-x.y.z-darwin-x86_64’ folder you saved earlier. Inside it, find ‘lilypond-x.y.z’, then ‘bin’ and finally ‘lilypond’.

macos-9-frescobaldi-navigate-to-lilypond-executable

When you press „OK“, a new security warning about LilyPond will likely appear. Again, first click „Cancel“, then enable LilyPond in the preferences, and redo the procedure to select ‘lilypond’ in the Finder.

Now click „OK“ to everything until you are back to the main Frescobaldi window. Enter this simple file in source view on the left:

\version "2.24.4"

{ c' }

Click on the button with the LilyPond icon to compile the file, or use the Control-M keyboard shortcut. For a third time, the system will warn you about security, this time with „gs“ (GhostScript). Once more, go to the System Preferences to enable the program to be executed.

Finally, the next compilation run will work and you will find a minimal score.

macos-10-minimal-score

Congratulations! You have compiled your first music sheet with LilyPond. Now continue with the Cvičení to learn more about LilyPond’s syntax.


1.4 Command line setup

On many GNU/Linux distributions, LilyPond can be installed from the package manager. This is also the case on macOS using either MacPorts or Homebrew.

In any case, you can install LilyPond by downloading the archive from Download and unpacking it. The binaries are usable immediately after unpacking. You can run

/.../lilypond-x.y.z/bin/lilypond file.ly

(on Windows, replace the slashes ‘/’ with backslashes ‘\’).

This compiles file.ly, and produces file.pdf. To test your setup, you can use this minimal file:

\version "2.24.4"

{ c' }

This will produce this output in ‘file.pdf’:

[image of music]

Now continue with the Cvičení to learn more about LilyPond’s syntax, or see Command-line usage for more information on calling LilyPond on the command line.


2. Cvičení

Tato kapitola čtenáři představuje základní práci s LilyPondem.


2.1 Přeložení zdrojového souboru

„Sestavení“ je pojem, který se používá pro přeměnu vstupního souboru pro LilyPond programem LilyPond do notového výstupu. Výstupními soubory jsou v první řadě soubory PDF (pro prohlížení a tisku), MIDI (pro přehrávání) a PNG (pro používání na internetových stránkách). Vstupními soubory pro LilyPond jsou prosté textové soubory.

První příklad ukazuje, jak takový jednoduchý vstupní soubor může vypadat.

{
  c' e' g' e'
}

Obrazovým výstupem je:

[image of music]

Pozor: V každém souboru LilyPond musejí být nastaveny { kulaté závorky } kolem not nebo písňového textu. Před a za závorkami mají být zadány prázdné znaky, aby ve spojení s vlastními symboly not nevznikly žádné nejasnosti. Na začátku a na konci řádku mohou být tyto prázdné znaky vynechány také. Může se stát, že v této příručce závorky v některých příkladech chybí, ale je třeba vždy myslet na to, aby se ve vlastních souborech používaly! Více informací ke znázornění příkladů v této příručce podává úryvek Jak číst příručky.

Dodatečně LilyPond rozlišuje Psaní velkých a malých písmen. ‘ { c d e }’ je přípustný kód, ‘ { C D E }’ naproti tomu vede k chybovému hlášení.


2.2 Jak se píší vstupní soubory

Tento úryvek vysvětluje základní skladbu LilyPondu a pomáhá na začátku se zápisem vstupního souboru pro LilyPond.


2.2.1 Jednoduchý notový zápis

LilyPond přidává některé části notového zápisu automaticky. V následujícím příkladu jsou zadány jen čtyři výšky tónů, ale LilyPond přesto zapíše klíč, taktové označení a rytmus (délky not).

{
  c' e' g' e'
}

[image of music]

Tato nastavení je možné změnit, ale ve většině případů jsou automatické hodnoty v zásadě použitelné.

Výšky tónů

Slovníček: pitch, interval, scale, middle C, octave, accidental.

Výšky tónů se zadávají malými písmeny, která odpovídají názvu noty. Je ale důležité znát, že LilyPond ve svém výchozím nastavení používá anglické názvy not. Až na výjimku tyto odpovídají českým, proto se přednastavení LilyPondu pro toto cvičení ponechává. Touto výjimkou je nota h – v LilyPondu se musí na místo toho napsat písmeno b! České bé je naproti tomu zapsáno jako bes, his se proti tomu zapíše jako bis. Podívejte se také na Předznamenání a Názvy not v jiných řečích. Zde se popisuje, jak se používají české názvy not.

Nejjednoduššeji lze noty zadávat v režimu \relative. V tomto režimu je oktáva noty vbrána automaticky s tím, že se předpokládá, že následující nota je zapsána vždy tak blízko, jak je to jen možné, ve vztahu k předchozí notě, což znamená, že je zapsána nanejvýš o tři notové řádky výše nebo níže než předchozí nota. Začneme naším prvním nejzákladnějším příkladem notového zápisu, což je stupnice, kde stojí další nota vždy jen o jeden notový řádek nad předchozím.

% Počáteční bod napsat na jednočárkovaném C
\relative {
  c' d e f
  g a b c
}

[image of music]

První notou je jednočárkované C. Každá následující nota se nachází tak blízko, jak je to jen možné za předchozí – první ‚C‘ se takto počítá jako C od jednočárkovaného C. Nato následuje nejbližší možné D ve vztahu k předcházející notě. S těmito pravidly lze v režimu \relative zobrazit i melodie s většími intervaly:

\relative {
  d' f a g
  c b f d
}

[image of music]

Není nutné, aby první nota melodie začínala notou, která udává první notovou výšku. První nota (‚D‘) z předchozího příkladu je následujícím D, počítáno od jednočárkovaného C.

Tím, že člověk přidává odsuvníky (apostrofy) ' (klávesa Shift+#) nebo čárky , k \relative c' {, nebo je odstraňuje, může být oktáva první výšky tónu změněna:

% dvoučárkované C
\relative {
  e'' c a c
}

[image of music]

Vztažný režim se může zpočátku jevit matoucí, ale je to ten nejjednodušší způsob, jak zapsat většinu melodií. Podívejme se na to, H (b ve skladbě LilyPondu), které se v houslovém klíči nachází na prostřední lince, můžeme směrem vzhůru napsat C, D a E, a A, G a F směrem dolů pod H. Když tedy notou, která následuje po H, je C, D nebo E, napíše ji LilyPond nad H, když je to A, G nebo F, je napsáno pod ním.

\relative {
  b' c  % c je 1 řádek nahoru, tedy c nad b
  b d  % d je 2 řádky nahoru, nebo 5 dolů, tedy d nad b
  b e  % e je 3 nahoru, nebo 4 dolů, tedy e pod b
  b a  % a je 6 nahoru, nebo 1 dolů, tedy a pod b
  b g  % g je 5 nahoru, nebo 2 dolů, tedy g pod b
  b f  % f je 4 nahoru, nebo 3 dolů, tedy f pod b
}

[image of music]

Stejný výpočet se provádí i tehdy, když je jedna z not zvýšena nebo snížena. Předznamenání jsou při výpočtu zcela přehlížena. Přesně ten samý výpočet se obdobně provádí od každé následující výšky tónu po další výšku tónu znovu.

Aby se zapsaly intervaly, které jsou větší než tři notové řádky, lze oktávy změnit. Odsuvníkem (apostrofem) ' (klávesa Shift+#) posazeným přímo za název noty se oktáva zvýší o jednu, čárkou , se oktáva o jednu sníží.

\relative {
  a' a, c' f,
  g g'' a,, f'
}

[image of music]

Kvůli změně výšky noty o dvě (či více!) oktávy, se používají postupné odsuvníky '' nebo ,, – přitom se musí jednat skutečně o dva odsuvníky a ne o uvozovky "  (klávesa Shift+2)!

Délky tónů (rytmy)

Slovníček: beam, duration, whole note, half note, quarter note, dotted note.

Délka se označuje číslem, jež je zadáno přímo k názvu noty. 1 pro Celá nota, 2 pro Půlová nota, 4 pro Čtvrťová nota a tak dále. Notové nožičky a Trámce jsou přidávány automaticky.

Není-li označena žádná délka, používá se délka předcházející noty. Pro první notu je jako výchozí určena čtvrťová nota.

\relative {
  a'1
  a2 a4 a8 a
  a16 a a a a32 a a a a64 a a a a a a a a2
}

[image of music]

Aby se vytvořila Tečkovaná nota napíše se tečka . za délkou noty. Délka tečkované noty musí být udána výslovně, tudíž včetně čísla.

\relative {
  a'4 a a4. a8
  a8. a16 a a8. a8 a4.
}

[image of music]

Pomlky

Pomlka se zadává tím samým způsobem, jakým se zadává nota; jejím označením je r :

\relative {
  a'4 r r2
  r8 a r4 r4. r8
}

[image of music]

Taktové označení

Slovníček: time signature.

Druh taktu lze určit příkazem \time:

\relative {
  \time 3/4
  a'4 a a
  \time 6/8
  a4. a
  \time 4/4
  a4 a a a
}

[image of music]

Vyznačení tempa

Slovníček: tempo indication, metronome.

Vyznačení tempa a údaj metronomu lze zapsat příkazem \tempo:

\relative {
  \time 3/4
  \tempo "Andante"
  a'4 a a
  \time 6/8
  \tempo 4. = 96
  a4. a
  \time 4/4
  \tempo  "Presto" 4 = 120
  a4 a a a
}

[image of music]

Notový klíč

Slovníček: clef.

Notový klíč lze zapsat příkazem \clef:

\relative {
  \clef "treble"
  c'1
  \clef "alto"
  c1
  \clef "tenor"
  c1
  \clef "bass"
  c1
}

[image of music]

Vše dohromady

Zde je malý příklad, který obsahuje všechna tato vymezení:

\relative {
  \clef "bass"
  \time 3/4
  \tempo "Andante" 4 = 120
  c,2 e8 c'
  g'2.
  f4 e d
  c4 c, r4
}

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Nastavení výšek tónů, Zadání rytmu, Zadání pomlk, Udání taktu, Notový klíč.


2.2.2 Práce na vstupních souborech

Zdrojové soubory LilyPondu jsou si podobné se soubory ve většině programovacích jazyků: Obsahují označení verze, je třeba dávat pozor na psaní velkých a malých písmen a prázdné znaky jsou přehlíženy. Výrazy jsou uzavřeny do složených závorek { } a poznámky jsou značeny znakem procenta % nebo obklopeny %{ … %}.

Zdá-li se to nyní být nesrozumitelné, zde je vysvětlení:


2.3 Vypořádání se s chybami

Někdy LilyPond nevytvoří notový obraz takový, jaký jste očekávali. Tento úryvek poskytuje několik odkazů, aby vám pomohl při řešení potíží, se kterými byste se mohli setkat.


2.3.1 Obecné rady k řešení chyb

Řešení chyb při potížích s LilyPondem může pro člověka, který je zvyklý na obrazové uživatelské rozhraní, představovat velkou výzvu, protože neplatné vstupní soubory vytvořeny být mohou. Když se tak stane, je logický postup pustit se do toho, potíže určit a řešit, tou nejlepší cestou. Některé směrnice, jak se tyto potíže můžete naučit řešit, se nacházejí v Řešení potíží.


2.3.2 Některé časté chyby

Jsou některé běžné chyby, které se dají vyřešit obtížně, když má člověk jen hlášení chyb v souboru s chybami. Blíže budou osvětleny v Časté chyby.


2.4 Jak číst příručky

Tato část ukazuje, jak lze dokumentaci číst účinně, a vysvětluje také některé užitečné vlastnosti internetové verze.


2.4.1 Vypuštěný materiál

LilyPondovský kód musí být vždy obklopen znaky složených závorek { } nebo kódem \relative c'' { … }, jak je to ukázáno v části práci na vstupních souborech. Ve zbytku této příručky se toho ovšem většina příkladů vzdá. Abyste tyto příklady napodobil, můžete zkopírovat odpovídající zdrojový kód a vložit jej do textového souboru, ale přitom musíte vložit \relative c'' { … }, jak je to ukázáno zde:

\relative c'' {
  …zde přijde příklad…
}

Proč se zde většinou vynechávají závorky? Většina příkladů může být nakopírována do delšího hudebního díla, a potom přirozeně není smysluplné, když se k tomu nachomýtne \relative c'' { … }; \relative nesmí být zapsán uvnitř jiného \relative, proto je zde vynechán, aby příklady pracovaly i v jiném prostředí. Kdyby byla u každého příkladu zapsána \relative c'' { … }, nemohly by se malé příklady z dokumentace jednoduše přidat do vašeho vlastního notového textu. Většina uživatelů chce noty přidat do již jsoucího souboru někde vprostřed, a z toho důvodu byl vztažný režim v příkladech v příručce vynechán.

Myslete také na to, že každý soubor LilyPondu má mít označení verze příkazem \version. Protože jsou příklady v příručkách úryvky a nikoli úplnými soubory, chybí zde označení verze. Vždy byste je ale do svých vlastních souborů měli vložit.


2.4.2 Klepnutelné příklady

Pozor: Tato vlastnost je pouze v dokumentaci HTML.

Mnoho lidí se učí programům tím, že se v nich jednoduše vrtají. Jde to i s LilyPondem. Když ve verzi HTML této příručky klepnete na nějaké vyobrazení, obdržíte přesný kód LilyPondu, jenž byl použit pro sazbu obrázku. Vyzkoušejte to s tímto vyobrazením:

[image of music]

Když zkopírujete jednoduše vše, co se nachází v úryvku „ly snippet“, a vložíte to do textového souboru, máte již hotovou předlohu pro další pokusy. Experimente. Abyste sám dosáhl téhož vzhledu, jaký je v příkladu, musíte zkopírovat vše od řádku „Start cut-&-pastable section“ až do konce souboru.


2.4.3 Přehled o příručkách

Pro LilyPond je hodně dokumentace. Noví uživatelé jsou často popleteni tím, které části z ní mají číst, a tak se stává, že někdy nejsou čteny její důležité části.

Pozor: Nepřeskakujte, prosím, žádné důležité části dokumentace. Jinak pro vás bude později o hodně těžší rozumět pozdějším částem.


3. Běžný notový zápis

V této části je vysvětleno, jak lze vytvořit překrásnou notovou sazbu, která obsahuje nejčastěji se vyskytující symboly notového zápisu. Část se zakládá na cvičení.


3.1 Notový zápis v jedné notové osnově

V této kapitole jsou vyučovány základní složky notového zápisu, jež se používají pro jeden hlas v jedné notové osnově.


3.1.1 Přezkoušení taktů

I když nejsou předepsána, měla by se přezkoušení taktů ve vstupním souboru používat, aby se ukázalo, kde by měly za běžných okolností být taktové čáry. Jsou zapsány symbolem „svislítka“, ( |) (klávesa AltCtrl + <). S pomocí přezkoušení taktů může program zajistit, že zadané délky not dají celé takty na správných místech. Přezkoušení taktů rovněž ulehčuje čtení zadaného textu, jelikož do textu přináší pořádek.

g1 | e1 | c2. c'4 | g4 c g e | c4 r r2 |

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Přezkoušení taktů a počtu taktů.


3.1.2 Předznamenání a označení tóniny (předznamenání)

Předznamenání

Slovníček: sharp, flat, double sharp, double flat, accidental.

Předznamenání křížku1 se zadává tím, že se k názvu noty připojí ‚is‘, předznamenání se provede připojením ‚es‘. Logicky se potom dvojitý křížek nebo dvojité bé zapíše připojením ‚isis‘ nebo ‚eses‘. Tato skladba odpovídá zvyklosti prostředí českého jazyka, a tudíž není pro české uživatele žádným problémem. Je ovšem možné používat název pro předznamenání v jiných jazycích. Podívejte se na Označení not v jiných jazycích.

\relative { cis''4 ees fisis, aeses }

[image of music]

Označení tóniny (předznamenání)

Slovníček: key signature, major, minor.

Tónina díla se vytvoří příkazem \key, který je následován označením noty a \major (pro Dur) nebo \minor (pro moll).

\key d \major
a1 |
\key c \minor
a1 |

[image of music]


Varování: označení tóniny a výšky tónů

Slovníček: accidental, key signature, pitch, flat, natural, sharp, transposition, Pitch names.

Aby se určilo, zda se má předznamenání objevit před určitou notou, zkoumá LilyPond výšky not a tóninu. Tónina ovlivňuje jen otisknutá předznamenání, nikoli skutečné výšky tónů! Tato zvláštnost se na začátku jeví často jako matoucí, takže je zde sledována důkladněji.

LilyPond přísně rozlišuje mezi hudebním obsahem a sazbou. Alterace (, křížek nebo odrážka) jedné noty kromě toho náleží k výšce tónu, a je proto hudebním obsahem. Zda se předznamenání (posuvka: čili otisknutý křížek, bé nebo odrážka) objeví před odpovídající notou, je věcí sazby (úpravy). Úprava je něčím, co poslouchá určitá pravidla, takže předznamenání (posuvky) jsou sázena automaticky podle těchto pravidel. Výšky tónů ve vašich notách jsou uměleckým dílem, a tak nebudou přidávány automaticky. Nerozhoduje se automaticky, kde se objeví, a musíte zadat tón, který chcete slyšet.

V tomto příkladu

\relative {
  \key d \major
  cis''4 d e fis
}

[image of music]

nemá předznamenání žádná z not, přesto musí být ve zdrojovém textu zapsáno ‚is‘ pro cis a fis.

Kód ‚bé‘ (podle holandského způsobu označování not se H sází b) tedy neznamená: „Nakresli jednu černou tečku na prostřední linku notové osnovy.“ Přesněji řečeno to znamená: „Zde se má vysázet nota s výškou tónu H.“ V tónině As Dur dostane předznamenání (posuvku):

\relative {
  \key aes \major
  aes'4 c b c
}

[image of music]

Zapsat všechna tato předznamenání výslovně, možná znamená o něco více písemné práce, má to ale tu velkou výhodu, že transpozice, převod, se dělá mnohem snadněji, a že tisk předznamenání (posuvek) se může uskutečnit podle rozdílných pravidel. Podívejte se na Automatické předznamenání na několik příkladů, jak mohou být předznamenání (posuvky) na základě různých pravidel vytisknuta.

Podívejte se také na

Doporučení pro notový zápis: Označení not v jiných jazycích, Předznamenání, Automatické předznamenání, Označení tóniny.


3.1.3 Ligatury a legatové obloučky

Ligatury

Slovníček: tie.

Ligatura se zapíše tak, že se k první z not, které se mají spojit, připojí vlnovka ~.

g4~ 4 c2~ | 4~ 8 a~ 2

[image of music]

Legatové obloučky

Slovníček: slur.

Legatový oblouček je oblouček, který se rozprostírá přes více not. Jeho počáteční a koncová nota se značí ‚(‘ popřípadě ‚)‘.

\relative { d''4( c16) cis( d e c cis d) e( d4) }

[image of music]

Frázovací obloučky

Slovníček: slur, phrasing.

Obloučky, které označují delší jednotky frázování (frázovací obloučky), se zadávají pomocí \( a \). Současně se mohou vyskytovat jak legatové obloučky tak frázovací obloučky, ale nemůže se současně dát více než právě jeden legatový oblouček a jeden frázovací oblouček.

\relative { g'4\( g8( a) b( c) b4\) }

[image of music]


Varování: ligatury nejsou legatovými obloučky

Slovníček: articulation, slur, tie.

Legatový oblouček vypadá jako tie, má ale jiný význam. Ligatura prodlužuje pouze předcházející notu a může se také používat jen u dvou not, jež mají stejnou výšku tónu. Legatové obloučky proti tomu ukazují artikulaci not a mohou být zapsány pro větší skupiny not. Ligatury a legatové obloučky mohou být naskládány do sebe.

\relative { c''4(~ c8 d~ 4 e) }

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Ligatury, Legatové obloučky, Obloučky frázování.


3.1.4 Artikulační znaménka a hlasitost

Artikulační znaménka

Slovníček: articulation.

Běžná artikulační znaménka mohou být zadána pomocí doplnění minus (‚-‘) a odpovídajícího znaménka:

\relative {
  c''4-^ c-+ c-- c-!
  c4-> c-. c2-_
}

[image of music]

Prstoklad

Slovníček: fingering.

Stejným způsobem lze přidat označení prstokladu tím, že se po minus (‚-‘) zapíše číslo:

\relative { c''4-3 e-5 b-2 a-1 }

[image of music]

Artikulační znaménka a prstoklady jsou obvykle umísťovány automaticky, ale jejich místo lze zadat pomocí znaku ‚^‘ (nahoru) nebo ‚_‘ (dolů) namísto znaku minus. K jedné notě je možné připojit i více artikulačních znamének. Většinou ale najde LilyPond sám tu nejlepší možnost, jak se mají artikulační znaménka umístit.

\relative { c''4_-^1 d^. f^4_2-> e^-_+ }

[image of music]

Dynamika

Slovníček: dynamics, crescendo, decrescendo.

Dynamika (značky určující hlasitost) se do díla zadává tím, že se k notě připojují značky (s obráceným lomítkem):

\relative { c''4\ff c\mf c\p c\pp }

[image of music]

Crescendo a decrescendo začínají příkazem \< případně \>. Další absolutní značka určující hlasitost, například \f, (de)crescendo ukončuje. Může se přesně ukončit i příkazem \!.

\relative { c''4\< c\ff\> c c\! }

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Artikulační znaménka a ozdoby, Příkazy pro prstoklad, Dynamika.


3.1.5 Přidání textu

Text můžete do notového zápisu vložit následujícím způsobem:

c''2^"espr" a'_"legato"

[image of music]

Dodatečné formátování lze nasadit, když použijete příkaz \markup:

c''2^\markup { \bold espr }
a'2_\markup {
  \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
}

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Zadání textu.


3.1.6 Automatické a ruční trámce

Všechny trámce se zapisují automaticky:

\relative { a'8 ais d ees r d c16 b a8 }

[image of music]

Když nejsou tyto automaticky zapisované trámce chtěné, mohou být změněny ručně. Když se musí tu a tam opravit jen jeden trámec, dostane nota, na níž trámec začíná ‚[‘ (AltGr+8), a ta, na níž má končit, dostane ‚]‘ (AltGr+9).

\relative { a'8[ ais] d[ ees r d] c16 b a8 }

[image of music]

Když chcete automatické trámce vypnout úplně nebo pro delší část, používáte příkaz \autoBeamOff, abyste trámce vypnul, a \autoBeamOn, abyste je opět zapnul.

\relative {
  \autoBeamOff
  a'8 c b4 d8. c16 b4 |
  \autoBeamOn
  a8 c b4 d8. c16 b4 |
}

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Automatické trámce, Ruční trámce.


3.1.7 Dodatečné rytmické příkazy

Předtaktí

Předtaktí se zadává příkazem \partial. Potom následuje délka předtaktí: \partial 4 znamená jednu čtvrťovou notu předtaktí a \partial 8 jednu osminovou notu.

\relative {
  \partial 8 f''8 |
  c2 d |
}

[image of music]

Jiná rytmická rozdělení

Slovníček: note value, triplet.

Trioly a n-toly se vytváří příkazem \times. Potřeba jsou k tomu dva argumenty: zlomek a noty, na něž se odvolává. Trvání not se zlomkem znásobuje. V jedné triole trvají noty 2/3 jejich zapsané délky, takže triola má 2/3 jako svůj zlomek:

\relative {
  \tuplet 3/2 { f''8 g a }
  \tuplet 3/2 { c8 r c }
  \tuplet 3/2 { f,8 g16[ a g a] }
  \tuplet 3/2 { d4 a8 }
}

[image of music]

Ozdoby

Slovníček: grace notes, acciaccatura, appoggiatura.

Melodické ozdoby se zadávají příkazem \grace, ačkoli se také dají vytvářet uvozením hudebního výrazu příkazem \appoggiatura (dlouhý příraz, prodleva) a \acciaccatura (příraz, krátká appoggiatura).

\relative {
  c''2 \grace { a32 b } c2 |
  c2 \appoggiatura b16 c2 |
  c2 \acciaccatura b16 c2 |
}

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Ozdoby, Jiná rytmická rozdělení, Předtaktí.


3.2 Více not najednou

V této kapitole bude ukázáno, jak lze zapsat více než jednu notu k stejné době: v různých notových osnovách pro různé nástroje nebo pro jeden nástroj (např. klavír) a v akordech.

Vícehlasostí (polyfonie) se v hudbě nazývá výskyt více než jednoho hlasu v jednom díle. Vícehlasost (polyfonie) ovšem pro LilyPond znamená výskyt více než jednoho hlasu ve stejné notové osnově.


3.2.1 Vysvětlení hudebních výrazů

Ve zdrojových souborech LilyPondu se hudba znázorňuje pomocí hudebních výrazů. Jedna nota je jedním hudebním výrazem.

a'4

[image of music]

Skupina not uvnitř závorek tvoří nový výraz. Tento je nyní složeným hudebním výrazem. Zde byl jeden takový složený hudební výraz se dvěmi notami vytvořen:

\relative { a'4 g4 }

[image of music]

Když je skupina hudebních výrazů (například not) zapsána do složených závorek, znamená to, že jsou seřazeny v řadě (tj. každý následuje po předchozím). Výsledkem je další hudební výraz.

\relative { { a'4 g } f4 g }

[image of music]

Obdoba: matematické výrazy

Uspořádání výrazů pracuje podobně jako matematické rovnice. Delší rovnice vzejde ze spojení menších rovnic. Takovým rovnicím se říká též výraz a jejich vymezení je rekurzivní, takže mohou být vytvářeny jakkoli složité a dlouhé výrazy. Přibližně tak, jak je to zde:

1

1 + 2

(1 + 2) * 3

((1 + 2) * 3) / (4 * 5)

Je to řada (matematických) výrazů, v nichž je každý výraz obsažen v následujícím (větším). Nejjednoduššími výrazy jsou čísla, a větší vznikají spojením výrazů za pomoci operátorů (jako ‚+‘, ‚*‘ a ‚/‘) stejně jako závorky. Přesně jako matematické výrazy mohou být i hudební výrazy jakkoli hluboce členité. Je to potřeba pro složitou hudbu s mnoha hlasy.

Souběžné hudební výrazy: více notových osnov

Slovníček: polyphony.

S touto technikou lze vícehlasou hudbu zapisovat. Hudební výrazy jsou jednoduše spojeny jako současně probíhající, a v důsledku toho jsou současně zapsány jako vlastní hlasy ve stejné notové osnově. Pro označení toho, že se dva hlasy mají hrát ve stejnou dobu, jednoduše zadejte souběžné spojení hudebních výrazů Je jen třeba vložit znak pro spojení. Souběžně jsou hudební výrazy spojeny tak, že jsou uzavřeny uvnitř << a >>. V následujícím příkladu jsou souběžně spojeny tři výrazy (každý obsahuje dvě oddělené noty):

<<
  \relative { a'2 g }
  \relative { f'2 e }
  \relative { d'2 b }
>>

[image of music]

Ještě je třeba poznamenat, že jsme zde pro každou úroveň uvnitř zdrojového souboru zapsali jiné odsazení. Pro LilyPond nehraje žádnou úlohu, kolik prázdných znaků je na začátku řádku, ale pro člověka je volikou pomocí, když hned vidí, které části zdrojového textu patří dohromady.

Pozor: Každá nota v souboru se vztahuje k předcházející a nesouvisí s dvoučárkovaným C (c''), které je zadáno v příkazu \relative. Závorky na to nemají žádný vliv.

Souběžné hudební výrazy: jedna notová osnova

Aby určil počet notových osnov, provádí LilyPond rozbor začátku prvního výrazu. Když se zde nachází jednotlivá nota, zapíše se pouze jedna notová osnova, když se jedná o souběžné seřazení výrazů, zapíše se více než jedna notová osnova. Následující příklad začíná jednou notou:

\relative {
  c''2 <<c e>> |
  << { e f } { c <<b d>> } >> |
}

[image of music]


3.2.2 Více notových osnov

Jak jsme viděli ve vysvětlení hudebních výrazů, jsou zdrojové soubory LilyPondu sestaveny z hudebních výrazů. Když zadání not začíná souběžným výrazem, vytváří se více notových osnov. Je ale jistější a jednodušší porozumět tomu, kdy jsou tyto notové osnovy vytvářeny otevřeně.

Aby se napsala více než jedna notová osnova, je ke každému notovému výrazu, který má stát ve vlastní notové osnově, vpředu připojen příkaz \new Staff. Tyto součásti Staff (anglické slovo pro notovou osnovu) jsou potom uspořádány souběžně se znaky << a >>:

<<
  \new Staff { \clef "treble" c''4 }
  \new Staff { \clef "bass" c4 }
>>

[image of music]

Příkaz \new začíná nové „prostředí notového zápisu“. Prostředím notového zápisu je prostředí, v němž jsou vykládány hudební události (jako jsou noty nebo příkaz pro \clef (klíč)). Pro jednoduché části jsou tato prostředí vytvářena automaticky. U složitější hudby je ale nejlepší tato prostředí vytvořit otevřeně.

Jsou různé typy prostředí. Score (notový zápis), Staff (notová osnova) a Voice (hlas) zpracovávají zadání not, zatímco prostředí Lyrics (text) se používá k zapisování textů písní a prostředí ChordNames (názvy akordů) se používá k zapisování značek akordů.

Tím, že se \new zapíše před nějakým hudebním výrazem, se vytvoří větší výraz. V tomto smyslu skladba příkazu \new připomíná znaménko minus v matematice. Tak jako (4+5) je jeden výraz, který byl pomocí -(4+5) rozšířen do většího výrazu, jsou také hudební výrazy rozšiřovány pomocí příkazu \new.

Označení taktů, která jsou zadána v jedné notové osnově, se projevují u všech ostatních notových osnov. Předznamenání (údaj o tónině) v jedné notové osnově oproti tomu neovlivňuje tóninu jiných notových osnov. Toto počínání je založeno na tom, že notové zápisy s převeditelnými nástroji jsou častější než notové zápisy s rozdílnými druhy taktů.

<<
  \new Staff { \clef "treble" \key d \major \time 3/4 c''4 }
  \new Staff { \clef "bass" c4 }
>>

[image of music]


3.2.3 Seskupení notových osnov

Slovníček: brace.

Hudba pro klavír se obvykle zapisuje do dvou notových osnov, které jsou spojeny složenými závorkami (akoláda). Pro vytvoření takové notové osnovy si člověk počíná podobně jako v příkladu z více notových osnov, jenže celý výraz je nyní vložen do prostředí PianoStaff.

\new PianoStaff <<
  \new Staff …
  \new Staff …
>> >>

Zde je jeden malý příklad:

\new PianoStaff <<
  \new Staff \relative { \time 2/4 c''4 e | g g, | }
  \new Staff \relative { \clef "bass" c4 c' | e c | }
>>

[image of music]

Jiné typické skupiny notových osnov je možné vytvořit příkazy \new StaffGroup pro orchestrální sazby a \new ChoirStaff pro sborové notové osnovy. Každá z těchto skupin notových osnov vytváří nové prostředí, které se stará o to, aby závorky byly vytvořeny na začátku notové osnovy, a který dodatečně rozhoduje i o tom, zda jsou taktové čáry zapsány jen na notové osnově nebo také mezi notovými osnovami.

Podívejte se také na

Doporučení pro notový zápis: Klávesové nástroje a jiné nástroje s více notovými osnovami, Nechat ukázat osnovy.


3.2.4 Spojení not do akordů

Slovníček: chord

Viděli jsme již nahoře, jak se dají vytvářet akordy tím, že jsou uzavřeny dvojitými špičatými závorkami, a tak označeny jako současně zaznívající. Obvyklým způsobem notového zápisu akordů je ale jejich uzavření jednoduchými špičatými závorkami (‚<‘ a ‚>‘). Dávejte pozor si na to, že všechny noty jednoho akordu musejí mít stejnou dobu trvání a že tato doba trvání se zapisuje po uzavírajících závorkách.

\relative { r4 <c'' e g> <c f a>2 }

[image of music]

Akordy jsou v základě rovnocenné s jednoduchými notami: téměř všechny značky, které je možné připojit k jednoduchým notám, se dají připojit i k akordům. Tak je možné s akordy spojit značky, jako jsou trámce nebo obloučky. Avšak musí se zapsat vně špičatých závorek.

<c e g>8[ <c f a> <c e g> <c f a>] <c e g>\>[ <c f a> <c f a> <c e g>]\! |
r4 <c e g>8.\p <c f a>16( <c e g>4-. <c f a>) |

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Akordové noty.


3.2.5 Vícehlasost v jedné notové osnově

Vícehlasý notový zápis v LilyPondu není těžký, používá však určité pojmy, o kterých se zde ještě nepojednávalo a které zde neměly být vysvětleny. Místo toho následující části do těchto pojmů uvádějí a podrobně je vysvětlují.

Podívejte se také na

Příručka k učení se: Hlasy obsahují noty.

Doporučení pro notový zápis: Současně se objevující noty.


3.3 Písničky

V této kapitole je laskavý čtenář uveden do spojení not s textem a je ukázáno, jak se vytváří jednodušší listy s písničkami.


3.3.1 Zápis jednoduchých písní

Slovníček: lyrics.

Zde je začátek jednoduché dětské písně, Dívky a chlapci jdou ven, aby si hráli:

\relative {
  \key g \major
  \time 6/8
  d''4 b8 c4 a8 | d4 b8 g4
}

[image of music]

K těmto notám je možné přidat text tím, že obojí je spojeno příkazem \addlyrics. Text se zadá tak, že každá slabika je oddělena prázdným znakem.

<<
  \relative {
    \key g \major
    \time 6/8
    d''4 b8 c4 a8 | d4 b8 g4
  }
  \addlyrics {
    Dívky a chlapci jdou | ven, aby si hráli,
  }
>>

[image of music]

Pozor: Je velmi důležité, aby byla poslední slabika oddělena prázdným znakem nebo novým řádkem od uzavírajících složených závorek. Pokud to tak uděláno není, je závorka vykládána jako část slabiky, což vede k zvláštní chybě. Podívejte se také na Apparent error in ../ly/init.ly.

Jak noty tak také text jsou pokaždé orámovány složenými závorkami a celý výraz je umístěn mezi << ... >>. Tím se zaručuje, že text a noty jsou zapsány současně.


3.3.2 Vyrovnání textu s melodií

Slovníček: melisma, extender line.

Další řádek písně pro děti zní: A ten měsíc svítí tak jasně jako den. Zapsaná vypadá takto:

<<
  \relative {
    \key g \major
    \time 6/8
    d''4 b8 c4 a8 | d4 b8 g4 g8 |
    a4 b8 c b a | d4 b8 g4. |
  }
  \addlyrics {
    Dívky a chlapci jdou | ven si hrát,
    A | měsíc svítí tak | jasně jako den; |
  }
>>

[image of music]

V anglickém originále je to:

<<
  \relative {
    \key g \major
    \time 6/8
    d''4 b8 c4 a8 | d4 b8 g4 g8 |
    a4 b8 c[ b] a | d4 b8 g4. |
  }
  \addlyrics {
    Girls and boys come | out to play,
    The | moon doth shine _ as | bright as day; |
  }
>>

[image of music]

Když se kód hořejšího příkladu sestaví, měla by se ve výstupu konzole/v souboru se zápisem objevit podobná varování:

song.ly:12:29: warning: barcheck failed at: 5/8
    The | moon doth shine as
                             | bright as day; |
song.ly:12:46: warning: barcheck failed at: 3/8
    The | moon doth shine as | bright as day;
                                              |

Toto je dobrý příklad užití přezkoušení taktů. Zde máme český překlad, ale když se na noty s anglickým původním textem podíváme pečlivěji, je nám jasné, že nový textový řádek není srovnán s notami správně. Slova měsíc a svítí (v angličtině jsou tu slovní obrat "moon doth" a slovo "shine"), by se měla zpívat na dvě noty, ne na jednu. Říká se tomu melisma, jednoslabičný text pro více not, řada tónů zpívaná na jednu slabiku textu. Je více možností, jak jednu slabiku prodloužit přes více not. Tou nejjednodušší je zapsat kolem dotčených not legatový oblouček. Na podrobnosti se podívejte v části Ligatury a legatové obloučky.

<<
  \relative {
    \key g \major
    \time 6/8
    d''4 b8 c4 a8 | d4 b8 g4 g8 |
    a4 b8 c( b) a | d4 b8 g4. |
  }
  \addlyrics {
    Dívky a chlapci jdou | ven si hrát,
    A | měsíc svítí tak | jasně jako den; |
  }
>>

[image of music]

Slova nyní jdou správně s notami, ale automatický trámec pro noty u svítí tak, nevypadá správně. Můžeme to opravit tak, že délku trámce vymezíme ručně, aby odpovídala běžnému způsobu notového zápisu zpěvu. Na podrobnosti se podívejte v části Automatické a ruční trámce.

<<
  \relative {
    \key g \major
    \time 6/8
    d''4 b8 c4 a8 | d4 b8 g4 g8 |
    a4 b8 c([ b]) a | d4 b8 g4. |
  }
  \addlyrics {
    Dívky a chlapci jdou | ven si hrát,
    A | měsíc svítí tak | jasně jako den; |
  }
>>

[image of music]

Jinak může být melisma zapsána i v textu tak, že pro každou notu, která se má přeskočit, se v textu zapíže podtržítko _:

<<
  \relative {
    \key g \major
    \time 6/8
    d''4 b8 c4 a8 | d4 b8 g4 g8 |
    a4 b8 c[ b] a | d4 b8 g4. |
  }
  \addlyrics {
    Dívky a chlapci jdou | ven si hrát,
    A | měsíc svítí _ tak | jasně jako den; |
  }
>>

[image of music]

Když se poslední slabika slova rozprostírá přes více not nebo přes jednu velmi dlouhou notu, zapisuje se obvykle vyplňovací čára, která se rozprostírá přes všechny noty, které ke slabice patří. Tato vyplňovací čára se zapíše pomocí dvou podtržítek __. Zde je příklad prvních tří taktů z Didonina nářku, Purcellova díla Dido a Æneas2:

<<
  \relative {
    \key g \minor
    \time 3/2
    g'2 a bes | bes2( a) b2 |
    c4.( bes8 a4. g8 fis4.) g8 | fis1
  }
  \addlyrics {
    When I am | laid,
    am | laid __ in | earth,
  }
>>

[image of music]

Žádný z dosavadních příkladů doposud nepoužil slova, jež by byla delší než jedna slabika. Taková slova se obvykle rozdělují na více not, jedna slabika na notu, se spojovníky mezi slabikami. Tyto slabiky se zapisují pomocí dvou znamének minus a jsou LilyPondem napsány jako vystředěný spojovník mezi dvěma slabikami. Zde je příklad, který ukazuje tento a všechny další triky, jimiž lze vyrovnat text s notami:

<<
  \relative {
    \key g \major
    \time 3/4
    \partial 4
    d'4 | g4 g a8( b) | g4 g b8( c) |
    d4 d e | c2
  }
  \addlyrics {
    A -- | way in a __ | man -- ger,
    no __ | crib for a | bed, __
  }
>>

[image of music]

Některé texty, obzvláště v jazyce italském, potřebují opak: více než jedna slabika se musí zapsat k jedné notě. To je možné tak, že slabiky jsou spřáhnuty dohromady pomocí jednoho podtržení _. Mezi tím se nesmí nacházet žádné prázdné znaky, nebo tím, že se rozhodující slabiky zapíší v uvozovkách ". Zde je příklad z opery Figaro od Rossiniho, kde se slabika al musí zazpívat na té samé notě go slova Largo ve Figarově árii Largo al factotum.

<<
  \relative {
    \clef "bass"
    \key c \major
    \time 6/8
    c'4.~ 8 d b | c8([ d]) b c d b | c8
  }
  \addlyrics {
    Lar -- go_al fac -- | to -- tum del -- la cit -- | 
  }
>>

[image of music]

Podívejte se také na

Doporučení pro notový zápis: Notový zápis zpěvu.


3.3.3 Text pro více osnov

Lze použít jednoduché řešení s \addlyrics, aby byl text zapsán v jedné nebo ve více notových osnovách. Zde je příklad z Händelova díla Judas Maccabeus:

<<
  \relative {
    \key f \major
    \time 6/8
    \partial 8
    c''8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
  }
  \addlyrics {
    Let | flee -- cy flocks the | hills a -- | dorn, __
  }
  \relative {
    \key f \major
    \time 6/8
    \partial 8
    r8 | r4. r4 c'8 | a'8([ g]) f f([ e]) d | e8([ d]) c bes'4
  }
  \addlyrics {
    Let | flee -- cy flocks the | hills a -- dorn,
  }
>>

[image of music]

Ale notové zápisy, jež jsou složitější, než je tento příklad, se lépe zapisují tak, že se stavba osnov oddělí od not a textu zpěvu pomocí proměnných. Používání proměnných se vysvětluje v části Pořádání děl pomocí proměnných.

Podívejte se také na

Doporučení pro notový zápis: Notový zápis zpěvu.


3.4 Poslední úpravy

Toto je poslední kapitola cvičení. Zde se má předvést, jak se u jednoduchých děl uplatňují poslední úpravy. Současně slouží jako úvod pro zbytek příručky.


3.4.1 Pořádání děl pomocí proměnných

Když se všechny ty složky, o kterých se mluvilo, spojí ve větší soubory, stanou se i hudební výrazy o hodně většími. Ve vícehlasých souborech s mnoha osnovami to může vypadat velmi neuspořádaně. Zmatek je ale možné velmi zřetelně omezit, když se vymezí a používají Proměnné.

Proměnné (označované i jako značky nebo makra) mohou pojmout část not. Vymezují se tak, jak je popsáno následně:

označenéNoty = { … }

Obsah hudebního výrazu označenéNoty se pak může opět použít později tím, že se před ně zapíše obrácené lomítko (\označenéNoty), přesně tak, jak se to dělá u každého příkazu LilyPond.

violin = \new Staff {
  \relative {
    a'4 b c b
  }
}

cello = \new Staff {
  \relative {
    \clef "bass"
    e2 d
  }
}

{
  <<
    \violin
    \cello
  >>
}

[image of music]

V názvech proměnných mohou být použita jen písmena abecedy, žádná čísla nebo čárky.

Proměnné se musejí vymezit před vlastním hudebním výrazem. Potom se ale mohou používat libovolně často, jakmile už jednou byly vymezeny. Mohou být dokonce ustaveny, aby později v souboru vytvořily novou proměnnou. Tím se dá písemná práce ulehčit, když se skupiny not často opakují.

tripletA = \tuplet 3/2 { c,8 e g }
barA = { \tripletA \tripletA \tripletA \tripletA }

\relative c'' {
  \barA \barA
}

[image of music]

Tyto proměnné se dají používat i pro mnoho dalších předmětů, například:

Šířka = 4.5\cm
Name = "Tim"
aPětPapír = \paper { paperheight = 21.0 \cm }

Podle souvislostí lze takovou značku používat na různých místech. V následujícím příkladu je ukázáno použití právě vymezené značky:

\paper {
  \aPětPapír
  line-width = \Šířka
}

{
  c4^\Name
}

3.4.2 Přidání názvu

Název, skladatel, číslo opusu a podobné údaje se vkládají do prostředí \header. Toto prostředí se nachází mimo hudební výrazy, většinou se prostředí \header vkládá přímo do čísla verze.

\version "2.24.4"

\header {
  title = "Symphony"
  composer = "Já"
  opus = "Op. 9"
}

{
  … Noty …
}

Když je soubor přeložen, jsou název a hudební skladatel nadepsáni nad noty. Více informací o úvodním listu se nachází v kapitole Vytvoření názvu.


3.4.3 Absolutní označení not

Až doteď jsme vždy používali \relative, abychom určili výšky tónů. To je nejjednodušší způsob zadávání u většiny not. Je ale ještě jiná možnost, jak popsat výšky tónů: pomocí absolutního označení.

Když se \relative vypustí, vykládají se všechny výšky tónů LilyPondu jako absolutní hodnoty. c' je potom vždy jednočárkovaným C, b je vždy malým h pod jednočárkovaným C, a g, je vždy velkým G – tedy notou na poslední lince v basovém klíči.

{
  \clef "bass"
  c'4 b g, g, |
  g,4 f, f c' |
}

[image of music]

Zde je stupnice přes čtyři oktávy:

{
  \clef "bass"
  c,4 d, e, f, |
  g,4 a, b, c |
  d4 e f g |
  a4 b c' d' |
  \clef "treble"
  e'4 f' g' a' |
  b'4 c'' d'' e'' |
  f''4 g'' a'' b'' |
  c'''1 |
}

[image of music]

Jak můžete vidět, musí se napsat velmi mnoho odsuvníků (jednoduchých uvozovek), když se melodie zapisuje v sopránovém klíči. Podívejte se například na tento Mozartův zlomek:

{
  \key a \major
  \time 6/8
  cis''8. d''16 cis''8 e''4 e''8 |
  b'8. cis''16 b'8 d''4 d''8 |
}

[image of music]

Všechny tyto odsuvníky činí zdrojový text špatně čitelný a jsou možným zdrojem chyb. Pomocí příkazu \relative je tento příklad mnohem jednodušeji čitelný:

\relative {
  \key a \major
  \time 6/8
  cis''8. d16 cis8 e4 e8 |
  b8. cis16 b8 d4 d8 |
}

[image of music]

Když člověk udělá chybu kvůli značce pro oktávu (' nebo ,) v režimu \relative, dá se najít velice rychle, protože mnohé noty budou po sobě v nesprávné oktávě. V absolutním režimu naproti tomu není jednotlivá chyba tak zřetelná, a proto se nedá tak snadno najít.

Přese všechno je absolutní režim dobrý pro noty s velmi velkými skoky a především pro počítačem vytvářené soubory LilyPondu.


3.4.4 Po cvičení

Když jste zvládli toto cvičení, měli byste se nejlépe sami pokusit napsat několik kousků. Začněte s předlohami a jednoduše do nich přidejte několik svých not. Kdybyste potřeboval cokoliv, o čem se v cvičení nemluvilo, podívejte se na část Doporučení k notovém zápisu, počínaje hudebním notovým zápisem. Pokud budete chtít napsat noty pro nějaký nástroj nebo soubor, pro který není žádná předloha, podívejte se na Rozšíření příkladů.

Když už jste napsal několik krátkých skladeb, přečtěte si zbytek příručky k učení se (Kapitola 3 až 5). Přirozeně můžete ihned číst dále. Další kapitoly jsou ale napsány s předpokladem, že ovládáte zadávací jazyk LilyPondu. Další kapitoly také můžete zběžně prohlédnout a pak se k nim opět vrátit, až získáte nějaké zkušenosti s notovým zápisem.

V tomto cvičení, stejně tak jako v celé příručce k učení se, se na konci každé části nachází část Podívejte se také na, kde se nacházejí odkazy na jiné části. Tyto odkazy byste po prvním přečtení neměl následovat; teprve až si přečtete celou příručku k učení se, můžete v případě potřeby následovat těchto odkazů, abyste si prohloubili vědomosti k námětu.

Nyní si, prosím, přečtěte Přehled o příručkách, jestliže jste to až doteď neudělal. O LilyPondu je závratné množství informací, takže začátečníci se jich hned správně nedopátrají. Když strávíte byť jen několik minut čtením této části, můžete si ušetřit hodiny hledání na nesprávných místech provázené pocity marnosti!


4. Základní pojmy

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.


4.1 Jak pracují vstupní soubory LilyPondu

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 Stavba souboru.

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

c4 a b c

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.

{
  c4 a b c
}

Většina příkladů rovněž používá příkaz \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á.

\relative {
  c''4 a b c
}

[image of music]

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


4.1.1 Uvedení do stavby souboru v LilyPondu

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

\version "2.24.4"

\header { }

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

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

Až dosud ještě žádný z příkladů příkaz \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:

\relative {
  c''4 a d c
}

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

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

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.

Slovo varování je však vysloveno! Mnohé z příkladů v dokumentaci k LilyPondu vědomě vynechávají příklady \new Staff a \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 prostředí a rytce.

Pozor: 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í \new Staff a \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 \score.

Notový zápis (\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í GrandStaff):

{
  \new GrandStaff <<
    ...zde celý notový zápis...
  >>
}

Protože se vše nachází uvnitř složených závorek { ... }, 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 \score obsahovat i jiné věci, jako například

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

Jak je vidět, jsou ty tři příkazy \header, \layout a \midi zvláštní povahy: V protikladu k mnoha jiným příkazům, které také začínají zpětným lomítkem \, 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 \score tak mimo něj. Ve skutečnosti jsou tyto příkazy většinou umisťovány mimo blok \score, například se příkaz \header nachází velice často nad prostředím \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 \layout { } a \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 – Rozvržení notového zápisu a Vytváření souborů MIDI.

Váš LilyPondovský kód může obsahovat více bloků \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 \book není otevřeně nezbytný – je vytvořen skrytě. Když však má být vytvořen pro každý blok \score v souboru ‘.ly’ vlastní výstupní soubor, potom se musí každý z těchto bloků zapsat do vlastního bloku \book: Každý blok \book pak vytváří vlastní výstupní soubor.

Shrnutí:

Každý blok \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 \book.

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

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

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

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

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

\score {
  { \melodie }
}

Když LilyPond zpracovává tento soubor, bere obsah z melodie (vše po rovnítku) a vkládá to, kdykoli vidí \melodie. Názvy jsou volně volitelné, proměnná se právě tak dobře může jmenovat melodie, GLOBAL, praváRukaKlavír, nebo 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 úsporu psaní na stroji pomocí proměnných a funkcí. Přesně jsou tato omezení popsána v části Stavba souboru.

Podívejte se také na

Úplné vymezení vstupního souboru se nachází v Stavba souboru.


4.1.2 Notový zápis je jedním (jediným) složeným hudebním výrazem

V předchozí kapitole, 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 \score.

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

Notový zápis začíná vždy \score, který je následován jedním hudebním výrazem.

Možná byste si měl ještě jednou zběžně přečíst, abyste pochopil, co jsou to hudební výrazy, 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 (StaffGroup), která jednoduše způsobeje jen to, že osnovy jsou spojeny závorkami, seskupuje je; ty tedy budou odstraněny. Potřebujeme ale osnovy pro zpěváka a klavír.

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

Zde byly osnovy pojmenovány: „Zpěvák“ a „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í: << a >> 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 << ... >> pro zpěvákovu osnovu v příkladu výše není nutná, protože zde se mají vkládat noty jen jednoho hlasu, ale << ... >> 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 \addlyrics v zápisu jednoduchých písní.

\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 { }
}

[image of music]

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). 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 \new PianoStaff. 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 \new Voice = "Zpěvní hlas" bychom mohli zapisovat

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

Ale když se soubor píše takto přímo, začne být část \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é text je vykládán jako text písně, interpretiert wird, uvedeme jej \lyricmode. Tak jako \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 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:

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 { }
}

[image of music]

Při zapisování (nebo při čtení) prostředí \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ě.

Podívejte se také na

Notace: Stavba notového zápisu.


4.1.3 Naskládání hudebních výrazů do sebe

Notové osnovy (prostředí ‚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ů 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:

\new Staff {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff {
        f8 f c
      }
    >>
    r4 |
  }
}

[image of music]

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.

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

\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 |
  }
}

[image of music]

Tento příklad používá příkaz \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 „main“ namísto výchozího umístění, které je pod ní.

Podívejte se také na

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 velikosti předmětů a Osnovy ossia.


4.1.4 O ne-naskládatelnosti závorek a ligatur

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:

Druh závorekFunkce
{ .. }Uzavírá postupnou část hudby
< .. >Uzavírá noty jednoho akordu
<< .. >>Uzavírá souběžné hudební výrazy
( .. )Označuje začátek a konec obloučku
\( .. \)Označuje začátek a konec frázovacího obloučku
[ .. ]Označuje začátek a konec ručně vytvořeného trámce

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 ~), trioly (psané jako \times x/y {..}) und ozdoby (poznamenávané jako \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 << [ { ( .. ) } ] >>. 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 nutnost pro ony tři druhy závorek, jež byly v hořejší tabulce popsány slovem ‚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 ‚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ě 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:

{ g8\( a b[ c b\) a] g4 }

[image of music]

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

{
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.\)
}

[image of music]


4.2 Hlasy obsahují noty

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.


4.2.1 Slyším hlasy

Nejnižší, nejzákladnější a nejvnitřnější úrovně v LilyPondovském notovém zápisu jsou nazvány „Voice context“ (prostředí hlasu) nebo také jen „Voice“ (hlas). Hlasy jsou v jiných notačních programech někdy označovány jako „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:

\relative {
  \key g \major
  <d' g>4 <d fis> <d a'> <d g>
}

[image of music]

To lze vyjádřit tak, že se pro ukázání akordů použijí jednoduché špičaté závorky < ... >. 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ě?

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 { ... }), a pak je souběžně spojit špičatými závorkami (<<...>>). Obě části ještě dodatečně musejí být jedna od druhé odděleny dvěma zpětnými lomítky (\\), 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:

\relative {
  \key g \major
  %    Voice = "1"             Voice = "2"
  << { g'4 fis8( g) a4 g } \\ { d4 d d d }  >>
}

[image of music]

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

Tady je jiný jednoduchý příklad:

\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 }       >>

[image of music]

Není nutné používat pro každý takt vlastní stavbu << \\ >>. 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:

<<
  \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 |
  }
>>

[image of music]

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 "1", "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ří.

\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 } >> |
}

[image of music]

Tyto hlasy jsou všechny odděleny od hlavního hlasu, který obsahuje noty mimo stavbu << .. >>. Pojmenujme ji 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.

\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
    }
  >> |
}

[image of music]

Příkazy \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říž. \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 Viditelnost a barva předmětů a Použití proměnných pro ladění.

Vícehlasost nemění vztahy not uvnitř bloku \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

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

NoteB se zřetelem na NoteA
NoteC se zřetelem na NoteB, ne noteA;
NoteD se zřetelem na NoteB, ne NoteA nebo NoteC;
NoteE se zřetelem na NoteD, ne NoteA.

Jinou možností je umístit příkaz \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ší.

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

Pojďme konečně rozebrat hlasy ve složitějším kuse hudby. Zde jsou noty prvních dvou taktů Chopinových 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.

[image of music]

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.

[image of music]

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í << \\ >>, kterou zapíšeme tři hlasy prvního taktu:

\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des }
  >> |
  <c ees aes c>1 |
}

[image of music]

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

\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 |
}

[image of music]

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 force-hshift v Oprava překrývajících se not.

Podívejte se také na

Notace: Více hlasů.


4.2.2 Přesně vyjádřené začátky hlasů

Prostředí hlasů lze vytvářet i ručně uvnitř bloku << >> pro vytvoření vícehlesé hudby. Pomocí příkazů \voiceOne\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 << \\ >>, kterou jsme použili v předchozím úryvku:

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

ist identisch mit

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

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

[image of music]

Příkazy \voiceXXX nastavuje směr nožiček, legata ligatury, artikulace, textové poznámky, tečkování tečkovaných not a prstoklady. \voiceOne a \voiceThree nechají tyto předměty ukazovat nahoru, \voiceTwo a \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 \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 \oneVoice, \voiceOne a voiceTwo účinek na text, obloučky a označení dynamiky:

\relative {
  % Default behavior or behavior after \oneVoice
  c'4 d8~ 8 e4( f | g4 a) b-> c |
}

[image of music]

\relative {
  \voiceOne
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}

[image of music]

\relative {
  \voiceTwo
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}

[image of music]

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ř << >>, náleží hlavnímu hlasu (ale všimněte si not ve stavbě << \\ >>). 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ě.

\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 |
    }
  >>
}

[image of music]

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:

\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 |
        }
      >>
    }
  >>
}

[image of music]

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:

\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 |
  }
>>

[image of music]

Notové sloupce

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 \shiftOn, \shiftOnn, \shiftOnnn a \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 \shiftOff, zatímco pro vnitřní hlasy (tři a čtyři) je stanoveno \shiftOn. Když se použije posunutí, posunou se hlasy jedna a tři doprava a hlasy dva a čtyři doleva.

\shiftOnn a \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 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ě „Příliš mnoho střetávajících se notových sloupců“.

Podívejte se také na

Notace: Více hlasů.


4.2.3 Hlasy a zpěvy

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á „lyrics“.

Již jste viděli příkaz \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 Lyrics (pomocí příkazu \new Lyrics) a přesně spojit text s notami určitého hlasu příkazem \lyricsto{} tak, že se použije označení přiřazené hlasu.

<<
  \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. |
  }
>>

[image of music]

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

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 \autoBeamOff k vypnutí automatických trámců (ang. beam).

Chceme použít dřívější příklad 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 \lyricmode, aby byl vykládán jako text a ne jako noty.

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

[image of music]

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.

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 „global“.

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

[image of music]

Podívejte se také na

Notace: Notový zápis zpěvu.


4.3 Prostředí a rytci

Prostředí a rytci („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.


4.3.1 Vysvětlení prostředí

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:

\relative { cis''4 cis2. | a4 a2. | }

[image of music]

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 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 Kontexten (engl. contexts) gruppiert. Der Voice (Stimmen)-Kontext wurde schon vorgestellt. Daneben gibt es noch die Staff (Notensystem-) und Score (Partitur)-Kontexte. Kontexte sind hierarchisch geschichtet um die hierarchische Struktur einer Partitur zu spiegeln. Ein Staff-Kontext kann zum Beispiel viele Voice-Kontexte beinhalten, und ein Score-Kontext kann viele Staff-Kontexte beinhalten.

context-example

Jeder Kontext hat die Aufgabe, bestimmte Notationsregeln zu erzwingen, bestimmte Notationsobjekte zu erstellen und verbundene Elemente zu ordnen. Der Voice-Kontext zum Beispiel kann eine Vorzeichenregel einführen und der 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 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 Score- und 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 Score, Staff und Voice-Kontexten gibt es noch Kontexte, die zwischen der Partitur- und Systemebene liegen und Gruppen von Systemen kontrollieren. Das sind beispielsweise der PianoStaff und 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 GregorianTranscriptionStaff.

Podívejte se také na

Notationreferenz: Vysvětlení prostředí.


4.3.2 Vytvoření prostředí

In einer Eingabedatei enthält eine Score-Umgebung (einen Kontext), die mit dem Befehl \score eingeleitet wird, nur einen einzigen musikalischen Ausdruck und mit ihm verknüpft eine Ausgabedefinition (entweder eine \layout- oder eine \midi-Umgebung). Üblicherweise wird der 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 Voice- und Staff-Kontexte zu erstellen, aber für komplexere Partituren ist es notwendig, sie mit einem Befehl zu erstellen. Der einfachste Befehl hierzu ist \new. Er wird dem musikalischen Ausdruck vorangestellt, etwa so:

\new Typ musikalischer Ausdruck

wobei Typ eine Kontextbezeichnung (wie etwa Staff oder Voice) ist. Dieser Befehl erstellt einen neuen Kontext und beginnt, den muskalischen Ausdruck innerhalb dieses Kontexts auszuwerten.

Pozor: Der \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 \score-Umgebung interpretiert wird. Standard-Werte von Kontexteigenschaften, die für einen bestimmten Score gelten sollen, können innerhalb der \layout-Umgebung definiert werden. Siehe změnu vlastností prostředí.

Wir haben schon viele explizite Beispiel gesehen, in denen neue Staff- und 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:

\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

[image of music]

(Beachten Sie, dass wir hier alle Zeilen, die eine neue Umgebung entweder mit einer geschweiften Klammer ({) oder doppelten spitzen Klammern (<<) ö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.)

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

\new Typ = Name musikalischer Ausdruck

Beachten Sie den Unterschied zwischen der Bezeichnung des Kontexttyps (Staff, 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 \new Staff = "Mein System 1" 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 hlasy a zpěvy.

Podívejte se také na

Notationsreferenz: Vytvoření prostředí.


4.3.3 Vysvětlení rytců

Jedes Zeichen des fertigen Notensatzes von LilyPond wird von einem 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 Metronome_mark_engraver, dessen Aktion und Ausgabe sich auf die gesamte Partitur bezieht, wirken in der obersten Kontextebene – dem Score-Kontext.

Der Clef_engraver (Schlüssel-Stempel) und der Key_engraver (Vorzeichen-Stempel) finden sich in jedem Staff-Kontext, denn unterschiedliche Systeme könnten unterschiedliche Tonarten und Notenschlüssel brauchen.

Der Note_heads_engraver (Notenkopf-Stempel) und der Stem_engraver (Hals-Stempel) befinden sich in jedem 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 Staff_symbol_engraver verantwortet also die Erstellung der Notenlinien, ein 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.

EngraverFunktion
Accidental_engraverErstellt Versetzungszeichen, vorgeschlagene und Warnversetzungszeichen.
Beam_engraverErstellt Balken.
Clef_engraverErstellt Notenschlüssel.
Completion_heads_engraverTeilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen.
Dynamic_engraverErstellt Dynamik-Klammern und Dynamik-Texte.
Forbid_line_break_engraverVerbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist.
Key_engraverErstellt die Vorzeichen.
Metronome_mark_engraverErstellt Metronom-Bezeichnungen.
Note_heads_engraverErstellt Notenköpfe.
Rest_engraverErstellt Pausen.
Staff_symbol_engraverErsetllt die (standardmäßig) fünf Notenlinien des Systems.
Stem_engraverErstellt die Notenhälse und Tremolos mit einem Hals.
Time_signature_engraverErstellt die Taktartbezeichnung.

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

Podívejte se také na

Referenz der Interna: Engravers and Performers.


4.3.4 Změna vlastností prostředí

Kontexte sind dafür verantwortlich, die Werte bestimmter Kontext-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 \set-Befehl geändert. Er wird in Form

\set KontextBezeichnung.eigenschaftsBezeichnung = #Wert

verwendet, wobei KontextBezeichnung üblicherweise Score, Staff oder Voice ist. Der erste Teil kann auch ausgelassen werden; in diesem Fall wird der aktuelle Kontext (üblicherweise 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.

eigenschaftsBezeichnungTypFunktionBeispiel-Wert
extraNaturalboolescher WertWenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt.#t, #f
currentBarNumberIntegerSetzt die aktuelle Taktnummer.50
doubleSlursboolescher WertWenn wahr, werden Legatobögen über und unter die Noten gesetzt.#t, #f
instrumentNameTextSetzt die Instrumentenbezeichnung am Anfang eines Systems."Cello I"
fontSizereale ZahlVergrößert oder verkleinert die Schriftgröße.2.4
stanzaTextSetzt den Text zu Beginn einer Strophe."2"

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

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. instrumentName befindet sich offensichtlich innerhalb von einem 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.

<<
  \new Staff \relative {
    \set Staff.instrumentName = "Soprano"
    c''2 c
 }
  \new Staff \relative {
    \set instrumentName = "Alto"  % Wrong!
    d'2 d
 }
>>

[image of music]

Denken Sie daran, dass der Standardkontext Voice ist; in dem zweiten \set-Befehl wird also die Eigenschaft instrumentName im Voice-Kontext auf „Alto“, gesetzt, aber weil LilyPond diese Eigenschaft nicht im 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 \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 Tunable context properties, oder Contexts.

Die Eigenschaft instrumentName wird erst aktiv, wenn sie in einem Staff-Kontext gesetzt wird, aber manche Eigenschaften können in mehr als einem Kontext benutzt werden. Als Beispiel mag die extraNatural-Eigenschaft dienen, die zusätzliche Erniedrigungszeichen setzt. Die Standardeinstellung ist ##t (wahr) in allen Systemen. Wenn sie nur in einem Staff (Notensystem) auf ##f (falsch) gesetzt wird, wirkt sie sich auf alle Noten in diesem System aus. Wird sie dagegen in der 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:

<<
  \new Staff \relative {
    ais'2 aes
  }
  \new Staff \relative {
    \set Staff.extraNatural = ##f
    ais'2 aes
  }
>>

[image of music]

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

<<
  \new Staff \relative {
    ais'2 aes
  }
  \new Staff \relative {
    \set Score.extraNatural = ##f
    ais'2 aes
  }
>>

[image of music]

Ein anderes Beispiel ist die Eigenschaft clefTransposition: wenn sie im 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, \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 \unset nicht benötigt, denn ein neues \set erledigt alles, was man braucht.

Die \set- und \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 \set oder \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.

\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 |
}

[image of music]

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 ##t und ##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 \markup-Befehl eingegeben werden kann.

Kontexteigenschaften mit \with setzen

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 \new-Befehl erstellt wird, können in einer direkt folgenden \with { .. }-Umgebung die Eigenschaften bestimmt werden. Wenn also die zusätzlichen Auflösungszeichen für eine ganze Partitur gelten sollen, könnte man schreiben:

\new Staff \with { extraNatural = ##f }

etwa so:

<<
  \new Staff
    \relative {
      gis'4 ges aes ais
    }
  \new Staff \with { extraNatural = ##f } {
    \relative {
      gis' ges aes ais
    }
  }
>>

[image of music]

Eigenschaften, die auf diese Arte gesetzt werden, können immer noch dynamisch mit dem \set-Befehl geändert werden und mit \unset auf ihre Standardeinstellungen zurückgesetzt werden, wie sie vorher in der \with-Umgebung definiert wurden.

Wenn also die fontSize-Eigenschaft in einer \with-Umgebung definiert wird, wird der Standardwert für die Schriftgröße festgelegt. Wenn dieser Wert später mit \set verändert wird, kann dieser neue Standardwert mit dem Befehl \unset fontSize wieder erreicht werden.

Kontexteigenschaften mit \context setzen

Die Werte von Kontext-Eigenschaften können in allen Kontexten eines bestimmten Typs (etwa alle Staff-Kontexte) gleichzeitig mit einem Befehl gesetzt werden. Der Kontext wird spezifiziert, indem seine Bezeichnung benutzt wird, also etwa Staff, mit einem Backslash davor: \Staff. Der Befehl für die Eigenschaft ist der gleiche, wie er auch in der \with-Konstruktion benutzt wird, wie oben gezeigt. Er wird in eine \context-Umgebung eingebettet, welche wiederum innerhalb von einer \layout-Umgebung steht. Jede \context-Umgebung wirkt sich auf alle Kontexte dieses Types aus, welche sich in der aktuellen Partitur befinden (d. h. innerhalb einer \score- oder \book-Umgebung). Hier ist ein Beispiel, wie man diese Funktion anwendet:

\score {
  \new Staff {
    \relative {
      cis''4 e d ces
    }
  }
  \layout {
    \context {
      \Staff
      extraNatural = ##t
    }
  }
}

[image of music]

Wenn die Veränderung der Eigenschaft sich auf alle Systeme einer score-Umgebung beziehen soll:

\score {
  <<
    \new Staff {
      \relative {
        gis'4 ges aes ais
      }
    }
    \new Staff {
      \relative {
        gis'4 ges aes ais
      }
    }
  >>
  \layout {
    \context {
      \Score extraNatural = ##f
    }
  }
}

[image of music]

Kontext-Eigenschaften, die auf diese Weise gesetzt werden, können für bestimmten Kontexte überschrieben werden, indem die \with-Konstruktion eingesetzt wird, oder mit \set-Befehlen innerhalb der aktuellen Noten.

Podívejte se také na

Notationsreferenz: Die Standardeinstellungen von Kontexten ändern, Der set-Befehl.

Referenz der Interna: Contexts, Tunable context properties.


4.3.5 Přidání a odstranění rytců

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.

Einen einzelnen Kontext verändern

Um einen Engraver von einem einzelnen Kontext zu entfernen, wir der \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 Staff_symbol_engraver erstellt werden.

\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 |
}

[image of music]

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

\consists Engraver_bezeichnung

welcher auch wieder innerhalb der \with-Umgebung gesetzt wird. Einige Chorpartituren zeigen einen Ambitus direkt zu Beginn der ersten Notenzeile, um den Stimmumfang des Stückes anzuzeigen, siehe auch ambitus. Der Ambitus wird vom Ambitus_engraver erstellt, der normalerweise in keinem Kontext enthalten ist. Wenn wir ihn zum Voice-Kontext hinzufügen, errechnet er automatisch den Stimmumfang für diese einzelne Stimme und zeigt ihn an:

\new Staff <<
  \new Voice \with {
    \consists Ambitus_engraver
  } {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>

[image of music]

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

\new Staff \with {
  \consists Ambitus_engraver
}
<<
  \new Voice {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>

[image of music]

Alle Kontexte des gleichen Typs verändern

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

\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
    }
  }
}

[image of music]

Die Werte der Kontext-Eigenschaften können auch für alle Kontexte eines bestimmten Typs auf die gleiche Weise geändert werden, indem der \set-Befehl in einer \context-Umgebung angewendet wird.

Podívejte se také na

Notationsreferenz: Umgebungs-Plugins verändern, Die Standardeinstellungen von Kontexten ändern.

Známé potíže a upozornění

Die Stem_engraver und Beam_engraver fügen ihre Objekte an Notenköpfe an. Wenn der Note_heads_engraver entfernt wird, werden keine Notenköpfe erstellt und demzufolge auch keine Hälse oder Bögen dargestellt.


4.4 Rozšíření příkladů

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 Předlohy), mit denen Sie beginnen können. Aber was, wenn Sie nicht genau das finden, was Sie brauchen? Lesen Sie weiter.


4.4.1 Soprán a violoncello

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 „Noten und Text“ (für die Sopran-Stimme) beginnen.

\version "2.24.4"
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 { }
}

Jetzt wollen wir die Cello-Stimme hinzufügen. Schauen wir uns das Beispiel „Nur Noten“ an:

\version "2.24.4"

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

\score {
  \new Staff \melody
  \layout { }
  \midi { }
}

Wir brauchen den \version-Befehl nicht zweimal. Wir brauchen aber den melody-Abschnitt. Wir wollen keine zwei \score (Partitur)-Abschnitte – mit zwei \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 \score-Abschnittes nur einmal die Befehle \layout und \midi.

Wenn wir jetzt einfach zwei melody-Abschnitte in unsere Datei kopieren würden, hätten wir zwei 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 SopranNoten für den Sopran und CelloNoten für die Cellostimme. Wenn wir schon dabei sind, können wir textauch nach SoprText umbenennen. Denken Sie daran, beide Vorkommen der Bezeichnung zu ändern: einmal die Definition gleich am Anfang (melody = \relative c' { ) und dann auch noch die Benutzung der Variable innerhalb des \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.

\version "2.24.4"

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 { }
}

Das sieht schon vielversprechend aus, aber die Cello-Stimme erscheint noch nicht im Notensatz – wir haben vergessen, sie in den \score-Abschnitt einzufügen. Wenn die Cello-Stimme unterhalb des Soprans erscheinen soll, müssen wir

\new Staff \CelloNoten

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

\score {
  <<
    <<
      \new Voice = "eins" {
        \autoBeamOff
        \SopranNoten
      }
      \new Lyrics \lyricsto "eins" \SoprText
    >>
    \new Staff \CelloNoten
  >>
  \layout { }
  \midi { }
}

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:

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 { }
}

[image of music]

Podívejte se také na

Die Vorlagen, mit denen wir begonnen haben, können im Anhang „Předlohy“ gefunden werden, siehe Jednotlivá notová osnova.


4.4.2 Čtyřhlasý notový zápis SATB

Die meisten Partituren für vierstimmigen gemischten Chor mit Orchesterbegleitung (wie etwa Mendelssohns Elias oder Händels 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 Messias:

[image of music]

Keine der Vorlage bietet diesen Aufbau direkt an. Die Vorlage, die am nächsten daran liegt, ist „SATB-Partitur und automatischer Klavierauszug“, siehe 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 (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 \voiceOne notiert werden, welches die Standardeinstellung ist; wir können also die \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 ChoirStaff:

\new ChoirStaff <<
  \new Staff = "sopranos" <<
    \set Staff.instrumentName = "Sopran"
    \new Voice = "sopranos" {
      \global
      \sopranoMusic
    }
  >>
  \new Lyrics \lyricsto "sopranos" {
    \sopranoWords
  }
  \new Staff = "altos" <<
    \set Staff.instrumentName = "Alt"
    \new Voice = "altos" {
      \global
      \altoMusic
    }
  >>
  \new Lyrics \lyricsto "altos" {
    \altoWords
  }
  \new Staff = "tenors" <<
    \set Staff.instrumentName = "Tenor"
    \new Voice = "tenors" {
      \global
      \tenorMusic
    }
  >>
  \new Lyrics \lyricsto "tenors" {
    \tenorWords
  }
  \new Staff = "basses" <<
    \set Staff.instrumentName = "Bass"
    \new Voice = "basses" {
      \global
      \bassMusic
    }
  >>
  \new Lyrics \lyricsto "basses" {
    \bassWords
  }
>>  % end ChoirStaff

Als nächstes müssen wir das Klaviersystem bearbeiten. Das ist einfach: wir nehmen einfach den Klavierteil aus der „Piano solo“-Vorlage:

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

und fügen die Variablen oben und unten hinzu.

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

<<  % 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
  >>
>>

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

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

[image of music]


4.4.3 Vytvoření notového zápisu od základu

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

\version "2.24.4"
\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 {
}

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

Als nächstes schauen wir uns an, was in die Partitur (die \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 PianoStaff. Das erste Manualsystem braucht zwei Stimmen, das zweite nur eine.

\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

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.

<<  % 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
    }
  >>
>>

Es ist nicht notwendig, die simultane Konstruktion << .. >> 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 \new Staff zu schreiben, wenn mehr als eine Stimme vorkommen könnten. Für Stimmen (Voice) dagegen gilt genau das Gegenteil: eine neue Stimme sollte immer von geschweiften Klammern ({ .. }) gefolgt werden, falls Sie ihre Noten in mehrere Variable aufteilen, die nacheinander gesetzt werden sollen.

Fügen wir also diese Struktur zu der \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 \voiceOne, die untere dagegen ein \voiceTwo erhält. Die Taktart und Tonart werden mit unserer fertigen Variable \keyTime eingefügt.

\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

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

Die Spreizbarkeit von Systemen kann mit der staff-staff-spacing-Eigenschaft des VerticalAxisGroup-„graphischen Objekts“ (üblicherweise als „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 Grundlagen zum Verändern von Eigenschaften anschauen. Im Moment kann man nicht nur die strechability (Spreizbarkeit)-Untereigenschaft verändern, darum müssen hier auch die anderen Untereigenschaften kopiert werden. Die Standardeinstellungen dieser Untereigenschaften finden sich in der Datei ‘scm/define-grobs.scm’ in den Definitionen für den VerticalAxisGroup-Grob. Der Wert für strechability wird aus der Definition für das Klaviersystem (PianoStaff) entnommen (in der Datei ‘ly/engraver-init.ly’), damit die Werte identisch sind.

\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

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.

\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

[image of music]

Podívejte se také na

Glossar: system.


4.4.4 Úspora psaní na stroji pomocí proměnných a funkcí

Bis jetzt wurde immer derartige Notation vorgestellt:

hornNotes = \relative { c''4 b dis c }

\score {
  {
    \hornNotes
  }
}

[image of music]

Sie können sich vorstellen, dass das etwa für minimalistische Musik sehr nützlich sein könnte:

fragmentA = \relative { a'4 a8. b16 }
fragmentB = \relative { a'8. gis16 ees4 }
violin = \new Staff {
  \fragmentA \fragmentA |
  \fragmentB \fragmentA |
}

\score {
  {
    \violin
  }
}

[image of music]

Diese Variablen (die man auch als Makros oder Benutzer-Befehl bezeichnet) können jedoch auch für eigene Anpassungen eingesetzt werden:

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

[image of music]

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.

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

Bisher haben wir vor allem statische Ersetzungen betrachtet: wenn LilyPond etwa \padText sieht, wird es ersetzt mit all dem Code, mit dem wir es definiert haben (also alles, was sich rechts von padtext= befindet).

LilyPond kann auch nicht-statische Ersetzungen bewältigen. Man kann sie sich als Funktionen vorstellen.

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

[image of music]

Die Benutzung von Variablen ist auch eine gute Möglichkeit, Arbeit zu vermeiden, wenn sich einmal die Syntax von LilyPond ändern sollte (siehe auch with convert-ly Updating old input files with convert-ly). Wenn man eine einzige Definition hat (wie etwa \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 ‘.ly’-Datei einzeln ändern müsste.


4.4.5 Notové zápisy a hlasy

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 ‘horn-music.ly’ folgende Noten eines Horn/Fagott-Duos enthält:

hornNotes = \relative {
  \time 2/4
  r4 f8 a | cis4 f | e4 d |
}

Eine Stimme wird also erstellt, indem man folgendes in eine Datei schreibt:

\include "horn-music.ly"

\header {
  instrument = "Horn in F"
}

{
 \transpose f c' \hornNotes
}

Die Zeile

\include "horn-music.ly"

ersetzt den Inhalt von ‘horn-music.ly’ an dieser Position in der Datei, sodass hornNotes im Folgenden definiert ist. Der Befehl \transpose f c' zeigt an, dass das Argument (\hornNotes) eine Quinte nach oben transponiert werden soll. Klingendes f wird als c', wie es die Stimmung eines normalen F-Hornes verlangt. Die Transposition kann in folgender Notenausgabe gesehen werden:

[image of music]

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 R notiert, gefolgt von der Dauer (1 für eine Ganze, 2 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:

R2*3

Wenn die Stimme gesetzt wird, werden Mehrtaktpausen komprimiert. Das geschieht, indem man folgendes in die Datei schreibt:

\set Score.skipBars = ##t

Dieser Befehl setzt die Eigenschaft skipBars im Score-Kontext auf wahr (##t). Die Pause und diese Option zu der Musik von oben hinzugefügt, ergibt folgendes Beispiel:

[image of music]

Die Partitur wird erstellt, indem man alle Noten kombiniert. Angenommen, die andere Stimme ist in bassoonNotes in der Datei ‘bassoon-music.ly’ definiert, würde eine Partitur erstellt mit:

\include "bassoon-music.ly"
\include "horn-music.ly"

<<
  \new Staff \hornNotes
  \new Staff \bassoonNotes
>>

woraus sich ergibt:

[image of music]


5. Ladění výstupu

In diesem Kapitel wird erklärt, wie man die Notenausgabe verändern kann. In LilyPond kann man sehr viel konfigurieren, fast jedes Notenfragment kann geändert werden.


5.1 Základy pro ladění


5.1.1 Úvod do ladění

„Optimierung“ (engl. tweaking) ist ein LilyPond-Begriff für die verschiedenen Methoden, die Aktionen zu beeinflussen, die während der Kompilation einer Notationsdatei vorgenommen werden sowie auf das Notenbild einzuwirken. Einige dieser Optimierungen sind sehr einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das System an Optimierungen so gut wie alle möglichen Erscheinungsformen für die Notenausgabe.

In diesem Abschnitt werden die grundlegenden Konzepte vorgestellt, um die Optimierung zu verstehen. Später soll eine Anzahl von fertigen Befehlen bereitgestellt werden, die einfach in die Quelldatei kopiert werden können um den selben Effekt wie im Beispiel zu erhalten. Gleichzeitig zeigen diese Beispiele, wie die Befehle konstruiert werden, so dass Sie in der Lage sein werden, eigene Befehle auf dieser Grundlage zu entwickeln.

Bevor Sie mit diesem Kapitel beginnen, könnte Sie ein Blick in den Abschnitt Prostředí a rytci interessieren, dann prostředí a rytci sowie die Eigenschaften, die mit ihnen verknüpft sind, sind die Voraussetzung, um die Funktionsweise von Optimierungen verstehen zu können.


5.1.2 Předměty a rozhraní

Optimierung bedeutet, die internen Operationen und Strukturen des LilyPond-Programmes zu verändern, darum sollen hier zunächst die wichtigsten Begriffe erklärt werden, die zur Beschreibung dieser Operationen und Strukturen benutzt werden.

Der Begriff „Objekt“ ist ein allgemeiner Begriff, mit dem die Vielzahl an internen Strukturen bezeichnet wird, die LilyPond während der Bearbeitung des Quelltextes erstellt. Wenn etwa ein Befehl wie \new Staff auftritt, wird ein neues Objekt vom Typ Staff erstellt. Dieses Objekt Staff enthält dann alle Eigenschaften, die mit diesem speziellen Notensystem verknüpft sind, wie beispielsweise seine Bezeichnung, Tonart und spezifische Angaben über die Engraver, die innerhalb dieses Systems eingesetzt werden. Für alle anderen Kontexte gibt es genauso Objekte, die deren Eigenschaften beinhalten, beispielsweise für Voice-Objekte, Score-Objekte, Lyrics-Objekte, aber auch für Objekte, die Notationselemente wie die Taktlinien, Notenköpfe, Bögen und Dynamikbezeichnung enthalten. Jedes Objekt hat eine eigene Gruppe an Eigenschaftswerten.

Bestimmte Objekttypen tragen besondere Bezeichnungen. Objekte, die Notationselemente der gesetzten Ausgabe repräsentieren, also Notenköpfe, Hälse, Bögen, Fingersatz, Schlüssel usw., werden „Layout-Objekte“, oft auch „Graphische Objekte“ genannt. Daraus resultiert die künstliche Abkürzung „Grob“. Diese sind auch Objekte im allgemeinen Sinn und haben genauso Eigenschaften, die mit ihnen verknüpft sind, wie etwa Größe, Position, Farbe usw.

Einige Layout-Objekte sind etwas spezieller. Phrasierungsbögen, Crescendo-Klammern, Oktavierungszeichen und viele andere Grobs sind nicht an einer Stelle plaziert – sie haben vielmehr einen Anfangspunkt, einen Endpunkt und eventuell noch andere Eigenschaften, die ihre Form bestimmen. Objekte mit solch einer erweiterten Gestalt werden als „Strecker“ (engl. Spanners) bezeichnet.

Es bleibt uns noch übrig zu erklären, was „Schnittstellen“ (engl. interface) sind. Wenn auch viele Objekte sehr unterschiedlich sind, haben sie doch oft gemeinsame Eigenschaften, die auf die gleiche Weise verarbeitet werden. Alle Grobs beispielsweise haben eine Farbe, eine Größe, eine Position usw. und alle diese Eigenschaften werden von LilyPond auf die gleiche Weise verarbeitet, während der Quelltext in Notensatz umgesetzt wird. Um die internen Operationen zu vereinfachen, sind alle diese gemeinsamen Prozesse und Eigenschaften in einem Objekt mit der Bezeichnung grob-interface (Schnittstelle eines graphischen Objektes) zusammengefasst. Es gibt viele andere Gruppen gemeinsamer Eigenschaften, die jede eine Bezeichnung besitzen, welche auf -interface endet. Insgesamt gibt es über 100 dieser Schnittstellen. Wir werden später sehen, was es damit auf sich hat.

Dies waren die Hauptbegriffe, die in diesem Kapitel zur Anwendung kommen sollen.


5.1.3 Pravidla pro pojmenovávání předmětů a vlastností

Es wurden schon früher einige Regeln zur Benennung von Objekten vorgestellt, siehe Prostředí a rytci. Hier eine Referenzliste der häufigsten Objekt- und Eigenschaftsbezeichnungen mit den Regeln für ihre Bezeichnung und illustrierenden echten Bezeichnungen. Es wurde „A“ für einen beliebigen Großbuchstaben und „aaa“ für eine beliebige Anzahl an Kleinbuchstaben eingesetzt. Andere Zeichen werden explizit angegeben.

Objekt-/EigenschaftstypNaming conventionBeispiele
KontexteAaaa oder AaaaAaaaAaaaStaff, GrandStaff
Layout-ObjekteAaaa oder AaaaAaaaAaaaSlur, NoteHead
EngraverAaaa_aaa_engraverClef_engraver, Note_heads_engraver
Schnittstellenaaa-aaa-interfacegrob-interface, break-aligned-interface
Kontext-Eigenschaftenaaa oder aaaAaaaAaaaalignAboveContext, skipBars
Layout-Objekt-Eigenschaftenaaa oder aaa-aaa-aaadirection, beam-thickness

Es wird bald ersichtlich werden, dass die Eigenschaften von unterschiedlichen Objekttypen mit unterschiedlichen Befehlen geändert werden. Deshalb ist es nützlich, aus der Schreibweise zu erkennen, um was für ein Objekt es sich handelt, um den entsprechenden Befehl einsetzen zu können.


5.1.4 Postupy při ladění

Der \override-Befehl

Wir haben uns schon mit den Befehlen \set und \with bekannt gemacht, mit welchen Eigenschaften von Kontexten verändert und Engraver entfernt oder hinzugefügt werden können. Siehe dazu Změna vlastností prostředí und Přidání a odstranění rytců. Jetzt wollen wir uns weitere wichtige Befehle anschauen.

Der Befehl, um die Eigenschaften von Layout-Objekten zu ändern, ist \override. Weil dieser Befehl interne Eigenschaften tief in der Programmstruktur von LilyPond verändern muss, ist seine Syntax nicht so einfach wie die der bisherigen Befehle. Man muss genau wissen, welche Eigenschaft welches Objektes in welchem Kontext geändert werden soll, und welches der neu zu setzende Wert dann ist. Schauen wir uns an, wie das vor sich geht.

Die allgemeine Syntax dieses Befehles ist:

\override Kontext.LayoutObjekt #'layout-eigenschaft =
#Wert

Damit wir die Eigenschaft mit der Bezeichnung layout-property das Layout-Objektes mit der BezeichnungLayoutObject, welches ein Mitglied des Kontext-Kontextes ist, auf den Wert value.

Der Kontext kann (und wird auch normalerweise) ausgelassen werden, wenn der benötigte Kontext eindeutig impliziert ist und einer der untersten Kontexte ist, also etwa Voice, ChordNames oder Lyrics. Auch in diesem Text wird der Kontext oft ausgelassen werden. Später soll gezeigt werden, in welchen Fällen er ausdrücklich definiert werden muss.

Spätere Abschnitte behandeln umfassend Eigenschaften und ihre Werte, aber um ihre Funktion und ihr Format zu demonstrieren, werden wir hier nur einige einfache Eigenschaften und Werte einsetzen, die einfach zu verstehen sind.

Für den Moment könne Sie die #'-Zeichen ignorieren, die vor jeder Layout-Eigenschaft, und die #-Zeichen, die vor jedem Wert stehen. Sie müssen immer in genau dieser Form geschrieben werden. Das ist der am häufigsten gebrauchte Befehl für die Optimierung, und der größte Teil dieses Abschnittes wird dazu benutzt, seine Benutzung zu erläutern. Hier ein einfaches Beispiel, um die Farbe des Notenkopfes zu ändern:

\relative {
  c'4 d
  \override NoteHead.color = #red
  e4 f |
  \override NoteHead.color = #green
  g4 a b c |
}

[image of music]

Der \revert-Befehl

Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr neuer Wert so lange bewahrt, bis er noch einmal überschrieben wird oder ein \revert-Befehl vorkommt. Der \revert-Befehl hat die folgende Syntax und setzt den Wert der Eigenschaft zurück auf den Standardwert, nicht jedoch auf den vorigen Wert, wenn mehrere \override-Befehle benutzt wurden.

\revert Kontext.LayoutObjekt #'layout-eigenschaft

Wiederum, genauso wie der Kontext bei dem \override-Befehl, wird Kontext oft nicht benötigt. Er wird in vielen der folgenden Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes wieder auf den Standardwert für die letzten zwei Noten gesetzt.

\relative {
  c'4 d
  \override NoteHead.color = #red
  e4 f |
  \override NoteHead.color = #green
  g4 a
  \revert NoteHead.color
  b4 c |
}

[image of music]

\once-Präfix

Sowohl der \override-Befehl als auch der \set-Befehl können mit dem Präfix \once (einmal) versehen werden. Dadurch wird der folgende \override- oder \set-Befehl nur für den aktuellen Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes geändert werden:

c4 d
\once \override NoteHead.color = #red
e4 f |
\once \override NoteHead.color = #green
g4 a b c |

[image of music]

Der \overrideProperty-Befehl

Es gibt eine andere Form des override-Befehls, \overrideProperty (überschreibe Eigenschaft), welcher ab und zu benötigt wird. Es wird hier nur der Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert in Schwierige Korrekturen.

Der \tweak-Befehl

Der letzte Optimierungsbefehl in LilyPond ist \tweak (engl. optimieren). Er wird eingesetzt um Eigenschaften von Objekten zu verändern, die zum selben Musik-Moment auftreten, wie etwa die Noten eines Akkordes. Ein \override würde alle Noten des Akkords beeinflussen, während mit \tweak nur das nächste Objekt der Eingabe geändert wird.

Hier ein Beispiel. Angenommen, die Größe des mittleren Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert werden. Schauen wir zuerst, was wir mit \once \override erhalten:

\relative {
  <c' e g>4
  \once \override NoteHead.font-size = #-3
  <c e g>4
  <c e g>4
}

[image of music]

Wie man sehen kann, beeinflusst override alle Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten eines Akkordes zum selben Musik-Moment auftreten und die Funktion von \once ist es, die Optimierung auf an allen Objekten auszuführen, die zum selben Musik-Moment auftreten wie der \override-Befehl.

Der \tweak-Befehl funktioniert anders. Er bezieht sich auf das direkt folgende Element in der Eingabe-Datei. Es wirkt aber auch nur mit Objekten, die direkt von der Eingabe kreiert werden, insbesondere Notenköpfe und Artikulationszeichen. Objekte wie etwa Hälse oder Versetzungszeichen werden erst später erstellt und lassen sich nicht auf diese Weise ändern. Zusätzlich müssen sich etwa Notenköpfe innerhalb eines Akkordes befinden, d. h. sie müssen von einfachen spitzen Klammern umschlossen sein. Um also eine einzelne Note mit \tweak zu verändern, muss der Befehl innerhalb der spitzen Klammern zusammen mit der Note eingegeben werden.

Um also zu unserem Beispiel zurückzukommen, könnte man die mittlere Note eines Akkordes auf diese Weise ändern:

\relative {
  <c' e g>4
  <c \tweak font-size #-3 e g>4
}

[image of music]

Beachten Sie, dass die Syntax des \tweak-Befehls sich von der des \override-Befehls unterscheidet. Weder Kontext noch Layout-Objekt können angegeben werden, denn das würde zu einem Fehler führen. Beide Angaben sind durch das folgende Element impliziert. Hier sollte auch kein Gleichheitszeichen vorhanden sein. Die verallgemeinerte Syntax des \tweak-Befehls ist also einfach

\tweak #'layout-eigenschaft #Wert

Ein \tweak-Befehl kann auch benutzt werden, um nur eine von mehreren Artikulationen zu ändern, wie im nächsten Beispiel zu sehen ist.

a'4^"Black"
  -\tweak color #red ^"Red"
  -\tweak color #green _"Green"

[image of music]

Beachten Sie, dass dem \tweak-Befehl ein Artikulationsmodifikator vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen wäre.

Der \tweak-Befehl muss auch benutzt werden, wenn das Aussehen einer vor mehreren geschachtelten Triolenklammern geändert werden soll, die zum selben Zeitpunkt beginnen. Im folgenden Beispiel beginnen die lange Klammer und die erste Triolenklammer zum selben Zeitpunkt, sodass ein \override-Befehl sich auf beide beziehen würde. In dem Beispiel wird \tweak benutzt, um zwischen ihnen zu unterscheiden. Der erste \tweakBefehl gibt an, dass die lange Klammer über den Noten gesetzt werden soll, und der zweite, dass die Zahl der rhythmischen Aufteilung für die erste der kurzen Klammern in rot gesetzt wird.

\relative c'' {
  \tweak direction #up
  \tuplet 3/4 {
    \tweak color #red
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
  }
}

[image of music]

Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt beginnen, kann ihr Aussehen auf die übliche Art mit dem \override-Befehl geändert werden:

\relative {
  \tuplet 3/2 { c'8[ c c] }
  \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
  \tuplet 3/2 {
    c8[ c]
    c8[ c]
    \once \override TupletNumber.transparent = ##t
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
  }
}

[image of music]

Podívejte se také na

Notationsreferenz: Der tweak-Befehl.


5.2 Vnitřní referenční příručka


5.2.1 Vlastnosti předmětů v rozvržení

Angenommen, in Ihrer Partitur tritt ein Legatobogen auf, der Ihrer Meinung nach zu dünn ausgefallen ist. Sie würden ihn gerne etwas schwerer gezeichnet sehen. Wie gehen Sie vor? Von den Anmerkungen in früheren Abschnitten wissen Sie schon, dass LilyPond sehr flexibel ist und eine derartige Modifikation möglich sein sollte, und Sie erraten vielleicht, dass ein \override-Befehl angebracht ist. Aber gibt es eine Eigenschaft für die Dicke eines Legatobogens (engl. slur), und wenn es sie gibt, auf welche Weise lässt sie sich verändern? Hier kommt die Referenz der Interna zur Geltung. Dort finden sich alle Informationen, um den beschriebenen und alle anderen \override-Befehle zu konstruieren.

Bevor Sie jetzt in die Referenz der Interna wechseln, ist eine Warnung angebracht. Es handelt sich um ein Referenzdokument, was heißt, dass es sehr wenig oder gar keine Erklärungen enthält: seine Aufgabe ist es, Information klar und genau darzustellen. Das bedeutet, dass es auf den ersten Blick entmutigend wirkt. Die Einführung und Erklärung in diesem Abschnitt wird Ihnen aber schnell ermöglichen, genau die Information aus der Referenz zu entnehmen, die Sie benötigen. Beachten Sie, dass die Referenz der Interna nur auf Englisch existiert. Um die Eigenschaftsbezeichnung eines bestimmten Objektes zu finden, können Sie das Glossar (siehe Musikglossar) verwenden, in dem die englischen Begriffe in viele andere Sprachen übersetzt sind.

Das Vorgehen soll an einem konkreten Beispiel einer echten Komposition demonstriert werden. Hier das Beispiel:

{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Angenommen also, wir wollen die Legatobögen etwas dicker setzten. Ist das möglich? Die Legatobögen sind mit Sicherheit ein Layout-Objekt, die Frage muss also lauten: „Gibt es eine Eigenschaft von Legatobögen, die die Dicke bestimmt?“ Um diese Frage zu beantworten, müssen wir in der Referenz der Interna ( kurz IR) nachschauen.

Die IR für die LilyPond-Version, die Sie benutzen, findet sich auf der LilyPond-Webseite unter der Adresse https://lilypond.org. Gehen Sie zur Dokumentationsseite und klicken Sie auf den Link zur Referenz der Interna. Die Sprache ändert sich ab hier nach englisch. Für diese Übung sollten Sie die HTML-Version benutzen, nicht die „auf einer großen Seite“ oder die PDF-Version. Damit Sie die nächsten Absätze verstehen können, müssen Sie genauso vorgehen, während Sie weiterlesen.

Unter der Überschrift Top befinden sich fünf Links. Wählen Sie den Link zum Backend, wo sich die Information über Layout-Objekte befindet. Hier, unter der Überschrift Backend, wählen Sie den Link All layout objects. Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte, die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer Ordnung. Wählen Sie den Link Slur und die Eigenschaften der Legatobögen (engl. slur) werden aufgelistet.

Eine alternative Methode, auf diese Seite zu gelangen, ist von der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen findet sich ein Link zur Referenz der Interna. Dieser Link führt Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben, wie die Bezeichnung des Layout-Objektes lauten könnte, das sie ändern wollen, ist es oft schneller, direkt zur IR zu gehen und dort nachzuschlagen.

Aus der Slur-Seite in der IR könne wir entnehmen, dass Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt werden. Dann werden die Standardeinstellungen aufgelistet. Beachten Sie, dass diese nicht in alphabetischer Reihenfolge geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft enthält, mit der die Dicke von Legatobögen kontrolliert werden kann. Sie sollten folgendes finden:

thickness (number)
     1.2
     Line thickness, generally measured in line-thickness

Das sieht ganz danach aus, als ob damit die Dicke geändert werden kann. Es bedeutet, dass der Wert von thickness einfach eine Zahl (number) ist, dass der Standardwert 1.2 ist, und dass die Einheit für die Dicke eine andere Eigenschaft mit der Bezeichnung line-thickness ist.

Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen in der IR, aber wir haben schon genug Informationen, um zu versuchen, die Dicke eines Legatobogens zu ändern. Die Bezeichnung des Layout-Objekts ist offensichtlich Slur und die Bezeichnung der Eigenschaft, die geändert werden soll thickness. Der neue Wert sollte etwas mehr als 1.2 sein, denn der Bogen soll ja dicker werden.

Den benötigten \override-Befehl können wir jetzt einfach konstruieren, indem wir die Werte für die Bezeichnungen in den Modellbefehl einfügen und den Kontext auslassen. Setzen wir einmal einen sehr großen Wert für die Dicke um zu sehen, ob der Befehl auch funktioniert. Also:

\override Slur.thickness = #5.0

Vergessen Sie nicht das Rautenzeichen und Apostroph (#') vor der Eigenschaftsbezeichnung und das Rautenzeichen vor dem neuen Wert!

Die nächste Frage ist nun: „Wohin soll dieser Befehl geschrieben werden?“ Solange wir uns noch im Lernstadium befinden, ist die beste Antwort: „Innerhalb der Noten, vor den ersten Legatobogen und nahe bei ihm.“ Also etwa so:

{
  \key es \major
  \time 6/8
  \relative {
    % Increase thickness of all following slurs from 1.2 to 5.0
    \override Slur.thickness = #5.0
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

und wirklich wird der Legatobogen dicker.

Das ist also die grundlegende Herangehensweise, \override-Befehl zu formulieren. Es gibt einige zusätzliche Komplikationen, denen wir uns später widmen werden, aber Sie haben jetzt das Handwerkszeug, um Ihre eigenen Befehle zu konstruieren – wenn Sie auch noch etwas Übung benötigen. Die sollen Sie durch die folgenden Übungen erhalten.

Den Kontext finden

Manchmal muss dennoch der Kontext spezifiziert werden. Welcher aber ist der richtige Kontext? Wir könnten raten, dass Legatobögen sich im Voice-Kontext befinden, denn sie sind immer einzelnen Melodielinien zugewiesen. Aber wir können uns dessen nicht sicher sein. Um unsere Annahme zu überprüfen, gehen wir wieder zu der Seite im IR, die die Legatobögen beschreibt und die Überschrift Slur hat. Dort steht: „Slur objects are created by: Slur engraver“. Legatobögen werden also in dem Kontext erstellt, in dem sich der Slur_engraver befindet. Folgen Sie dem Link zu der Slur_engraver-Seite. Unten auf der Seite steht, dass der Slur_engraver sich in fünf Stimmen-Kontexten befindet, unter anderem auch im normalen Voice-Kontext. Unsere Annahme war also richtig. Und weil Voice einer der Kontexte der untersten Ebene ist, welcher eindeutig schon dadurch definiert ist, dass wir Noten eingeben, kann er an dieser Stelle auch weggelassen werden.

Nur einmal mit \override verändern

Im Beispiel oben wurden alle Legatobögen dicker gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen dicker haben. Das können Sie mit dem \once-Befehl erreichen. Er wird direkt vor den \override-Befehl gesetzt und bewirkt, dass nur der Bogen geändert wird, der unmittelbar an der nächsten Note beginnt. Wenn die nächste Note keinen Bogenbeginn hat, dann passiert gar nichts – der Befehl wird nicht gespeichert, sondern einfach vergessen. Der Befehl, mit \once zusammen benutzt, muss also wie folgt positioniert werden:

{
  \time 6/8
  {
    \key es \major
    r4 bes8
    % Increase thickness of immediately following slur only
    \once \override Slur.thickness = #5.0
    bes8[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Jetzt bezieht er sich nur noch auf den ersten Legatobogen.

Der \once-Befehl kann übrigens auch vor einem \set-Befehl eingesetzt werden.

Rückgängig machen

Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen, jeden mit dem \once-Präfix und direkt vor die entsprechende Note gestellt, an welcher der Bogen beginnt:

{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Increase thickness of immediately following slur only
    \once \override Slur.thickness = #5.0
    bes[( g]) g |
    % Increase thickness of immediately following slur only
    \once \override Slur.thickness = #5.0
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Wir könnten aber auch den \once-Befehl weglassen und anstelle dessen später den \revert-Befehl einsetzen, um die thickness-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:

{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Increase thickness of all following slurs from 1.2 to 5.0
    \override Slur.thickness = #5.0
    bes[( g]) g |
    g8[( es]) es
    % Revert thickness of all following slurs to default of 1.2
    \revert Slur.thickness
    d8[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Der \revert-Befehl kann benutzt werden, um eine beliebige Eigenschaft, die mit \override geändert worden ist, wieder in ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche Resultat.

Damit endet die Einleitung in die Referenz der Interna (IR) und die grundlegenden postupy při ladění. Einige Beispiele folgen in späteren Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten zu geben, die relevante Information dort zu finden. Die Beispiele werden Schritt für Schritt immer weniger Erklärungen beinhalten.


5.2.2 Vlastnosti nacházející se v rozhraních

Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für ein \override-Befehl wird dazu benötigt? Schauen wir uns zunächst das Inhaltsverzeichnis in der IR an: „All layout objects“, wie auch schon zuvor. Welches Objekt könnte die Darstellung des Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag LyricText, das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften an, die verändert werden können. Dazu gehört font-series und font-size, aber nichts, womit man kursiven Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften zusammen in einem Interface – einer Schnittstelle – verortet; in diesem Fall das font-interface.

Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften benutzen.

Schauen Sie sich noch einmal die Seite in der IR an, die LyricText beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version der IR) an Eigenschaften, die von LyricText unterstützt werden. Diese Liste enthält sieben Einträge, darunter auch font-interface. Ein Klick hierauf bringt uns zu den Eigenschaften, die mit dieser Schnittstelle verbunden sind, also auch LyricText.

Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann, um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch font-shape(symbol), wobei symbol auf die Werte upright (gerade), italics (kursiv) oder caps (Kapitälchen) gesetzt werden kann.

Sie werden gemerkt haben, dass font-series und font-size hier auch aufgelistet sind. Es stellt sich die Frage, warum diese allgemeinen Schriftarteigenschaften font-series und font-size sowohl unter der Überschrift LyricText als unter dem font-interface aufgelistet sind, aber font-shape befindet sich nur im font-interface? Die Antwort ist: Die globalen Einstellungen von font-series und font-size werden geändert, wenn ein LyricText-Objekt erstellt wird, aber font-shape wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der Überschrift LyricText beinhalten dann die Werte der Standardeinstellungen dieser zwei Eigenschaften, wenn es sich um ein LyricText-Objekt handelt. Andere Objekte, die auch das font-interface unterstützen, setzen diese Eigenschaften anders, wenn sie erstellt werden.

Versuchen wir nun einen \override-Befehl zu konstruieren, der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung LyricText, die Eigenschaft ist font-shape und der Wert italic. Wie vorher schon lassen wir den Kontext aus.

Am Rande sei angemerkt, dass die Werte der font-shape-Eigenschaft mit einem Apostroph (') gekennzeichnet werden müssen, weil es sich um Symbole handelt. Aus dem gleichen Grund mussten auch für thickness weiter oben im Text ein Apostroph gesetzt werden. Symbole sind besondere Bezeichnungen, die LilyPond intern bekannt sind. Einige sind Bezeichnungen von Eigenschaften, wie eben thickness oder font-shape. Andere sind besondere Werte, die an Eigenschaften übergeben werden können, wie italic. Im Unterschied hierzu gibt es auch beliebige Zeichenketten, die immer mit Anführungszeichen, also als "Zeichenkette" auftreten. Für weitere Einzelheiten zu Zeichenketten und Werten, siehe Scheme-Übung.

Gut, der \override-Befehl, mit dem der Gesangstext kursiv gesetzt wird, lautet:

\override LyricText.font-shape = #'italic

und er muss direkt vor den Text gesetzt werden, auf den er sich bezieht, etwa so:

{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    \override LyricText.font-shape = #'italic
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Jetzt wird der Text kursiv gesetzt.

Den Kontext im Liedtextmodus bestimmen

Bei Gesangstexten funktioniert der \override-Befehl nicht mehr, wenn Sie den Kontext im oben dargestellten Format angeben. Eine Silbe wird im Gesangtextmodus (lyricmode) entweder von einem Leerzeichen, einer neuen Zeile oder einer Zahl beendet. Alle anderen Zeichen werden als Teil der Silbe integriert. Aus diesem Grund muss auch vor der schließenden Klammer } ein Leerzeichen gesetzt oder eine neue Zeile begonnen werden. Genauso müssen Leerzeichen vor und nach einem Punkt benutzt werden, um die Kontext-Bezeichnung von der Objekt-Bezeichnung zu trennen, denn sonst würden beide Bezeichnungen als ein Begriff interpretiert und von LilyPond nicht verstanden werden. Der Befehl muss also lauten:

\override Lyrics.LyricText.font-shape = #'italic

Pozor: Innerhalb von Gesangstext muss immer ein Leerzeichen zwischen der letzten Silbe und der schließenden Klammer gesetzt werden.

Pozor: Innerhalb von \override-Befehlen in Gesangstexten müssen Leerzeichen um Punkte zwischen Kontext- und Objektbezeichnungen gesetzt werden.

Podívejte se také na

Erweitern: Scheme-Übung.


5.2.3 Typy vlastností

Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu tun: number (Zahl) und symbol. Damit ein Befehl funktioniert, muss der Wert einer Eigenschaft vom richtigen Typ sein und die Regeln befolgen, die für diesen Typ gelten. Der Eigenschaftstyp ist in der IR in Klammern hinter der Eigenschaftsbezeichnung angegeben. Hier eine Liste der Typen, die Sie vielleicht benötigen werden, mit den Regeln, die für den jeweiligen Typ gelten und einigen Beispielen. Sie müssen immer ein Rautenzeichen (#) vor den Typeintrag setzen, wenn sie in einem \override-Befehl benutzt werden.

EigenschaftstypRegelnBeispiele
BooleschEntweder wahr oder falsch, dargestellt als #t oder #f#t, #f
Dimension (in Notenlinienabständen)Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten)2.5, 0.34
RichtungEine gültige Richtungskonstante oder das numerische ÄquivalentLEFT, CENTER, UP, 1, -1
IntegerEine positive ganze Zahl3, 1
ListeEine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt und angeführt von einem Apostroph'(left-edge staff-bar), '(1), '(1.0 0.25 0.5)
Textbeschriftung (markup)Beliebige gültige Beschriftung\markup { \italic "cresc." }
MomentEin Bruch einer ganzen Note, mit der make-moment-Funktion konstruiert(ly:make-moment 1/4), (ly:make-moment 3/8)
ZahlEine beliebige positive oder negative Dezimalzahl3.5, -2.45
Paar (Zahlenpaar)Zwei Zahlen getrennt von „Leerzeichen . Leerzeichen“, eingeklammert und angeführt von einem Apostroph'(2 . 3.5), '(0.1 . -3.2)
SymbolEine beliebige Anzahl von Symbolen, die für die Eigenschaft gültig sind, angeführt von einem Apostroph'italic, 'inside
UnbekanntEine Prozedur oder #f (um keine Aktion hervorzurufen)bend::print, ly:text-interface::print, #f
VektorEine Liste mit drei Einträgen, eingeklammert und mit Apostroph-Raute ( '#) angeführt.'#(#t #t #f)

Podívejte se také na

Erweitern: Scheme-Übung.


5.3 Vzhled předmětů

In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der vorigen Abschnitte in der Praxis angewandt werden können, um das Aussehen des Musiksatzes zu beeinflussen.


5.3.1 Viditelnost a barva předmětů

In Unterrichtsmaterial für den Musikunterricht wird oft eine Partitur dargestellt, in der bestimmte Notationselemente fehlen, so dass der Schüler die Aufgabe bekommt, die nachzutragen. Ein einfaches Beispiel ist etwa, die Taktlinien zu entfernen, damit der Schüler sie selber zeichnen kann. Aber die Tatklinien werden normalerweise automatisch eingefügt. Wie verhindern wir, dass sie ausgegeben werden?

Bevor wir uns hieran machen, sei daran erinnert, dass Objekteigenschaften in sogenannten Schnittstellen – engl. interface – gruppiert sind, siehe auch vlastnosti nacházející se v rozhraních. Das dient ganz einfach dazu, die Eigenschaften zusammenzufassen, die üblicherweise zusammen benötigt werden – wenn eine davon für ein Objekt gilt, dann auch die anderen. Manche Objekte brauchen die Eigenschaften von der einen Schnittstelle, andere von einer anderen. Die Schnittstellen, die die Eigenschaften von einem bestimmten Grob beinhalten, sind in der IR unten auf der Seite aufgelistet, die dieses Grob beschreibt. Die Eigenschaften können betrachtet werden, indem die Seite der entsprechenden Schnittstelle geöffnet wird.

Zu Information, wie man Eigenschaften von Grobs findet, siehe vlastnosti předmětů v rozvržení. Wir benutzen also jetzt die selbe Methode um in der IR das Layout-Objekt zu finden, dass für die Tatklinien zuständig ist. Über die Überschriften Backend und All layout objects kommen wir zu einem Layout-Objekt mit der Bezeichnung BarLine (engl. TaktLinie). Seine Eigenschaften beinhalten zwei, die über die Sichtbarkeit entscheiden: break-visibility und stencil. BarLine unterstützt auch einige Schnittstellen, unter anderem grob-interface, wo wir eine transparent und eine color-Eigenschaft finden. Alle können die Sichtbarkeit von Taktlinien (und natürlich auch die Sichtbarkeit von vielen anderen Objekten) beeinflussen. Schauen wir uns diese Eigenschaften eine nach der anderen an.

stencil (Matrize)

Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien, indem sie das Symbol bestimmt, das ausgegeben werden soll. Wie bei vielen anderen Eigenschaften auch, kann sie so eingestellt werden, dass sie nichts ausgibt, indem ihr Wert auf #f (falsch) gesetzt wird. Ein Versuch also, wie vorher, indem wir den impliziten Kontext (Voice) auslassen:

{
  \time 12/16
  \override BarLine.stencil = ##f
  c4 b8 c d16 c d8
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Die Taktlinien werden aber immer noch angezeigt. Was ist da falsch gelaufen? Gehen Sie zurück zur IR und schauen Sie auf die Seite, die die Eigenschaften für BarLine angibt. Oben auf der Seite steht: „Barline objects are created by: Bar_engraver“. Schauen Sie sich die Bar_engraver-Seite an. Unten auf der Seite steht eine Liste der Kontexte, in denen der Takt-Engraver funktioniert. Alle Kontexte sind Staff-Typen (also Notensystem-Typen). Der Grund, warum der \override-Befehl nicht funktioniert hat, liegt also darin, dass das Taktlinie-Objekt (BarLine) sich nicht im Voice-Kontext befindet. Wenn der Kontext falsch angegeben wird, bewirkt der Befehl einfach gar nichts. Keine Fehlermeldung wird ausgegeben und auch nichts in die Log-Datei geschrieben. Versuchen wir also, den richtigen Kontext mit anzugeben:

{
  \time 12/16
  \override Staff.BarLine.stencil = ##f
  c4 b8 c d16 c d8
  g,8 a16 b8 c d4 e16
  e8
}

[image of music]

Jetzt sind die Taktlinien wirklich verschwunden.

Es sollte jedoch beachtet werden, dass das Setzen der stencil-Eigenschaft auf #f zu Fehlerhinweisen führen kann, wenn die Dimensionen des Objekts für die richtige Behandlung benötigt werden. Zum Beispiel werden Fehler ausgegeben, wenn die stencil-Eigenschaft des NoteHead-Objekts auf #f gesetzt wird. Wenn dieser Fall auftritt, kann anstatt dessen die point-stencil-Funktion benutzt werden, welche den Stencil auf ein Objekt mit der Größe Null setzt:

\relative {
  c''4 c
  \once \override NoteHead.stencil = #point-stencil
  c4 c
}

[image of music]

break-visibility (unsichtbar machen)

Aus der Beschreibung der Eigenschaften für BarLine in der IR geht hervor, dass die break-visibility-Eigenschaft einen Vektor mit drei Booleschen Werten benötigt. Diese kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile, in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben werden. Wenn also alle Taktlinien unsichtbar sein sollen, wie in unserem Beispiel, brauchen wir den Wert '#(#f #f #f). Versuchen wir es also, und berücksichtigen wir auch den Staff-Kontext. Beachten Sie auch, dass Sie ## vor der öffnenden Klammer schreiben müssen: # wird benötigt als Teil des Wertes, um einen Vektor zu signalisieren, und das erste # wird benötigt, um den Wert in einem \override-Befehl anzuführen.

{
  \time 12/16
  \override Staff.BarLine.break-visibility = ##(#f #f #f)
  c4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.

transparent (durchsichtig)

Aus den Eigenschaftsdefinitionen auf der grob-interface-Seite in der IR geht hervor, dass die transparent-Eigenschaft boolesch ist. Mit #t (wahr) wird also ein Grob durchsichtig gemacht. Im unserem Beispiel soll jetzt die Taktart durchsichtig gemacht werden, anstatt die Taktlinien durchsichtig zu machen. Wir brauchen also wieder die Grob-Bezeichnung für die Taktart. Auf der „All layout objects“-Seite in der IR müssen wir die Eigenschaften des TimeSignature-Layout-Objekts suchen Das Objekt wird vom Time_signature_engraver erstellt, der sich auch im Staff-Kontext befindet und genauso das grob-interface unterstützt, wie Sie sich überzeugen können. Der Befehl, um die Taktangabe unsichtbar zu machen, ist also:

\relative {
  \time 12/16
  \override Staff.TimeSignature.transparent = ##t
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein freier Platz gelassen, wo sich die Taktangabe eigentlich befinden würde. Das braucht man vielleicht für eine Schulaufgabe, in der die richtige Taktangabe eingefügt werden soll, aber in anderen Fällen ist diese Lücke nicht schön. Um auch die Lücke zu entfernen, muss die Matrize (stencil) der Taktangabe auf #f (falsch) gesetzt werden:

{
  \time 12/16
  \override Staff.TimeSignature.stencil = ##f
  c4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt entfernt, während man mit transparent ein Objekt unsichtbar machen kann, es aber an seinem Platz gelassen wird.

color (Farbe)

Abschließend wollen wir die Taktlinien unsichtbar machen, indem wir sie weiß einfärben. (Es gibt hier eine Schwierigkeit: die weiße Taktlinie übermalt manchmal die Taktlinien, wo sie sie kreuzt, manchmal aber auch nicht. Sie können in den Beispielen unten sehen, dass das nicht vorhersagbar ist. Die Einzelheiten dazu, warum das passiert und wie sie es kontrollieren können, werden dargestellt in Objekte weiß malen. Im Moment wollen wir lernen, wie man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die Beschränkung.)

Das grob-interface bestimmt, dass der Wert der Farb-Eigenschaft eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das sein soll. Die Liste, die benötigt wird, ist eine Liste mit Werten in internen Einheiten, aber damit Sie nicht wissen müssen, wie diese aussehen, gibt es mehrere Wege, Farben anzugeben. Der erste Weg ist es, „normale“ Farben zu benutzen, wie sie in der Tabelle in Liste der Farben aufgelistet sind. Beachten Sie, dass die Bezeichnungen auf Englisch sind. Um die Taktlinien auf weiß zu setzen, können Sie schreiben:

\relative {
  \time 12/16
  \override Staff.BarLine.color = #white
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

und die Taktlinien verschwinden in der Tat. Beachten Sie, dass white nicht mit einem Apostroph angeführt wird – es ist kein Symbol, sondern eine Funktion. Wenn sie aufgerufen wird, stellt sie eine Liste mit internen Werten zu Verfügung, mit welcher die Farbe auf weiß gestellt wird. Die anderen Farben in der Liste sind auch Funktionen. Um sich zu überzeugen, dass der Befehl auch wirklich funktioniert, können Sie die Farbe auf eine der anderen Funktionen dieser Liste abändern.

Die zweite Art die Farbe zu ändern geschieht, indem die Liste der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste in Liste der Farben. Diesen Farben muss jedoch eine andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen in interne Werte konvertiert: x11-color. Das geschieht wie folgt:

\relative {
  \time 12/16
  \override Staff.BarLine.color = #(x11-color 'white)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

In diesem Fall hat die Funktion x11-color ein Symbol als Argument, darum muss dem Symbol ein Apostroph vorangestellt und beide zusammen in Klammern gesetzt werden.

Es gibt noch eine dritte Funktion, die RGB-Werte in die internen Werte übersetzt – die rgb-color-Funktion. Sie braucht drei Argumente, um die Stärke von Rot, Grün und Blau darzustellen. Die Werte befinden sich zwischen 0 und 1. Um also die Farbe Rot darzustellen, muss der Wert der Funktion lauten: (rgb-color 1 0 0), weiß würde sein: (rgb-color 1 1 1).

\relative {
  \time 12/16
  \override Staff.BarLine.color = #(rgb-color 1 1 1)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Schließlich gibt es noch eine Grauskala, die zu den X11-Farben gehört. Sie reicht von schwarz ('grey0') bis weiß ('grey100), in Einerschritten. Wir wollen das illustrieren, indem alle Layout-Objekte im Beispiel verschiede Grauschattierungen erhalten:

\relative {
  \time 12/16
  \override Staff.StaffSymbol.color = #(x11-color 'grey30)
  \override Staff.TimeSignature.color = #(x11-color 'grey60)
  \override Staff.Clef.color = #(x11-color 'grey60)
  \override Voice.NoteHead.color = #(x11-color 'grey85)
  \override Voice.Stem.color = #(x11-color 'grey85)
  \override Staff.BarLine.color = #(x11-color 'grey10)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt verbunden sind. Es ist wichtig, den richtigen Kontext einzusetzen, damit die Befehle funktionieren. Denken Sie daran, dass der Kontext sich daran orientiert, wo sich der entsprechende Engraver befindet. Den Standardkontext für Engraver finden Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver gehen, der es produziert und auf der Seite des Engravers in der IR finden Sie Information, in welchem Kontext sich der Engraver normalerweise befindet.


5.3.2 Velikost předmětů

Als Startpunkt wollen wir wieder ein früheres Beispiel wählen, siehe Naskládání hudebních výrazů do sebe. Hier wurde ein neues Notensystem erstellt, wie man es für ein ossia braucht.

\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f c c }
      \new Staff \with {
        alignAboveContext = "main" }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt. Wie man Schlüssel und Taktangabe entfernt, wissen wir schon: wir setzen den Stencil von beiden auf #f:

\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
      }
      {
        \override Staff.Clef.stencil = ##f
        \override Staff.TimeSignature.stencil = ##f
        { f8 f c }
      }
    >>
    r4
  }
}

[image of music]

wobei ein zusätzliches Klammerpaar nach der \with-Konstruktion erforderlich ist um sicherzugehen, dass die Modifikation und die Noten sich auch auf das Ossia-System beziehen.

Was für einen Unterschied macht es, ob man den Staff-Kontext mit \with verändert, oder ob man die Stencils mit \override beeinflusst? Der größte Unterschied liegt darin, dass Änderungen, die mit \with eingeführt werden, während der Erstellung des Kontextes miterzeugt werden und als Standardeinstellungen für diesen Kontext während seiner gesamten Dauer gelten, während \set- oder \override-Befehle dynamisch in die Noten eingebettet werden – sie führen die Änderungen synchron mit einem bestimmten Zeitpunkt in der Musik aus. Wenn die Änderungen mit \unset oder \revert rückgängig gemacht werden, werden wieder die Standardwerte eingesetzt, die also die sind, die mit einer \with-Konstruktion definiert wurden, oder wenn hier keine definiert worden sind, die normalen Standardwerte.

Manche Kontexteigenschaften können nur ein einer \with-Konstruktion verändert werden. Das sind Eigenschaften, die nicht sinnvoll mitten im System geändert werden können. alignAboveContext (Orientierung über dem Kontext) und die Parallele, alignBelowContext (Orientierung unter dem Kontext) sind zwei derartige Eigenschaften – wenn das Notensystem einmal erstellt wurde, ist die Orientierung schon bestimmt und es wäre nicht sinnvoll, sie später zu ändern.

Die Standardwerte für Layout-Objekt-Eigenschaften können auch in der \with-Konstruktion gesetzt werden. Benutzen Sie einfach den normalen \override-Befehl ohne den Kontext, denn der Kontext ist eindeutig definiert durch die Stelle, an welcher sich \with befindet. Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond eine Fehlermeldung.

Das obige Beispiel könnte also auch so aussehen:

\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        % Don't print clefs in this staff
        \override Clef.stencil = ##f
        % Don't print time signatures in this staff
        \override TimeSignature.stencil = ##f
      }
      { f8 f c }
    >>
    r4
  }
}

[image of music]

Nun können wir daran gehen, auch wirklich die Größe der Objekte zu ändern.

Manche Layout-Objekte werden aus Glyphen erstellt, die sich in einer Schriftartdatei befinden. Dazu gehören die Notenköpfe, Versetzungszeichen, Text, Schlüssel, Taktbezeichnung, Dynamik und Gesangstext. Ihre Größe wird verändert, indem die font-size- (Schriftgröße)-Eigenschaft geändert wird, wie wir bald sehen werden. Andere Layout-Objekte, wie Bögen – oder allgemein Strecker-Objekte – werden individuell gezeichnet, es gibt dazu also keine font-size, die mit ihnen verknüpft wäre. Weitere Eigenschaften wie die Länge von Hälsen und Taktlinien, Dicke von Balken und anderen Linien und der Abstand der Notenlinien voneinander müssen auf spezielle Weise verändert werden.

In unserem Ossia-Beispiel wollen wir zuerst die Schriftgröße verändern. Das ist auf zwei Arten möglich. Entweder wir ändern die Schriftgröße für jede Objektart mit einem eigenen Befehl, etwa:

\override NoteHead.font-size = #-2

oder wir ändern die Größe aller Schriftobjekte, indem wir den Wert einer besonderen Eigenschaft, fontSize, mit dem \set-Befehl bestimmen oder sie in eine \with-Konstruktion (ohne \set einschließen.

\set fontSize = #-2

Beide Beispiele reduzieren die Schriftgröße um zwei Schritte im Vergleich zum vorigen Wert, wobei jeder Schritt die Schriftgröße um etwa 12% verändert.

Setzen wir das also in unserem Ossia-Beispiel ein:

\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \override Clef.stencil = ##f
        \override TimeSignature.stencil = ##f
        % Reduce all font sizes by ~24%
        fontSize = #-2
      }
      { f8 f c }
    >>
    r4
  }
}

[image of music]

Das sieht aber immer noch nicht richtig aus. Die Notenköpfe und Fähnchen sind kleiner, aber die Hälse im Vergleich dazu zu lang und die Notenlinien zu weit auseinander. Sie müssen auch proportional zur Schriftart verkleinert werden. Der nächste Abschnitt behandelt diese Anpassung.


5.3.3 Délka a tloušťka předmětů

Abstände und Längen werden in LilyPond üblicherweise in Notenlinienabständen (engl. staff-spaces) gemessen. Das ist der Abstand zwischen zwei Notenlinien im System. Die meisten Dicken (engl. thickness) dagegen werden in einer internen Einheit Linien-Dicke (engl. line-thickness) gemessen. Die Linien von Dynamikklammern zum Beispiel haben standardmäßig eine Dicke von einer Einheit line-thickness, während die Dicke eines Notenhalses 1,3 ist. Beachten Sie jedoch, dass sich manche Dicken anders verhalten: die Dicke von Balken etwa wird in Notenlinienabständen gemessen.

Wie also werden Längen skaliert um der Schriftgröße zu entsprechen? Das kann mit einer besonderen Funktion magstep vorgenommen werden, die genau für diesen Zweck vorhanden ist. Sie nimmt ein Argument auf, die Änderung der Schriftgröße (#-2 im obigen Beispiel) und gibt einen Skalierungsfaktor aus, der dazu dient, Objekte proportionell zueinander zu verändern. So wird sie benutzt:

\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \override Clef.stencil = ##f
        \override TimeSignature.stencil = ##f
        fontSize = #-2
        % Reduce stem length and line spacing to match
        \override StaffSymbol.staff-space = #(magstep -2)
      }
      { f8 f c }
    >>
    r4
  }
}

[image of music]

Da die Länge eines Halses und viele andere Längeneigenschaften relativ zum Wert des Notenlinienabstands (staff-space) errechnet werden, werden sie auch automatisch verkleinert. Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias aus – die horizontale Skala ist durch das Layout des Haupsystems bestimmt und wird also von diesen Größenänderungen nicht betroffen. Wenn natürlich die Größe der gesamten Noten reduziert würde, würde sich auch die horizontalen Abstände ändern. Dass wird später im Layout-Abschnitt betrachtet.

Mit dieser Änderung ist unser Ossia fertig. Die Größen und Längen aller anderen Objekte können auf analoge Weise geändert werden.

Für kleine Größenänderungen, wie in dem obigen Beispiel, braucht die Dicke der verschiedenen Linien, wie Taktlinien, Notenlinien, Balken, Dynamikklammern usw. normalerweise keine spezielle Anpassung. Wenn die Dicke eines bestimmten Layout-Objektes angepasst werden muss, kann man das erreichen, indem die entsprechende thickness-Eigenschaft des Objekts mit \override verändert wird. Ein Beispiel, wie man die Dicke von Bögen ändert, wurde schon gezeigt, siehe vlastnosti předmětů v rozvržení. Die Dicke aller gezeichneten Objekte (die also nicht aus einer Schriftart stammen) können auf gleiche Weise geändert werden.


5.4 Umístění předmětů


5.4.1 Automatické chování

Es gibt Objekte der Notation, die zum Notensystem gehören, und andere, die außerhalb des Systems gesetzt werden müssen. Sie werden within-staff-Objekte bzw. outside-staff-Objekte genannt.

within-staff-Objekte werden innerhalb des Notensystems (engl. staff) gesetzt: Notenköpfe, Hälse, Versetzungszeichen usw. Ihre Position ist üblicherweise durch die notierte Musik bestimmt – sie werden vertikal auf bestimmten Linien notiert oder sind an andere Objekte gebunden, die vertikal festgelegt sind. Kollisionen von Notenköpfen, Hälsen und Versetzungszeichen werden normalerweise automatisch vermieden. Es gibt Befehle, um dieses automatische Verhalten zu verändern, wie unten gezeigt werden soll.

Objekte, die außerhalb des Notensystems gesetzt werden, sind unter Anderem Übungsmarkierungen, Text und Dynamikzeichen. LilyPonds Regel für ihre vertikale Positionierung lautet, sie so nah wie möglich am Notensystem zu setzen, aber nicht so nah, dass sie mit anderen Objekten kollidieren. Dabei wird die outside-staff-priority-(Priorität außerhalb des Notensystems)-Eigenschaft eingesetzt, um die Reihenfolge zu bestimmen, in denen Objekte gesetzt werden sollen.

Zuerst werden alle Innersystemobjekte von LilyPond gesetzt. Dann werden die Objekte außerhalb des Systems nach ihrer outside-staff-priority geordnet. Die outside-staff-Objekte werden dann nacheinander gesetzt, mit der niedrigsten Priorität beginnend, und so gesetzt, dass sie nicht mit anderen Objekten kollidieren, die schon gesetzt wurden. Wenn also zwei outside-staff-Objekte um den selben Platz streiten, wird das mit der geringeren outside-staff-priority näher am System gesetzt werden. Wenn zwei Objekte die selbe Priorität haben, wird das näher am System gesetzt, welches zuerst auftritt.

Im folgenden Beispiel haben alle Textbeschriftungen die gleiche Priorität (weil sie nicht explizit gesetzt worden ist). Beachten Sie, dass „Text3“ wieder dicht am System gesetzt wurde, weil er unter „Text2“ passt.

c2^"Text1"
c2^"Text2"
c2^"Text3"
c2^"Text4"

[image of music]

Notensysteme werden in den Standardeinstellungen auch so dicht beieinander gesetzt wie es möglich ist (mit einem minimalen Abstand). Wenn Noten sehr weit aus einem System herausragen, zwingen sie das nächste System weiter weg, wenn eine Kollision drohen würde. Im nächsten Beispiel sehen Sie, wie Noten auf zwei Systemen „ineinander greifen“.

<<
  \new Staff {
    \relative { c'4 a, }
  }
  \new Staff {
    \relative { c''''4 a, }
  }
>>

[image of music]


5.4.2 Předměty uvnitř notové osnovy

Es wurde schon gezeigt, wie die Befehle \voiceXXX die Richtung von Bögen, Fingersatz und allen anderen Objekten beeinflusst, die von der Richtung der Notenhälsen abhängen. Diese Befehle sind nötig, wenn polyphone Musik geschrieben wird, damit sich die einzelnen Melodielinien klar abzeichnen. Es kann aber von Zeit zu Zeit nötig sein, dieses automatische Verhalten zu verändern. Das kann entweder für ganze Abschnitte, aber genauso auch nur für eine einzelne Note vorgenommen werden. Die Eigenschaft, die die Richtung bestimmt, ist die direction-Eigenschaft jedes Layout-Objekts. Es soll erst erklärt werden, was sie bewirkt und dann eine Anzahl an fertigen Befehlen für die üblicheren Situationen präsentiert werden, mit denen Sie gleich loslegen können.

Manche Layout-Objekte, wie Legato- und Bindebögen, biegen sich oder zeigen entweder nach oben oder nach unten, andere, wie Hälse und Fähnchen, verändern auch die Position rechts oder links, je nach der Richtung, in die sie zeigen. Das wird automatisch berücksichtigt, wenn die direction-Eigenschaft verändert wird.

Das folgende Beispiel zeigt im ersten Takt die Standardeinstellung für Hälse, die bei hohen Noten nach unten zeigen und bei tiefen noten nach oben. Im nächsten Takt werden alle Hälse nach unten gezwungen, im dritten Takt nach oben, und im vierten wird wieder der Standard eingestellt.

a4 g c a
\override Stem.direction = #DOWN
a4 g c a
\override Stem.direction = #UP
a4 g c a
\revert Stem.direction
a4 g c a

[image of music]

Hier werden die Konstanten DOWN und UP eingesetzt. Sie haben die Werte -1 bzw. +1, und diese numerischen Werte können ebenso benutzt werden. Auch der Wert 0 kann in manchen Fällen benutzt werden. Er bedeutet für die Hälse das gleiche wie UP, für einige andere Objekte jedoch „zentriert“. Es gibt hierzu die Konstante CENTER, die den Wert 0 hat.

Es gibt aber einfachere Befehle, die normalerweise benutzt werden. Hier eine Tabelle der häufigsten. Die Bedeutung des Befehls wird erklärt, wenn sie nicht selbstverständlich ist.

Runter/LinksRauf/RechtsRückgängigWirkung
\arpeggioArrowDown\arpeggioArrowUp\arpeggioNormalArpeggio mit Pfeil nach unten, oben oder ohne Pfeil
\dotsDown\dotsUp\dotsNeutralRichtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden
\dynamicDown\dynamicUp\dynamicNeutralPosition der Dynamik-Bezeichnung relativ zum System
\phrasingSlurDown\phrasingSlurUp\phrasingSlurNeutralBefehl für Richtung von Phrasierungsbögen
\slurDown\slurUp\slurNeutralBefehl für Richtung von Legatobögen
\stemDown\stemUp\stemNeutralBefehl für Richtung von Hälsen
\textSpannerDown\textSpannerUp\textSpannerNeutralPosition von Textbeschriftungen, die als Strecker eingegeben werden
\tieDown\tieUp\tieNeutralBefehl für Richtung von Bindebögen
\tupletDown\tupletUp\tupletNeutralBefehl für Richtung von Klammern/Zahlen der N-tolen

Diese vordefinierten Befehl können allerdings nicht zusammen mit \once benutzt werden. Wenn Sie die Wirkung eines Befehl auf eine einzige Noten begrenzen wollen, müssen Sie den entsprechenden \once \override-Befehl benutzen oder den definierten Befehl, gefolgt von dem entsprechenden neutralisierenden xxxNeutral-Befehl nach der Note.

Fingersatz

Die Positionierung von Fingersatz kann auch durch den Wert seiner direction-Eigenschaft beeinflusst werden, aber eine Veränderung von direction hat keinen Einfluss auf Akkorde. es gibt auch hier besondere Befehle, mit denen der Fingersatz von einzelnen Noten in Akkorden kontrolliert werden kann, wobei mögliche Positionen über, unter der Note und rechts bzw. links von ihr sind.

Zunächst die Wirkungsweise von direction auf den Fingersatz: im ersten Takt der Standard, dann die Wirkung von DOWN (runter) und UP (hinauf).

c4-5 a-3 f-1 c'-5
\override Fingering.direction = #DOWN
c4-5 a-3 f-1 c'-5
\override Fingering.direction = #UP
c4-5 a-3 f-1 c'-5

[image of music]

Eine Beeinflussung der direction-Eigenschaft ist jedoch nicht die einfachste Art, Fingersatzbezeichnungen manuell über oder unter das System zu setzen. Normalerweise bietet es sich an, _ oder ^ anstelle von - vor der Fingersatz-Zahl zu benutzen. Hier das vorherigen Beispiel mit dieser Methode:

c4-5 a-3 f-1 c'-5
c4_5 a_3 f_1 c'_5
c4^5 a^3 f^1 c'^5

[image of music]

Die direction-Eigenschaft wirkt sich nicht auf Akkorde aus, während die Präfixe _ und ^ funktionieren. Standardmäßig wird der Fingersatz automatisch entweder über oder unter dem Akkord gesetzt:

\relative {
  <c''-5 g-3>4
  <c-5 g-3 e-2>4
  <c-5 g-3 e-2 c-1>4
}

[image of music]

aber das kann manuell geändert werden, um einzelne Fingersatzanweisungen nach oben oder unten zu zwingen:

\relative {
  <c''-5 g-3 e-2 c-1>4
  <c^5 g_3 e_2 c_1>4
  <c^5 g^3 e^2 c_1>4
}

[image of music]

Noch bessere Kontrolle über die Positionierung von Fingersatz für einzelne Noten in einem Akkord ist mit dem \set fingeringOrientations-Befehl möglich. Die Syntax lautet:

\set fingeringOrientations = #'([up] [left/right] [down])

\setwird benutzt, weil fingeringOrientations eine Eigenschaft des Voice-Kontextes ist, erstellt und eingesetzt vom New_fingering_engraver.

Die Eigenschaft kann als Wert eine Liste mit einem bis drei Einträgen haben. Damit wird bestimmt, ob Fingersatz oberhalb gesetzt werden kann (wenn up in der Liste auftaucht), darunter (wenndown auftaucht), links (wenn left auftaucht) oder rechts (wenn right auftaucht). Wenn andererseits ein Wert nicht auftaucht, wir auch kein Fingersatz in dieser Richtung gesetzt. LilyPond nimmt diese Beschränkung als Bedingung und errechnet die besten Positionen für die Noten des nächsten Akkordes. Die seitliche Positionierung kann nur auf einer Seite des Akkordes geschehen, nicht auf beiden gleichzeitig, es kann also nur entweder left oder right auftreten, nicht beide gleichzeitig.

Pozor: Damit eine einzelne Note mit diesem Befehl beeinflusst werden kann, muss sie als ein „Ein-Noten-Akkord“ geschrieben werden, indem einfache spitze Klammern um die Note positioniert werden.

Hier ein paar Beispiele:

\set fingeringOrientations = #'(left)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left down)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(right)
<f-2>4
<c-1  e-2 g-3 b-5>4

[image of music]

Wenn die Fingersatzbezeichnung zu gedrungen aussieht, kann auch die Schriftgröße (font-size) verringert werden. Der Standardwert kann aus dem Fingering-Objekt in der IR entnommen werden, er ist -5, versuchen wir es also mit -7.

\override Fingering.font-size = #-7
\set fingeringOrientations = #'(left)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left down)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
<f-2>4
<c-1  e-2 g-3 b-5>4
\set fingeringOrientations = #'(right)
<f-2>4
<c-1  e-2 g-3 b-5>4

[image of music]


5.4.3 Předměty vně notové osnovy

Předměty vně notové osnovy werden automatisch gesetzt, um Kollisionen zu vermeiden. Objekten mit einem geringeren Prioritätswert der Eigenschaft outside-staff-priority werden näher an das System gesetzt, und andere Objekte außerhalb des Systems werden dann soweit vom System entfernt gesetzt, dass Zusammenstöße vermieden werden. Die outside-staff-priority-Eigenschaft ist im grob-interface definiert und ist also eine Eigenschaft von allen Layout-Objekten. Standardmäßig ist sie für alle Objekte auf falsch (#f) gesetzt; dieser Wert wird in einen numerischen Wert dem Objekt entsprechend geändert, wenn das Objekt für die Notenausgabe erstellt wird. Die Tabelle unten zeigt die Standardwerte für die meistbenutzten outside-staff-Objekte, die den Voreinstellungen nach im Staff- oder Voice-Kontext gesetzt werden.

Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte werden automatisch erstellt, um die vertikale Position von Grobs zu kontrollieren, die an unterschiedlichen musikalischen Momenten beginnen und enden (könnten). Wenn also outside-staff-priority des darunterliegenden Grobs geändert wird, hat das keine Auswirkung. Zum Beispiel bringt das Ändern von outside-staff-priority des Hairpin-(Dynamikklammer)-Objekts keine Änderung in der vertikalen Position von Crescendo-Klammern – anstatt dessen muss outside-staff-priority des hiermit assoziierten DynamicLineSpanner-Objekts geändert werden. Dieser \override-Befehl muss zu Beginn des Streckers gesetzt werden, welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung beinhaltet.

Layout-ObjektPrioritätKontrolliert Position von:
MultiMeasureRestText450Text über Ganztaktpausen
TextScript450Textbeschriftung
OttavaBracket400Ottava (Oktavierungsklammern)
TextSpanner350Text-Strecker
DynamicLineSpanner250Alle Dynamik-Bezeichnungen
VoltaBracketSpanner100Volta-Klammern
TrillSpanner50Triller-Strecker

Hier ein Beispiel, das die Standardpositionierung von einigen Objekten zeigt.

% Set details for later Text Spanner
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Start Ottava Bracket
\ottava #1
c'4 \startTextSpan
% Add Dynamic Text and hairpin
c4\pp\<
c4
% Add Text Script
c4^Text
c4 c
% Add Dynamic Text and terminate hairpin
c4\ff c \stopTextSpan
% Stop Ottava Bracket
\ottava #0
c,4 c c c

[image of music]

Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h. Text mit Bindestrichen, der sich über eine bestimmte Länge erstreckt. Der Strecker beginnt mit dem \startTextSpan-Befehl und endet mit dem \stopTextSpan-Befehl, und das Format des Textes wird mit dem \override TextSpanner-Befehl bestimmt. Mehr Einzelheiten siehe Text mit Verbindungslinien.

Im Beispiel wird auch gezeigt, wie Oktavierungsklammern (Ottava) erstellt werden.

Beachten Sie, dass Taktnummern, Metronombezeichnungen und Übungszeichen nicht gezeigt werden. Sie werden standardmäßig im Score-(Partitur)-Kontext erstellt und ihre outside-staff-priority wird in Bezug auf die Layout-Objekte, die im Staff-Kontext erstellt werden, ignoriert. Wenn Sie Taktnummern, Metronombezeichnungen oder Übungszeichen entsprechend ihrer Außersystem-Priorität setzen wollen, müssen Sie die entsprechenden Engraver (Bar_number_engraver, Metronome_mark_engraver oder Mark_engraver) vom Score-Kontext entfernen und dem Staff-Kontext hinzufügen. Wenn die Engraver so geändert werden, erhalten sie folgenden Werte für outside-staff-priority:

Layout-ObjektPriorität
RehearsalMark1500
MetronomeMark1000
BarNumber 100

Wenn die Standardwerte der outside-staff-priority nicht die Positionierung hervorrufen, die Sie wünschen, kann die Priorität eines jeden Objektes geändert werden. Als Beispiel wollen wir zeigen, wie sich die Oktavierungsklammer unter den Textstrecker des vorigen Beispiels setzen lässt. Wir müssen nur die Priorität des OttavaBracket-Objektes in der IR oder der Tabelle oben herausfinden und einen kleineren Wert angeben als der Wert, den das TextSpanner-(Strecker)-Objekt bekommt, wobei noch daran zu denken ist, dass OttavaBracket im Staff-Kontext erstellt wird:

% Set details for later Text Spanner
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Place following Ottava Bracket below Text Spanners
\once \override Staff.OttavaBracket.outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
c'4 \startTextSpan
% Add Dynamic Text
c4\pp
% Add Dynamic Line Spanner
c4\<
% Add Text Script
c4^Text
c4 c
% Add Dynamic Text
c4\ff c \stopTextSpan
% Stop Ottava Bracket
\ottava #0
c,4 c c c

[image of music]

Legatobögen werden als Innersystem-Objekte klassifiziert, aber sie erscheinen oft auch über dem System, wenn die Noten, an die sie verbunden sind, sehr hoch im System notiert sind. Dadurch können Außersystem-Objekte, wie Artikulationszeichen, zu hoch gerückt werden. Die avoid-slur-Eigenschaft hat nur eine Auswirkung, wenn auch die outside-staff-priority auf #f gesetzt ist. Alternativ kann die outside-staff-priority des Legatobogens auf einen numerischen Wert gesetzt werden, sodass er mit anderen Außersystem-Objekten anhand dieses Wertes gesetzt wird. Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:

c4( c^\markup { \tiny \sharp } d4.) c8
c4(
\once \override TextScript.avoid-slur = #'inside
\once \override TextScript.outside-staff-priority = ##f
c4^\markup { \tiny \sharp } d4.) c8
\once \override Slur.outside-staff-priority = #500
c4( c^\markup { \tiny \sharp } d4.) c8

[image of music]

Eine Änderung der outside-staff-priority kann auch dazu benutzt werden, die vertikale Plazierung von individuellen Objekten zu kontrollieren, auch wenn das Ergebnis nicht immer optimal ist. Im nächsten Beispiel soll „Text3“ oberhalb von „Text4“ gesetzt werden, das Beispiel wurde behandelt in automatickém chování. Der Wert der Priorität muss also für die Eigenschaft TextScript entweder in der IR oder in der Tabelle oben festgestellt werden und dann die Priorität für „Text3“ höher eingestellt werden:

c''2^"Text1"
c''2^"Text2" |
\once \override TextScript.outside-staff-priority = #500
c''2^"Text3"
c''2^"Text4" |

[image of music]

Damit wird zwar „Text3“ ganz richtig über „Text4“ platziert, aber auch über „Text2“, und „Text4“ wird jetzt weiter unten gesetzt. Eigentlich sollten ja alle diese Anmerkungen gleichweit vom System entfernt sein. Dazu muss offensichtlich horizontal etwas Platz gemacht werden. Das kann erreicht werden mit dem textLengthOn-(Textlänge an)-Befehl.

\textLengthOn (Textlänge berücksichtigen)

Standardmäßig wird Text, der mit dem Beschriftungsbefehl \markup bzw. Äquivalenten erstellt wird, kein zusätzlicher Platz in Bezug auf die Positionierung der Noten zugestanden. Der \textLengthOn-Befehl ändert dieses Verhalten, so dass die Noten gespreizt werden, wenn die Breite des Textes es erfordert:

\textLengthOn  % Cause notes to space out to accommodate text
c''2^"Text1"
c''2^"Text2" |
c''2^"Text3"
c''2^"Text4" |

[image of music]

Dieses Verhalten wird mit dem \textLengthOff-Befehl rückgängig gemacht. Erinnern Sie sich, dass \once nur mit \override, \set, \revert oder unset funktioniert, der Befehl kann also nicht zusammen mit \textLengthOn benutzt werden.

Textbeschriftung vermeidet auch Noten, die über das System hinausstehen. Wenn das nicht gewünscht ist, kann die automatische Verschiebung nach oben hin auch vollständig ausgeschaltet werden, indem die Priorität auf #f gesetzt wird. Hier ein Beispiel, wie eine Textbeschriftung mit diesen Noten reagiert:

\relative {
  % This markup is short enough to fit without collision
  c''2^"Tex" c'' |
  R1 |

  % This is too long to fit, so it is displaced upwards
  c,,2^"Text" c'' |
  R1 |

  % Turn off collision avoidance
  \once \override TextScript.outside-staff-priority = ##f
  c,,2^"Long Text   " c'' |
  R1 |

  % Turn off collision avoidance
  \once \override TextScript.outside-staff-priority = ##f
  \textLengthOn        % and turn on textLengthOn
  c,,2^"Long Text   "  % Spaces at end are honored
  c''2 |
}

[image of music]

Dynamik

Dynamikbezeichnung wird üblicherweise unter dem System gesetzt, kann aber auch nach oben mit dem Befehl dynamicUp gezwungen werden. Die Bezeichnung wird vertikal relativ zu der Note positioniert, an die sie angefügt wurde. Sie wird vertikal variabel gesetzt in Bezug zu Innersystemobjekten wie Bögen oder Taktnummern. Damit können oft recht gute Resultate erreicht werden, wie im folgenden Beispiel:

\clef "bass"
\key aes \major
\time 9/8
\dynamicUp
bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\!
ees,2.~\)\mf ees4 r8

[image of music]

Wenn aber Noten und Dynamikzeichen sehr dicht beieinander stehen, positioniert die automatische Kollisionsvermeidung später kommende Dynamikzeichen weiter weg, was allerdings nicht immer die beste Möglichkeit ist, wie in dem folgenden, etwas gewollten Beispiel zu sehen ist:

\dynamicUp
a4\f b\mf c\mp b\p |

[image of music]

Wenn eine ähnliche Situation in „echter“ Musik auftaucht, kann es nötig sein, die Noten etwas zu spreizen, damit die Dynamikzeichen alle auf der selben vertikalen Position gesetzt werden können. Dieses Verhalten war im Falle von Textbeschriftungen möglich mit dem \textLengthOn-Befehl, aber es gibt keinen entsprechenden Befehl für Dynamik. Wir müssen also unsere eigenen Befehle mit \override konstruieren.

Verändern der Größe von grobs

Zuallererst müssen wir lernen, wie die Größe von Grobs verändert wird. Alle Grobs besitzen einen Referenzpunkt, der benutzt wird, um ihre Position in Relation zu ihnen übergeordneten Objekten zu bestimmen. Dieser Punkt innerhalb des Grobs wird dann auf einer horizontalen Position (X-offset) und einer vertikalen Position (Y-offset) ausgerichtet, immer bezüglich des übergeordneten Objektes. Eine horizontale Strecke wird durch ein Zahlenpaar angegeben (X-extent), welche die linke und rechte Grenze relativ zum übergeordneten Objekt bezeichnen. Die vertikale Strecke wir genauso durch ein Zahlenpaar (Y-extent) definiert. Diese Eigenschaften gehören zu allen Grobs, die das grob-interface unterstützen.

Standardmäßig haben Außersystemobjekte eine Länge von Null, so dass sie sich in horizontaler Richtung überlappen können. Das geschieht, indem dem linken Rand Unendlich zugewiesen wird und dem rechten Rand minus Unendlich (der Code der extra-spacing-width-(zusätzliche Positionierungslänge)-Eigenschaft lautet: '(+inf.0 . -inf.0)). Damit sich diese Objekte also horizontal nicht überschneiden, muss der Wert von extra-spacing-width auf '(0 . 0) gesetzt werden, sodass die wirkliche Länge eines Objektes zur Geltung kommt. Mit diesem Befehl wird das für Dynamik-Zeichen erledigt:

\override DynamicText.extra-spacing-width = #'(0 . 0)

Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert:

\dynamicUp
\override DynamicText.extra-spacing-width = #'(0 . 0)
a4\f b\mf c\mp b\p

[image of music]

Damit werden die Dynamik-Zeichen also wirklich nebeneinander gesetzt, aber es gibt noch zwei Probleme. Die Zeichen sollten etwas weiter außeinander stehen und es wäre gut, wenn sie alle den gleichen Abstand zum System hätte. Das erste Problem ist einfach behoben. Anstatt der extra-spacing-width-Eigenschaft Null zuzuweisen, können wir auch einen etwas größeren Wert wählen. Die Einheit wird gemessen in dem Abstand zwischen zwei Notenlinien, es scheint also gut, den rechten und linken Rand eine halbe Einheit zu vergrößern:

\dynamicUp
% Extend width by 1 staff space
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
a4\f b\mf c\mp b\p

[image of music]

Das sieht schon besser aus, aber es wäre noch besser, wenn die Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt höher und tiefer zu sitzen. Das kann mit der staff-padding-Eigenschaft erreicht werden, die wir uns im folgenden Abschnitt genauer anschauen werden.


5.5 Střety předmětů


5.5.1 Přesouvání předmětů

Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht perfekt. Einige Notationselemente können sich überschneiden. Das ist nicht schön, aber zum Glück sehr selten. Normalerweise müssen die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben werden – sie könnten besser aussehen, wenn sie etwas zusätzlichen Platz erhalten.

Es gibt im Grunde drei Herangehensweisen, überlappende Notation zu verbessern. Man sollte sie in der folgenden Reihenfolge anwenden:

  1. Die Richtung eines der überlappenden Objekte kann geändert werden, indem die vordefinierten Befehle für Innersystemobjekte verwendet werden, wie beschrieben in předmětech uvnitř notové osnovy). Hälse, Bögen, Balken, Dynamik-Zeichen und Triolen können auf diese Weise einfach umgeordnet werden. Beschränkt ist diese Methode insofern, als es nur zwei Möglichkeiten zur Veränderung gibt: oben oder unten.
  2. Die Objekteigenschaft, die LilyPond benutzt um die Layout-Objekte zu platzieren, können mit dem \override-Befehl positioniert werden. Die Vorteile von Änderungen dieser Art sind a) dass einige Objekte automatisch verschoben werden, wenn es nötig ist Platz zu schaffen und b) ein einziges \override sich auf alle Fälle eines Objekttyps bezieht. Zu diesen Eigenschaften gehören:
    • direction (Richtung)

      Das wurde schon detailliert behandelt, siehe předměty uvnitř notové osnovy.

    • padding, right-padding, staff-padding (Verschiebung)

      Wenn ein Objekt platziert wird, bestimmt der Wert seiner padding-(Füllungs)-Eigenschaft die Größe des Abstandes, der zwischen dem Objekt selber und dem Objekt, relativ zu welchem es positioniert wird, gelassen werden muss. Dabei zählt der padding-Wert des Objektes, das platziert werden soll, der padding-Wert des Objektes, das schon gesetzt wurde, wird hingegen ignoriert. Abstände mit padding können zu allen Objekten hinzugefügt werden, die das side-position-interface unterstützen.

      Anstelle von padding wird die Position von Versetzungszeichengruppen durch die Eigenschaften right-padding bestimmt. Diese Eigenschaft wird im AccidentalPlacement-(Versetzungszeichen-Positionierungs)-Objekt gefunden, das sich innerhalb des Staff-Kontexts befindet. Während des Notensatzes werden die Notenköpfe zuerst gesetzt und dann die Versetzungszeichen, wenn denn welche gesetzt werden, durch die right-padding-Eigenschaft auf die linke Seite der Notenköpfe positioniert, um die Entfernung von den Notenköpfen und zwischen den einzelnen Versetzungszeichen zu bestimmen. Also nur die right-padding-(Verschiebung nach rechts)-Eigenschaft des AccidentalPlacement-Objekts hat Einfluss auf die Positionierung der Versetzungszeichen.

      Die staff-padding-(Verschiebung zum System)-Eigenschaft ist sehr ähnlich wie die padding-Eigenschaft: padding bestimmt den Minimalabstand zwischen einem Objekt, das das side-position-interface unterstützt, und dem nächsten anderen Objekt (normalerweise die Note oder Notenlinie); staff-padding dagegen wirkt nur auf Objekte die immer außerhalb des Notensystems sind – damit wird der minimale Abstand bestimmt, der zwischen dem Objekt und dem Notensystem gelassen werden soll. staff-padding hat also keinen Einfluss auf Objekte, die relativ zu einer Note positioniert werden, sondern nur auf solche, die zum System relativ stehen. Wenn es mit einem anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber der Befehl hat auch keine Auswirkungen.

      Um herauszufinden, welche padding-Eigenschaft für das bestimmte Objekt nötig, ist, das Sie verschieben wollen, müssen Sie in der IR nach den Objekt-Eigenschaften schauen. Dabei sollten Sie bedenken, dass sich die padding-Eigenschaften nicht unbedingt in dem Objekt selber befinden, schauen Sie also auch in Objekten nach, die offensichtlich Ähnlichkeiten haben.

      Alle padding-Werte werden in Notenlinienabständen gemessen. Für die meisten Objekte ist der Wert ungefähr auf 1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt). Der Wert kann geändert werden, wenn ein größerer (oder kleinerer) Abstand gewünscht wird.

    • self-alignment-X (Selbstpositionierung)

      Diese Eigenschaft kann benutzt werden, um ein Objekt nach links, rechts oder zentriert an dem Referenzpunkt des Objekts auszurichten, an das es verknüpft ist. Es kann bei allen Objekten benutzt werden, die das self-alignment-interface unterstützen. Das sind üblicherweise Objekte, die Text enthalten. Die möglichen Werte der Eigenschaft sind LEFT, RIGHT oder CENTER. Alternativ kann ein numerischer Wert zwischen -1 und +1 bestimmt werden: -1 heißt linksbündig, +1 rechtsbündig und Zahlen dazwischen bewegen den Text schrittweise von links nach rechts. Zahlen größer als 1 können angegeben werden, um den Text noch weiter nach links zu bewegen, oder weniger als -1, um ihn weiter nach rechts zu schieben. Eine Änderung um 1 des Wertes entspricht einer Bewegung um die halbe Textbreite.

    • extra-spacing-width (zusätzliche Breite)

      Diese Eigenschaft steht für alle Objekte zur Verfügung, die das item-interface unterstützen. Es braucht zwei Zahlen als Argument, die erste wird zur rechten Ausdehnung, die zweite zur linken Ausdehnung hinzugerechnet. Negative Zahlen verschieben die Ausdehnung nach rechts, positive nach links, um also ein Objekt zu verbreitern, muss die erste Zahl negativ und die zweite positiv sein. Allerdings beachten nicht alle Objekte beide Zahlen. Das accidental-(Versetzungszeichen)-Objekt etwa beachtet nur erste Zahl für die linke Ausdehnung.

    • staff-position (Notensystempositionierung)

      staff-position ist eine Eigenschaft des staff-symbol-referencer-interface, die von Objekten unterstützt wird, die relativ zum Notensystem (engl. staff) positioniert werden. Hiermit wird die vertikale Position eines Objekts relativ zur Mittellinie des Systems in halben Notenlinienabständen angegeben. Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen zu lösen.

    • force-hshift (vertikale Verschiebung erzwingen)

      Eng beieinander stehende Noten in einem Akkord oder Noten, die zum gleichen Zeitpunkt in unterschiedlichen Stimmen stehen, werden in zwei oder manchmal auch mehr Kolumnen gesetzt, um Kollisionen zu umgehen. Diese Kolumnen werden Notenkolumnen genannt; ein NoteColumn-Objekt wird erstellt um die Noten in den Kolumnen zu setzen.

      Die force-hshift-(erzwinge horizontale Verschiebung)-Eigenschaft ist eine Eigenschaft von NoteColumn (bzw. vom note-column-interface). Eine Veränderung dieser Eigenschaft macht es möglich, eine Notenkolumne zu verschieben, dabei gilt als Einheit die Breite einer Kolumne, also die Breite des Notenkopfes der ersten Stimme. Diese Eigenschaft kann in Situationen benutzt werden, in denen die normalen \shiftOn-Befehle (siehe auch Přesně vyjádřené začátky hlasů) das Problem nicht beseitigen. Diese Eigenschaft ist besser in solchen Fällen zu verwenden als die extra-offset-Eigenschaft, weil man die richtige Entfernung nicht in Notenlinienabständen ausrechnen muss. Wenn eine Note in eine Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen.

  3. Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch manuell positioniert werden, entweder vertikal in Bezug auf die Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit auf eine neue Position verschoben werden. Der Nachteil ist, dass die richtigen Werte für eine gute Position manuell ausprobiert werden müssen, meistens durch Herantasten an den richtigen Wert, und das für jedes einzelne Objekt extra. Und weil diese Verschiebungen erst vorgenommen werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt. Am schwerwiegendsten ist aber die Tatsache, dass die Verschiebungskoordinaten wahrscheinlich neu errechnet oder ausprobiert werden müssen, wenn sich an den Noten und deren Layout später irgend etwas ändert. Die Eigenschaften, die für diese Arte der manuellen Verschiebung verwendet werden können, sind:
    extra-offset (zusätzlicher Abstand)

    Diese Eigenschaft gehört zu jedem Layout-Objekt, das das grob-interface unterstützt. Sie braucht ein Zahlenpaar, das die exakte Verschiebung in horizontaler und vertikaler Richtung bezeichnet. Negative Zahlen verschieben das Objekt nach links oder unten. Die Einheit sind Notenlinienabstände. Die zusätzliche Positionierung wird vorgenommen, nachdem alle anderen Objekte platziert sind, weshalb ein Objekt irgendwohin verschoben werden kann, ohne den restlichen Satz zu beeinflussen.

    positions (Position)

    Diese Eigenschaft ist am sinnvollsten, um die Steigung und die Höhe von Balken, Bögen und Triolenklammern anzupassen. Sie braucht ein Zahlenpaar, das die Position des rechten und linken Endes relativ zur Mittellinie des Notensystems bestimmt. Die Einheit sind Notenlinienabstände. Bögen allerdings können nicht beliebig weit weg positioniert werden. LilyPond erstellt zunächst eine Liste an möglichen Positionen für den Bogen und findet normalerweise die Version, die „am besten aussieht“. Wenn die positions-Eigenschaft verändert worden ist, wird der Bogen aus der Liste gewählt, der der gewünschten Position am nächsten kommt.

Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften. Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften ein bestimmtes Objekt unterstützt.

Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer Kollision beteiligt sind, daneben findet sich die Bezeichnung des Objektes, mit der Sie es in der IR finden, um zu bestimmen, welche Eigenschaften benutzt werden können, um es zu verschieben.

ObjekttypObjektbezeichnung
ArticulationszeichenScript
BalkenBeam
Dynamikzeichen (vertikal)DynamicLineSpanner
Dynamikzeichen (horizontal)DynamicText
FingersatzFingering
Übungs-/TextmarkenRehearsalMark
LegatobögenSlur
Text z. B. ^"text"TextScript
BindebögenTie
N-tolenTupletBracket

5.5.2 Oprava překrývajících se not

Hier soll nun gezeigt werden, wie die Eigenschaften, die im vorigen Abschnitt vorgestellt wurden, bei der Problemlösung mit sich überschneidenden Notationselementen eingesetzt werden können.

padding (Fülleigenschafte)

Die padding-(Verschiebungs-)Eigenschaft kann benutzt werden, um den Abstand zwischen Symbolen zu vergößern (oder zu verkleinern), die über oder unter den Noten gesetzt werden.

c'2\fermata
\override Script.padding = #3
b2\fermata

[image of music]

% This will not work, see below
\override MetronomeMark.padding = #3
\tempo 4 = 120
c'1 |
% This works
\override Score.MetronomeMark.padding = #3
\tempo 4 = 80
d'1 |

[image of music]

Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen Kontext anzugeben. Weil das MetronomeMark-Objekt sich im Score-Kontext befindet, werden Eigenschaftsänderungen im Voice-Kontext einfach ignoriert. Für mehr Einzelheiten siehe Eigenschaften verändern.

Wenn die padding-Eigenschaft eines Objektes erhöht wird, das sich in einem Stapel von Objekten befindet, die nach ihrer Außersystempriorität (outside-staff-priority) positioniert werden, werden das Objekt und alle, die sich außerhalb davon befinden, entsprechend verschoben.

right-padding (Verschieben nach links)

Die right-padding-Eigenschaft wirkt sich auf den Abstand zwischen einem Versetzungszeichen und der Note, auf das sie sich bezieht, aus. Sie wird nicht sehr oft benötigt, aber die Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen oder Kombinationsglyphen, wie sie für Mikrotonale Musik benutzt werden, falsch sein. Derartige Glyphen müssen notiert werden, indem man den Stencil des Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt, wie im folgenden Beispiel:

sesquisharp = \markup { \sesquisharp }
 \relative {
  c''4
  % This prints a sesquisharp but the spacing is too small
  \once \override Accidental.stencil = #ly:text-interface::print
  \once \override Accidental.text = #sesquisharp
  cis4 c
  % This improves the spacing
  \once \override Score.AccidentalPlacement.right-padding = #0.6
  \once \override Accidental.stencil = #ly:text-interface::print
  \once \override Accidental.text = #sesquisharp
  cis4
}

[image of music]

Dazu ist aber ein \override-Befehl für den Stencil des Versetzungszeichens nötig, der bisher nicht behandelt wurde. Der Typ des Stencils muss eine Prozedur sein, die hier geändert wurde, um den Inhalt der text-Eigenschaft des Accidental (Versetzungszeichen)-Objekts zu setzen. Die text-Eigenschaft wiederum wird als sesquisharp-Glyph definiert. Dieser Glyph wird dann weiter vom Notenkopf entfernt durch die Veränderung von right-padding mit einem \override-Befehl.

staff-padding (Systemfüllungseigenschaft)

staff-padding (Verschiebung zum Notensystem) kann verwendet werden um Objekte wie Dynamikzeichen an einer Grundlinie auf einer bestimmten Höhe über dem System auszurichten, sodass sie nicht von der Position der Note abhängen, an die sie angehängt sind. Diese Verschiebung ist keine Eigenschaft von DynamicText, sondern von DynamicLineSpanner. Das liegt daran, dass die Grundlinie sich gleicherweise auf alle Dynamikzeichen beziehen soll, also auch auf die, die als Strecker erstellt wurden. Hier also die Lösung, die Dynamikzeichen aus dem Beispiel des vorigen Abschnitts auszurichten:

\dynamicUp
% Extend width by 1 unit
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
% Align dynamics to a base line 2 units above staff
\override DynamicLineSpanner.staff-padding = #2
a4\f b\mf c\mp b\p

[image of music]

self-alignment-X (Selbstausrichtung-X-Eigenschaft)

Das nächste Beispiel zeigt, wie man den Zusammenstoß einer Fingersatzbezeichnung mit einem Notenhals verhindern kann, indem die rechte Ecke an dem Referenzpunkt der abhängigen Note angeordnet wird:

\voiceOne
< a\2 >
\once \override StringNumber.self-alignment-X = #RIGHT
< a\2 >

[image of music]

staff-position (Position innerhalb des Systems)

Vieltaktpausen in einer Stimmen können mit Noten in anderen Stimmen kollidieren. Da diese Pausen zentriert zwischen den Taktlinien gesetzt werden, würde es für LilyPond eine recht große Anstrengung bedeuten herauszufinden, welche Noten mit ihnen zusammenstoßen könnten, denn alle Kollisionsvermeidung für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die zur selben Zeit auftreten. Hier ein typisches Beispiel für eine Kollision dieser Art:

<< \relative { c'4 c c c } \\ { R1 } >>

[image of music]

Die beste Lösung ist es, die Ganztaktpause nach unten zu schieben, denn die Pause ist in der zweiten Stimme. Per Standardeinstellung für die zweite Stimme (\voiceTwo, also die zweite Stimme in der <<{...} \\ {...}>>-Konstruktion) wird die Position auf dem System (staff-position) auf -4 für MultiMeasureRest, in unserem Beispiel muss es also bspw. auf die Position -8 gesetzt werden, d.h. vier halbe Notenlinienabstände weiter nach unten:

<<
  \relative { c'4 c c c }
  \\
  \override MultiMeasureRest.staff-position = #-8
  { R1 }
>>

[image of music]

Das ist besser, als etwa extra-offset zu benutzen, denn in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.

extra-offset (Genaues Positionieren)

Die extra-offset-Eigenschaft bietet vollständige Kontrolle über die umístění předmětů in horizontaler und vertikaler Richtung.

Im Beispiel unten ist das zweite Fingersatzzeichen (Fingering) etwas nach links und 1,8 Notenlinienabstände nach unten verschoben:

\stemUp
f4-5
\once \override Fingering.extra-offset = #'(-0.3 . -1.8)
f4-5

[image of music]

Ausrichtungseigenschaft

Die positions-Eigenschaft erlaubt die Kontrolle von Position und Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern. Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil er den Bogen des Vorschlags vermeidet:

r4  \acciaccatura e8\( d8 c~ c d c d\)

[image of music]

Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und das wäre auch die beste Lösung:

r4
\phrasingSlurUp
\acciaccatura e8\( d8 c~ c d c d\)

[image of music]

aber wenn es einen Grund geben sollte, warum das nicht geht, könnte man das linke Ende des Phrasierungsbogens etwas nach unten verschieben, indem man die positions-Eigenschaft einsetzt. Damit verschwindet auch die etwas unschöne Form:

r4
\once \override PhrasingSlur.positions = #'(-4 . -3)
\acciaccatura e8\( d8 c~ c d c d\)

[image of music]

Hier noch ein weiteres Beispiel aus der Einleitung von Chopins Prelude Op. 28 Nr. 2, das untere System. Wie zu sehen ist, stößt der Balken mit den oberen Noten zusammen:

{
  \clef "bass"
  << { b,8 ais, b, g, } \\ { e, g e, g } >>
  << { b,8 ais, b, g, } \\ { e, g e, g } >>
}

[image of music]

Das kann manuell gelöst werden, indem beide Enden des Balkens von ihrer Position 2 Notenlinienabstände über der Mittellinie hochgeschoben werden, etwa auf 3:

{
  \clef "bass"
  <<
    \override Beam.positions = #'(3 . 3)
    { b,8 ais, b, g, }
  \\
    { e, g e, g }
  >>
  << { b,8 ais, b, g, } \\ { e, g e, g } >>
}

[image of music]

Hier ist zu beobachten, dass die Veränderung sich auch auf die weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine Auswirkung auf die Balken der zweiten Stimme hat.

force-hshift (vertikale Verschiebunseigenschaft)

An diesem Punkt können wir den letzten Feinschliff an unserem Chopin-Beispiel vornehmen, das wir behandelt haben in Slyším hlasy. Wir hatten es in folgende Form gebracht:

\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 }
    \\
    { aes2 f4 fes }
    \\
    {
      \voiceFour
      <ees c>2 des
    }
  >> |
  <c ees aes c>1 |
}

[image of music]

Die unteren zwei Noten des ersten Akkords (also die in der dritten Stimme) sollten nicht aus der Notenkolumne der oberen zwei Noten weggeschoben werden. Um das zu korrigieren, setzen wir force-hshift, das eine Eigenschaft von NoteColumn ist, für diese Noten auf Null. Die untere Note des zweiten Akkordes wird am besten direkt rechts von den oberen Noten gesetzt. Das erreichen wir, indem wir force-hshift für diese Note auf 0.5 setzen, also eine halbe Notenkopfbreite nach rechts von der Kolumne der oberen Noten aus.

Hier das Endergebnis:

\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 }
    \\
    { aes2 f4 fes }
    \\
    {
      \voiceFour
      \once \override NoteColumn.force-hshift = #0
      <ees c>2
      \once \override NoteColumn.force-hshift = #0.5
      des2
    }
  >> |
  <c ees aes c>1 |
}

[image of music]


5.5.3 Příklady ze života

Das Kapitel zu Optimierungen soll mit einem komplizierten Beispiel beendet werden, in dem verschiedene Optimierungen vorgenommen werden müssen, bis das Ergebnis gut aussieht. Das Beispiel wurde ganz bewusst gewählt um die Benutzung der Notationsreferenz zu zeigen, wenn ungewöhnliche Notationsprobleme gelöst werden müssen. Es ist nicht repräsentativ für normale Notationsprojekte, lassen Sie sich also nicht durch dieses Beispiel entmutigen! Zum Glück sind Probleme wie die hier gezeigten nicht sehr häufig.

Das Beispiel stammt aus Chopins Premiére Ballade, Op. 23, Takte 6–9, der Übergang vom Lento der Einleitung zum Moderato. Hier zunächst der Satz, wie er aussehen soll, allerdings ohne Dynamik, Fingersatz und Pedalbezeichnung, um das Beispiel nicht zu kompliziert zu machen.

[image of music]

Die erste Überlegung ist, dass das System für die rechte Hand im dritten Takt vier Stimmen braucht. Das sind die fünf Achtelnoten mit Balken, das übergebundene C, die Halbe D, die mit der Achtel D verschmolzen ist, und die punktierte Viertel Fis, die auch mit einer Achtelnote verschmolzen ist. Alles andere ist eine einzige Stimme, es ist also am einfachsten, die zusätzlichen drei Stimmen nur zeitweise zu erstellen, wenn sie auftreten. Wenn Sie vergessen haben, wie man das anstellt, schauen Sie sich nochmal den Abschnitt Slyším hlasy und Přesně vyjádřené začátky hlasů an. Hier wollen wir explizit begonnene Stimmen für die polyphone Stelle benutzen, weil LilyPond Kollisionen besser vermeidet, wenn alle Stimmen auf diese Weise explizit begonnen werden.

Wir wollen anfange, indem wir die Noten in zwei Variablen notieren und dann die Systemstruktur in einer \score-Umgebung erstellen. Das ist, was LilyPond erstellt:

rhMusic = \relative {
  \new Voice {    r2 c''4. g8 |
    bes1~ |
    \time 6/4
    bes2. r8
    % Start polyphonic section of four voices
    <<
      { c,8 d fis bes a }  % continuation of main voice
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    g2.  % continuation of main voice
  }
}

lhMusic = \relative {
  r2 <c' g ees>2 |
  <d g, d>1 |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}

[image of music]

Alle Noten sind richtig, aber die Positionierung sehr verbesserungsbedürftig. Der Bindebogen kollidiert mit der veränderten Taktart zusammen, einige Noten werden nicht verschmolzen und einige Notationselemente fehlen ganz. Behandeln wir zunächst die einfacheren Dinge. Der Balken kann durch eine manuelle Begrenzung einfach korrigiert werden, und auch der Legatobogen der linken Hand und der Phrasierungsbogen der rechten Hand sind schnell gesetzt, denn sie wurden schon in der Übung erklärt. Damit haben wir folgendes Notenbild:

rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    bes1~ |
    \time 6/4
    bes2. r8
    % Start polyphonic section of four voices
    <<
      { c,8 d fis bes a }  % continuation of main voice
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    g2.\)  % continuation of main voice
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1) |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}

[image of music]

Der erste Takt stimmt jetzt schon. Der zweite Takt enthält ein Arpeggio und wird mit einer doppelten Taktlinie beschlossen. Wie können wir diese notieren, denn sie sind im Handbuch zum Lernen nicht vorgekommen? Hier brauchen wir jetzt die Notationsreferenz. Ein Blick in den Index zeigt uns die Einträge für „Arpeggio“ und „Taktlinien“: ein Arpeggio also erstellt man mit dem Befehl \arpeggio hinter einem Akkord und eine doppelte Taktlinie wird mit dem Befehl \bar "||" erstellt. Das ist einfach. Als nächstes muss der Zusammenstoß des Bindebogens mit der Taktartbezeichnung gelöst werden. Das geht am besten, indem wir den Bogen nach oben verschieben. Wie man Objekte verschiebt wurde schon behandelt in přesouvání předmětů, wo stand, dass Objekte die relativ zum System positioniert werden, vertikal verschoben werden können, indem ihre staff-position-Eigenschaft geändert wird, die in halben Notenlinienabständen relativ zur Mittellinie angegeben wird. Dieser \override-Befehl also, direkt vor die erste übergebundene Note gestellt, verschiebt den Bindebogen (tie) 3,5 halbe Notenlinienabstände über die Mittellinie:

\once \override Tie.staff-position = #3.5

Damit ist auch der zweite Takt vollständig:

rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2. r8
    % Start polyphonic section of four voices
    <<
      { c,8 d fis bes a }  % continuation of main voice
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    g2.\)  % continuation of main voice
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}

[image of music]

In Takt drei beginnt der Moderato-Abschnitt. In der Übung wurde behandelt, wie man fetten Text mit dem \markup-Befehl eingibt, es ist also einfach, das „Moderato“ in fetter Schrift hinzuzufügen. Wie aber werden Noten verschmolzen? Hier nehmen wir wieder die Notationsreferenz zu Hilfe. Die Suche nach „Verschmelzen“ (engl. merge) im Index führt uns zu den Befehlen, um Noten mit unterschiedlichen Köpfen und unterschiedlichen Punkten zu verschmelzen, in Auflösung von Zusammenstößen. In unserem Beispiel müssen sowohl unterschiedliche Köpfe also auch unterschiedliche Punktierung verschmolzen werden, wir brauchen also die Befehle

\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn

aus der Notationsreferenz, die wir an den Beginn unseres Abschnittes stellen und

\mergeDifferentlyHeadedOff
\mergeDifferentlyDottedOff

um das Verhalten wieder auszuschalten. Das sieht so aus:

rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2.^\markup { \bold "Moderato" } r8
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    % Start polyphonic section of four voices
    <<
      { c,8 d fis bes a }  % continuation of main voice
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)  % continuation of main voice
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}

[image of music]

Mit diesen Veränderungen wurden die beiden Fis-Noten verschmolzen, aber nicht die zwei Ds. Warum nicht? Die Antwort befindet sich im gleicher Abschnitt der Notationsreferenz: Noten, die verschmolzen werden, müssen Hälse in entgegengesetzte Richtungen aufweisen und zwei Noten können nicht verschmolzen werden, wenn eine dritte Noten in der gleichen Kolumne stört. In unserem Fall weisen beide Hälse nach oben und es befindet sich zur gleichen Zeit auch noch eine dritte Note, das C. Wie die Richtung von Hälsen geändert wird, wissen wir schon: mit \stemDown, und in der Notationsreferenz findet sich auch Information, wie das C verschoben werden kann: mit dem \shift-Befehl. Aber welcher von ihnen? Das C befindet sich in der zweiten Stimme, die „shift off“ hat, die zwei Ds sind in den Stimmen eins und drei, die „shift off“ bzw. „shift on“ haben. Das C muss also noch eine Stufe weiter verschoben werden mit \shiftOnn, damit es die Verschmelzung der Ds nicht stört. Das sieht jetzt so aus:

rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2.^\markup { \bold "Moderato" } r8
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    % Start polyphonic section of four voices
    <<
      { c,8 d fis bes a }  % continuation of main voice
      \new Voice {
        \voiceTwo
        % Move the c2 out of the main note column so the merge will work
        c,8~ \shiftOnn c2
      }
      \new Voice {
        \voiceThree
        % Stem on the d2 must be down to permit merging
        s8 \stemDown d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)  % continuation of main voice
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
   \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}

[image of music]

Fast schon geschafft. Nur noch ein Problem ist übrig: Der Hals nach unten des verschmolzenen sollte nicht da sein, und das C sähe besser auf der rechten Seite des Ds aus. Beides können wir mit den gelernten postupy při ladění erreichen. Den Hals machen wir durchsichtig und das C verschieben wir mit der force-hshift-Eigenschaft. Hier ist das Endergebnis:

rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2.^\markup { \bold "Moderato" } r8
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    % Start polyphonic section of four voices
    <<
      { c,8 d fis bes a }  % continuation of main voice
      \new Voice {
        \voiceTwo
        c,8~
        % Reposition the c2 to the right of the merged note
        \once \override NoteColumn.force-hshift = #1.0
        % Move the c2 out of the main note column so the merge will work
        \shiftOnn
        c2
      }
      \new Voice {
        \voiceThree
        s8
        % Stem on the d2 must be down to permit merging
        \stemDown
        % Stem on the d2 should be invisible
        \once \override Stem.transparent = ##t
        d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)  % continuation of main voice
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}

[image of music]


5.6 Další ladění


5.6.1 Jiné využití ladění

Noten zwischen unterschiedlichen Stimmen überbinden

Das nächste Beispiel zeigt, wie man Noten von verschiedenen Stimmen miteinander verknüpfen kann, indem man Bindebögen für Überbindungen benutzt. Normalerweise können nur zwei Noten der gleichen Stimme übergebunden werden. Wenn man zwei Stimmen benutzt, wobei die überbundenen Noten sich in der selben befinden,

[image of music]

und dann den ersten Hals nach oben unsichtbar macht, sieht es so aus, als ob die Überbindung zwischen den Stimmen stattfindet:

<<
  {
    \once \override Stem.transparent = ##t
    b8~ 8\noBeam
  }
\\
  { b8[ g] }
>>

[image of music]

Um sicherzugehen, dass der unsichtbare Hals den Bindebogen nicht zu sehr verkleinert, kann er verlängert werden, indem seine Länge (length) auf den Wert 8 gesetzt wird:

<<
  {
    \once \override Stem.transparent = ##t
    \once \override Stem.length = #8
    b8~ 8\noBeam
  }
\\
  { b[ g8] }
>>

[image of music]

Eine Fermate in MIDI simulieren

Pro předměty vně notové osnovy ist es normalerweise besser, die stencil-Eigenschaft anstelle der transparent-Eigenschaft zu verändern, wenn man sie vom fertigen Notensatz entfernen will. Indem die stencil-Eigenschaft auf falsch (#f) gesetzt wird, wird das entsprechende Objekt vollständig entfernt. Das bedeutet, dass es die Positionierung der anderen Objekte nicht beeinflusst.

Auf diese Art kann etwa das Tempo geändert werden, damit in der MIDI-Ausgabe eine Fermate zu hören ist, ohne dass im Notensatz etwas von diesen Tempoänderungen zu sehen ist. Die Metronombezeichnung soll auch nicht die Position von Text an der gleichen Stelle oder die Abstände zwischen zwei Systemen beeinflussen. Darum ist es am besten, stencil auf #f zu setzen. Im Beispiel wird der Unterschied zwischen einem unsichtbaren Objekt und einem entfernten Objekt gezeigt:

\score {
  \relative {
    % Visible tempo marking
    \tempo 4=120
    a'4 a a
    \once \override Score.MetronomeMark.transparent = ##t
    % Invisible tempo marking to lengthen fermata in MIDI
    \tempo 4=80
    a4\fermata
    % New tempo for next section
    \tempo 4=100
    a4 a a a
  }
  \layout { }
  \midi { }
}

[image of music]

\score {
  \relative {
    % Visible tempo marking
    \tempo 4=120
    a'4 a a
    \once \override Score.MetronomeMark.stencil = ##f
    % Invisible tempo marking to lengthen fermata in MIDI
    \tempo 4=80
    a4\fermata
    % New tempo for next section
    \tempo 4=100
    a4 a a a
  }
  \layout { }
  \midi { }
}

[image of music]

Mit beiden Methoden wird die Tempobezeichnung entfernt, mit der die Fermate verlängert wird, und beide beeinflussen die MIDI-Ausgabe wie gewünscht. Die unsichtbare Metronombezeichnung schiebt aber die folgende Bezeichnung in die Höhe, während das im zweiten Beispiel, in dem der stencil entfernt wurde, nicht passiert.

Podívejte se také na

Glossar: system.


5.6.2 Použití proměnných pro ladění

\override-Befehle sind oft lang und mühsam zu tippen, und sie müssen immer absolut richtig sein. Wenn derselbe Befehl mehrere Male benutzt werden muss, lohnt es sich oft schon, eine Variable zu definieren, in der er sich befindet.

Als Beispiel sollen einige Worte im Gesangstext fett und kursiv hervorgehoben werden. Die Befehle \italic und \bold funktionieren im Gesangstext-Kontext nur, wenn sie gleichzeitig mit den Wörtern, auf die sie angewendet werden sollen, zusätzlich in eine \markup-Umgebung eingeschlossen werden. Durch diese Einbettung können einzelne Wörter nicht einfach zu einer Variable umgeformt werden. Als Alternative versuchen wir, einen Befehl mit \override und \revert zu konstruieren.

\override Lyrics.LyricText.font-shape = #'italic
\override Lyrics.LyricText.font-series = #'bold

\revert Lyrics.LyricText.font-shape
\revert Lyrics.LyricText.font-series

Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine Hervorhebung benötigen. Anstelle dieser Befehlsketten können wir jedoch zwei Variablen definieren. Mit ihnen und dem entsprechenden Wort in geschweiften Klammern erreichen wir den gewünschten Effekt. Ein weiterer Vorteil ist, dass in diesem Fall die Leerzeichen um die Punkte herum nicht benötigt werden, weil sie nicht innerhalb des lyricmode-Kontextes interpretiert werden. Hier ein Beispiel; die Bezeichnungen können natürlich auch kürzer sein, um noch weniger schreiben zu müssen:

emphasize = {
  \override Lyrics.LyricText.font-shape = #'italic
  \override Lyrics.LyricText.font-series = #'bold
}
normal = {
  \revert Lyrics.LyricText.font-shape
  \revert Lyrics.LyricText.font-series
}

global = { \key c \major \time 4/4 \partial 4 }

SopranoMusic = \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 \emphasize Fa -- ther, | \normal strong to save,
}

VerseTwo = \lyricmode {
  O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
}

VerseThree = \lyricmode {
  O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
}

VerseFour = \lyricmode {
  O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \clef "treble"
      \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
      \new Voice = "Alto" { \voiceTwo \AltoMusic }
      \new Lyrics \lyricsto "Soprano" { \VerseOne }
      \new Lyrics \lyricsto "Soprano" { \VerseTwo }
      \new Lyrics \lyricsto "Soprano" { \VerseThree }
      \new Lyrics \lyricsto "Soprano" { \VerseFour }
    >>
    \new Staff <<
      \clef "bass"
      \new Voice = "Tenor" { \voiceOne \TenorMusic }
      \new Voice = "Bass"  { \voiceTwo \BassMusic }
    >>
  >>
}

[image of music]


5.6.3 Celkové formátování

Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe zu Einzelheiten ladění výstupu. Aber was ist, wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen erfahren sollen? Oder wenn Sie einfach nur die Anpassungen von der eigentlichen Musik trennen wollen? Das lässt sich recht einfach erreichen.

Schauen wir uns ein Beispiel an. Sorgen Sie sich nicht, wenn Sie den Abschnitt mit den vielen #() nicht verstehen. Das wird erklärt in pokročilých laděních se Scheme.

mpdolce =
 #(make-dynamic-script
  #{ \markup { \hspace #0
               \translate #'(5 . 0)
               \line { \dynamic "mp"
                       \text \italic "dolce" } }
  #})

inst =
#(define-music-function
     (string)
     (string?)
    #{ <>^\markup \bold \box #string #})

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}

[image of music]

Es gibt einige Probleme mit sich überschneidender Ausgabe, die wird zurechtgerückt mit den Techniken von přesouvání předmětů. Aber jetzt zu den Definitionen von mpdolce und inst. Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht auch in einem anderen Stück verwenden. Wir könnten sie immer wieder kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig. Dadurch werden die Definitionen auch in der Eingabedatei belassen, und ich finde diese #() irgendwie hässlich. Verstecken wir sie also:

%%% in Datei "definitions.ily" speichern
mpdolce =
 #(make-dynamic-script
  #{ \markup { \hspace #0
               \translate #'(5 . 0)
               \line { \dynamic "mp"
                       \text \italic "dolce" } }
  #})

inst =
#(define-music-function
     (string)
     (string?)
	#{ <>^\markup \bold \box #string #})

Diese Datei wir mit dem \include-Befehl ziemlich weit oben in der Datei eingefügt. (Die Erweiterung ‘.ily’ wird benutzt, um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die man nicht alleinstehend kompilieren kann.) Jetzt ändern wir die Noten (in der Datei ‘music.ly’).

\include "definitions.ily"

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}

[image of music]

Das sieht schon besser aus, aber einige Änderungen könnten wir noch vornehmen. Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und näher an den Notenkopf. Die Metronombezeichnung soll über dem Schlüssel stehen, anstatt über der ersten Note. Und schließlich mag mein Kompositionsprofessor keine „C“-Taktangaben, das ändern wir also in „4/4“.

Ändern Sie jetzt jedoch nicht ‘music.ly’. Ändern Sie die ‘definitions.ily’ mit dem Folgenden:

%%%  definitions.ily
mpdolce =
#(make-dynamic-script
  #{ \markup { \hspace #0
               \translate #'(5 . 0)
               \line { \dynamic "mp"
                       \text \italic "dolce" } }
  #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-9 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
    \override TimeSignature.style = #'numbered
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

[image of music]

Das sieht besser aus! Aber nehmen wir an, Ich will dieses Stück publizieren. Mein Professor mag die „C“-Taktangabe nicht, mir gefällt sie aber sehr gut. Kopieren wir also die Datei ‘definitions.ily’ nach ‘web-publish.ily’ und verändern diese. Weil die Noten als PDF auf dem Monitor dargestellt werden sollen, wird auch die Notengröße global geändert.

%%%  definitions.ily
mpdolce =
#(make-dynamic-script
  #{ \markup { \hspace #0
               \translate #'(5 . 0)
               \line { \dynamic "mp"
                       \text \italic "dolce" } }
  #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

#(set-global-staff-size 23)

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-9 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

[image of music]

In der Eingabedatei muss jetzt nur noch die Zeile \include "definitions.ily" mit \include "web-publish.ily" ersetzt werden. Das könnte man natürlich noch besser machen. Es könnte eine Datei ‘definitions.ily’ mit allen Definitionen (also mpdolce und inst) geben, eine Datei ‘web-publish.ily’, die nur die \layout-Veränderung enthält und eine Datei ‘university.ily’, die nur die Prozedur enthält, die Ausgabe meinem Professor angenehm zu machen. Der Anfang von ‘music.ly’ würde dann folgendermaßen aussehen:

\include "definitions.ily"

%%%  nur eine der zwei Zeilen auskommentieren!
\include "web-publish.ily"
%\include "university.ily"

Diese Herangehensweise kann auch schon nützlich sein, wenn man nur ein paar Stimmen schreiben will. Ich habe eine ganze Anzahl an „Stylesheets“ für meine Projekte. Ich fange jede Datei mit der Zeile \include "../global.ily" an, die etwa folgendes einbindet:

%%%   global.ily
\version "2.24.4"

#(ly:set-option 'point-and-click #f)

\include "../init/init-defs.ly"
\include "../init/init-layout.ly"
\include "../init/init-headers.ly"
\include "../init/init-paper.ly"

5.6.4 Více informací

Die Programmreferenz enthält sehr viel Information über LilyPond, aber noch více informací findet sich in den internen LilyPond-Dateien. Um sie erforschen zu können, müssen Sie erst das richtige Verzeichnis auf Ihrem System finden. Die Position hängt a) davon ab, ob Ihre LilyPond-Installation mit der vorkompilierten Version von der LilyPond-Internetseite vorgenommen wurde oder Sie die Version durch Ihren Paketmanager installiert haben (also z. B. in einer Linux-Distribution oder unter fink oder cygwin installiert), und b) auf welchem Betriebssystem Sie das Programm benutzen:

Von lilypond.org heruntergeladen

Mit einem Paket-Manager installiert oder selber aus den Quellen kompiliert

Wechseln Sie in das Verzeichnis ‘PREFIX/share/lilypond/X.Y.Z/’, wobei PREFIX bei Ihrem Paket-Manager oder dem configure-Skript gesetzt wird, und X.Y.Z die LilyPond-Versionsnummer.


In diesem Ordner sind die zwei interessanten Unterordner:

Schauen wir uns zuerst einige Dateien in ‘ly/’ an. Öffnen Sie ‘ly/property-init.ly’ in einem Texteditor. Der, den Sie normalerweise für ‘.ly’-Dateien benutzen, genügt. Diese Datei enthält die Definitionen aller vordefinierten Befehle für LilyPond, wie etwa \stemUp und \slurDotted. Sie können sehen, dass es sich um nichts mehr handelt als Definitionen von Variablen, die eine oder mehrere \override-Befehle enthalten. Der Befehl /tieDotted etwa wird folgendermaßen definiert:

tieDotted = {
  \override Tie.dash-period = #0.75
  \override Tie.dash-fraction = #0.1
}

Wenn Sie diese Voreinstellungen der vordefinierten Befehl nicht mögen, können Sie sie ganz einfach umdefinieren, genauso wie jede andere Variable auch, indem Sie sie an den Anfang Ihrer Quelldatei schreiben.

Hier sind die wichtigsten Dateien, die sich im Ordner ‘ly/’ befinden:

DateinameInhalt
ly/engraver-init.lyDefinitionen von Engraver-Kontexten
ly/paper-defaults-init.lySpezifikationen von Voreinstellungen für Papiermaße
ly/performer-init.lyDefinitionen von Performer-Kontexten
ly/property-init.lyDefinitionen aller vordefinierten Befehle
ly/spanner-init.lyDefinitionen aller vordefinierten Strecker-Befehle

Andere Einstellungen (wie die Definitionen von Beschriftungsbefehlen) sind in ‘.scm’-(Scheme)-Dateien gespeichert. Die Scheme-Programmiersprache wird benutzt, um eine programmierbare Schnittstelle zu den internen Operationen von LilyPond zu haben. Eine weitere Erklärung dieser Dateien ist im Moment außerhalb des Rahmens dieses Handbuchs, denn sie erfordern einige Kenntnis der Scheme-Sprache. Die Warnung ist hier angebracht, dass des ein gutes technisches Verständnis oder sehr viel Zeit braucht, um Scheme und diese Dateien zu verstehen (siehe auch Scheme-Übung).

Wenn Sie sich mit Scheme auskennen, sind hier mögliche interessante Dateien:

DateinameInhalt
scm/auto-beam.scmSub-Balken-Voreinstellungen
scm/define-grobs.scmVoreinstellungen für Grob-Eigenschaften
scm/define-markup-commands.scmDefinition aller Markup-Beschriftungsbefehle
scm/midi.scmVoreinstellung für die MIDI-Ausgabe
scm/output-lib.scmEinstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw.
scm/parser-clef.scmDefinitionen der unterstützten Schlüssel
scm/script.scmVoreinstellungen für Artikulationszeichen

5.6.5 Vyhnutí se ladění s pomalejším překladem

LilyPond kann einige zusätzliche Tests durchführen, während die Noten gesetzt werden. Dadurch braucht das Programm länger, um den Notensatz zu produzieren, aber üblicherweise werden weniger nachträgliche Anpassungen nötig sein. Wenn eine Textsilbe oder eine Beschriftung aus dem Rand der Partitur ragt, wird durch diese Tests die Zeile gerade so weit komprimiert, dass sie sich innerhalb der Ränder befindet.

Damit diese Tests immer funktionieren, müssen sie aktiviert werden, indem die \override-Befehle in einer context-Umgebung innerhalb der layout-Umgebung notiert werden und nicht innerhalb der Noten:

\score {
  { …Noten… }
  \layout {
    \context {
      \Score
 %  Um sicher zu gehen, dass Texte und Liedtext
 %  innerhalb der Papierränder bleiben
 \override PaperColumn.keep-inside-line = ##t
 \override NonMusicalPaperColumn.keep-inside-line = ##t
    }
  }
}

keep-inside-line braucht jedoch sehr viel Berechnungen, sodass es sich anbietet, diese Funktion zunächst nicht zu aktivieren und erst einzufügen, wenn man die endgültige Version erstellt. Auf diese Weise muss man nicht mit der Hand \break-Befehle hinzufügen, um zu vermeiden, dass Text über den rechten Rand der Seite hinausragt.


5.6.6 Pokročilá ladění se Scheme

Auch wenn viele Sachen mit \override und \tweak möglich sind, gibt es eine sehr viel mächtigere Möglichkeit, die Arbeitsweise von LilyPond mit Hilfe der programmierbaren Schnittstelle zu beeinflussen. Code, der in der Scheme-Programmiersprache geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond eingefügt werden. Natürlich brauchen Sie dazu wenigstens ein grundlegendes Verständnis von Scheme. Eine Einleitung finden Sie in der Scheme-Übung.

Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine Scheme-Prozedur gesetzt werden kann, die dann jedes Mal aufgerufen wird, wenn die Eigenschaft von LilyPond benutzt wird. Die Eigenschaft kann damit dynamisch auf einen Wert gesetzt werden, der durch die Prozedur jedes Mal neu bestimmt wird. In diesem Beispiel wird die Farbe der Notenköpfe entsprechend zu ihrer Position innerhalb der Tonleiter gesetzt.

#(define (color-notehead grob)
   "Color the notehead according to its position on the staff."
   (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
                               7)))
     (case mod-position
       ;;   Return rainbow colors
       ((1) (x11-color 'red    ))  ; for C
       ((2) (x11-color 'orange ))  ; for D
       ((3) (x11-color 'yellow ))  ; for E
       ((4) (x11-color 'green  ))  ; for F
       ((5) (x11-color 'blue   ))  ; for G
       ((6) (x11-color 'purple ))  ; for A
       ((0) (x11-color 'violet ))  ; for B
       )))

\relative {
  % Arrange to obtain color from color-notehead procedure
  \override NoteHead.color = #color-notehead
  a2 b | c2 d | e2 f | g2 a |
}

[image of music]

Weiter Beispiele, die die Benutzung dieser programmierbaren Schnittstelle zeigen, finden sich in Optimierungen mit Scheme.


A. Předlohy

Tento úryvek příručky obsahuje předlohy, v nichž je notový zápis LilyPondu již nastaven. Jen ještě musíte vložit své noty, soubor přeložit LilyPondem a těšit se z krásného obrazu not!


A.1 Jednotlivá notová osnova


A.1.1 Pouze noty

This very simple template gives you a staff with notes, suitable for a solo instrument or a melodic fragment. Cut and paste this into a file, add notes, and you’re finished!

melody = \relative c' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

\score {
  \new Staff \melody
  \layout { }
  \midi { }
}

[image of music]


A.1.2 Noty a text

This small template demonstrates a simple melody with lyrics. Cut and paste, add notes, then words for the lyrics. This example turns off automatic beaming, which is common for vocal parts. To use automatic beaming, change or comment out the relevant line.

melody = \relative c' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

text = \lyricmode {
  Aaa Bee Cee Dee
}

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

[image of music]


A.1.3 Noty a názvy akordů

Want to prepare a lead sheet with a melody and chords? Look no further!

melody = \relative c' {
  \clef treble
  \key c \major
  \time 4/4

  f4 e8[ c] d4 g
  a2 ~ a
}

harmonies = \chordmode {
  c4:m f:min7 g:maj c:aug
  d2:dim b4:5 e:sus
}

\score {
  <<
    \new ChordNames {
      \set chordChanges = ##t
      \harmonies
    }
    \new Staff \melody
  >>
  \layout{ }
  \midi { }
}

[image of music]


A.1.4 Noty, text a názvy akordů

This template allows the preparation of a song with melody, words, and chords.

melody = \relative c' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

text = \lyricmode {
  Aaa Bee Cee Dee
}

harmonies = \chordmode {
  a2 c
}

\score {
  <<
    \new ChordNames {
      \set chordChanges = ##t
      \harmonies
    }
    \new Voice = "one" { \autoBeamOff \melody }
    \new Lyrics \lyricsto "one" \text
  >>
  \layout { }
  \midi { }
}

[image of music]


A.2 Klavírní předlohy


A.2.1 Klavírní sólo

Here is a simple piano staff with some notes.

upper = \relative c'' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

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

  a2 c
}

\score {
  \new PianoStaff \with { instrumentName = "Piano" }
  <<
    \new Staff = "upper" \upper
    \new Staff = "lower" \lower
  >>
  \layout { }
  \midi { }
}

[image of music]


A.2.2 Klavír a hlas zpěvu

Here is a typical song format: one staff with the melody and lyrics, with piano accompaniment underneath.

melody = \relative c'' {
  \clef treble
  \key c \major
  \time 4/4

  a b c d
}

text = \lyricmode {
  Aaa Bee Cee Dee
}

upper = \relative c'' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

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

  a2 c
}

\score {
  <<
    \new Voice = "mel" { \autoBeamOff \melody }
    \new Lyrics \lyricsto mel \text
    \new PianoStaff <<
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
  \layout {
    \context { \Staff \RemoveEmptyStaves }
  }
  \midi { }
}

[image of music]


A.2.3 Klavír s vystředěným textem

Instead of having a full staff for the melody and lyrics, lyrics can be centered between the staves of a piano staff.

upper = \relative c'' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

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

  a2 c
}

text = \lyricmode {
  Aaa Bee Cee Dee
}

\score {
  \new PianoStaff <<
    \new Staff = upper { \new Voice = "singer" \upper }
    \new Lyrics \lyricsto "singer" \text
    \new Staff = lower { \lower }
  >>
  \layout { }
  \midi { }
}

[image of music]


A.3 Smyčcový kvartet


A.3.1 Jednoduchá smyčcový kvartet

This template demonstrates a simple string quartet. It also uses a \global section for time and key signatures

global= {
  \time 4/4
  \key c \major
}

violinOne = \new Voice \relative c'' {
  c2 d
  e1
  \bar "|."
}

violinTwo = \new Voice \relative c'' {
  g2 f
  e1
  \bar "|."
}

viola = \new Voice \relative c' {
  \clef alto
  e2 d
  c1
  \bar "|."
}

cello = \new Voice \relative c' {
  \clef bass
  c2 b
  a1
  \bar "|."
}

\score {
  \new StaffGroup <<
    \new Staff \with { instrumentName = "Violin 1" }
    << \global \violinOne >>
    \new Staff \with { instrumentName = "Violin 2" }
    << \global \violinTwo >>
    \new Staff \with { instrumentName = "Viola" }
    << \global \viola >>
    \new Staff \with { instrumentName = "Cello" }
    << \global \cello >>
  >>
  \layout { }
  \midi { }
}

[image of music]


A.3.2 Hlasy smyčcového kvartetu

The „String quartet template“ snippet produces a nice string quartet, but what if you needed to print parts? This new template demonstrates how to use the \tag feature to easily split a piece into individual parts.

You need to split this template into separate files; the filenames are contained in comments at the beginning of each file. piece.ly contains all the music definitions. The other files – score.ly, vn1.ly, vn2.ly, vla.ly, and vlc.ly – produce the appropriate part.

Do not forget to remove specified comments when using separate files!

%%%%% piece.ly
%%%%% (This is the global definitions file)

global= {
  \time 4/4
  \key c \major
}


Violinone = \new Voice {
  \relative c'' {
    c2 d e1
    \bar "|."
  }
}


Violintwo = \new Voice {
  \relative c'' {
    g2 f e1
    \bar "|."
  }
}


Viola = \new Voice {
  \relative c' {
    \clef alto
    e2 d c1
    \bar "|."
  }
}


Cello = \new Voice {
  \relative c' {
    \clef bass
    c2 b a1
    \bar "|."
  }
}


music = {
  <<
    \tag #'score \tag #'vn1
    \new Staff \with { instrumentName = "Violin 1" }
    << \global \Violinone >>

    \tag #'score \tag #'vn2
    \new Staff \with { instrumentName = "Violin 2" }
    << \global \Violintwo>>

    \tag #'score \tag #'vla
    \new Staff \with { instrumentName = "Viola" }
    << \global \Viola>>

    \tag #'score \tag #'vlc
    \new Staff \with { instrumentName = "Cello" }
    << \global \Cello >>
  >>
}

% These are the other files you need to save on your computer

% score.ly
% (This is the main file)

% uncomment the line below when using a separate file
%\include "piece.ly"

#(set-global-staff-size 14)

\score {
  \new StaffGroup \keepWithTag #'score \music
  \layout { }
  \midi { }
}


%{ Uncomment this block when using separate files

% vn1.ly
% (This is the Violin 1 part file)

\include "piece.ly"
\score {
  \keepWithTag #'vn1 \music
  \layout { }
}


% vn2.ly
% (This is the Violin 2 part file)

\include "piece.ly"
\score {
  \keepWithTag #'vn2 \music
  \layout { }
}


% vla.ly
% (This is the Viola part file)

\include "piece.ly"
\score {
  \keepWithTag #'vla \music
  \layout { }
}


% vlc.ly
% (This is the Cello part file)

\include "piece.ly"
\score {
  \keepWithTag #'vlc \music
  \layout { }
}

%}

[image of music]


A.4 Vokální soubor


A.4.1 Notový zápis SATB

Here is a standard four-part SATB vocal score. With larger ensembles, it is often useful to include a section which is included in all parts. For example, the time signature and key signature are almost always the same for all parts. Like in the „Hymn“ template, the four voices are regrouped on only two staves.

\paper {
  top-system-spacing.basic-distance = #10
  score-system-spacing.basic-distance = #20
  system-system-spacing.basic-distance = #20
  last-bottom-spacing.basic-distance = #10
}

global = {
  \key c \major
  \time 4/4
}

sopMusic = \relative {
  c''4 c c8[( b)] c4
}
sopWords = \lyricmode {
  hi hi hi hi
}

altoMusic = \relative {
  e'4 f d e
}
altoWords = \lyricmode {
  ha ha ha ha
}

tenorMusic = \relative {
  g4 a f g
}
tenorWords = \lyricmode {
  hu hu hu hu
}

bassMusic = \relative {
  c4 c g c
}
bassWords = \lyricmode {
  ho ho ho ho
}

\score {
  \new ChoirStaff <<
    \new Lyrics = "sopranos" \with {
      % this is needed for lyrics above a staff
      \override VerticalAxisGroup.staff-affinity = #DOWN
    }
    \new Staff = "women" <<
      \new Voice = "sopranos" {
        \voiceOne
        << \global \sopMusic >>
      }
      \new Voice = "altos" {
        \voiceTwo
        << \global \altoMusic >>
      }
    >>
    \new Lyrics = "altos"
    \new Lyrics = "tenors" \with {
      % this is needed for lyrics above a staff
      \override VerticalAxisGroup.staff-affinity = #DOWN
    }
    \new Staff = "men" <<
      \clef bass
      \new Voice = "tenors" {
        \voiceOne
        << \global \tenorMusic >>
      }
      \new Voice = "basses" {
        \voiceTwo << \global \bassMusic >>
      }
    >>
    \new Lyrics = "basses"
    \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
    \context Lyrics = "altos" \lyricsto "altos" \altoWords
    \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
    \context Lyrics = "basses" \lyricsto "basses" \bassWords
  >>
}

[image of music]


A.4.2 Notový zápis SATB a automatický klavírní výtah

This template adds an automatic piano reduction to the standard SATB vocal score demonstrated in „Vocal ensemble template“. This demonstrates one of the strengths of LilyPond – you can use a music definition more than once. If any changes are made to the vocal notes (say, tenorMusic), then the changes will also apply to the piano reduction.

\paper {
  top-system-spacing.basic-distance = #10
  score-system-spacing.basic-distance = #20
  system-system-spacing.basic-distance = #20
  last-bottom-spacing.basic-distance = #10
}

global = {
  \key c \major
  \time 4/4
}

sopMusic = \relative {
  c''4 c c8[( b)] c4
}
sopWords = \lyricmode {
  hi hi hi hi
}

altoMusic = \relative {
  e'4 f d e
}
altoWords =\lyricmode {
  ha ha ha ha
}

tenorMusic = \relative {
  g4 a f g
}
tenorWords = \lyricmode {
  hu hu hu hu
}

bassMusic = \relative {
  c4 c g c
}
bassWords = \lyricmode {
  ho ho ho ho
}

\score {
  <<
    \new ChoirStaff <<
      \new Lyrics = "sopranos" \with {
        % This is needed for lyrics above a staff
        \override VerticalAxisGroup.staff-affinity = #DOWN
      }
      \new Staff = "women" <<
        \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
        \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
      >>
      \new Lyrics = "altos"
      \new Lyrics = "tenors" \with