GNU LilyPond
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”.
GNU LilyPond | |
Fejlesztő | LilyPond development team[1] |
Legfrissebb stabil kiadás | 2.24.4 (stabil verzió, 2024. július 21.)[2] |
Legfrissebb fejlesztői kiadás | 2.25.21 (béta-verzió, unstable version, 2024. október 27.)[3] |
Programozási nyelv | |
Operációs rendszer |
|
Kategória |
|
Licenc | GNU General Public License, version 3.0 or later |
[lilypond.org A GNU LilyPond weboldala] |
Képességek
szerkesztésA 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
szerkesztés% 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:
Használata a Wikipédián
szerkesztésA 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
szerkesztésAlap- 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 |
- Kulcs:
\clef
. Kulcsok:treble
vagyfrench
: 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 lilypondbanbes
. - 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:[4] 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
szerkesztésA 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.[5] 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
szerkesztésKisebb 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:[6]
<score>{ \transposition c' \afterGrace a' g'8 }</score>
Szöveg megadása
szerkesztésA 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
szerkesztésAlakja:
\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.[7][8][9] 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
szerkesztés
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.
<score vorbis="1" raw="1"> \header { tagline = "" % ne legyen copyright szöveg } keret = { % az első és utolsó sor kottája egyforma: változóba tesszük, hogy egyszer kelljen leírni \relative g' { % célszerű megadni minden változóban, mihez relatív a kotta, egyébként a használat helyétől (az előző hangtól) függne az oktáv % Megyen mar a hajnalcsillag lefe- le, g8 a g e g f e d e c4. c4 r \bar "||" } } dallam = { % a teljes kottát is változóba tesszük, mert kétszer fogjuk használni \relative c' { % az első hang a kétvonalas c-hez relatív \key c \major % c dúr \numericTimeSignature \time 4/4 % 4/4-es ütem \tempo 4 = 60 % 60 negyed / perc \set Staff.midiInstrument = "fretless bass" % hangszín \transposition c' \keret % 1. kottasor \repeat unfold 2 { \break % a 2. és 3. kottasor első két üteme % az én kedves galambom most megyen hazafelé, c'8 b a b c b a4 \time 2/4 g8 e c e \time 4/4 } \alternative { { g g4. g4 r \bar "||" } % a 2. kottasor utolsó üteme { g4 g d r \bar "||" } % a 3. kottasor utolsó üteme } \break % új kottasor \keret % 4. kottasor \bar "|." % a kottát záró kettős vonal } } % Eddig csak két változót definiáltunk, kottát, szöveget, audiót még nem. % a "dallam" nevű változóban van a teljes kotta; a másik változót már nem fogjuk használni. \score { << % a kotta és szöveg összerendelése \dallam % a teljes kotta \addlyrics { % a dal szövege Me -- gyen már a haj -- nal -- csil -- lag le -- fe -- lé, az én ked -- ves ga -- lam -- bom most me -- gyen ha -- za -- fe -- lé, lá -- bán van a csiz -- má -- ja, lak -- kos szá -- rú kis csiz -- ma, rá -- sü -- tött a haj -- nal -- csil -- lag su -- ga -- ra. } >> % a kotta és szöveg összerendelésének vége \header { % a kotta feliratai title = "Megyen már a hajnalcsillag" % composer = "" poet = "Népdal" } \layout { indent = 0.0\cm % az első kottasor behúzásának tiltása } } \paper { page-count = 1 paper-height=120\mm % a kotta magassága paper-width = 150\mm % a kotta szélessége } % A <score raw=1> nem teszi lehetővé midifájl beillesztését a kottát tartalmazó \score-ba, ezért külön \score-t csinálunk a midinek. % Ez a wikibe ágyazott lilypond korlátja, az önálló lilypondban nincs ilyen megkötés. \score { % csak midit tartalmaz, kottát és szöveget nem \unfoldRepeats % az összes ismétlést szedje ki, az ismétlőjelest is. Ilyen a példában nincs, de a midifájlt mindig így célszerű megadni. \dallam % itt használjuk másodszor a kottát: ezért van változóban \midi { } % midi előállíttatása } </score>
Szerkesztők
szerkesztésA kényelmes szerkesztés céljából több olyan szövegszerkesztő-kiterjesztés létezik, mely LilyPond-specifikus funkciókkal bír, ilyen például a LilyPondTool vagy az Elysium.
Létezik grafikus felület is a gyors bevitelhez, például a Denemo, illetve a szabad kottaszerkesztő szoftverek legtöbbje, pl. a MuseScore képes a kottát a LilyPond formátumába menteni.
Kottatárak
szerkesztésNéhány online kottagyűjtemény, amely LilyPonddal szedett kottákat tartalmaz:
- Mutopia - klasszikus és kortárs zene
- Baroque Music, Nénuvar - barokk zene
Jegyzetek
szerkesztés- ↑ Authors. LilyPond Development team. (Hozzáférés: 2012. december 17.)
- ↑ https://lists.gnu.org/archive/html/lilypond-user/2024-07/msg00164.html, 2024. július 21., Jonas Hahnfeld
- ↑ https://lists.gnu.org/archive/html/lilypond-user/2024-10/msg00240.html, 2024. október 27., Jonas Hahnfeld
- ↑ Gerendázás: a nyolcadok, tizenhatodok, stb. jelölése a hangjegyszárak vízszintes összekötésével.
- ↑ 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
\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. - ↑ 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.
Források
szerkesztés- Sheet music (angol Wikiforrás)
- Notation Reference (GNU LilyPond)
- Extension:Score (Mediawiki)
További információk
szerkesztés- A LilyPond honlapja
- Magyar LilyPond-felhasználók közössége
- Magyar honosítási projekt
- MIDI-fájlt lejátszó program: Package: timidity (Debián)
Grafikus felületek lilypondhoz:
Kapcsolódó lapok
szerkesztés- Kottaszerkesztési útmutató
- zenei hang
- Lilypond-ban készült lejátszható médiafájlok (a lilypond-kód szerkesztés módban látható)