4.1.1 Inleiding in de LilyPond-bestandsstructuur
Een basisvoorbeeld van een LilyPond-invoerbestand is
\version "2.24.4" \header { } \score { ...samengestelde muziekuitdrukking... % alle muziek komt hier! \layout { } \midi { } }
Er zijn veel variaties op dit basispatroon maar dit voorbeeld dient als een handig beginpunt.
Tot nu toe heeft geen van de voorbeelden het
\score{}
-commando gebruikt. Dit kan omdat LilyPond
automatisch de extra commando’s toevoegt die benodigt zijn
als je het eenvoudige invoer geeft. LilyPond behandelt invoer
zoals dit:
\relative { c''4 a d c }
als een afkorting voor dit:
\book { \score { \new Staff { \new Voice { \relative { c''4 a b c } } } \layout { } } }
Anders gezegd, als de invoer een enkelvoudige muziekuitdrukking bevat, interpreteert LilyPond het bestand alsof die muziekuitdrukking ingepakt is in bovenstaande commando’s.
Een kleine waarschuwing! In veel van de voorbeelden
in de LilyPond-documentatie worden de \new Staff
- en
\new Voice
-commando’s weggelaten en worden ze
impliciet aangemaakt. Voor eenvoudige voorbeelden werkt dat
goed, maar voor ingewikkelde voorbeelden, vooral wanneer
additionele commando’s worden gebruikt, kan het impliciete
aanmaken van contexten verrassende resultaten opleveren,
zoals extra ongewenste notebalken. Hoe je contexten
expliciet specificeert, wordt uitgelegd in Contexts and engravers.
Nota bene : Voor het invoeren van meer dan enkele regels muziek wordt aangeraden altijd notenbalken en stemmen expliciet te specificeren.
Laten we terugkeren naar het eerste voorbeeld en het
\score
-commando beter bekijken.
Een \score
-blok moet altijd precies één
muziekuitdrukking bevatten, en die moet direct na het
\score
-commando staan. Herrinner je dat een
muziekuitdrukking alles kan zijn van een enkele noot
tot een enorme samengestelde uitdrukking zoals
{ \new StaffGroup << ...vul de volledige partituur van een Wagner opera hier in... >> }
Omdat alles tussen { ... }
staat, telt het als één
muziekuitdrukking.
Zoals we eerder al zagen, kan het \score
-blok
allerlei andere dingen bevatten, zoals
\score { { c'4 a b c' } \header { } \layout { } \midi { } }
Merk op dat deze drie commando’s – \header
,
\layout
en \midi
– speciaal zijn: in
tegenstelling tot veel andere commando’s die met een
backslash (\
) beginnen zijn het geen
muziekuitdrukkingen en ze zijn ook geen onderdeel van een
muziekuitdrukking. Ze kunnen zowel binnen als buiten het
\score
-blok worden geplaatst. Deze commando’s worden
gewoonlijk dan ook buiten het \score
-blok gezet
– bijvoorbeeld, \header
staat meestal boven het
\score
-commando, zoals het in eerste voorbeeld van
deze paragraaf.
De twee andere commando’s die je niet eerder hebt gezien
zijn \layout { }
en \midi {}
. Als deze
gebruikt worden als hierboven laten ze LilyPond
respectievelijk geprinte- en MIDI-uitvoer genereren. Een
volledige beschrijving van deze commando’s is te vinden in
de Notatiehandleiding –
Score layout, en
Creating MIDI files.
Je kunt meer dan een \score
-blok gebruiken. Elk
wordt behandeld als een afzonderlijke partituur en ze worden
allemaal samengevoegd in een enkel uitvoerbestand. Een
\book
-commando is niet nodig – die wordt impliciet
aangemaakt. Echter, als je afzonderlijke uitvoerbestanden
vanuit een ‘.ly’-bestand wil maken, dan moet het
\book
-commando worden gebruikt om de verschillende
secties aan te geven: elk \book
-blok produceert
een apart uitvoerbestand.
Samengevat:
Elk \book
-blok geeft een apart uitvoerbestand (bijv.,
een PDF-bestand). Als je er geen expliciet toevoegt, stopt
LilyPond je gehele invoercode impliciet in een
\book
-blok.
Elk \score
-blok is een apart brok muziek binnen een
\book
-blok.
Elk \layout
-blok beïnvloedt het \score
- of
\book
-blok waarin het voorkomt – d.w.z., een
\layout
-blok binnen een \score
-blok heeft
uitsluitend invloed op dat \score
-blok, maar een
\layout
-blok buiten een \score
-blok (en dus
binnen een \book
-blok, expliciet danwel impliciet)
beïnvloedt elke \score
in dat \book
.
Voor details zie Multiple scores in a book.
Een andere manier van afkorten is het gebruik van variabelen, zoals getoond in Stukken organiseren met variabelen. Alle sjablonen gebruiken dat:
melodie = \relative { c'4 a b c } \score { \melodie }
Als LilyPond naar dit bestand kijkt, neemt het de waarde van
melodie
(alles na het isgelijkteken) en voegt die in
zodra ergens \melody
staat. De naam van de variable
heeft verder geen speciale betekenis – het kan net zo goed
melodie
, globaal
, TijdSleutel
,
pianorechterhand
, of iets anders zijn. Bedenk dat je
vrijwel elke naam kunt gebruiken die je wilt, zolang die
maar bestaat uit letters en het niet de naam is van een
LilyPond-commando. Voor meer details, zie Saving typing with variables and functions. De precieze
beperkingen van variabelenamen staan beschreven in
File structure.
Zie ook
Voor een volledige definitie van het invoerformaat, zie File structure.