World Library  
Flag as Inappropriate
Email this Article
 

LilyPond

LilyPond
Official LilyPond Logo
Official LilyPond logo
Original author(s) Han-Wen Nienhuys, Jan Nieuwenhuizen
Developer(s) LilyPond development team[1]
Initial release 1996 (1996)
Stable release 2.18.2 (March 17, 2014 (2014-03-17)[2])
Preview release 2.19.30 (October 18, 2015 (2015-10-18)[3])
Development status Active
Written in Scheme, C++, Metafont, PostScript, Python
Operating system Cross-platform
Size 20 MB, 100 MB including documentation
Available in Dutch, English, French, German, Hungarian, Italian, Japanese, Spanish
Type application programs, music engraving, music software, scorewriter
License GPL
Website .orglilypond
Standard(s) EPS, MIDI, MusicXML, PDF, PS, SVG

LilyPond is a computer program and file format for music engraving. One of LilyPond's major goals is to produce scores that are engraved with traditional layout rules, reflecting the era when scores were engraved by hand.

LilyPond is cross-platform, and is available for several common operating systems; released under the terms of the GNU General Public License, LilyPond is free software.

Contents

  • History 1
    • Version 1.0 1.1
    • Version 2.0 1.2
  • Design 2
  • Software features 3
  • Overview of input syntax 4
  • Example of LilyPond input file 5
    • Corresponding output 5.1
    • More complex output 5.2
  • Collaboration with other projects 6
    • Integration into MediaWiki 6.1
  • Comparison to other scorewriters 7
  • See also 8
  • References 9
  • External links 10

History

The LilyPond project was started in 1996 by Han-Wen Nienhuys and Jan Nieuwenhuizen, after they decided to abandon work on MPP (MusiXTeX PreProcessor), a project they began collaborating on in 1995.[4][5] Its name was inspired both by the Rosegarden project and an acquaintance of Nienhuys and Nieuwenhuizen named Suzanne, a name that means lily in Hebrew (שׁוּשָׁן).[6]

Version 1.0

LilyPond 1.0 was released on July 31, 1998, highlighting the development of a custom music font, Feta, and the complete separation of LilyPond from MusiXTeX.[7]

Version 2.0

LilyPond 2.0 was released on September 24, 2003, announcing a simplified syntax model and a much more complete set of facilities for notating various styles of music.[8]

Design

LilyPond is mostly written in C++ and uses Scheme (interpreted by GNU Guile) as its extension language, allowing for user customization.[9] It has a relatively large codebase; as of March 21, 2015, the source comprises over 600,000 lines of C++ and 120,000 lines of Scheme and Python code.[10]

Screenshot of LilyPond running on Linux

It uses a simple text notation for music input, which LilyPond interprets and processes in a series of stages.[11] In the final stage, music notation is output to PDF (via PostScript) or other graphical formats, such as SVG or PNG. LilyPond also has the facility to generate MIDI files that correspond to the music notation output.

LilyPond is a text-based application, so it does not contain its own graphical user interface to assist with score creation. It does, however, have a flexible input language that strives to be simple, easing the learning curve for new users. LilyPond adheres to the WYSIWYM paradigm; the workflow for typesetting music notation with LilyPond is similar to that of preparing documents with LaTeX.

LilyPond supports experimental musical notation. Its guitar facilities support alternative tunings, such as major-thirds tuning.[12]

Software features

LilyPond's primary goal is to produce output comparable to professionally engraved scores instead of output that looks mechanical and computer-generated. An essay from the LilyPond website, written by LilyPond developers, explains some typographical issues addressed by LilyPond:[13]

  • Optical font scaling: depending on the staff size, the design of the music font is slightly altered; this is a feature that Donald Knuth's Computer Modern font is known for. As a result, note heads become more rounded, and staff lines become thicker.
  • Optical spacing: stem directions are taken into account when spacing subsequent notes.
  • Special ledger line handling: ledger lines are shortened when accidentals are nearby, thus enhancing readability.
  • Proportional spacing: notes can be positioned in such a way that exactly reflects their duration. For example, with this setting, the space between consecutive quarter notes is four times greater than between consecutive sixteenth notes.[14]

Overview of input syntax

The native input language for LilyPond is comprehensive, consisting of many commands needed for expressing any sort of articulation, dynamic, meter, etc. The ability to embed Scheme code within a LilyPond source file permits arbitrary extensions to the input language and assists with algorithmic composition. Some general syntactic features are listed below.

  • Single-line comments begin with a percent sign %.[15]
  • Notes are represented in pitch-duration format: pitch is specified with Helmholtz pitch notation, and duration is specified with a numeral based system. The semantics of the pitch-duration format change depending on the active input mode; this is explained in depth in the LilyPond manual. For example, in absolute mode, a'4 is an A, one octave up from the base A (A3 in scientific pitch notation), of quarter note length.[16]
  • Commands usually begin with a backslash (such as \time, or \slurUp). The function of the command in question determines where the command is placed; for example, if the command is used to indicate a fixed dynamic on a specific note, it is placed after the note.[17]
  • Some common commands are represented symbolically to ease typing. One example is with slurs, where ( and ) indicate the beginning and ending of a slur, respectively.[18] Another example is with manual beaming, where [ and ] indicate the extent of the beam.[19]

LilyPond's interface with Pango requires the input character encoding to be UTF-8.[20] One benefit of this is that more than one language can be included in the same source file.

Example of LilyPond input file

\version "2.19.22"

\include "english.ly"

\header {
  title = \markup { "Excerpt from" \italic "fibonacci" }
  composer = "Patrick McCarty"
  %  copyright = \markup \fontsize #-5 
  %  {
  %    Copyright © 2009.
  %    Typeset with GNU LilyPond.
  %    Released into public domain by the composer.
  %  }
}

\paper {
  paper-height = 4.6\in
  paper-width = 8.5\in
  indent = #0
  system-count = #2
}

\score {
  \new PianoStaff = "pianostaff" <<
    \new Staff = "RH" \relative c' {
      \accidentalStyle Score.piano
      \clef "treble"
      \time 2/4
      \set Score.currentBarNumber = #51
      \tempo "Slow and steady" 4 = 60
      4 \acciaccatura { cs16[ ds] } 4 | % m. 51
      4 \acciaccatura { e16[ ds] } 4 | % m. 52
      4 \acciaccatura { ds16[ cs] } 4  | % m. 53
      4 \acciaccatura { ds16[ e] } 4 | % m. 54

      4 \acciaccatura { cs16[ ds] } e16 f gs a | % m. 55
      8 \acciaccatura { as16[ gs] }
      8 ~ 16 ds b as | % m. 56

      b16 d8 bf32 f' g16 af bf c | % m. 57
      16 ( c af )  ( ds b )  ( ds | % m. 58

      \time 3/4
      16 ) \noBeam d,16 f gs
      a16 e f b
      c16 d, ( f gs | % m. 59

      a16 b ) e, ( f
      gs16 b c ) f, (
      gs16 as b c ) | % m. 60
    }

    \new Dynamics = "Dynamics_pf" {
      s4 \p \< s4 | % m. 51
      s4 s4 | % m. 52
      s4 \mp \> s4 | % m. 53
      s4 s4 \! | % m. 54
      s4 \p s4 | % m. 55
      s1 * 2/4 | % m. 56
      s4 \< s4 | % m. 57
      s4 s4 | % m. 58
      \override DynamicText.extra-spacing-width = #'(-0.75 . 0.75)
      s16 \mf s16 \p s8 s4 s4 | % m. 59
      s2. | % m. 60
    }

    \new Staff = "LH" \relative c, {
      \clef "bass"
      \time 2/4
      cs4. cs8 | % m. 51
      cs4. d8 | % m. 52
      f4. a8 | % m. 53
      f4. d8 | % m. 54

      cs4. cs8 | % m. 55
      d4 ds | % m. 56
      gs4. bf,8 | % m. 57
      f'4 b, | % m. 58

      \time 3/4
      d4. d8 ~ d4 | % m. 59
      ef2 f4 | % m. 60
    }
  >>
}

Corresponding output

Rendered output

More complex output

Lilypond can also create extensively customised output. An example is the short extract of the Stockhausen piano piece below.

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

Collaboration with other projects

First measures of Adeste Fideles, generated by LilyPond.

Several graphical scorewriters—such as Rosegarden, NoteEdit, Canorus, Denemo, and TuxGuitar—can export files directly to LilyPond format. Other graphical applications serve as front ends to LilyPond, including Frescobaldi and the LilyPondTool plugin for jEdit. Denemo integrates the PDF output of LilyPond in its display, allowing some editing operations on the final typeset score.

The Mutopia Project, which distributes free content sheet music, uses LilyPond to typeset its music, as does Musipedia, a collaborative music encyclopedia.

External links

  1. ^ "Authors". LilyPond Development team. Retrieved 2015-03-21. 
  2. ^ Holmes, Phil (2014-03-17). "LilyPond 2.18.2 released" (Mailing list). info-lilypond. 
  3. ^ "LilyPond – Music notation for everyone". October 18, 2015. Retrieved October 18, 2015. 
  4. ^ "GNU LilyPond Learning Manual: Preface". Retrieved 2015-03-21. 
  5. ^ "MusiXTeX PreProcessor README". Retrieved 2010-03-31. 
  6. ^ Kroger, Pedro (2004). "Re: The origin of the name lilypond". lilypond-user mailing list. lists.gnu.org. Archived from the original on 8 Sep 2004. Retrieved 19 March 2014. 
  7. ^ Nienhuys, Han-Wen (1998-07-31). "GNU LilyPond 1.0 released". gnu-music-discuss (Mailing list). Retrieved 2010-02-16. 
  8. ^ Nienhuys, Han-Wen (2003-09-24). "LilyPond 2.0 – make beautiful music prints". info-lilypond (Mailing list). Retrieved 2010-02-16. 
  9. ^ "LilyPond programming languages". Retrieved 2015-03-21. 
  10. ^ "GNU LilyPond Music Typesetter – Code Analysis". Retrieved 2015-03-21. 
  11. ^ "Overview of LilyPond architecture". Retrieved 2015-03-21. 
  12. ^  
  13. ^ Nienhuys, Han-Wen; Nieuwenhuizen, Jan. "Obsessed with putting ink on paper". Retrieved 2010-02-15. 
  14. ^ "Proportional notation". Retrieved 2015-03-21. 
  15. ^ "LilyPond Learning Manual: 1.2.2 Working on input files". Retrieved 2015-03-21. 
  16. ^ "LilyPond Notation Reference: 1.1.1 Writing pitches". Retrieved 2015-03-21. 
  17. ^ "LilyPond Notation Reference: 1.3.1 Expressive marks attached to notes". Retrieved 2015-03-21. 
  18. ^ "LilyPond Notation Reference: 1.3.2 Expressive marks as curves". Retrieved 2015-03-21. 
  19. ^ "LilyPond Notation Reference: 1.2.4 Beams". Retrieved 2015-03-21. 
  20. ^ "LilyPond Notation Reference: 3.3.3 Text encoding". Retrieved 2015-03-21. 
  21. ^ github.com
  22. ^ Hawryluk, Andrew. "Finale and LilyPond". Retrieved 2010-02-15. 

References

See also

Another scorewriter with comparable features to LilyPond is SCORE, but SCORE relies on manual positioning more than Lilypond does.

Finale and Sibelius are two proprietary scorewriters often compared to LilyPond. Andrew Hawryluk, a LilyPond user, wrote a series of articles comparing output quality between Finale and LilyPond.[22]

Comparison to other scorewriters

The above excerpt is a simplified version of Solfeggio in C Minor by C.P.E. Bach. More complex scores, including lyrics, are also possible within MediaWikis. See Pastime with Good Company for an example.

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

into

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

Lilypond is available in MediaWiki via the Score extension code. This, for example, transforms the notation

Integration into MediaWiki

[21]

This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.