4.1.1 Inleiding in de LilyPond-bestandsstructuur

Een basisvoorbeeld van een LilyPond-invoerbestand is

\version "2.23.82"

\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.


LilyPond – Beginnershandleiding v2.23.82 (ontwikkelingstak).