[Top][Contents][Index] |
LilyPond – Learning Manual
Tento soubor poskytuje úvod pro LilyPond verze 2.24.4. |
1. Installing | Installing LilyPond | |
2. Cvičení | Cvičení na úvod. | |
3. Běžný notový zápis | Nejčastější případy notového zápisu. | |
4. Základní pojmy | Základní pojmy, které jsou potřeba kvůli přečtení zbytku této příručky. | |
5. Ladění výstupu | Úvod do ovlivňování obrazu notového zápisu. | |
Přílohy | ||
---|---|---|
A. Předlohy | Předlohy ihned k použití. | |
B. GNU Free Documentation License | Licence této příručky. | |
C. Rejstřík k LilyPondu |
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/. |
[ << Top ] | [Top][Contents][Index] | [ Cvičení >> ] |
[ < Top ] | [ Up : Top ] | [ Graphical setup under GNU/Linux > ] |
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 | ||
1.2 Graphical setup under Windows | ||
1.3 Graphical setup under macOS | ||
1.4 Command line setup |
[ << Installing ] | [Top][Contents][Index] | [ Cvičení >> ] |
[ < Installing ] | [ Up : Installing ] | [ Graphical setup under Windows > ] |
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.
In GNOME Software, search „Frescobaldi“.
Install Frescobaldi. Behind the scenes, this should also automatically install some version of LilyPond.
Open Frescobaldi. It starts on a new file with some pre-filled text that will be explained later.
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.
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.
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.
Select „LilyPond Preferences“, and click „Add“ to register a new LilyPond version.
Click on the file explorer icon.
Navigate to the folder you just extracted, then inside this folder, to ‘bin’ and finally ‘lilypond’.
You’re done! You can click ‘OK’. You now have two versions of LilyPond installed.
Now turn to Cvičení to learn more about LilyPond’s syntax.
[ << Installing ] | [Top][Contents][Index] | [ Cvičení >> ] |
[ < Graphical setup under GNU/Linux ] | [ Up : Installing ] | [ Graphical setup under macOS > ] |
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.
Double-click on the downloaded file in the file explorer. This launches the setup wizard.
Accept the license and install Frescobaldi using the wizard. You will find a startup screen like this:
Navigate to the Frescobaldi preferences.
Navigate to „LilyPond Preferences“ on the left.
Click „Edit“ on the right. This leads to a dialog for choosing the 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’.
Now click „OK“.
Click „OK“ again.
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.
Congratulations, you have just created your first music sheet with LilyPond! Now continue with the Cvičení to learn more about LilyPond’s syntax.
[ << Installing ] | [Top][Contents][Index] | [ Cvičení >> ] |
[ < Graphical setup under Windows ] | [ Up : Installing ] | [ Command line setup > ] |
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.
In the Finder, double-click on the file to run the installer. At this point, you might encounter a problem:
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“.
Then click „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.
Frescobaldi is now open. Find the Preferences.
Click on „LilyPond Preferences“ on the left.
Click „Edit“ on the right. This opens a new window:
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’.
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.
Congratulations! You have compiled your first music sheet with LilyPond. Now continue with the Cvičení to learn more about LilyPond’s syntax.
[ << Installing ] | [Top][Contents][Index] | [ Cvičení >> ] |
[ < Graphical setup under macOS ] | [ Up : Installing ] | [ Cvičení > ] |
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’:
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.
[ << Installing ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Command line setup ] | [ Up : Top ] | [ Přeložení zdrojového souboru > ] |
2. Cvičení
Tato kapitola čtenáři představuje základní práci s LilyPondem.
2.1 Přeložení zdrojového souboru | ||
2.2 Jak se píší vstupní soubory | ||
2.3 Vypořádání se s chybami | ||
2.4 Jak číst příručky |
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Cvičení ] | [ Up : Cvičení ] | [ Jak se píší vstupní soubory > ] |
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:
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í.
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Přeložení zdrojového souboru ] | [ Up : Cvičení ] | [ Jednoduchý notový zápis > ] |
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 | ||
2.2.2 Práce na vstupních souborech |
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Jak se píší vstupní soubory ] | [ Up : Jak se píší vstupní soubory ] | [ Práce na vstupních souborech > ] |
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' }
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 }
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 }
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 }
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 }
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' }
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 }
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. }
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 }
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 }
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 }
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 }
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 }
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íč.
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Jednoduchý notový zápis ] | [ Up : Jak se píší vstupní soubory ] | [ Vypořádání se s chybami > ] |
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í:
-
Označení verze:
Každý soubor LilyPondu musí obsahovat označení verze.
Označení verze je jeden řádek, který vyhlašuje tu verzi LilyPondu,
pro kterou byl onen soubor napsán, jak je to zřejmé na
příkladu:
\version "2.24.4"
Obvykle je označení verze v souboru napsáno nahoře.
Označení verze je velice důležité ze dvou důvodů: 1. s jeho pomocí se lze pustit do automatické aktualizace vstupních souborů, když je třeba změnit skladbu LilyPondu. 2. je zde zapsána ta verze LilyPondu, která je nutná pro sestavení souboru.
Když označení verze v souboru chybí, vydá LilyPond během sestavování souboru varování.
-
Psaní velkých a malých písmen:
Význam znaku se mění podle toho, zda je zapsáno
velké (
A, B, S, T
) nebo malé (a, b, s, t
). Noty se vždy musí zapisovat malými písmeny, ‘{ c d e }’ se chová vhodně, zatímco ‘{ C D E }’ vyrábí chybu. - Prázdné znaky:
Nehraje žádnou úlohu, kolik prázdných znaků nebo tabulátorů nebo
prázdných řádků se nachází mezi znaky zdrojového souboru.
‘{ c d e }’ znamená totéž co
‘{ c d e }’ nebo
{ c4 d e }
Přirozeně se poslední příklad čte o něco hůře. Dobrým pravidlem je odsazovat bloky kódu dvěma prázdnými znaky:
{ c4 d e }
Prázdné znaky jsou však nezbytné kvůli oddělení četných skladebných prvků od sebe. Prázdné znaky tedy mohou být přidány vždy, ale nesmějí být odstraněny. Jelikož chybějící prázdné znaky mohou způsobit velmi podivná chybová hlášení. Je záhodno přidat jeden prázdný znak vždy před a po skladebném prvku, zhruba před a po složených závorkách.
- Výrazy:
I ten nejmenší úryvek kódu LilyPondu musí být uzavřen ve
{ složených závorkách }. Tyto
závorky LilyPondu ukazují, že se jedná o hudební výraz patřící
k sobě, právě tak jako k sobě patří kulaté závorky ‚()‘ v matematice.
Závorky by měly být pokaždé obklopeny prázdným znakem, abychom se vyhnuli
dvojznačnostem. Má to pak ještě být tak, aby se nacházely
na začátku nebo na konci řádku.
Příkaz pro LilyPond následovaný jednoduchým výrazem v závorkách (jako například ‚
relative c' { … }
‘) je též hodnocen jako jednotlivý hudební výraz. -
Poznámky:
Poznámka je připomínkou lidskému čtenáři zdrojového souboru.
Při zpracování souboru je programem přehlížena, takže na tiskový
výstup not nemá žádný účinek.
Jsou dva rozdílné druhy poznámek. Znak procenta
‚%‘ předchází řádkové poznámce: vše po tomto znaku
je v tomto řádku přehlíženo.
Obvykle je řádková poznámka připsána nad kódem,
ke kterému se vztahuje.
a4 a a a % Tato poznámka se odvolává na H b2 b
Bloková poznámka je celým úryvkem s poznámkou. Vše, co je obklopeno
%{
a%}
, se přehlíží. Znamená to, že jedna bloková poznámka se nemůže nacházet v jiné blokové poznámce. Když byste to zkusili, ukončí již první%}
obě blokové poznámky. Následující příklad ukazuje jedno možné použití poznámek:% Noty pro zajiskření zajiskření zde c4 c g' g a a g2 %{ Tyto řádky a noty dole jsou přehlíženy, protože se nacházejí v jedné blokové poznámce. f4 f e e d d c2 %}
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Práce na vstupních souborech ] | [ Up : Cvičení ] | [ Obecné rady k řešení chyb > ] |
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 | ||
2.3.2 Některé časté chyby |
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Vypořádání se s chybami ] | [ Up : Vypořádání se s chybami ] | [ Některé časté chyby > ] |
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íží.
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Obecné rady k řešení chyb ] | [ Up : Vypořádání se s chybami ] | [ Jak číst příručky > ] |
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.
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Některé časté chyby ] | [ Up : Cvičení ] | [ Vypuštěný materiál > ] |
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 | ||
2.4.2 Klepnutelné příklady | ||
2.4.3 Přehled o příručkách |
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Jak číst příručky ] | [ Up : Jak číst příručky ] | [ Klepnutelné příklady > ] |
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.
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Vypuštěný materiál ] | [ Up : Jak číst příručky ] | [ Přehled o příručkách > ] |
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:
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.
[ << Cvičení ] | [Top][Contents][Index] | [ Běžný notový zápis >> ] |
[ < Klepnutelné příklady ] | [ Up : Jak číst příručky ] | [ Běžný notový zápis > ] |
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.
- Předtím než cokoli vyzkoušíte: Přečtěte si části Cvičení a Běžný notový zápis. Když narazíte na hudební odborné pojmy, které neznáte, podívejte se na ně v části Slovníček.
- Předtím než napíšete úplný kousek: Přečtěte si část Základní pojmy v příručce k učení se. Potom se můžete na pro váš projekt důležité části podívat v Doporučení pro notový zápis.
- Předtím než se pokusíte měnit obvyklý notový zápis: Přečtěte si o ladění výstupu v příručce k učení se.
- Předtím než se pustíte do většího projektu: Přečtěte si část jak psát soubory v části věnované používání programu.
[ << Cvičení ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Přehled o příručkách ] | [ Up : Top ] | [ Notový zápis v jedné notové osnově > ] |
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ě | ||
3.2 Více not najednou | ||
3.3 Písničky | ||
3.4 Poslední úpravy |
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Běžný notový zápis ] | [ Up : Běžný notový zápis ] | [ Přezkoušení taktů > ] |
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 |
Podívejte se také na
Doporučení pro notový zápis: Přezkoušení taktů a počtu taktů.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Přezkoušení taktů ] | [ Up : Notový zápis v jedné notové osnově ] | [ Ligatury a legatové obloučky > ] |
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í bé 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 }
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 |
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 (bé, 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 }
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 }
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
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) }
Frázovací obloučky
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\) }
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) }
Podívejte se také na
Doporučení pro notový zápis: Ligatury, Legatové obloučky, Obloučky frázování.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Ligatury a legatové obloučky ] | [ Up : Notový zápis v jedné notové osnově ] | [ Přidání textu > ] |
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-_ }
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 }
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^-_+ }
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 }
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\! }
Podívejte se také na
Doporučení pro notový zápis: Artikulační znaménka a ozdoby, Příkazy pro prstoklad, Dynamika.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Artikulační znaménka a hlasitost ] | [ Up : Notový zápis v jedné notové osnově ] | [ Automatické a ruční trámce > ] |
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"
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 }
Podívejte se také na
Doporučení pro notový zápis: Zadání textu.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Přidání textu ] | [ Up : Notový zápis v jedné notové osnově ] | [ Dodatečné rytmické příkazy > ] |
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 }
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 }
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 | }
Podívejte se také na
Doporučení pro notový zápis: Automatické trámce, Ruční trámce.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Automatické a ruční trámce ] | [ Up : Notový zápis v jedné notové osnově ] | [ Více not najednou > ] |
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 | }
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 } }
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 | }
Podívejte se také na
Doporučení pro notový zápis: Ozdoby, Jiná rytmická rozdělení, Předtaktí.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Dodatečné rytmické příkazy ] | [ Up : Běžný notový zápis ] | [ Vysvětlení hudebních výrazů > ] |
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ů | ||
3.2.2 Více notových osnov | ||
3.2.3 Seskupení notových osnov | ||
3.2.4 Spojení not do akordů | ||
3.2.5 Vícehlasost v jedné notové osnově |
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Více not najednou ] | [ Up : Více not najednou ] | [ Více notových 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
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 }
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 }
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 } >>
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>> } >> | }
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Vysvětlení hudebních výrazů ] | [ Up : Více not najednou ] | [ Seskupení notových osnov > ] |
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 } >>
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 } >>
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Více notových osnov ] | [ Up : Více not najednou ] | [ Spojení not do akordů > ] |
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 | } >>
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.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Seskupení notových osnov ] | [ Up : Více not najednou ] | [ Vícehlasost v jedné notové osnově > ] |
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 }
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>) |
Podívejte se také na
Doporučení pro notový zápis: Akordové noty.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Spojení not do akordů ] | [ Up : Více not najednou ] | [ Písničky > ] |
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.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Vícehlasost v jedné notové osnově ] | [ Up : Běžný notový zápis ] | [ Zápis jednoduchých písní > ] |
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í | ||
3.3.2 Vyrovnání textu s melodií | ||
3.3.3 Text pro více osnov |
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Písničky ] | [ Up : Písničky ] | [ Vyrovnání textu s melodií > ] |
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 }
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, } >>
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ě.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Zápis jednoduchých písní ] | [ Up : Písničky ] | [ Text pro více osnov > ] |
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; | } >>
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; | } >>
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; | } >>
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; | } >>
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; | } >>
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, } >>
Žá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, __ } >>
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 -- | tà } >>
Podívejte se také na
Doporučení pro notový zápis: Notový zápis zpěvu.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Vyrovnání textu s melodií ] | [ Up : Písničky ] | [ Poslední úpravy > ] |
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, } >>
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.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Text pro více osnov ] | [ Up : Běžný notový zápis ] | [ Pořádání děl pomocí proměnných > ] |
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 | ||
3.4.2 Přidání názvu | ||
3.4.3 Absolutní označení not | ||
3.4.4 Po cvičení |
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Poslední úpravy ] | [ Up : Poslední úpravy ] | [ Přidání názvu > ] |
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 >> }
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 }
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 }
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Pořádání děl pomocí proměnných ] | [ Up : Poslední úpravy ] | [ Absolutní označení not > ] |
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.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Přidání názvu ] | [ Up : Poslední úpravy ] | [ Po cvičení > ] |
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' | }
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 | }
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 | }
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 | }
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.
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Základní pojmy >> ] |
[ < Absolutní označení not ] | [ Up : Poslední úpravy ] | [ Základní pojmy > ] |
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!
[ << Běžný notový zápis ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Po cvičení ] | [ Up : Top ] | [ Jak pracují vstupní soubory LilyPondu > ] |
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 | ||
4.2 Hlasy obsahují noty | ||
4.3 Prostředí a rytci | ||
4.4 Rozšíření příkladů |
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Základní pojmy ] | [ Up : Základní pojmy ] | [ Uvedení do stavby souboru v LilyPondu > ] |
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 }
Úplné vymezení vstupního formátu se nachází v kapitole Stavba souboru.
4.1.1 Uvedení do stavby souboru v LilyPondu | ||
4.1.2 Notový zápis je jedním (jediným) složeným hudebním výrazem | ||
4.1.3 Naskládání hudebních výrazů do sebe | ||
4.1.4 O ne-naskládatelnosti závorek a ligatur |
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.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Uvedení do stavby souboru v LilyPondu ] | [ Up : Jak pracují vstupní soubory LilyPondu ] | [ Naskládání hudebních výrazů do sebe > ] |
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 { } }
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 { } }
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 | } }
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 | } }
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.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Naskládání hudebních výrazů do sebe ] | [ Up : Jak pracují vstupní soubory LilyPondu ] | [ Hlasy obsahují noty > ] |
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ávorek | Funkce |
---|---|
{ .. } | 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 }
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.\) }
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < O ne-naskládatelnosti závorek a ligatur ] | [ Up : Základní pojmy ] | [ Slyším hlasy > ] |
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 | ||
4.2.2 Přesně vyjádřené začátky hlasů | ||
4.2.3 Hlasy a zpěvy |
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Hlasy obsahují noty ] | [ Up : Hlasy obsahují noty ] | [ Přesně vyjádřené začátky hlasů > ] |
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> }
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 } >> }
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 } >>
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 | } >>
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 } >> | }
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 } >> | }
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.
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.
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 | }
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 | }
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ů.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Slyším hlasy ] | [ Up : Hlasy obsahují noty ] | [ Hlasy a zpěvy > ] |
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
až
\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:
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 | }
\relative { \voiceOne c'4 d8~ 8 e4( f | g4 a) b-> c | \oneVoice c,4 d8~ 8 e4( f | g4 a) b-> c | }
\relative { \voiceTwo c'4 d8~ 8 e4( f | g4 a) b-> c | \oneVoice c,4 d8~ 8 e4( f | g4 a) b-> c | }
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 | } >> }
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 | } >> } >> }
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 | } >>
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ů.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Přesně vyjádřené začátky hlasů ] | [ Up : Hlasy obsahují noty ] | [ Prostředí a rytci > ] |
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. | } >>
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 } >> >> }
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 } >> >> }
Podívejte se také na
Notace: Notový zápis zpěvu.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Hlasy a zpěvy ] | [ Up : Základní pojmy ] | [ Vysvětlení prostředí > ] |
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í | ||
4.3.2 Vytvoření prostředí | ||
4.3.3 Vysvětlení rytců | ||
4.3.4 Změna vlastností prostředí | ||
4.3.5 Přidání a odstranění rytců |
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Prostředí a rytci ] | [ Up : Prostředí a rytci ] | [ Vytvoření prostředí > ] |
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. | }
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.
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í.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vysvětlení prostředí ] | [ Up : Prostředí a rytci ] | [ Vysvětlení rytců > ] |
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
(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í.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vytvoření prostředí ] | [ Up : Prostředí a rytci ] | [ Změna vlastností 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.
Engraver | Funktion |
---|---|
Accidental_engraver | Erstellt Versetzungszeichen, vorgeschlagene und Warnversetzungszeichen. |
Beam_engraver | Erstellt Balken. |
Clef_engraver | Erstellt Notenschlüssel. |
Completion_heads_engraver | Teilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen. |
Dynamic_engraver | Erstellt Dynamik-Klammern und Dynamik-Texte. |
Forbid_line_break_engraver | Verbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist. |
Key_engraver | Erstellt die Vorzeichen. |
Metronome_mark_engraver | Erstellt Metronom-Bezeichnungen. |
Note_heads_engraver | Erstellt Notenköpfe. |
Rest_engraver | Erstellt Pausen. |
Staff_symbol_engraver | Ersetllt die (standardmäßig) fünf Notenlinien des Systems. |
Stem_engraver | Erstellt die Notenhälse und Tremolos mit einem Hals. |
Time_signature_engraver | Erstellt 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.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vysvětlení rytců ] | [ Up : Prostředí a rytci ] | [ Přidání a odstranění rytců > ] |
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.
eigenschaftsBezeichnung | Typ | Funktion | Beispiel-Wert |
---|---|---|---|
extraNatural | boolescher Wert | Wenn wahr, werden zusätzliche Auflösungszeichen vor Versetzungszeichen gesetzt. | #t , #f |
currentBarNumber | Integer | Setzt die aktuelle Taktnummer. | 50 |
doubleSlurs | boolescher Wert | Wenn wahr, werden Legatobögen über und unter die Noten gesetzt. | #t , #f |
instrumentName | Text | Setzt die Instrumentenbezeichnung am Anfang eines Systems. | "Cello I" |
fontSize | reale Zahl | Vergrößert oder verkleinert die Schriftgröße. | 2.4 |
stanza | Text | Setzt 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 } >>
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 } >>
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 } >>
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 | }
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 } } >>
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 } } }
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 } } }
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.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Změna vlastností prostředí ] | [ Up : Prostředí a rytci ] | [ Rozšíření příkladů > ] |
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 | }
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 } } >>
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 } } >>
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 } } }
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.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Přidání a odstranění rytců ] | [ Up : Základní pojmy ] | [ Soprán a violoncello > ] |
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 | ||
4.4.2 Čtyřhlasý notový zápis SATB | ||
4.4.3 Vytvoření notového zápisu od základu | ||
4.4.4 Úspora psaní na stroji pomocí proměnných a funkcí | ||
4.4.5 Notové zápisy a hlasy |
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Rozšíření příkladů ] | [ Up : Rozšíření příkladů ] | [ Čtyřhlasý notový zápis SATB > ] |
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 text
auch 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 { } }
Podívejte se také na
Die Vorlagen, mit denen wir begonnen haben, können im Anhang „Předlohy“ gefunden werden, siehe Jednotlivá notová osnova.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Soprán a violoncello ] | [ Up : Rozšíření příkladů ] | [ Vytvoření notového zápisu od základu > ] |
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:
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 >> >> }
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Čtyřhlasý notový zápis SATB ] | [ Up : Rozšíření příkladů ] | [ Úspora psaní na stroji pomocí proměnných a funkcí > ] |
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
Podívejte se také na
Glossar: system.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vytvoření notového zápisu od základu ] | [ Up : Rozšíření příkladů ] | [ Notové zápisy a hlasy > ] |
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 } }
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 } }
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} }
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 | }
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.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Úspora psaní na stroji pomocí proměnných a funkcí ] | [ Up : Rozšíření příkladů ] | [ Ladění výstupu > ] |
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:
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:
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:
[ << Základní pojmy ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Notové zápisy a hlasy ] | [ Up : Top ] | [ Základy pro ladění > ] |
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.2 Vnitřní referenční příručka | ||
5.3 Vzhled předmětů | ||
5.4 Umístění předmětů | ||
5.5 Střety předmětů | ||
5.6 Další ladění |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Ladění výstupu ] | [ Up : Ladění výstupu ] | [ Úvod do ladění > ] |
5.1 Základy pro ladění
5.1.1 Úvod do ladění | ||
5.1.2 Předměty a rozhraní | ||
5.1.3 Pravidla pro pojmenovávání předmětů a vlastností | ||
5.1.4 Postupy při ladění |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Základy pro ladění ] | [ Up : Základy pro ladění ] | [ Předměty a rozhraní > ] |
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Úvod do ladění ] | [ Up : Základy pro ladění ] | [ Pravidla pro pojmenovávání předmětů a vlastností > ] |
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Předměty a rozhraní ] | [ Up : Základy pro ladění ] | [ Postupy při ladění > ] |
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-/Eigenschaftstyp | Naming convention | Beispiele |
---|---|---|
Kontexte | Aaaa oder AaaaAaaaAaaa | Staff, GrandStaff |
Layout-Objekte | Aaaa oder AaaaAaaaAaaa | Slur, NoteHead |
Engraver | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
Schnittstellen | aaa-aaa-interface | grob-interface, break-aligned-interface |
Kontext-Eigenschaften | aaa oder aaaAaaaAaaa | alignAboveContext, skipBars |
Layout-Objekt-Eigenschaften | aaa oder aaa-aaa-aaa | direction, 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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Pravidla pro pojmenovávání předmětů a vlastností ] | [ Up : Základy pro ladění ] | [ Vnitřní referenční příručka > ] |
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 | }
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 | }
\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 |
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 }
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 }
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"
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 \tweak
Befehl
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] } } }
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] } } }
Podívejte se také na
Notationsreferenz: Der tweak-Befehl.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Postupy při ladění ] | [ Up : Ladění výstupu ] | [ Vlastnosti předmětů v rozvržení > ] |
5.2 Vnitřní referenční příručka
5.2.1 Vlastnosti předmětů v rozvržení | ||
5.2.2 Vlastnosti nacházející se v rozhraních | ||
5.2.3 Typy vlastností |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Vnitřní referenční příručka ] | [ Up : Vnitřní referenční příručka ] | [ Vlastnosti nacházející se v rozhraních > ] |
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 } }
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 } }
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 } }
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 } }
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 } }
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Vlastnosti předmětů v rozvržení ] | [ Up : Vnitřní referenční příručka ] | [ Typy vlastností > ] |
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 } }
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Vlastnosti nacházející se v rozhraních ] | [ Up : Vnitřní referenční příručka ] | [ Vzhled předmětů > ] |
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.
Eigenschaftstyp | Regeln | Beispiele |
---|---|---|
Boolesch | Entweder wahr oder falsch, dargestellt als #t oder #f | #t , #f |
Dimension (in Notenlinienabständen) | Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten) | 2.5 , 0.34 |
Richtung | Eine gültige Richtungskonstante oder das numerische Äquivalent | LEFT , CENTER , UP ,
1 , -1 |
Integer | Eine positive ganze Zahl | 3 , 1 |
Liste | Eine 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." } |
Moment | Ein Bruch einer ganzen Note, mit der make-moment-Funktion konstruiert | (ly:make-moment 1/4) ,
(ly:make-moment 3/8) |
Zahl | Eine beliebige positive oder negative Dezimalzahl | 3.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) |
Symbol | Eine beliebige Anzahl von Symbolen, die für die Eigenschaft gültig sind, angeführt von einem Apostroph | 'italic , 'inside |
Unbekannt | Eine Prozedur oder #f (um keine Aktion hervorzurufen) | bend::print , ly:text-interface::print ,
#f |
Vektor | Eine Liste mit drei Einträgen, eingeklammert und mit
Apostroph-Raute ( '# ) angeführt. | '#(#t #t #f) |
Podívejte se také na
Erweitern: Scheme-Übung.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Typy vlastností ] | [ Up : Ladění výstupu ] | [ Viditelnost a barva předmětů > ] |
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ů | ||
5.3.2 Velikost předmětů | ||
5.3.3 Délka a tloušťka předmětů |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Vzhled předmětů ] | [ Up : Vzhled předmětů ] | [ Velikost předmětů > ] |
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Viditelnost a barva předmětů ] | [ Up : Vzhled předmětů ] | [ Délka a tloušťka předmětů > ] |
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 | } }
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 } }
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 } }
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 } }
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Velikost předmětů ] | [ Up : Vzhled předmětů ] | [ Umístění předmětů > ] |
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 } }
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Délka a tloušťka předmětů ] | [ Up : Ladění výstupu ] | [ Automatické chování > ] |
5.4 Umístění předmětů
5.4.1 Automatické chování | ||
5.4.2 Předměty uvnitř notové osnovy | ||
5.4.3 Předměty vně notové osnovy |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Umístění předmětů ] | [ Up : Umístění předmětů ] | [ Předměty uvnitř notové osnovy > ] |
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"
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, } } >>
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Automatické chování ] | [ Up : Umístění předmětů ] | [ Předměty vně notové osnovy > ] |
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
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/Links | Rauf/Rechts | Rückgängig | Wirkung |
---|---|---|---|
\arpeggioArrowDown | \arpeggioArrowUp | \arpeggioNormal | Arpeggio mit Pfeil nach unten, oben oder ohne Pfeil |
\dotsDown | \dotsUp | \dotsNeutral | Richtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden |
\dynamicDown | \dynamicUp | \dynamicNeutral | Position der Dynamik-Bezeichnung relativ zum System |
\phrasingSlurDown | \phrasingSlurUp | \phrasingSlurNeutral | Befehl für Richtung von Phrasierungsbögen |
\slurDown | \slurUp | \slurNeutral | Befehl für Richtung von Legatobögen |
\stemDown | \stemUp | \stemNeutral | Befehl für Richtung von Hälsen |
\textSpannerDown | \textSpannerUp | \textSpannerNeutral | Position von Textbeschriftungen, die als Strecker eingegeben werden |
\tieDown | \tieUp | \tieNeutral | Befehl für Richtung von Bindebögen |
\tupletDown | \tupletUp | \tupletNeutral | Befehl 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
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
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 }
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 }
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])
\set
wird 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
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
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Předměty uvnitř notové osnovy ] | [ Up : Umístění předmětů ] | [ Střety předmětů > ] |
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-Objekt | Priorität | Kontrolliert Position von: |
---|---|---|
MultiMeasureRestText | 450 | Text über Ganztaktpausen |
TextScript | 450 | Textbeschriftung |
OttavaBracket | 400 | Ottava (Oktavierungsklammern) |
TextSpanner | 350 | Text-Strecker |
DynamicLineSpanner | 250 | Alle Dynamik-Bezeichnungen |
VoltaBracketSpanner | 100 | Volta-Klammern |
TrillSpanner | 50 | Triller-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
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-Objekt | Priorität |
---|---|
RehearsalMark | 1500 |
MetronomeMark | 1000 |
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
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
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" |
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" |
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 | }
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
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 |
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
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
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Předměty vně notové osnovy ] | [ Up : Ladění výstupu ] | [ Přesouvání předmětů > ] |
5.5 Střety předmětů
5.5.1 Přesouvání předmětů | ||
5.5.2 Oprava překrývajících se not | ||
5.5.3 Příklady ze života |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Střety předmětů ] | [ Up : Střety předmětů ] | [ Oprava překrývajících se not > ] |
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:
- 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.
-
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 derpadding
-Wert des Objektes, das platziert werden soll, derpadding
-Wert des Objektes, das schon gesetzt wurde, wird hingegen ignoriert. Abstände mitpadding
können zu allen Objekten hinzugefügt werden, die dasside-position-interface
unterstützen.Anstelle von
padding
wird die Position von Versetzungszeichengruppen durch die Eigenschaftenright-padding
bestimmt. Diese Eigenschaft wird imAccidentalPlacement
-(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 dieright-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 dieright-padding
-(Verschiebung nach rechts)-Eigenschaft desAccidentalPlacement
-Objekts hat Einfluss auf die Positionierung der Versetzungszeichen.Die
staff-padding
-(Verschiebung zum System)-Eigenschaft ist sehr ähnlich wie diepadding
-Eigenschaft:padding
bestimmt den Minimalabstand zwischen einem Objekt, das dasside-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 diepadding
-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 sindLEFT
,RIGHT
oderCENTER
. 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 als1
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 um1
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. Dasaccidental
-(Versetzungszeichen)-Objekt etwa beachtet nur erste Zahl für die linke Ausdehnung. -
staff-position
(Notensystempositionierung)staff-position
ist eine Eigenschaft desstaff-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 vonNoteColumn
(bzw. vomnote-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 dieextra-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.
-
-
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.
Objekttyp | Objektbezeichnung |
---|---|
Articulationszeichen | Script |
Balken | Beam |
Dynamikzeichen (vertikal) | DynamicLineSpanner |
Dynamikzeichen (horizontal) | DynamicText |
Fingersatz | Fingering |
Übungs-/Textmarken | RehearsalMark |
Legatobögen | Slur |
Text z. B. ^"text" | TextScript |
Bindebögen | Tie |
N-tolen | TupletBracket |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Přesouvání předmětů ] | [ Up : Střety předmětů ] | [ Příklady ze života > ] |
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
% 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 |
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 }
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
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 >
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 } >>
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 } >>
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
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\)
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\)
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\)
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 } >> }
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 } >> }
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 | }
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 | }
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Oprava překrývajících se not ] | [ Up : Střety předmětů ] | [ Další ladění > ] |
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.
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 >> >> }
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 >> >> }
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 >> >> }
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 >> >> }
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 >> >> }
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 >> >> }
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Příklady ze života ] | [ Up : Ladění výstupu ] | [ Jiné využití ladění > ] |
5.6 Další ladění
5.6.1 Jiné využití ladění | ||
5.6.2 Použití proměnných pro ladění | ||
5.6.3 Celkové formátování | ||
5.6.4 Více informací | ||
5.6.5 Vyhnutí se ladění s pomalejším překladem | ||
5.6.6 Pokročilá ladění se Scheme |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Další ladění ] | [ Up : Další ladění ] | [ Použití proměnných pro 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,
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] } >>
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] } >>
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 { } }
\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 { } }
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Jiné využití ladění ] | [ Up : Další ladění ] | [ Celkové formátování > ] |
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 } >> >> }
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Použití proměnných pro ladění ] | [ Up : Další ladění ] | [ Více informací > ] |
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 | }
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 | }
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 } }
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 } }
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"
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Celkové formátování ] | [ Up : Další ladění ] | [ Vyhnutí se ladění s pomalejším překladem > ] |
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
- Linux
Wechseln Sie in das Verzeichnis ‘INSTALL_VERZ/lilypond/usr/share/lilypond/current/’
- MacOS X
Wechseln Sie in das Verzeichnis ‘INSTALL_VERZ/LilyPond.app/Contents/Resources/share/lilypond/current/’ indem Sie entweder mit dem Befehl
cd
vom Terminal aus in das Verzeichnis wechseln, oder mit Control-Klick auf das LilyPond-Programmsymbol gehen und „Show Package Contents“ auswählen. - Windows
Wechseln Sie mit dem Windows Explorer ins Verzeichnis ‘INSTALL_VERZ/LilyPond/usr/share/lilypond/current/’
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:
- ‘ly/’ - beinhaltet Dateien im LilyPond-Format
- ‘scm/’ - beinhaltet Dateien im Scheme-Format
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:
Dateiname | Inhalt |
---|---|
‘ly/engraver-init.ly’ | Definitionen von Engraver-Kontexten |
‘ly/paper-defaults-init.ly’ | Spezifikationen von Voreinstellungen für Papiermaße |
‘ly/performer-init.ly’ | Definitionen von Performer-Kontexten |
‘ly/property-init.ly’ | Definitionen aller vordefinierten Befehle |
‘ly/spanner-init.ly’ | Definitionen 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:
Dateiname | Inhalt |
---|---|
‘scm/auto-beam.scm’ | Sub-Balken-Voreinstellungen |
‘scm/define-grobs.scm’ | Voreinstellungen für Grob-Eigenschaften |
‘scm/define-markup-commands.scm’ | Definition aller Markup-Beschriftungsbefehle |
‘scm/midi.scm’ | Voreinstellung für die MIDI-Ausgabe |
‘scm/output-lib.scm’ | Einstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw. |
‘scm/parser-clef.scm’ | Definitionen der unterstützten Schlüssel |
‘scm/script.scm’ | Voreinstellungen für Artikulationszeichen |
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Více informací ] | [ Up : Další ladění ] | [ Pokročilá ladění se Scheme > ] |
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.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ Předlohy >> ] |
[ < Vyhnutí se ladění s pomalejším překladem ] | [ Up : Další ladění ] | [ Předlohy > ] |
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 | }
Weiter Beispiele, die die Benutzung dieser programmierbaren Schnittstelle zeigen, finden sich in Optimierungen mit Scheme.
[ << Ladění výstupu ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Pokročilá ladění se Scheme ] | [ Up : Top ] | [ Jednotlivá notová osnova > ] |
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.2 Klavírní předlohy | ||
A.3 Smyčcový kvartet | ||
A.4 Vokální soubor | ||
A.5 Orchestrální předloha | ||
A.6 Předlohy pro starý notový zápis | ||
A.7 Jiné předlohy |
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Předlohy ] | [ Up : Předlohy ] | [ > ] |
A.1 Jednotlivá notová osnova
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Jednotlivá notová osnova ] | [ Up : 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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Jednotlivá notová osnova ] | [ > ] |
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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Jednotlivá notová osnova ] | [ > ] |
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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Jednotlivá notová osnova ] | [ Klavírní předlohy > ] |
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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Předlohy ] | [ > ] |
A.2 Klavírní předlohy
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Klavírní předlohy ] | [ Up : 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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Klavírní předlohy ] | [ > ] |
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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Klavírní předlohy ] | [ Smyčcový kvartet > ] |
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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Předlohy ] | [ > ] |
A.3 Smyčcový kvartet
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Smyčcový kvartet ] | [ Up : 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 { } }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Smyčcový kvartet ] | [ Vokální soubor > ] |
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 { } } %}
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Předlohy ] | [ > ] |
A.4 Vokální soubor
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Vokální soubor ] | [ Up : 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 >> }
[ << Předlohy ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < ] | [ Up : Vokální soubor ] | [ > ] |
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