Märkmeid Lilypondi kohta

Üks probleeme Windowsist Linuxile üle minekul on asenduse leidmine noodistusprogrammidele. Windowsis oli mu lemmikuks Sibelius2. Linuxis jäin oma valikus pidama programmile Lilypond. Linuxi all on ka graafilisi noodikirjutajaid nagu Rosegarden ja Brahms. Kuid kitarri jaoks spetsiifilist, mitmehäälset nooti ei saa seal kuidagi rahuldaval kombel kirjutada. Lilypondi eripäraks on alguses harjumatu otsese graafilise tagasiside puudumine kirjutatava noodiga. Teine eripära on pidev programmi uuenemine ja muutused seoses sellega. Debiani all on hetkel, Juuli lõpus 2005, versiooniks 2.4.5. "Debian Testing"-distributsioon ei ole just mitte kõige uuemate programmide kasutaja. Kuid ma ei viitsi lihtsalt tegeleda ebastabiilsuse ja testimisega e versiooniga "Debian Unstable".

Kuid mitte installeerimisest ega Linuxist ei taha ma siinkohal rääkida.

Lilypond-noodi struktuur
*Kommentaarid algavad kasutatavas märkekeeles %-märgiga
\version "2.4.5" %versiooni number
\paper {#(set-paper-size "a4")} %paberi suuruse blokk
#(set-global-staff-size 20) %kõikide märkide suuruse aste. 20 on päris hästi loetav
meloodia = { %esimene hääl muusikas. Noodid vartega üles
\time 4/4 %taktimõõt
\clef "G_8" %kitarri noodivõti
\key c \major %noodivõtme helistik
c'4 d' e' f' | g' g' g'2 %noodid ise
}
bass = { %teine hääl muusikas. Noodid vartega alla
c2 g, | c g, %noodid
}
\book { %book sisaldab endas kõiki alama astme blokke
\header { %siia kuuluvad kõik esimese lehe pealkirjad: tiitel, autor jne
%kuna antud versioon kasutaks vaikimisi ühte väga koledat fonti, siis olen sunnitud kasutama \markup varianti, et kirjapilti arusaadavamaks muuta
composer = \markup { \override #'(font-name . "pplbc") {Gustav Ernesaks}}
title = \markup { \override #'(font-name . "csss17") { \bold Rongisõit}}
}

\score { %see on teos ise. Või teose osa. Ühes "book"is võib olla mitu erinevat "score"t
\header {} %siia võib kirjutada teose osa pealkirja
new Staff { %noodirea (Staff) lisamine
#(override-auto-beam-setting '(end 1 16 * *) 1 4 'Staff) %siinkohal võib muuta noodivarte ühendamise loogikat
\override Score.MetronomeMark #'padding = #5 %metronoomi märgi eemaldamiseks nootidest
\override Score.RehearsalMark #'padding = #3 %sama nn harjutusmärkide kohta
\override Score.SeparationItem #'padding = #0.5 %nootide omavahelise "õhu" lisamine, parandab loetavust
\set Staff.instrument = #"kitarr" %kirjutab esimese rea algusesse sõna "kitarr"
\set Staff.midiInstrument = #"acoustic guitar (nylon)" %annab MIDI-failile instruktsiooni kasutada nailonkitarri häält
\set Staff.minimumVerticalExtent = #'(-7 . 7) %vertikaalse laotuse muutmine
\tempo 4=120 %metronoomimärk
<< %"<< >>"märgid asetavad nende vahel olevad hääled teineteise peale.
\new Voice { \voiceOne \meloodia } %esimene hääl on vartega üles
\new Voice { \voiceTwo \bass } %teine hääl on vartega alla
>> \bar "|." %kirjutab lõppu lõpetava taktijoone
} %staff-bloki lõpp
} %score-bloki lõpp
} %book-bloki lõpp


Kui kopeerida lilla tekst, salvestada see tekstifailiks, ütleme "1.ly" ning tippida seejärel käsureaks lilypond 1.ly, peaks tulemus välja nägema selline:

Probleemid ja nende lahendused

  1. Arpedžo kahe hääle vahel

    Laineline joon akordi ees näitab, et akordi tuleb võtta arpedžeerides. See on kitarrile iseloomulik võte. Lilypond pakub arpedžo kirjutamiseks markeri \arpeggio peale akordi. Ntx < c e c' >\arpeggio on akord arpedžojoonega selle ees.
    Probleem tekkib, kui akord moodustub erinevate häälte vahel:
    \version "2.4.5"
    Mel = { \clef "G_8" e' e' e' e'}
    Bass = { c < c e > \arpeggio c c}
    \new Staff {
    << \new Voice { \voiceOne \Mel}
    \new Voice { \voiceTwo \Bass}>>
    }
    Kood annab järgneva pildi:

    Punase ringiga on probleem välja toodud. Arpedžo joon on vaevu nähtav ega hõlma ülemist häält. Lahenduseks on kolmanda hääle lisamine, mille ainsaks ülesandeks jääb joonte tõmbamine. Noodid selles hääles on peidetud markeriga \hideNotes:
    \version "2.4.5"
    Mel = { \clef "G_8" e' e' e' e'}
    Bass = { c < c e > c c}
    joonija = { \hideNotes s < c e' > \arpeggio s2}
    \new Staff {
    << \new Voice { \voiceOne \Mel}
    \new Voice { \voiceTwo \Bass}
    \new Voice \joonija >>
    }
    Tulemus on siin:

    Probleemi saab lahendada ka teistmoodi, kasutades Span_arpeggio_engraver-i võimalusi. Sel juhul ei tohi aga mitte kasutada häälte lisamisel vormelit \new Voice. Kood ise on siin:
    \version "2.2.6" %see kood on versioonis 2.2.6!
    Mel = \notes{ \clef "G_8" e' e'\arpeggio e' e'}%selles versioonis tuleb kasutada markerit \notes
    Bass = \notes{ c < c e > \arpeggio c c}
    \score {
    \new Staff \with {\consists "Span_arpeggio_engraver"}
    << { \set Staff.connectArpeggios = ##t \Mel }
    \\ %topeltkaldkriips asetab hääled teineteise peale. noodivarre suunda ei pea eraldi näitama. Sellega saab Lilypond ise hakkama
    \Bass >>
    }

  2. Pausimärkide asetamine

    Kolme- ja enamahäälses noodikirjas ei suuta Lilypond tihti automaatselt pausimärke õigesse kohta asetada. abiks on marker \rest. a8\rest tähendab 8-ndikpausi märki sellel kohal, kus asetseb noot a.

  3. Sekundintervall eri häälte vahel

    Et kõik hääled oleks õieti joondatud, on vaja lisada ühte häälde rida \override Score.NoteColumn #'force-hshift = #1.0. Kui aga nüüd erinevate häälte noodid osaliselt kattuvad, siis ei tee mõni kord Lilypond iseseisvalt vastavat korrektuuri. Kaks nooti kirjutatakse mehhaaniliselt teineteise otsa.
    \version "2.4.5"
    Mel = { \clef "G_8" e' e' e' e'}
    Bass = { \override Score.NoteColumn #'force-hshift = #1.0 c c c c}
    Kolmas = { a d' a c'}
    \new Staff {
    << \new Voice { \voiceOne \Mel}
    \new Voice { \voiceTwo \Bass}
    \new Voice { \voiceFour \Kolmas}>>
    }
    Pildiline väljund:

    Lahenduseks on marker \once \override NoteColumn #'force-hshift = #x , mis liigutab temale järgnevat nooti-akordi vasakule, kui x < 1 ja paremale, kui x > 1. Et koodi loetavamaks muuta, tuleks lohisev marker määratleda faili alguses lihtsama sõnaga, ntx "nihuta":
    nihuta = \once \override NoteColumn #'force-hshift = #0
    ja seejärel vajadusel noodi liigutamine uue markeri abil:
    \version "2.4.5"
    nihuta = \once \override NoteColumn #'force-hshift = #0
    Mel = { \clef "G_8" e' \nihuta e' e' e'}
    Bass = { c c c c}
    Kolmas = { a d' a c'}
    \new Staff {
    \override Score.NoteColumn #'force-hshift = #1.0
    << \new Voice { \voiceOne \Mel}
    \new Voice { \voiceTwo \Bass}
    \new Voice { \voiceFour \Kolmas}>>
    }

    *antud juhul liigutasin ülemist häält vasakule. Sama meetodiga on võimalik noote ka paremale nihutada. Selleks tuleb numbri 0 asemel kasutada numbrit 2.0