Hlavní navigace

LilyPond - notový specialista

Michal Krause 9. 6. 2000

člověk není zrovna tvor z nejvěrnějších. Vezměte si třeba mě. Před pár týdny jsem zde hlásal, že pro práci s notovým zápisem nepoužívám nic jiného, než Rosegarden. No vida - dnes už zase pro změnu nedám dopustit na LilyPond. Ale nebojte, zase takový přelétavec nejsem, jenom se mi trošku změnily priority.

Když jsem psal recenzi programu Rosegarden, nepatřil tisk mezi věci, bez kterých jsem se neobešel. Podstatné pro mě bylo, aby notační program zvládl hlavně převod do MIDI, protože jsem jej používal zejména jako „elektronického učitele“ – když jsem si nebyl jistý, jak se to či ono má zahrát, naklikal jsem to do počítače a během chvilky jsem měl jasno.

Jak jsem ve svém učení zvolna postupoval, začal jsem uvažovat, jestli by nebylo vhodné, vytvořit si vlastní zpěvník, protože pár pěkných písniček je v téhle knize, pár v tamté, něco se najde na Internetu, zkrátka zmatek nad zmatky. Když jsem se rozhodl, že zpěvník bude asi nezbytný, musel jsem vyřešit, jak na to. Když někdo hraje na kytaru podle akordů, má to celkem jednoduché – zpěvník lze vytvořit v ruce i na počítači takřka v jakémkoliv editoru. S notami je to už slabší, i když samozřejmě lze zakoupit notový sešit a začít malovat (nejlépe perem namáčeným v kalamáři, ať to stojí za to :), ovšem moje vlohy pro krasopis a kreslení mě vyloženě předurčují k použití počítače. Po konzultaci s několika zkušenějšími uživateli a lehkém otestování několika kandidátů jsem se rozhodl pro GNU LilyPond a relativně brzo jsem si jej zamiloval. Proč, to se pokusím objasnit v následujících řádcích.

Co to vlastně je, ten LilyPond?

Předně je třeba říci, že LilyPond je „pouze“ procesor speciálních textových souborů, které popisují sazbu. Aby to nebylo tak jednoduché, ani LilyPond není posledním programem v řetězci od zdrojové podoby až po výsledný tisknutelný dokument. Pod ním totiž pracuje ještě TeX (respektive LaTeX). Kromě procesoru (nebo chcete-li, dalo by se říci kompilátoru) je produkt tvořen sadou maker, fontů a doplňkových utilit.

Po přečtení výše uvedených řádků se možná leckdo zalekl, ale věřte mi, že sazba not není v systému LilyPond nijak přehnaně komplikovaná a odměnou za námahu, kterou vynaložíte na seznámení s jeho jazykem, je obrovská flexibilita a schopnost obsáhnout širokou škálu úkolů.

Co LilyPond umí?

Skoro všechno, chce se mi říct, ale to by přece jenom asi nebyla pravda. V každém případě si poradí se sazbou not, a to v podstatě do neomezeného množství notových osnov (staff). Naprostou samozřejmostí jsou pochopitelně noty i pomlky všech délek od čtyřiašedesátinek až po noty celé, klíče, definice tóniny a taktu, podpora trámečků (automatické i ruční), spojování not (legato, ligatura), podpora opakování (repetice), vkládání symbolů (segno, coda, fermata, staccato, …), dynamických znamének (pp, mf, ff, …, zeslabení, zesílení, apod.), akordů (jména či noty do zvláštní osnovy) atd.
Možná méně častou (ale v profesionálním programu nezbytnou) funkcí je možnost alternativních zakončení repetic, a to v režimu not, akordů i textu. Není problém také do zápisu vložit textovou poznámku (třeba D.C. al fine). Další zajímavostí je sazba pro klavír, která je samozřejmě tvořena zápisy pro dvě (nebo více :) ruce.

Jednou z důležitých vlastností LilyPondu je možnost výstupu do MIDI, což výrazně usnadňuje kontrolu vysázené skladby. K vizuální složce se tak přidává i poslechová. Je ale třeba říct, že oproti sazbě má konverze do MIDI jistá omezení, například jsou ignorovány značky zeslabení, zesílení či staccato, ale i tak je to velmi šikovná pomůcka.
Pro pořádek je třeba podotknout, že k programu je přibalena i utilitka, která naopak konvertuje MIDI soubory do zdrojového kódu.

Jazyk LilyPondu

Jazyk Mudela, který používáte při sazbě vychází částečně z konvencí používaných v TeXu. Protože popisovat to „na sucho“ asi nemá valného významu, dovolím si přiložit jeden příklad, který sice není nejjednodušší, ale zato pěkně demonstruje základní možnosti LilyPondu. Jde o začátek populárního tradicionálu Scarborough Fair (u nás známý zejména z repertoáru pánu Simona a Garfunkela, případně teď nově i v podání populární Sarah Brightman):

Tabulka č. 76
\include "paper20.ly"

melodie = \notes \relative c' {
    \time 3/4;
    \key f;

    \property Voice.tieDash = 1
    d4 ~ d d |
    \property Voice.tieDash = NIL
    a'4 a a |
    e4. f8 e4 |
    d2. ~ |
    d2. |
    r4 a'4 c |
    d2 c4 |
}

akordy = \chords {
    d2.:m \skip 4*3;  c d:m \skip 4*3; f d:m
}

slova = \lyrics {
    Are _ you go -- ing to Scar -- bo rough Fair: _
    Pars -- ley, sage, rose --
}

\score {
    \simultaneous {
        \context ChordNames \akordy {
            \property ChordNames.instrument =
                                "harpsichord"
        }
        \addlyrics
        \context Staff = mel {
            \property Staff.instrument = "cello"
            \melodie
        }
        \context Lyrics \slova
    }
    \midi {
        \tempo 4 = 120;
    }
    \paper {
        indent = 0.0;
        linewidth = 17.0\cm;
    }
}

Jak jsem podotkl, nevybral jsem na úvod nejjednodušší příklad, ale uvedený kód představuje zřejmě jednu z nejtypičtějších možností použití LilyPondu – tedy sazbu not, akordů a textu písně. Zastavme se teď u jednotlivých částí kódu a řekněme si, co znamenají.

Na začátku je možné (ale není to nutné) použít některý z předdefinovaných formátů, které následně ovlivní vzhled sazby. Provádí se to konstrukcí \input, za níž následuje jméno souboru. V našem případě jsem sdělil LilyPondu, že bych chtěl při sazbě používat notovou osnovu o výšce dvacet tiskových bodů (a k tomu samozřejmě i patřičně veliké značky).

Další blok jsem pojmenoval melodie, pomocí konstrukce \notes sděluji, že jde o blok not, které se začnou umísťovat relativně vůči tónu c (apostrof za písmenem značí zvýšení o oktávu, čárka pak o oktávu snižuje, c' je c1, c'' pak c2 atd.).
Na začátku bloku not určuji tóninu a takt (obojí lze v měnit v podstatě kdekoliv během skladby). Čistě pro zajímavost hned na začátku zápisu demonstruji sílu LilyPondu, který dokáže i takové kousky, jako je vykreslení obloučku ligatury přerušovanou čarou (\property Vo­ice.tieDash = 1).
Pak již následují vlastní noty, které se zapisují písmenem shodným se jménem tónu a jeho délkou (1 = nota celá, 2 = nota půlová, atd. až 64 = nota čtyřiašedesáti­nová). Pokud není délka uvedena, použije se stejná jako u předchozího tónu. Každý tón je umístěn co nejblíže tónu předchozímu, což obvykle zajišťuje správné umístění. Pouze v případě větších skoků nastává situace, kdy je třeba LilyPondu říct, že jste měl na mysli jiný tón g, než který byl použit – to se dělá přidáním čárky nebo apostrofu (viz výše). K notám lze připojovat různé modifikátory, slučovat je do akordů, propojovat je obloučkem (legato), atd.
Dělení not do jednotlivých taktů děla program sám, ale lze si jej i explicitně vyžádat vložením znaku ‚|‘. Osobně to doporučuji, protože tak kompilátor může dobře kontrolovat přetečení součtu délek not, což často odhalí drobné chybičky.
I o zalamování řádků se stará LilyPond, uživatel může vkládat zlomy ručně konstrukcí \break.

Další blok popisuje akordy (proto jsem jej tak pojmenoval). V režimu akordů (\chords) očekává LilyPond akordy určené jejich jménem (shodným se základním tónem), délkou (totožné s notami) a modifikátorem. Ten se umísťuje za dvojtečku a obvykle se používají anglosaské zkratky (např. m = mi = mol). Sekvence d8:m tedy znamená akord Dmi o délce jedné osminky. Abych nezapomněl, přidáním tečky se prodlouží nota i akord o polovinu (d2.:m).
Povel \skip říká, že před dalším akordem bude prodleva o určené délce (zde jsou to tři noty čtvrťové).

Blok mnou nazvaný slova je typu \lyrics, což napovídá, že jde o text písně. S ním pracuje LilyPond zajímavým způsobem. Každé notě je přiděleno jedno slovo, přičemž slovem se zde míní blok písmen oddělený mezerami. Speciální význam mají znaky ‚-‘ a ‚_‘. Oba symbolizují jedno slovo, rozdíl je v tom, že podtržítko se v textu nezobrazí, pomlčka ano. Dvě podtržítka nebo dvě pomlčky mají speciální význam – podtržítka tvoří tzv. extender, neboli čáru, která doplní text na patřičnou délku a dvě pomlčky pak spojují oddělené slabiky dohromady.

Poslední blok tvořený konstrukcí \score nakonec vše spojuje dohromady. Povel \simultaneous říká, že následující pasáže se odehrávají současně. Jelikož chceme akordy vložit v podobě jejich jmen nadepsaných nad osnovou, použijeme povel \context ChordNames, následuje propojení slov a melodie.
Povelem \midi ovlivňujeme výstup do MIDI (kdyby zde tato část nebyla, vůbec vy se MIDI soubor negeneroval). Já jenom nastavuji tempo (120 čtvrťových not za minutu). To, jak bude výsledek vypadat (nebo spíš znít), to lze ovlivnit ještě volbou jednotlivých nástrojů parametrem instrument. Jak vidno, vybral jsem harpsichord pro akordy a čelo pro melodii.
Pak už následuje jenom konfigurace výstupu. V mém případě je to: žádné odsazení prvního řádku, šířka osnovy 17 cm.

A takto to vypadá, když se výše uvedený kód „prožene“ LilyPondem:

Výstup programu, obrázek

Zajímavou ukázkou možností LilyPondu může být jednoduchá změna, která způsobí, že se místo jmen akordů vygeneruje další osnova s notami. Stačí na to zaměnit blok

        \context ChordNames \akordy {
            \property ChordNames.instrument =
                                "harpsichord"
        }

za povel \akordy a výsledek bude hned vypadat takto:

Výstup programu, obrázek

Podotýkám, že jsem zde jenom zběžně nastínil, co vlastně Mudela je a jak zhruba vypadá, ale zdaleka jsem nepopsal vše, co umí. To konec konců není cílem dnešního článku a zřejmě by to i značně překročilo rozsah tohoto povídání. Zájemce odkazuji na velice pěknou dokumentaci, případně na příklady, které jsou k programu přiloženy.

Mudela-book

Velmi zajímavým doplňkem je program mudela-book, který je určen pro kombinovanou sazbu not a textu. Vytváříte vlastně přímo LaTeXový dokument, do nějž vkládáte kód Mudely (stejný, jako ten z našeho příkladu) mezi povely \begin{mudela} a \end{mudela}. Skript mudela-book pak dokument projde, rozdělí na části, bloky Mudely zkompiluje a zase vše poskládá dohromady. To se hodí buď při sazbě zpěvníků, kdy je obvyklé, že do notového zápisu se vloží pouze první sloka a zbytek se vysází jako čistý text, a nebo například při sazbě příruček a podobně.

Nevýhodou Mudely je, že musíte umět pracovat v LaTeXu, ale je fakt, že základy se dají lehko zvládnout. Může vám při tom pomoci třeba tento manuál. Na druhou stranu lze říct i to, že použití LaTeXu je vlastně výhodou, protože tak uživatel může těžit z obrovského potenciálu TeXu a LaTeXu.

Ne vše je zcela optimální

Ačkoliv je LilyPond dle mého skromného názoru špičkový program, najdou se na něm jistě i nedostatky. Tím prvním je podle mého názoru poměrně nepřehledný výstup kompilátoru. Občas se stane, že uděláte někde chybu a překladač skončí s chybovým hlášením o úplně jiném místě kódu. Navíc je vypisovaných hlášení skutečně mnoho a občas je těžké odlišit, co je chyba a co ne. Je ale nutno upozornit, že jsem testoval verzi z vývojové řády, možná, že stabilní verze jsou v tomto ohledu odlišné.
Dalším problémem, byť řešitelným je podpora češtiny. Problém je v tom, že LaTeXový dokument, který je LilyPondem generován neobsahuje hlavičku

\usepackage[la­tin2]{inputen­c}

takže se použijí latin1 fonty. Možná řešení jsou dvě:

  • používat mudela-book a patřičné hlavičky umístit do dokumentu ručně
  • používat skript ly2dvi a aplikovat na něj tento můj patch, který umožňuje zadat na příkazové řádce kódování. Použití je pak například:
    ly2dvi -P -l czech -e latin2 soubor.ly
    Patch jsem vytvořil pro ly2dvi z LilyPondu verze 1.3.38 a neručím za jeho použitelnost pro jiné verze.

Jistým problémem může být fakt, že LilyPond standardně používá pro noty a akordy anglosaská jména. To znamená, že místo ‚h‘ a ‚H‘ se používá ‚b‘ a ‚B‘ a místo našeho ‚B‘ pak ‚Bb‘. Toto chování je teoreticky ovlivnitelné, protože názvy akordů lze definovat. V praxi to ale nejspíš znamená znalost programovacího jazyka scheme, který je pro mě španělskou vesnicí i když jinak programuji ve všem možném. V distribuci najdete definiční soubory pro německé, holandské, norské, italské, švédské, katalánské a anglické značení, ale pohříchu žádné se nekryje s našimi zvyklostmi. Řekl bych, že někdy ve středověku selhala nějaká standardizační komise :)

Podle toho, co jsem se doslechl není také LilyPond příliš vhodný pro sazbu not pro pěvecký sbor, což nemohu posoudit.

Závěrem

LilyPond je vynikající program, který používám již několik měsíců a zatím jsem nenarazil na problém, který by nebyl řešitelný (i když občas na to bylo potřeba jít poněkud složitě, ale to bývají spíš výjimky). Je docela dobře možné, že existuje něco ještě lepšího, ale i vzhledem k ceně a podpoře mnoha platforem včetně Windows je to špičkový produkt, který se uživateli, jenž se ho nezalekne, odvděčí pružností, možnostmi i kvalitou výstupu.

P.S. Pokud chcete vidět výsledky sazby v LilyPondu, můžete navštívit například stránky Budovatelská píseň (nezalekněte se a čtěte :).

Našli jste v článku chybu?

4. 1. 2009 12:33

Chtěl bych se zeptat, jestli nějak nejde, aby se celá skladba vykreslila na jeden řádek, bez zalamování. Jak vidím, podporuje to jen určité velikosti stránek. A je divné, že i když jsem nastavil #(set-default-paper-size "tabloid" 'landscape), zůstává to jako A4 Portrait.

29. 4. 2004 14:25

Vít B. Reichel (neregistrovaný)

dvoucele (tez dvojcele) noty to umi zcela urcite!

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: E-shopy: jen sleva už nestačí

E-shopy: jen sleva už nestačí

Vitalia.cz: Žloutenka v Brně: Nakaženo bylo 400 lidí

Žloutenka v Brně: Nakaženo bylo 400 lidí

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed