A GNU LilyPond egy kottaszedésre használható szabad szoftver. Automatikusan kottát állít elő egyszerű szöveges formátumú fájlokból. A programot 1996-ban kezdte el fejleszteni Han-Wen Nienhuys és Jan Nieuwenhuizen azzal a céllal, hogy a számítógép által előállított kotta „olyan életteli legyen, mintha kézzel szedték volna”.
Képességek A LilyPond a gregorián kvadrátnotációtól kezdve a kortárs műveken keresztül a könnyűzenei slágerekig mindenféle zene szedésére alkalmas. Az általa előállított kottakép tipográfiailag kiváló minőségű. Képességei rugalmasan bővíthetők.
A legtöbb operációs rendszer, például Linux, Windows és OS X alatt is fut. A kottát PDF, PS, SVG vagy PNG, a hangzását pedig MIDI fájlba képes menteni. A többi kottaszerkesztő által exportált MusicXML formátumú fájlokat is beolvassa. Kiválóan együttműködik más dokumentumszedő rendszerekkel, mint pl. a LaTeX vagy a Texinfo, így jól használható szövegbe ágyazott kottapéldák szedésére is.
Formátum % Példa a LilyPond % általános formátumára \book { \score { << \new Staff { \relative … { \cleff \key \time dallam
\addlyrics { szöveg
>> \header { … } \layout { … } \midi { … }
A LilyPond bemenetét szöveges formában kell megadni. A bemeneti fájlok általában .ly kiterjesztéssel rendelkeznek.
Egy bemeneti fájlban egy vagy több könyv (\book) lehet. Minden könyv külön eredményfájlba kerül. Ugyanezt elérhetjük úgy is, hogy minden könyv külön bemeneti fájlban van.
Egy könyvben egy vagy több partitúra (\score) lehet. A partitúra egy mű, vagy annak egy opusza, de végső soron rajtunk áll, hogyan osztjuk részekre a kottát. Minden partitúrához megadhatók szöveges információk (\header, pl. szerző, cím) és a lapon való elhelyezkedés (\layout). A \midi utasítja a lilypond-ot midifájl generálására.
A partitúra kottasorokból (Staff) áll. A kottasoroknak közös ütemvonalaik vannak. Egy kottasorba kerülhet egy hangszer, vagy pl. zongoramű esetén az egyik kéz. A kottasor elején kulcs (\clef), előjegyzés (\key), az első sor előtt ütemjel (\time) áll. Ezeket elég egyszer megadni, de módosíthatók partitúrán ill. kottasoron belül is.
Egy kottasor egy vagy több szólam (voice) dallamát adja meg akkord vagy külön-külön hangjegyek formájában. Kórusmű esetén szövege (\addlyrics) lehet a partitúrának vagy az egyes kottasoroknak (ha a szólamok szövege különböző). Az összetartozó kottasort és szöveget << … >> közé kell zárni.
A szomszédos hangjegyek távolsága ritkán nagyobb egy oktávnál, ezért az oktáv-magasságot az előző hanghoz relatívan érdemes megadni, bár hangjegyenként is megadhatók. Az első hang magasságát a \relative utasítás adja meg.
Egyszerű kotta esetén a fenti utasítások jó része elhagyható. Ha pl. az egyetlen partitúra egyetlen kottasorból áll, és szövege sincs, elég a \relative blokkot megadni: Ha a hangjegyeket abszolút magassággal adjuk meg, csak a kapcsos zárójelre és annak tartalmára van szükség:
{ \time 2/4% Ütemmutató \clef bass % Basszuskulcs c4 c g g a a g2 }
Ha a fenti bemenet a hullaho.ly-ben van, akkor a fordítás parancssorból:
lilypond hullaho.ly # eredmeny: hullaho.pdf lilypond --png hullaho.ly # eredmeny: hullaho.png lilypond -d backend=svg hullaho.ly # eredmeny: hullaho.svg
A második sor a következő PNG kimenetet adja:
400px
Használata a Wikipédián A kotta a Wikipédiába is beágyazható, és a lilypond által előállított midifájl is lejátszható. A fenti példát egyúttal kiegészítve a dallamszöveggel:
<score vorbis="1"> { \time 2/4% Ütemmutató \clef bass % Basszuskulcs c4 c g g a a g2 } \addlyrics { Hull a pely -- hes fe -- hér hó } </score>
Az eredmény:
A <score> parancs raw="1" paraméterével (csaknem) teljes LilyPond-programot tudunk beilleszteni. E nélkül csak néhány utasítást ért a wiki. A legfontosabbak: \addlyrics és \relative.
A dallam megadása + Hangnemek Lilypondban Alap-hang Név Lilypond dó dúr \major\ionian ré dór \dorian mi fríg \phrygian fá líd \lydian szó mixolíd \mixolydian lá moll \minor\aeolian ti lokriszi \locrian
bélyegkép|386px|jobbra|Az Adeste fideles első néhány üteme LilyPonddal szedve.
Kulcs: \clef. Kulcsok: treble vagy french: hegedűkulcs (default), bass: basszuskulcs, alto, tenor, soprano, mezzosoprano, baritone, varbaritone, subbass, percussion, tab. Előjegyzés: a hangnemet kell megadni. Pl.: \key g \minor: g-moll (két bé előjegyzés), \key g \major: G-dúr (egy kereszt). Nem szabványos (egy kereszt + egy bé) előjegyzésre példa a Kecskemét is kiállítja c. népdal kottája. Az előjegyzés nemcsak a kotta elejére tehető, hanem bárhová a hangjegyek között. Ütem: pl. \time 2/4. Az utasítás előtti \numericTimeSignature a 4/4-et is szám formájában íratja ki. Tempó: pl. \tempo "Allegro" 4 = 160. Akár a szöveg, akár a negyed hossza elhagyható. A tempó elrejthető; így csak a midire hat: \set Score.tempoHideNote = ##t. Felütés: a hosszát kell megadni (a hosszt lásd alább, a hang hosszánál). Pl. az Adeste Fideles negyed felütése: \partial 4.
Egy hanghoz több adatot kell megadni. Az alábbi lista nem teljes:
A hang 12-féle lehet: c, cis=des, d, dis=es, e, f, fis=ges, g, gis=as, a, ais=bes, b. A hangok neve nyelvfüggő, a magyarban h-val jelölt hang a lilypondban b, a magyar b a lilypondban bes. A hang oktávja. Az aposztróf (') eggyel magasabb, a vessző (,) eggyel alacsonyabb oktávot jelöl az előző hangnál (ha relatív megadást használunk). Kettő vagy több vessző ill. aposztróf is használható. Példa: gis''. A hang elé nem kell kitenni a módosítójelet: a hang nevéből és az előjegyzésből a lilypond automatikusan megteszi. Ha figyelmeztetésként mégis jelezni akarjuk (pl. mert változott a hangnem), ezt a hang után tett felkiáltójellel vagy kérdőjellel tehetjük. Az utóbbi esetben a kereszt, bé vagy feloldójel zárójelbe kerül. A hang hosszát szám adja meg. 1=egész, 2=fél, 4=negyed, 8=nyolcad, 16=tizenhatod. A számot pont követheti, ami másfélszeresére növeli a hosszt. Ha a hossz nincs megadva, azonos az előző hangéval. Ha a hosszúságot két hangjeggyel kell megadni (pl. ütemvonal miatt), a két hang közé tildét (~) kell tenni. Triola \times 2/3 { hang1, hang2, hang3 } alakban adható meg. Az \override TupletBracket #'bracket-visibility = ##t hatására a triolát alkotó három hangot össze is kapcsolja a lilypond. A beállítás alapértéke hamis (##f): ilyenkor csak a hármas szám jelzi a triolát. Szöveg/jel: a hangjegy alá vagy fölé írható. Az előbbi jele ^, az utóbbié _ (mint a TeX-ben). A szöveg lehet hangerőjel: \ppppp, \pppp, \ppp, \pp, \p, \mp, \mf, \f, \ff, \fff, \ffff, \fp, \sf, \sff, \sp, \spp, \sfz és \rfz. A \p pl. piano-t jelent. A „szöveg” lehet korona: \fermata. Ha a szöveg nem \-sel kezdődik, kiíródik a hangjegy fölé. Hajlítás: az ív elejét (, végét ) jelzi (természetesen más-más hangnál). dinamika: a crescendo jele \<, a descrescendoé \>. A végét \! jelzi. Gerendázás:Gerendázás: a nyolcadok, tizenhatodok, stb. jelölése a hangjegyszárak vízszintes összekötésével. a gerenda eleje [, vége ].
A szünet betűjele r, hosszát a hang hosszával azonosan kell megadni. A cezúra neve \breathe. Alaphelyzetben az ötödik kottavonalon aposztrófként jelenik meg, de alakja változtatható.
Kottasor vége: \break. Ha a kottasorok hossza nagyon változó lesz, a lilypond figyelmen kívül hagyja.
A kotta vége: \bar "|."
Transzponálás A kotta és a midifájl egymástól függetlenül transzponálható. A kotta transzponálása a teljes kottára vonatkozik, ezért csak a \score blokkjában adható meg, alblokkban nem. Alakja:
\transpose leírt_hang kiszedett_hang
Például a \transpose bes g kisterccel lefelé transzponálja a kiszedett kottát a \score-ban megadotthoz képest, beleértve az előjegyzéseket is. A B-dúr két bé előjegyzéséből egy kereszt előjegyzés lesz (G-dúr).
A midifájl transzponálása:
\transposition hang
Ahol hang azt adja meg, hogy az egyvonalas c (leírva: c') helyett mi hangozzék el.A \transposition és \transpose közötti formai különbség feltehetően a két utasítás összetévesztését hivatott elkerülni. A transzponálás arra a blokkra vonatkozik, amelyben a \transpose utasítás van, ill. ha azt blokk követi, csak arra a blokkra.
Pl. a \transposition a kisterccel lefelé transzponálja a midibeli hangokat, míg a \transposition c'' egy oktávval felfelé.
Előke, utóka Kisebb hangjeggyel szedett hangok.
Az előkének négy formája van:
Utasítás Leírás Példa Eredmény \grace Az előke hossza nem számít az ütembe. <score>{ \grace a'8 g'4 }</score> \slashedGrace Áthúzott hang. A hossza nem számít bele az ütembe. <score>{ \slashedGrace a'8 g'4 }</score> \acciaccatura Áthúzott, a hozzá tartozó hanggal kötőívvel összekötött hang. A hossza nem számít bele az ütembe. <score>{ \acciaccatura a'8 g'4 }</score> \appoggiatura A hozzá tartozó hanggal kötőívvel összekötött hang. A hosszával a hozzá tartozó hangot rövidíti le. <score>{ \appoggiatura a'8 g'4 }</score>
Először a fenti négy kulcsszó valamelyikét kell leírni, azt követi az alaphang, majd az előke/utóka (ha több hangból áll, { } között).
Az utóka kulcsszava: \afterGrace. Először az alaphangot kell megadni, majd az utókát:A \transposition nélkül a példa nem működik. Ez a MediaWiki 0.2-es verziójú Score kiterjesztésének hibája.
<score>{ \transposition c' \afterGrace a' g'8 }</score>
Szöveg megadása A szöveget szótagolva kell megadni \addlyrics { szöveg } formában. A szótagokat szóközök közé írt dupla kötőjellel (--) kell elválasztani. A lilypond automatikusan rendeli hozzá a szótagokat a hangokhoz, az ívvel összekötött hangokhoz egy szótagot. A -- jel helyére a kottában két szótag közé középre írt elválasztójel kerül, szükség esetén pedig el is marad.
Ha egy hanghoz több szót vagy szótagot akarunk írni, szóköz helyett aláhúzással (_) kell őket elválasztani. Tipikus példa magyarban a „s” szócska.
Egy dallamrészlethez több szöveg is megadható. Lásd pl. a Széles a Duna, keskeny a partja kottáját.
Ha bizonyos hangokhoz nem akarunk szöveget írni, a \repeat unfold n { \skip 1 } alakban hagyhatjuk ki, ahol n a kihagyott hangjegyek száma (függetlenül a hosszúságuktól).
Ismétlés Alakja:
\repeat volta szám { dallamrészlet } \alternative { { 1. dallamvég } { 2. dallamvég }
ahol szám az ismétlések száma. Az első ismétlés után dallamrészletet az első alternatíva, a második után a második követi. Egyszerű ismétléskor a \alternative elmarad.
Az ismétlésnek két módja van. volta módban a dallam ismétlőjelek közé kerül a kottában. Ha a volta helyett az unfold szót használjuk, a lilypond kétszer fogja kiszedni ugyanazt a dallamot vagy szöveget.
Ha az ismétlődő dallamot a kottában ismétlőjelek között szeretnénk látni, a midifájlban viszont kétszer hallani, akkor ugyanarról a dallamról külön állítjuk elő a kottát és a midifájlt (a lilypond fájlban két \score lesz). Hogy a dallamot ne kelljen kétszer leírni, érdemes azt változóba tenni.Változók bárhol használhatók a lilypond fájlban, nemcsak ismétléskor.Az ismétlés elkerülésének másik módja külön fájl használata, mely a \include "fájlnév" utasítással illeszthető be a megfelelő helyekre. A \include kényelmes, ha ugyanarra a dallamra több lilypond-fájlból szeretnénk hivatkozni, viszont a Wikipédiában nem használható.A lilypond-változót a programozási nyelvekben nem változónak, hanem makrónak nevezik. Az \unfoldRepeats utasítás hatására a volta típusú ismétlés unfold típusúra változik. Az utasításnak akkor van értelme, ha a dallam változóban van: a kottában és a midiben ugyanazt a változót lehet használni.
A Csordapásztorok szócikkben látható példa e megoldásra.
Példa
A dal első és utolsó sora egyforma, ezért ezt változóba tesszük. A második és harmadik sor csak a végében különbözik: alternatívával ismételjük. Változót csak raw=1-gyel tud a beágyazott lilypond.
A beágyazott lilypond (score) 0.2-es változatában row=1 használatakor egy partitúrában nem lehet dallam és midi is, ezért két partitúrát készítünk: az elsőben a kotta, a másodikban a midifájl van. Hogy a második partitúrában ne kelljen még egyszer leírni, az egész kottát is változóba tesszük.
Szerkesztők