Segítség:Lilypond

Innen: kotta

SVG kimenet:

lilypond -d backend=svg file.ly

A midi-file lejátszása: timidity midi-file

Formátum

\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 input file-ban egy vagy több könyv (\book) lehet. Minden könyv külön eredményfile-ba kerül. Ugyanezt elérhetjük úgy is, hogy minden könyv külön bemeneti file-ban 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 midifile 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
}
A fenti bemenetbő előállított kottakép

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 kotta a Wikipédiába is beágyazható, és a lilypond által előállított midi-file 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:


{
  \time 2/4% Ütemmutató
  \clef bass % Basszuskulcs
  c4 c g g a a g2
}
\addlyrics { Hull a pely- hes fe- hér hó }

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úr \major
\ionian
dór \dorian
mi fríg \phrygian
líd \lydian
szó mixolíd \mixolydian
moll \minor
\aeolian
ti lokriszi \locrian
  • Kulcs: \clef. Kulcsok: treble vagy french: hegedűkulcs (default), bass: basszuskulcs, alto, tenor, soprano, mezzosoprano, baritone, varbaritone, subbass, percussion, tab. A kulcs elhagyható a
    \override Score.Clef #'stencil = ##f utasítással (pl. kottarészletben).
  • 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. Az ütem elhagyása (pl. példában): \once \override Staff.TimeSignature #'stencil = ##f
  • 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. a nyolcad felütés: \partial 8.

Egy hanghoz több adatot kell megadni. Az alábbi lista nem teljes:

  1. 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.
  2. 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''.
  3. 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.
  4. 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é ~-t kell tenni. Triola \times 2/3 { hang1, hang2, hang3 } alakban adható meg: három hang kettő hosszúságú.
  5. szöveg/jel: a hangjegy alá vagy fölé írható. Az előbbi jele ^, az utóbbié _ (tex jelölés). 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é.
  6. hajlítás: az ív elejét (, végét ) jelzi.
  7. crescendo/decrescendo: a crescendo jele \<, a descrescendoé \>. A végét \! jelzi.
  8. gerendázás[1]: a gerenda eleje [, vége ].

A szünet betűjele r, hosszát a hang hosszával azonosan kell megadni. A nem látható szünet jele s. 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 midifile 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 midifile transzponálása:

\transposition hang

Hang azt adja meg, hogy az egyvonalas c (leírva: c') helyett mi hangozzék el.[2] 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 midi-beli 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:

\grace az előke hossza nem számít az ütembe. <score>{ \grace a'8 g'4 }</score> { \grace a'8 g'4 }
\slashedGrace áthúzott hang. A hossza nem számít bele az ütembe. <score>{ \slashedGrace a'8 g'4 }</score> { \slashedGrace a'8 g'4 }
\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> { \acciaccatura a'8 g'4 }
\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> { \appoggiatura a'8 g'4 }

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:[3]

<score>{ \transposition c' \afterGrace a' g'8 }</score> { \transposition c' \afterGrace a' g'8 }

Szöveg megadása

A szöveget szótagolva kell megadni \addlyrics { szöveg } formában. A szótagokat helykö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, helyköz helyett aláhúzással (_) kell őket elválasztani. Tipikus példa magyarban az 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 midifile-ban viszont kétszer hallani, akkor ugyanarról a dallamról külön állítjuk elő a kottát és a midifile-t (a lilypond file-ban két \score lesz). Hogy a dallamot ne kelljen kétszer leírni, érdemes azt változóba tenni.[4][5][6] 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

Parancsfájl-hiba: nincs „Megyen már a hajnalcsillag” modul.

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.

Parancsfájl-hiba: nincs „Megyen már a hajnalcsillag” modul.

\new

Staff, Voice, Dinamics, Lyrics

Elnevezések

  • proportional spacing for chords: a hang hosszától függő hangjegy-szélesség.

Konverterek

  • midi2ly: midi → lilypond[7]
  • musicxml2ly: MusicXMLhu → lilypond[8] (lilypond kézikönyv)</ref>

Programozás

A lilypond a Scheme programozási nyelven van megírva. A Scheme-nek több megvalósítása van, a lilypond a Guile nyelven írtat használja.

A Scheme elindítása: lilypond scheme-sandbox, mire visszaad egy guile> promptot.

Jegyzetek

  1. Gerendázás: a nyolcadok, tizenhatodok, stb. jelölése a hangjegyszárak vízszintes összekötésével.
  2. 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.
  3. 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.
  4. Változók bárhol használhatók a lilypond file-ban, nemcsak ismétléskor.
  5. Az ismétlés elkerülésének másik módja külön file használata, mely a \include "filenév" utasítással illeszthető be a megfelelő helyekre. A \include kényelmes, ha ugyanarra a dallamra több lilypond-file-ból szeretnénk hivatkozni, viszont a Wikipédiában nem használható.
  6. A lilypond-változót a programozási nyelvekben nem változónak, hanem makrónak nevezik.
  7. 4.3.1 Invoking midi2ly (lilypond kézikönyv)
  8. 4.3.2 Invoking musicxml2ly (lilypond kézikönyv)

További információk

A Frescobaldi lilypond-formátumot előállító grafikus szerkesztő.

Egyéb kottázóprogram: Sibelius, Finale, Encore, Sablon:Linkiw1, musescore (Debian-csomag). Kottaszabvány: MusicXMLhu. Sablon:Linkiw1: stúdióprogram, benne kottázóval. Ludvig József ezt használja.

Ötlet: más kottázóprogramból midi-t csinálni, és azt átvinni midi2ly-vel. Hátrányok: pótolni kell az összes hajlítást, dinamikát, stb.

Kapcsolódó lapok