title: LilyPond
text: LilyPond is muziek­notatie­software. De ontwikkelgroep van LilyPond wil goed opgemaakte en prettig leesbare bladmuziek van de beste kwaliteit maken, naar voorbeeld van traditioneel gegraveerde muziek. Het idee is dat mooie en goed leesbare bladmuziek musici steunt en stimuleert.
  
  De gebruiker maakt invoerbestanden met de beschrijving van de muziek. Een eenvoudige teksteditor is daarvoor voldoende. Vervolgens start de gebruiker LilyPond dat op basis van het invoerbestand bladmuziek maakt.
  
  Opmaak 
  LilyPond maakt de bladmuziek automatisch op heeft en daarvoor een redeneermechanisme of algoritme. Het optimaliseert keuzes voor onder andere het aantal maten in een notenbalk en het aantal notenbalken of systemen op een pagina. LilyPond vermijdt botsingen tussen noten, tekst, dynamische tekens en andere elementen van bladmuziek.
  
  De gebruiker kan de opmaak van de muziek naar eigen inzicht wijzigen, want hij kan alle instellingen van het redeneermechanisme voor de typografische de opmaak aanpassen. Ook kan de gebruiker aanwijzigingen geven voor de opmaak van willekeurige delen van de muziek en voor de opmaak van willekeurige noten, andere symbolen en teksten. Alle instellingen en aanwijzingen voor de opmaak staan in de invoerbestanden.
  
  Enkele typografische mogelijkheden 
   Alle lettertypen die op de computer zijn geïnstalleerd zijn ook beschikbaar voor LilyPond.
  
   Er zijn alternatieven voor het 'lettertype' van het notenschrift.
  
   De gebruiker kan eigen symbolen toevoegen.
  
  Voorbeelden van typografische optimalisering 
   De standaarden van het 'lettertype' van het notenschrift wijzigen mee met de grootte van de notenbalk. Bij kleinere notenbalken worden de noten niet alleen kleiner, maar ook ronder en wordt de relatieve lijndikte van notenbalken groter.
  
   Eventuele hulplijnen worden iets korter als er een wijzigingsteken voor de noot staat. Het wijzigingsteken kan daardoor dichter bij de noot geplaatst worden, wat de muziek leesbaarder maakt.
  
   Als de richting van de stokken verandert van boven naar beneden of andersom kan de afstand tussen noten groter of juist kleiner lijken. Door op die plaatsen de afstanden tussen de noten iets kleiner of juist iets groter te maken lijkt het of de tussenruimte tussen de noten steeds gelijk is. Dit is 'optische spatiëring'.
  
   Ook de afstand tussen noten geeft de de duur van de noten weer. De afstand tussen kwartnoten is bijvoorbeeld ongeveer twee keer zo groot als de afstand tussen achtste noten. Dit is 'proportionele spatiëring'. Standaard gaat LilyPond hier losjes mee om, maar er is ook een instructie die ervoor zorgt dat LilyPond proportionele spatiëring strikt toepast.
  
  Gebruiksmogelijkheden van LilyPond 
  Lilypond biedt dezelfde gebruiksmogelijkheden als de meeste andere muzieknotatiesoftware. Hieronder staan enkele specifieke mogelijkheden:
  
  Voorbeelden van extra mogelijkheden 
   Invoer is herbruikbaar, ook wanneer twee of meer partijen gelijktijdig of als in een canon dezelfde noten spelen. Muziek wordt één keer ingevoerd, op andere plaatsen volstaat een verwijzing. Dat voorkomt dubbel invoerwerk.
  
   De gebruiker kan zijn invoer, of delen daarvan, delen met anderen.
  
   De gebruiker kan meerdere edities maken van een muziekstuk of een deel daarvan. Bij herhalingen die niet exact gelijk zijn kan de gebruiker voor elke herhaling een eigen editie maken. Hij kan ook van een of meer partijen een editie maken voor bladmuziek met enkel die partij, en een andere editie die geschikt is om in een partituur op te nemen.
  
   De gebruiker beschrijft alle partijen. Hij kan herhalingen en terugkerende thema's kopiëren en eventueel transponeren, wat dubbel invoerwerk voorkomt. Door deze structuur is 'extractie', het selecteren van een of enkele partijen uit een partituur, niet nodig.
  
  Enkele mogelijkheden voor speciale muziek 
   LilyPond ondersteunt specifieke notaties, zoals experimentele en gregoriaanse muziek.
  
   Instrumentspecifieke symbolen voor onder andere piano, harp en accordeon zijn aanwezig. Voor gitaarmuziek ondersteunt LilyPond bijvoorbeeld tabulaturen en alternatieve stemmingen. Symbolen kunnen ook, binnen of buiten LilyPond, getekend worden en opgenomen in de bladmuziek.
  
  Ondersteuning van productiviteit 
  LilyPond heeft voorzieningen om de productiviteit te verhogen.
  
   De gebruiker kan zelf kiezen in welke volgorde hij algemene opmaakvoorkeuren, partijen en liedteksten in een invoerbestand beschrijft, en hij kan deze ook in aparte invoerbestanden beschrijven. Zo maakt hij zijn werk overzichtelijker en kan hij zijn werk makkelijker aanpassen.
  
   Door opmaakvoorkeuren bij elkaar te plaatsen wordt het makkelijker om delen van werken in dezelfde stijl op te maken. Dit komt overeen met het idee van style sheets.
  
   Aanwijzingen voor de opmaak van individuele noten kunnen niet op één plaats binnen een bestand beschreven worden, maar wel in een apart bestand. Dit maakt het makkelijker om muziek snel te beschrijven en het is gemakkelijker om de opmaak consequent te houden.
  
   Er zijn LilyPond-modellen voor onder andere koorwerken. In een model zijn tekstregels, notenbalken, systemen, titels en dergelijke al voorbereid. De gebruiker hoeft alleen de muziek in te voeren, en bij koorwerken natuurlijk ook de liedteksten. De gebruiker kan de modellen ook aanpassen.
  
   Wijzigingen, uitbreidingen en inkortingen die de gebruiker later aanbrengt hebben geen invloed op de kwaliteit van het resultaat. Na een verandering maakt LilyPond een nieuwe versie van de bladmuziek op basis van de nieuwe beschrijvingen in de invoerbestanden. Veranderingen zijn niet gemarkeerd of op een andere wijze herkenbaar.
  
   LilyPond kan van een invoerbestand of van een set van invoerbestanden meerdere uitvoerbestanden maken. Een volledige orkestpartituur, daarnaast uitgeschreven partijen voor alle instrumenten, en ten slotte audiobestanden van de het hele orkest en per partij zijn mogelijk. Na een wijziging of aanvulling is direct van alle partijen en audiobestanden een nieuwe versie beschikbaar.
  
  Beperkingen 
  Beperkingen ten opzichte van andere muzieknotatiesoftware.
  
   LilyPond is bedoeld voor het maken van mooie bladmuziek, andere mogelijkheden zijn beperkt of niet aanwezig. LilyPond biedt bijvoorbeeld geen optische herkenning van bladmuziek.
  
   Het notenschrift van LilyPond is niet compatibel met de standard music font layout (SMuFL). Dat beperkt de keuzemogelijkheden voor andere notenschriften.
  
   Als de gebruiker het eindresultaat wil verfijnen kan dat leiden tot een vaak herhaald proces van verbeteren, opnieuw compileren en het resultaat beoordelen.
  
  Invoerbestanden maken
  
  Met toetsenbord 
  De invoerbestanden bestaan uit ASCII-teksten. Gebruikers kunnen invoerbestanden maken met vrijwel alle tekstverwerkers en programma-editors. Tekstgebaseerde invoer maakt het schrijven van partituren ook toegankelijk voor gebruikers met beperkingen, omdat spraakherkenningssoftware en voorleessoftware gebruikt kunnen worden.
  
  Met grafische interface 
  Invoeren van muziek via een grafische interface en een realtime previewfunctie is mogelijk via programma's als LilyPondTool, Frescobaldi en Denemo.
  Sommigen daarvan hebben syntaxiskleuring, automatische aanvulling van sleutelwoorden en/of LilyPond-modellen van standaarddelen van invoerbestanden.
  
  Met klavier 
  Er zijn ook programma's die invoer met een toetsenblok of met een MIDI-klavier ondersteunen.
  
  Importeren en converteren 
  Er is ondersteuning voor het importeren en converteren van MIDI- en MusicXML-bestanden naar LilyPond-invoerbestanden.
  
  Uitvoer 
  De standaarduitvoer is in Portable document format (PDF) en PostScript (PS). Scalable Vector Graphics (SVG) en Encapsulated PostScript (EPS) zijn ook mogelijk. Ook is uitvoer in Portable network graphics (PNG) mogelijk, maar de resolutie van dit bestandsformaat is beperkt.
  
  Daarnaast kan LilyPond muziek als audiobestanden uitvoeren. Audiobestanden hebben het MIDI-bestandsformaat.
  Uitvoer naar MusicXML biedt LilyPond niet.
  
  Voorbeelden van gebruik
  
  Distributie van vrije bladmuziek 
  Het Mutopia-archief en Musipedia verspreiden vrije bladmuziek en maken hiervoor gebruik van lilypond. De LilyPond-invoerbestanden zijn ook beschikbaar.
  
  Notatievoorbeeld met MediaWiki 
  In het notatievoorbeeld hieronder staan de eerste twee maten van 'Altijd is Kortjakje ziek' in LilyPond-notatie.
  <score>
   \relative c' {
    c4 c g' g a a g2 
   }
   \addlyrics {
    Al -- tijd is Kort -- jak -- je ziek,
   }
  </score>
  
  De uitleg hiervan staat verderop onder het kopje LilyPond-notatie voor invoerbestanden. Hieronder staat precies dezelfde LilyPond-notatie, maar nu zonder de aanduiding dat deze LilyPond-notatie als code zichtbaar moet zijn. Dankzij de ondersteuning van de MediaWikisoftware is dit notenschrift het resultaat:
  
  Notatievoorbeeld zonder MediaWiki 
  Hieronder het invoerbestand van 'Fire Breathers!' van de Finse componist Urpo Lankinen.
  <score raw=1 sound=1>
   \version "2.22"
   %% Language upgrade helper.
  
   %% Theme to "Fire Breathers", a homebrew NES game perpetually
   %% under development. Composed by Urpo Lankinen.
   %% Note: The composer has made this source code available
   %% to Wikipedia under the GFDL license. Other versions outside
   %% Wikipedia are typically under CC BY-SA license.
  
   %% This file uses Finnish note names (for example, where
   %% Americans use "F#" and "Bb", Finns use "Fis" and "B").
   %% Dutch note names are used by default.
   \language "suomi"
  
   %% The header block defines the titles and texts.
   \header {
    title = "Theme to ``Fire Breathers!''"
    instrument = "For the 2A03 or SID"
    composer = "Urpo Lankinen"
    enteredBy = "Urpo Lankinen"
    updatedBy = "Jan Nieuwenhuizen, Marten de Vries"
    date = "June 2005"
    tagline = ##f
   }
  
   Melody = \relative c'' {
    \clef treble
    \time 3/4
    \key a \minor
  
    \partial 4
    a4 | e'4.( d8[ c]) r8 | d4.( c8[ h]) r8 | a2. | e2
    a4 | e'4.( d8[ c]) r8 | d4.( e8[ f]) r8 | e2. | r2
    e4 | f4.( e8[ d]) r8 | d4.( c8[ h]) r8 | a2. | e2
    a4 | e'4.( d8[ c]) r8 | d4.( c8[ h]) r8 | a2. ~ a2 r4 | \bar "|."
   }
  
   %% This is the second voice.
   SecondVoice = \relative c {
    \clef bass
    \time 3/4
    \key a \minor
  
    \partial 4
    r4 | e2. | d2. | a2. | e2
    a4 | e'2. | d2 f4 | e2. | r2.
    | f2. | d2. | a2. | e2
    a4 | e'2. | d2 h4 | a2. ~ a2 r4 | \bar "|."
   }
  
   %% Melodies, lyrics and chords can be assigned to a variable and then
   %% be *reused* elsewhere. Here are three different accompaniment
   %% ,patterns, which are used throughout the accompaniment melody.
   AccompA = \relative c { a4 e'8 a, e' a, | }
   AccompB = \relative c { g4 d'8 g, d' g, | }
   AccompC = \relative c { e,4 h'8 e, h' e, | }
  
   Accompaniment = {
    \clef bass
    \time 3/4
    \key a \minor
  
    \partial 4
    r4 | \AccompA \AccompB \AccompA \AccompA
    \AccompA \AccompB \AccompA \AccompA
    \AccompC \AccompC \AccompA \AccompA
    \AccompA \AccompB \AccompA | a2 r4 | \bar "|."
   }
  
   %% The top level music definition.
   \score {
    <<
     \new StaffGroup \with { midiInstrument = bagpipe } <<
      \new Staff \Melody
      \new Staff \Accompaniment
      \new Staff \SecondVoice
     >>
    >>
    \layout { }
    \midi { \tempo 4=116 }
   }
  </score>
  De notatie hierboven is met LilyPond omgezet in het notenschrift dat hieronder staat.
  
  LilyPond-notatie voor invoerbestanden 
  De taal of syntax van de invoerbestanden van LilyPond bestaat hoofdzakelijk uit noten, commando's, commentaar en uitbreidingen.
  
  Noten 
  De gebruiker kan in het invoerbestand aangeven welke taal hij gebruikt, want namen van tonen verschillen per taal. Wat bijvoorbeeld een bes is in het Nederlands, is in het Engels b-flat, in het Duits een B en in het Frans een si-bémol. In het Nederlands worden tonen aangegeven met een variant van de Helmholtznotatie. Dat betekent dat de stamtonen worden aangegeven met de kleine letters c, d, e, f, g, a en b. Voorbeelden van tonen met wijzigingstekens zijn bes, es en fis. Komma's of quotes direct na de nootnaam geven het octaaf aan. LilyPond ondersteunt namen van tonen in twaalf talen.
  
  Cijfers geven de duur van een noot aan.
  Een 4 geeft een kwartnoot aan, een 2 een halve noot en 1 een hele noot. Een punt na het getal heeft dezelfde betekenis als in het gewone notenschrift, de duur van de noot is dan anderhalf keer zo lang. Als een volgende noot dezelfde lengte heeft als de voorgaande noot, dan is het niet nodig om bij die volgende noot het getal te noteren.
  De noot c'4 is de centrale c; de noot a'4 is een kwartnoot a in het octaaf dat begint met die centrale c. Deze toon a' wordt wel de stemtoon genoemd en is meestal gestemd op 440 hertz.
  
  Commando's 
  Commando's beginnen met een \. Een voorbeeld is \relative. Dit commando geeft aan dat het octaaf van de volgende noten niet absoluut wordt aangegeven, maar ten opzichte van de voorgaande noot. Dan is het interval tussen een noot en de vorige noot standaard maximaal een kwart is. Met comma's en quootjes kan dat interval standaard respectievelijk naar beneden of naar boven worden bijgesteld.
  
  Het commando \addlyrics betekent "voeg zangtekst toe". Lettergrepen worden gescheiden door  --   ofwel een spatie, twee afbreekstreepjes en weer een spatie. Dat stelt LilyPond in staat om de woorden correct onder de noten te plaatsen. LilyPond heeft meerdere mogelijkheden om melisme's, klanken over meerdere noten, te noteren.
  
  Standaard gaat LilyPond uit van muziek in de toonsoort c en vierkwartsmaat. Met \time kan een andere maatsoort worden aangegeven en met \clef een andere toonsoort.
  
  Met \markup kan tekst boven of onder de notenbalk opgemaakt en geplaatst worden. Commando's voor dynamiek zijn onder andere \pp, \mf; een crescendo begint met \< en eindigt met \!. 
  Het commando \once geeft aan dat het volgende commando een kleine wijziging is en bijvoorbeeld voor een specifieke noot geldt.
  Sommige veelgebruikte commando's hebben een eigen symbool om het invoeren te vergemakkelijken. Een legatoboog begint bijvoorbeeld met een ( en eindigt met een ). 
  
  Intensief gebruik van commando's kan de leesbaarheid van het invoerbestand minder goed maken. Daarom kunnen commando's ook in een apart bestand opgenomen worden. Het oorspronkelijke invoerbestand wordt dan overzichtelijker, maar in het invoerbestand moet wel een verwijzing staan naar het bestand met opmaakcommando's. Daar staat ook tegenover dat het makkelijker is om de opmaak van de muziek consequent te houden en het invoeren van muziek in het invoerbestand sneller gaat.
  
  Commentaar 
  Commentaar op een regel wordt voorafgegaan door een procentteken %. Langer commentaar begint met %{ en eindigt met %}.
  
  Uitbreidingen 
  Naast de LilyPondnotatie biedt LilyPond een scripttaal. Gebruikers kunnen hiermee zelf extra mogelijkheden aan LilyPond toevoegen. Met de toevoeging van een scripttaal aan de gebruikersinterface is de grens tussen gebruikers minder scherp. Dat maakt het voor gebruikers makkelijker om door te groeien naar ontwikkelaar.
  
  Alternatieve notatie 
  LilyPond kan ook muziek die genoteerd is in de ABC-notatie omzetten in bladmuziek.
  
  Eigenschappen van de software
  
  Vrije software 
  LilyPond is vrije software. Het gebruik ervan is daarom kosteloos, ook voor commercieel gebruik.
  
  Omgeving 
  
  LilyPond werkt op de besturingssystemen GNU/Linux, MacOS X en Windows.
  
  Integratie 
  LilyPondmuziek kan geïntegreerd worden in LaTeX en HTML. Het kan toegevoegd worden aan OpenOffice.org met behulp van OOolilypond. Plug-ins zijn ook beschikbaar voor het gebruik van LilyPond-notatie in verschillende blogs. De Wiki-software MediaWiki, die voor Wikipedia gebruikt wordt, ondersteunt LilyPond sinds 2013. Zo kan notenschrift toegevoegd worden aan teksten met de LilyPond-notatie die ook gebruikt wordt in de invoerbestanden. Het is dan niet nodig afbeeldingen van notenschrift te gebruiken. Het maakt ook online samenwerking mogelijk.
  
  Programmeertalen 
  LilyPond is hoofdzakelijk geschreven in C++. Een aantal mogelijkheden van LilyPond is geprogrammeerd met de ingebouwde scripttaal Guile, wat een dialect is van Scheme. De omvang van de code is bijna 600.000 regels, waarvan bijna 240.000 regels in C++ en ruim 100.000 regels in Guile. De muzieksymbolen van het standaardnotenschrift van LilyPond zijn gemaakt met Metafont en de documentatie van LilyPond is gegenereerd met Python en Make.
  
  Flex en GNU Bison ontleden of 'parsen' de invoerbestanden en zetten daarmee de eerste stappen van het vertalen van de invoerbestanden naar de uitvoer. PostScript en SVG wordt gebruikt bij het maken van van de uitvoer.
  
  Interface  
  Lilypond is een consoletoepassing. Dat betekent dat de gebruikersinterface volledig op tekst is gebaseerd en dat gebruiker het programma start met een startcommando dat hij invoert in de commandoregel van het besturingssysteem van de computer. Het startcommando om bevat minimaal de naam 'lilypond' en de naam van het invoerbestand dat de gebruiker maakte.
  
  Bij een computer met een grafisch besturingssysteem, zoals MS-Windows, kan het starten ook door te (dubbel)klikken op de bestandsnaam van het invoerbestand.
  
  LilyPond werkt als batchprogramma, wat betekent dat het programma op basis van het startcommando het invoerbestand interpreteert en verwerkt LilyPond zonder verdere tussenkomst van de gebruiker. Het resultaat is een logbestand waarin het programma de stappen van het compileren vastlegt. Het programma controleert het invoerbestand en noteert eventuele waarschuwingen en foutmeldingen ook in het logbestand. Als het geen fouten vindt maakt het ook bladmuziek en audiobestanden, al naargelang het invoerbestand dat aangeeft.
  
  Voetafdruk software 
  De software-voetafdruk van LilyPond is klein. De gebruiker plaatst de bestanden met de software in het vaste geheugen van de computer om LilyPond gebruiksklaar te maken. De gebruiker hoeft geen instellingen van de computer te wijzigen en er is geen installatieprogramma.
  
  Ontwikkeling en ondersteuning 
  Han-Wen Nienhuys en Jan Nieuwenhuizen begonnen de ontwikkeling van LilyPond in 1996 en presenteerden de eerste versie, met versienummer 0.1, op 1 augustus 1997. De naam is terug te voeren op het Rosegarden-project en op een kennis van Nienhuys, Suzanne, een Hebreeuwse naam die lelie betekent.
  
  LilyPond 1.0 verscheen op 31 juli 1998. De belangrijkste toevoeging was een eigen muziekschrift, Feta. LilyPond 2.0 verscheen op 24 september 2003. Deze versie bracht een vereenvoudigde syntaxis en veel nieuwe mogelijkheden om verschillende muziekstijlen weer te geven.
  In 2023 heeft LilyPond een actief ontwikkelteam en een actieve gebruikersgemeenschap.
  
  Vergelijking met andere muzieknotatiesoftware 
  De pakketten Finale van MakeMusic, Sibelius van Avid Technology en Dorico van Steinberg worden vaak met LilyPond vergeleken. Andrew Hawryluk bijvoorbeeld, een gebruiker van Finale en LilyPond, vergeleek deze twee pakketten en schreef erover.. Een vergelijking met MuseScore staat op slant.co.
  
  Externe links 
    Website LilyPond
   Cursus LilyPond (Nederlandstalig)
  
  Bronnen 
   
   Meta-pagina over muzieknotatie binnen het Wikipedia-project.
  
  Verwijzingen 
  
  Muzieknotatie
  Opensourcesoftware en vrije software
  Software geschreven in C++