LilyPond

Uit Wikipedia, de vrije encyclopedie
Naar navigatie springen Naar zoeken springen
LilyPond
Logo
Ontwikkelaar Han-Wen Nienhuys; Jan Nieuwenhuizen
Recentste versie 2.22.2 
(22 februari 2022)
Laatste bètaversie 2.23.9 
(20 mei 2022)
Status Actief
Besturingssysteem Windows, Linux, macOS en FreeBSD
Geschreven in C++
Categorie Bladmuziek
Licentie GPL 2
Versiebeheer gitlab.com
Website LilyPond.org
Portaal  Portaalicoon   Informatica
Vrije software

LilyPond is muzieknotatiesoftware om goed opgemaakte en prettig leesbare bladmuziek te maken die uitstraalt alsof het handgegraveerd is. Daarnaast kan LilyPond audiobestanden maken die afgespeeld kunnen worden met een synthesizer. Ze zijn bedoeld voor controle van de invoer en als voorbeeld voor musici. De gebruiker van Lilypond maakt een invoerbestand met de beschrijving van de muziek. Een eenvoudige teksteditor is daarvoor voldoende. Vervolgens start de gebruiker LilyPond dat op basis van het invoerbestand bladmuziek en audiobestanden maakt.

Opmaak[bewerken | brontekst bewerken]

LilyPond maakt de bladmuziek automatisch op heeft 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. LilypPond vermijdt botsingen tussen noten, tekst, dynamische tekens en andere elementen van bladmuziek.

De opmaak is in hoge mate beïnvloedbaar, want alle instellingen voor typografische voorkeuren kunnen worden aangepast. Dat kan door het aanpassen van de standaardwaarden voor de redeneermechanisme voor de opgemaakt, en ook door op bepaalde plaatsen inde muziek direct in de opmaak in te grijpen. De referentiehandleiding geeft ook hierover uitleg. Alle aanwijzingen voor de opmaak staan in de invoerbestanden.

Voorbeelden van mogelijkheden[bewerken | brontekst bewerken]

  • LilyPond heeft mogelijkheden om liedteksten onder of boven notenbalken te noteren, of juist aan het einde van een lied.
  • Er zijn mogelijkheden voor het toevoegen van opgemaakte tekst, zoals een voorblad, een inhoudsopgave en een beschrijving van het verhaal van bijvoorbeeld een opera. De lettertypen die aanwezig zijn op de computer waarmee wordt gewerkt zijn hiervoor beschikbaar.
  • Herhalingen kunnen in de bladmuziek zijn aangegeven met herhalingstekens en in de audiobestanden klinken alsof de muziek volledig is uitgeschreven. Met name in gezongen muziek hebben herhalingen vaak kleine variaties, om de tekst en noten passend te maken. Het is mogelijk om dergelijke variaties in de audiobestanden te verwerken.
  • 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.
  • Alle partijen worden binnen LilyPond volledig ingevoerd. Door deze structuur is 'extractie', het selecteren van een of enkele partijen uit een partituur, niet nodig. Met LilyPond kun je in één keer een partituur en bladmuziek voor elke partij maken.
  • Het is mogelijk om partijen, of delen daarvan, te transponeren, waardoor het bijvoorbeeld mogelijk is om partijen van transponerende instrumenten op hun instrument-eigen wijze in de bladmuziek te noteren en in audiobestanden hun werkelijke toonhoogte te laten klinken.
  • LilyPond kan meerdere partijen in één notenbalk plaatsen.

Enkele mogelijkheden voor speciale muziek[bewerken | brontekst bewerken]

  • Instrumentspecifieke symbolen voor onder andere piano, harp en accordeon zijn aanwezig. Symbolen kunnen ook, binnen of buiten LilyPond, getekend worden en opgenomen in de bladmuziek.
  • LilyPond ondersteunt specifieke notaties, zoals de gregoriaanse muzieknotatie en tabulaturen voor bijvoorbeeld guitaarmuziek.

Enkele mogelijkheden voor typografie[bewerken | brontekst bewerken]

  • Het is mogelijk om eigen typografische mogelijkheden en variaties toe te voegen.
  • Het is mogelijk om het 'lettertype' van het notenschrift te wijzigen.

Enkele eigenschappen van typografische optimalisering[bewerken | brontekst bewerken]

  • Het standaard 'lettertype' van het notenschrift wijzigt mee met de grootte van de notenbalk. Bij kleinere noten balken wordt de noten ronder en worden de relatieve lijndikte van notenbalken wordt groter.
  • Als de richting van de stelen 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 groter of iets kleiner te maken lijkt het of de tussenruimte tussen de noten steeds gelijk is. Dit is 'optische spatiëring'.
  • 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.
  • Noten worden zo geplaatst dat de afstand tussen noten de duur van de noten representeert. De afstand tussen kwartnoten is dan globaal twee keer zo groot als de afstand tussen achtste noten. Dit is 'proportionele spatiëring' van noten. Standaard gaat LilyPond hier losjes mee om, maar er is een instructie die ervoor zorgt dat LilyPond dit exact toepast.

Invoerbestanden maken[bewerken | brontekst bewerken]

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.

De gebruiker kan in het invoerbestand aangeven welke taal hij gebruikt, want namen van noten 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.

Er zijn ook enkele specifieke programma's voor het maken van invoerbestanden voor LilyPond, die een grafische interface en een realtime previewfunctie hebben. Voorbeelden zijn LilyPondTool, Frescobaldi[1] en Denemo[2].

Uitvoer[bewerken | brontekst bewerken]

LilyPond kan van een invoerbestand meerdere uitvoerbestanden maken. Een volledige orkestpartituur, uitgeschreven partijen voor alle instrumenten, en ook audiobestanden van de het hele orkest en per partij zijn mogelijk.

LilyPond genereert bladmuziek via PostScript in de bestandsformaten PDF, PNG of SVG. Audiobestanden hebben het MIDI-bestandsformaat.

Productiviteit[bewerken | brontekst bewerken]

De productiviteit van Lilypond is hoog omdat de gebruiker zijn muziek via het toetsenbord invoert.

Style sheets[bewerken | brontekst bewerken]

LilyPond kent het concept van style sheets. Dat maakt het makkelijk om alle composities en bewerkingen in dezelfde stijl op te maken.

Kleine aanpassingen[bewerken | brontekst bewerken]

Tweaks, kleine aanpassingen in de opmaak, worden in LilyPond standaard tussen de noten in het invoerbestand aangegeven. Door tweaks in een apart bestand onder te brengen kunnen ze hergebruikt worden de invoerbestanden overzichtelijker. Dat komt ook de snelheid van het invoeren ten goede. Het maakt het ook makkelijker om de opmaak consequent te houden.

Wijzigen[bewerken | brontekst bewerken]

Wijzingen, uitbreidingen en inkortingen, zijn ook achteraf makkelijk in te voeren. Na een verandering berekent LilyPond opnieuw de ideale opmaak op basis van de al ingevoerde voorkeuren en tweaks. De nieuwe uitvoer heeft dezelfde kwaliteit als de vorige versie. Veranderingen zijn niet gemarkeerd of op een andere wijze herkenbaar.

Voorbeelden van gebruik[bewerken | brontekst bewerken]

Distributie van vrije bladmuziek[bewerken | brontekst bewerken]

Het Mutopia-archief[3] en Musipedia[4] verspreiden vrije bladmuziek en maken hiervoor gebruik van LilyPond. De LilyPond-invoerbestanden zijn ook beschikbaar.

Notatievoorbeeld in WikiTeX[bewerken | brontekst bewerken]

Hieronder staan de eerste twee maten van 'Altijd is Kortjakje ziek' in WikiTeX-variant van de LilyPond-code.

<score>
   \relative c' {
     c4 c g' g a a g2 
   }
   \addlyrics {
     Al -- tijd is Kort -- jak -- je ziek,
   }
</score>

De uitleg van dit stukje WikiTeX staat verderop onder het kopje LilyPond-code voor invoerbestanden. Hieronder staat precies dezelfde code, maar nu zonder de aanduiding dat de WikiTeX-code zichtbaar moet zijn. Dan is dit notenschrift het resultaat:


   \relative c' {
     c4 c g' g a a g2 
   }
   \addlyrics {
     Al -- tijd is Kort -- jak -- je ziek,
   }

Notatievoorbeeld in LilyPond[bewerken | brontekst bewerken]

Hieronder een notatie van 'Fire Breathers!' Dit is een voorbeeld van de originele LilyPond-notatie, die veel meer mogelijkheden biedt dan WikiTeX. Omdat geen gebruik is gemaakt van WikiTeX is het resultaat als in een png-bestand weergegeven.


#!LilyPond firebreathers.ly -*- coding: utf-8; -*-
%% 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.
\include "suomi.ly"

%% Optional language upgrade helper.
\version "2.6.0"

%% 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"
    date = "June 2005"
}

Melody = \relative c'' {
   \clef treble
   \time 3/4
   \key a \minor

   %% The piece starts with a quarter-note partial bar, "\partial 4"
   %% tells so to LilyPond.
   \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.
<<
  \new Staff \Melody
  \new Staff \Accompaniment
  \new Staff \SecondVoice
>>

Rendered output

LilyPond-code voor invoerbestanden[bewerken | brontekst bewerken]

De taal of syntax van de invoerbestanden van LilyPond bestaat hoofdzakelijk uit noten, commando's, commentaar en uitbreidingen.

Noten[bewerken | brontekst bewerken]

Noten worden aangegeven met een variant van de Helmholtznotatie. In deze variatie is de Helmholznotatie uitgebreid met cijfers. Tonen worden aangegeven met de kleine letters c, d, e, f, g, a en b. Wijzigingstekens worden aangegeven met de toevoegingen es of s en is. Dubbelmollen en -kruisen zijn ook mogelijk, die worden aangegeven met respectievelijk eses of ses en isis. Komma's of quotes geven het octaaf aan. 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 is meestal gestemd op 440 Hz (hertz).

Commando's[bewerken | brontekst bewerken]

Commando's beginnen met een \. Voorbeelden zijn \relative om aan te geven dat het octaaf van de volgende noten niet absoluut wordt aangegeven, maar ten opzichte van de voorgaande noot. Dan is het interval van een noot tot de vorige noot standaard kleiner dan een kwint. Met comma's en quootjes kan van die standaard respectievelijk naar beneden of naar boven worden afgeweken. In dit voorbeeld wordt met het quootje na de g aangegeven dat hier de g boven de c wordt bedoeld in plaats van de g onder de c. Dat maakt de invoer eenvoudiger omdat er dan minder komma's en quotes nodig zijn om het octaaf van de noot aan te geven.

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. Ook is de syntax van het bestand met opmaakcommando's ingewikkelder, omdat steeds exact moet worden aangegeven op welk deel van de muziek de opmaakcommando's van toepassing zijn. Daar staat tegenover dat de invoerbestanden overzichtelijker zijn, het makkelijker is om de opmaak van de muziek consequent te houden en het invoeren van muziek in het invoerbestand sneller gaat.

Commentaar[bewerken | brontekst bewerken]

Commentaar op een regel wordt voorafgegaan door een procentteken %. Langer commentaar begint met %{ en eindigt met %}.

Uitbreidingen[bewerken | brontekst bewerken]

Naast de LilyPondcode 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.

Eigenschappen van de software[bewerken | brontekst bewerken]

Vrije software[bewerken | brontekst bewerken]

LilyPond is vrije software. Het gebruik ervan is daarom kosteloos. Dat geldt ook voor commercieel gebruik.

Omgeving[bewerken | brontekst bewerken]

LilyPond werkt op de besturingssystemen GNU/Linux, MacOS X en Windows.

Integratie[bewerken | brontekst bewerken]

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-code in verschillende blogs and wiki’s. Voor het gebruik van LilyPond in wiki's is WikiTeX beschikbaar, een MediaWiki-interface, waarmee de muzieknotatie weergegeven kan worden met de Score-extensie van LilyPond. Zo kan notenschrift toegevoegd worden aan teksten met de Lilypond-code die ook gebruikt wordt in de invoerbestanden. Het is dan niet nodig afbeeldingen van notenschrift te gebruiken. Het maakt ook online samenwerking mogelijk.

Programmeertalen[bewerken | brontekst bewerken]

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 muzieksymbolen zijn gemaakt met Metafont en de documentatie van LilyPond is gegenereerd met Python en Make.

Flex en GNU Bison worden gebruikt voor de eerste stappen van het vertalen van de invoerbestanden naar de uitvoer. PostScript en SVG wordt gebruikt bij het maken van van de uitvoer.[5]

Interface[bewerken | brontekst bewerken]

LilyPond zelf kent een batch-interface: als het invoerbestand klaar is, wordt LilyPond uitgevoerd, en compileert LilyPond het invoerbestand. Het resultaat is een logbestand waarin de stappen van het compileren worden vastgelegd. Eventuele waarschuwingen en foutmeldingen die LilyPond bij de controle van het invoerbestand genereert, worden ook in het logbestand vastgelegd. Als LillyPond geen fouten vindt, maakt LilyPond ook bladmuziek en audiobestanden, al naar gelang het invoerbestand dat aangeeft.

Ontwikkeling en ondersteuning[bewerken | brontekst bewerken]

Lilypond heeft een actief ontwikkelteam en een actieve gebruikersgemeenschap. Dit is de stand van zaken in 2022.

Externe links[bewerken | brontekst bewerken]

Bronnen[bewerken | brontekst bewerken]

Verwijzingen[bewerken | brontekst bewerken]

  1. (en) Frescobaldi. Geraadpleegd op 15-12-2021. "Frescobaldi is een LilyPond bladmuziek-editor."
  2. (en) Denemo. Geraadpleegd op 15-12-2021. "Denemo is a free music notation program for GNU/Linux, Mac OSX and Windows"
  3. (en) Mutopia project (24-07-2019). Gearchiveerd op 11-02-2022. Geraadpleegd op 15-12-2021. "Free Sheet Music for Everyone (...) in the Public Domain or under Creative Commons licenses, in PDF, MIDI, and editable LilyPond file formats."
  4. (en) Musipedia, the open music encyclopedia. Geraadpleegd op 15-12-2021. "[In] Muspecidia (...) we are building a searchable, editable, and expandable collection of tunes, melodies, and musical themes."
  5. (en) LilyPond programming languages. https://LilyPond.org (6 februari 2022). Geraadpleegd op 9 maart 2022.