LilyPond

LilyPond
Utvecklare David Kastrup, Werner Lemberg, Han-Wen Nienhuys, Jan Nieuwenhuizen, Carl Sorensen, Janek Warchoł, et al.
Initial release 1996 ; 27 år sedan ( 1996 )
Stabil frisättning
Edit this on Wikidata 2.24.1 / 12 februari 2023
Förhandsgranska release
Edit this on Wikidata 2.25.2 / 18 februari 2023
Förvar
Skrivet i C++ , Scheme , Metafont , PostScript , Python
Operativ system
Storlek 20–100 MB
Standard (er) EPS , MIDI , MusicXML , PDF , PS , SVG
Tillgänglig i engelska, katalanska, holländska, franska, tyska, ungerska, italienska, japanska, spanska
Typ Musikprogramvara , partiturförfattare
Licens GPL-3.0 eller senare
Hemsida lilypond .org  Edit this on Wikidata

LilyPond är ett datorprogram och filformat för musikgravering . Ett av LilyPonds främsta mål är att producera partitur som är graverade med traditionella layoutregler, vilket återspeglar eran då noter graverades för hand.

LilyPond är plattformsoberoende och är tillgänglig för flera vanliga operativsystem ; släppt under villkoren för GNU General Public License , LilyPond är fri programvara och en del av GNU-projektet .

Historia

LilyPond-projektet startades 1996 av Han-Wen Nienhuys och Jan Nieuwenhuizen, efter att de bestämde sig för att överge arbetet med MPP ( MusiXTeX PreProcessor), ett projekt som de började samarbeta om 1995. Namnet inspirerades både av Rosegarden- projektet och en bekant. av Nienhuys och Nieuwenhuizen som heter Suzanne, ett namn som betyder lilja på hebreiska ( שׁוֹשַׁנָּה ) .

Version 1.0

LilyPond 1.0 släpptes den 31 juli 1998 och lyfte fram utvecklingen av ett anpassat musikteckensnitt, Feta, och den fullständiga separationen av LilyPond från MusiXTeX.

Version 2.0

LilyPond 2.0 släpptes den 24 september 2003 och tillkännagav en förenklad syntaxmodell och en mycket mer komplett uppsättning faciliteter för notering av olika musikstilar.

Design

Skärmdump av LilyPond som körs på Linux

LilyPond är mestadels skrivet i C++ och använder Scheme (tolkat av GNU Guile ) som sitt tilläggsspråk, vilket möjliggör användaranpassning. Den har en relativt stor kodbas; den 10 mars 2017 innehåller källan över 600 000 rader C++, 140 000 schemalinjer och 120 000 rader Python-kod.

Den använder en enkel textnotation för musikinmatning, som LilyPond tolkar och bearbetar i en serie steg. I slutskedet matas noter till PDF (via PostScript ) eller andra grafiska format, som SVG eller PNG . LilyPond kan också generera MIDI- filer som motsvarar notutmatningen.

LilyPond är en textbaserad applikation , så den innehåller inte något eget grafiskt användargränssnitt för att hjälpa till med att skapa poäng. (Men ett textredigeringsbaserat "LilyPad" GUI för Windows och MacOS ingår som standard på dessa system.) Det har dock ett flexibelt inmatningsspråk som strävar efter att vara enkelt, vilket underlättar inlärningskurvan för nya användare . LilyPond följer WYSIWYM -paradigmet; Arbetsflödet för att sätta noter med LilyPond liknar det för att förbereda dokument med LaTeX .

LilyPond stöder experimentell musikalisk notation . Dess gitarranläggningar stöder alternativa stämningar , såsom major-thirds stämning .

Programvarufunktioner

Beethovens Symphony No. 5 notblad tryckt från en digitalt graverad PDF-fil producerad av LilyPond ; släppt av Mutopia-projektet

LilyPonds primära mål är att producera output som är jämförbart med professionellt graverade partitur istället för output som ser mekaniskt och datorgenererat ut. En uppsats från LilyPond-webbplatsen, skriven av LilyPond-utvecklare, förklarar några typografiska problem som LilyPond tar upp:

  • Optisk teckensnittsskalning : beroende på personalstorleken ändras musikteckensnittets design något; detta är en funktion som Donald Knuths datormoderna typsnitt är känt för. Som ett resultat blir nothuvudena mer rundade och stavlinjerna tjockare.
  • Optiskt avstånd : skaftriktningar tas med i beräkningen vid avstånd mellan efterföljande toner.
  • Särskild hantering av reskontrarader : reskontrarader förkortas när olyckor är i närheten, vilket förbättrar läsbarheten.
  • Proportionellt mellanrum : anteckningar kan placeras på ett sådant sätt att de exakt återspeglar deras varaktighet. Till exempel, med den här inställningen är avståndet mellan på varandra följande kvartsnoter fyra gånger större än mellan på varandra följande sextondelsnoter .

Översikt över ingångssyntax

Det ursprungliga inmatningsspråket för LilyPond är omfattande och består av många kommandon som behövs för att uttrycka någon form av artikulation, dynamik, mätare etc. Det liknar TeX . Möjligheten att bädda in schemakod i en LilyPond-källfil tillåter godtyckliga tillägg till inmatningsspråket och hjälper till med algoritmisk sammansättning . Några allmänna syntaktiska funktioner listas nedan.

  • Enradiga kommentarer börjar med ett procenttecken % .
  • Noter representeras i tonhöjdslängdsformat : tonhöjd anges med Helmholtz tonhöjdsnotation och varaktighet anges med ett sifferbaserat system. Semantiken för tonhöjdsformatet ändras beroende på det aktiva inmatningsläget; detta förklaras ingående i LilyPond-manualen. Till exempel, i absolut läge a'4 ett A, en oktav upp från basen A (A3 i vetenskaplig tonhöjdsnotation ), med kvartsnotslängd.
  • Kommandon börjar vanligtvis med ett omvänt snedstreck (som \time , eller \slurUp ). Kommandots funktion avgör var kommandot placeras; till exempel, om kommandot används för att indikera en fast dynamik på en specifik not, placeras det efter noten.
  • Vissa vanliga kommandon representeras symboliskt för att underlätta skrivning. Ett exempel är med slurs , där ( och ) indikerar början respektive slutet av en slur. Ett annat exempel är med manuell strålning , där [ och ] indikerar strålens utsträckning.

LilyPonds gränssnitt med Pango kräver att indatateckenkodningen är UTF -8 . En fördel med detta är att mer än ett språk kan inkluderas i samma källfil.

Exempel på LilyPond-indatafil

 

 

 
         
    
  
  
  
  
  
  


 
    
    
    0
    


 
      
          
       
       
       
         
          
                
                
                 
                 

                  
            
               

               
                       

       
            
         
            

           
           
            
    

        
           
         
           
          
          
          
          
         
           
              
        
    

          
       
       
         
         
         
         

         
         
         
         

       
           
         
    
  
 \version  "2.22.2"  \include  "english.ly"  \header  {  title  =  \markup  {  "Utdrag från"  \italic  "fibonacci"  }  kompositör  =  "Patrick McCarty"  % copyright = \markup \fontsize #-5  % {  % Copyright © 2009.  % Typuppsättning med GNU LilyPond.  % Frisläppt till allmän egendom av kompositören.  % }  }  \paper  {  paper-height  =  4,6  \in  paper-width  =  8,5  \in  indent  =  #  system  -count  =  #  2  }  \score  {  \new  PianoStaff  =  "pianostaff" <<  \new  Staff  =  "RH"  \ relativ  c'  {  \accidentalStyle  Score  .  piano  \clef  "diskant"  \time  2/4  \set  Partitur  .  currentBarNumber  =  #  51  \tempo  "Långsam och stadig"  4  =  60  <  e  gs,  >  4  \acciaccatura  {  cs  16  [  ds  ]  }  <  e  gs,  >  4  |  % m. 51   <  ds  gs,  >  4  \acciaccatura  {  e  16  [  ds  ]  }  <  cs  gs  >  4  |  % m. 52   <  cs  gs  >  4  \acciaccatura  {  ds  16  [  cs  ]  }  <  c  g  >  4  |  % m. 53   <  cs  gs  >  4  \acciaccatura  {  ds  16  [  e  ]  }  <  es  bs  gs  >  4  |  % m. 54   <  e  gs,  >  4  \acciaccatura  {  cs  16  [  ds  ]  }  e  16  f  gs  a  |  % m. 55   <  gs  c,  >  8  \acciaccatura  {  as  16  [  gs  ]  }  <  es  b  >  8  ~  <  es  b  >  16  ds  b  as  |  % m. 56   b  16  d  8  bf  32  f'  g  16  af  bf  c  |  % m. 57   <  df  df,  >  16  (  c  af  )  <  e'  e,  >  (  ds  b  )  <  g'  g,  >  (  ds  |  % m. 58  \time  3/4  <  gs  gs,  >  16  )  \noBeam  d,  16  f  gs  a  16  e  f  b  c  16  d,  (  f  gs  |  % m. 59  a  16  b  )  e,  (  f  gs  16  b  c  )  f,  (  gs  16  as  b  c  )  |  % m. 60   }  \new  Dynamics  =  "Dynamics_pf"  {  s  4  \p  \<  s  4  |  % m. 51   s  4  s  4  |  % m. 52   s  4  \mp  \>  s  4  |  % m. 53   s  4  s  4  \!  |  % m. 54   s  4  \p  s  4  |  % m. 55   s  1  *  2/4  |  % m. 56   s  4  \<  s  4  |  % m. 57   s  4  s  4  |  % m. 58   \override  DynamicText  .  extra-spacing-width  =  #  '  (  -0,75  .  0,75  )  s  16  \mf  s  16  \p  s  8  s  4  s  4  |  % m. 59   s  2.  |  % m. 60   }  \new  Staff  =  "LH"  \relative  c,  {  \clef  "bass"  \time  2/4  cs  4.  cs  8  |  % m. 51   cs  4.  d  8  |  % m. 52   f  4.  a  8  |  % m. 53   f  4.  d  8  |  % m. 54   cs  4.  cs  8  |  % m. 55   d  4  ds  |  % m. 56   gs  4.  bf,  8  |  % m. 57   f'  4  b,  |  % m. 58   \tid  3/4  d  4.  d  8  ~  d  4  |  % m. 59   ef  2  f  4  |  % m. 60   }  >>  } 

Motsvarande utgång

Rendered output

Mer komplex produktion

Lilypond kan också skapa omfattande anpassade utdata. Ett exempel är det korta utdraget av ett pianostycke från Karlheinz Stockhausen nedan.

Excerpt from “Klavierstück II” by Stockhausen as a rendering example

Samarbete med andra projekt

Första måtten av Adeste Fideles , genererad av LilyPond.

Flera grafiska partiturförfattare — som Rosegarden , NoteEdit , Canorus, Denemo och TuxGuitar — kan exportera filer direkt till LilyPond-format. Andra grafiska applikationer fungerar som gränssnitt för LilyPond, inklusive Frescobaldi och LilyPondTool-plugin för jEdit . Denemo integrerar PDF- utdata från LilyPond i sin skärm, vilket möjliggör vissa redigeringsoperationer på den slutliga typuppsättningen.

Mutopia Project , som distribuerar gratis innehåll noter, använder LilyPond för att sätta sin musik, liksom Musipedia, ett samarbetande musikuppslagsverk.

Emacs org-läge innehåller stöd för att bädda in LilyPond-poäng i dokument .

OOoLilyPond, ett LibreOffice -tillägg ger stöd för att anropa LilyPond för att bädda in poäng i dokument.

Integration i MediaWiki

Lilypond är tillgängligt i MediaWiki via Score-förlängningskoden . Detta omvandlar till exempel notationen

  <score  sound=  "1"  >  \relative c' { fdfadfed cis a cis eagfe }  </score> 

in i

\relative c' { f d f a d f e d cis a cis e a g f e }

Ovanstående utdrag är en förenklad version av Solfeggio i c-moll av CPE Bach . Mer komplexa noter, inklusive sångtexter, är också möjliga inom MediaWiki-wikis. Se Tidfördriv med gott sällskap för ett exempel på detta.

Integration i text med hjälp av lilypond-bok

Integrering av lilypond musikaliska element i olika dokumentformat (både TeX -baserade system som LaTeX och Texinfo , och även DocBook och HTML -sidor) stöds inbyggt genom följeprogrammet lilypond-book , utvecklat och underhållet av LilyPond-communityt. Detta tillåter användare att bädda in musikaliska element i texter, såsom musikvetenskap, sånghäften, arbetsblad för undervisning och skolprov.

Integrering i LaTeX

För integration i LaTeX dokumentförberedelsesystem har ly LuaT e X utvecklats som ett LuaL a T e X -paket för att bädda in musikaliska element i texter. Den innehåller funktioner för att matcha layout och utseende av de musikaliska elementen med det omgivande textdokumentet. Musikelement kan bestå av musiksymboler, sångtexter, gitarrackorddiagram, blyblad, musikutdrag, gitarrtabeller eller partitur på flera sidor.

Jämförelse med andra partiturförfattare

Finale och Sibelius är två egna partiturförfattare som ofta jämförs med LilyPond. Andrew Hawryluk, en LilyPond-användare, skrev en serie artiklar som jämförde utdatakvaliteten mellan Finale och LilyPond.

En annan poängskrivare med funktioner jämförbara med LilyPond är SCORE , men SCORE förlitar sig på manuell positionering mer än vad Lilypond gör.

Se även Jämförelse av poängskrivare .

Se även

externa länkar