LilyPond

Last updated

LilyPond
Developer(s) David Kastrup, Werner Lemberg, Han-Wen Nienhuys, Jan Nieuwenhuizen, Carl Sorensen, Janek Warchoł, et al. [1]
Initial release1 August 1997;26 years ago (1 August 1997)
Stable release
2.24.3 [2]   OOjs UI icon edit-ltr-progressive.svg / 19 November 2023
Preview release
2.25.10 [3]   OOjs UI icon edit-ltr-progressive.svg / 11 November 2023
Repository
Written in C++, Scheme, Metafont, PostScript, Python [4]
Operating system
Size 20–100 MB
Standard(s) EPS, MIDI, MusicXML, PDF, PS, SVG
Available inCatalan, Dutch, English, French, German, Hungarian, Italian, Japanese, Spanish
Type Music software, scorewriter
License GPL-3.0-or-later [6]
Website lilypond.org   OOjs UI icon edit-ltr-progressive.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.

Contents

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 and part of the GNU Project.

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. [7] [8] 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 ( שׁוֹשַׁנָּה ). [9]

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. [10]

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. [11]

Design

Screenshot of LilyPond running on Linux PL-lilypond-2.10.33-screenshot.png
Screenshot of LilyPond running on Linux

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

It uses a simple text notation for music input, which LilyPond interprets and processes in a series of stages. [14] In the final stage, music notation is output to PDF (via PostScript) or other graphical formats, such as SVG or PNG. LilyPond can also 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. (However, a text-editor based "LilyPad" GUI for Windows and MacOS is included by default on these systems.) 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. [15]

Software features

Beethoven's Symphony No. 5 music sheet printed from a digitally engraved PDF file produced by LilyPond; released by the Mutopia Project BeethovenSymponyNo5.JPG
Beethoven's Symphony No. 5 music sheet printed from a digitally engraved PDF file produced by LilyPond; released by the Mutopia Project

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: [16]

Overview of input syntax

The native input language for LilyPond is comprehensive, and consists of many commands needed for expressing any sort of articulation, dynamic, meter, etc. It is similar to that of TeX. 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.

LilyPond's interface with Pango requires the input character encoding to be UTF-8. [23] 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.22.2"\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\inpaper-width=8.5\inindent=#0system-count=#2}\score{\newPianoStaff="pianostaff"<<\newStaff="RH"\relativec'{\accidentalStyleScore.piano \clef"treble"\time2/4\setScore.currentBarNumber=#51\tempo"Slow and steady"4=60<egs,>4\acciaccatura{cs16[ds]}<egs,>4|% m. 51<dsgs,>4\acciaccatura{e16[ds]}<csgs>4|% m. 52<csgs>4\acciaccatura{ds16[cs]}<cg>4|% m. 53<csgs>4\acciaccatura{ds16[e]}<esbsgs>4|% m. 54<egs,>4\acciaccatura{cs16[ds]}e16fgsa|% m. 55<gsc,>8\acciaccatura{as16[gs]}<esb>8~<esb>16dsbas|% m. 56b16d8bf32f'g16afbfc|% m. 57<dfdf,>16(caf)<e'e,>(dsb)<g'g,>(ds|% m. 58\time3/4<gsgs,>16)\noBeamd,16fgsa16efbc16d,(fgs|% m. 59a16b)e,(fgs16bc)f,(gs16asbc)|% m. 60}\newDynamics="Dynamics_pf"{s4\p\<s4|% m. 51s4s4|% m. 52s4\mp\>s4|% m. 53s4s4\!|% m. 54s4\ps4|% m. 55s1*2/4|% m. 56s4\<s4|% m. 57s4s4|% m. 58\overrideDynamicText.extra-spacing-width=#'(-0.75.0.75)s16\mfs16\ps8s4s4|% m. 59s2.|% m. 60}\newStaff="LH"\relativec,{\clef"bass"\time2/4cs4.cs8|% m. 51cs4.d8|% m. 52f4.a8|% m. 53f4.d8|% m. 54cs4.cs8|% m. 55d4ds|% m. 56gs4.bf,8|% m. 57f'4b,|% m. 58\time3/4d4.d8~d4|% m. 59ef2f4|% m. 60}>>}

Corresponding output

Fibonacci composition.svg

More complex output

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

Excerpt from Stockhausen, Klavierstuck II.svg

Collaboration with other projects

First measures of Adeste Fideles, generated by LilyPond. AdesteFidelesLilyPhil.png
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.

Emacs' org-mode contains support for embedding LilyPond scores into documents. [24]

OOoLilyPond, a LibreOffice extension provides support for calling LilyPond to embed scores into documents. [25]

Integration into MediaWiki

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

<scoresound="1">\relativec'{fdfadfedcisaciseagfe}</score>

into

LilyPond

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 MediaWiki wikis. See Pastime with Good Company for an example of this.

Integration into text using lilypond-book

Integration of LilyPond musical elements into various document formats (both TeX-based systems such as LaTeX and Texinfo, and also DocBook and HTML pages) is natively supported through the companion program lilypond-book, developed and maintained by the LilyPond community. [26] This allows users to embed musical elements within texts, such as musicology, song booklets, work sheets for teaching, and school examinations.

Integration into LaTeX

For integration into the LaTeX document preparation system, lyLuaTeX has been developed as a LuaLaTeX package to embed musical elements within texts. It includes features for matching layout and appearance of the musical elements with the surrounding text document. [27] Music elements may consist of music symbols, song lyrics, guitar chords diagrams, lead sheets, music excerpts, guitar tablatures, or multi-page scores.

Comparison to other scorewriters

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. [28]

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

See also Comparison of scorewriters.

See also

Related Research Articles

A scorewriter, or music notation program is software for creating, editing and printing sheet music. A scorewriter is to music notation what a word processor is to text, in that they typically provide flexible editing and automatic layout, and produce high-quality printed results.

<span class="mw-page-title-main">Rosegarden</span> Digital audio workstation program for BSD and Linux

Rosegarden is a free software digital audio workstation program developed for Linux with ALSA, JACK and Qt4. It acts as an audio and MIDI sequencer, scorewriter and musical composition and editing tool. It is intended to be a free and alternative to such applications as Cubase.

dc is a cross-platform reverse-Polish calculator which supports arbitrary-precision arithmetic. Written by Lorinda Cherry and Robert Morris at Bell Labs, it is one of the oldest Unix utilities, preceding even the invention of the C programming language. Like other utilities of that vintage, it has a powerful set of features but terse syntax. Traditionally, the bc calculator program was implemented on top of dc.

<span class="mw-page-title-main">Music engraving</span> Process of drawing music notation at high quality for reproduction

Music engraving is the art of drawing music notation at high quality for the purpose of mechanical reproduction. The term music copying is almost equivalent—though music engraving implies a higher degree of skill and quality, usually for publication. The name of the process originates in plate engraving, a widely used technique dating from the late sixteenth century. The term engraving is now used to refer to any high-quality method of drawing music notation, particularly on a computer or by hand.

The numbered musical notation is a cipher notation system used in Mainland China, Taiwan, Hong Kong, and to some extent in Japan, Indonesia, Malaysia, Australia, Ireland, the United Kingdom, the United States and English-speaking Canada. It dates back to the system designed by Pierre Galin, known as Galin-Paris-Chevé system. It is also known as Ziffernsystem, meaning "number system" or "cipher system" in German.

<span class="mw-page-title-main">MusiCAD</span> Scorewriter

MusiCAD is a scorewriter program originally designed for folk music featuring irregular meter and automatically generated accompaniment voices (bass/chords) from chord symbols and specified time signature. Created lead sheets are audibly verifiable. One of its design goals was to be as predictable as possible: 'what-you-write-is-what-you'll-hear'. The resulting music engraving is the result of the notes used and an applied set of rules that determine how notes should be drawn. After changing the layout parameters or after transpose the (new) rules are applied, perhaps changing page layout completely.

<span class="mw-page-title-main">Denemo</span> Scorewriter and music sequencer

Denemo is a scorewriter and music sequencer. Denemo has been under development since 1999.

NoteEdit is a defunct music scorewriter for Linux and other Unix-like computer operating systems. Its official successor is Canorus.

Inverse search is a feature of some non-interactive typesetting programs, such as LaTeX and GNU LilyPond. These programs read an abstract, textual, definition of a document as input, and convert this into a graphical format such as DVI or PDF. In a windowing system, this typically means that the source code is entered in one editor window, and the resulting output is viewed in a different output window. Inverse search means that a graphical object in the output window works as a hyperlink, which brings you back to the line and column in the editor, where the clicked object was defined. The inverse search feature is particularly useful during proofreading.

ABC notation is a shorthand form of musical notation for computers. In basic form it uses the letter notation with ag, AG, and z, to represent the corresponding notes and rests, with other elements used to place added value on these – sharp, flat, raised or lowered octave, the note length, key, and ornamentation. This form of notation began from a combination of Helmholtz pitch notation and using ASCII characters to imitate standard musical notation that could facilitate the sharing of music online, and also added a new and simple language for software developers, not unlike other notations designed for ease, such as tablature and solfège.

<span class="mw-page-title-main">MusiXTeX</span> Open source scorewriter

MusiXTeX is a suite of open source music engraving macros and fonts that allow music typesetting in TeX, released under the GPL-2.0-or-later license.

GUIDO Music Notation is a computer music notation format designed to logically represent all aspects of music in a manner that is both computer-readable and easily readable by human beings. It was named after Guido of Arezzo, who pioneered today's conventional musical notation 1,000 years ago.

This is a comparison of music notation programs.

Director Musices is computer software produced by the Department of Speech, Music and Hearing at KTH Royal Institute of Technology. It aims to give an expressive, human-like performance to a musical score by varying the volume and timing of the notes. Director Musices is written in CMU Common Lisp and distributed as free software. It processes MIDI files.

<span class="mw-page-title-main">Two hundred fifty-sixth note</span> Musical note duration

In music, a two hundred fifty-sixth note, or occasionally demisemihemidemisemiquaver (British), is a note played for 1256 of the duration of a whole note. It lasts half as long as a hundred twenty-eighth note and takes up one quarter of the length of a sixty-fourth note. In musical notation it has a total of six flags or beams. Since human pitch perception begins at 20 Hz (1200/minute), then a 256th-note tremolo becomes a single pitch in perception at quarter note ≈ 18.75 bpm.

<span class="mw-page-title-main">Gregorio (software)</span> Open source scorewriter for Gregorian chant

Gregorio is a free and open-source scorewriter computer program especially for Gregorian chant in square notation. Gregorio was adopted by many abbeys and large projects.

References

  1. "Authors". LilyPond Development team. Retrieved March 21, 2015.
  2. Jonas Hahnfeld (November 19, 2023). "LilyPond 2.24.3 released!".
  3. Jonas Hahnfeld (November 11, 2023). "LilyPond 2.25.10".
  4. "Source tarball". lilypond.org. Retrieved March 4, 2016.
  5. "Downloads for LilyPond 2.18.2". lilypond.org. Retrieved March 4, 2016.
  6. "LICENSE - lilypond.git - GNU LilyPond". git.savannah.gnu.org.
  7. "GNU LilyPond Learning Manual: Preface" . Retrieved December 23, 2017.
  8. "MusiXTeX PreProcessor README". GitHub . Retrieved March 31, 2010.
  9. Kroger, Pedro (2004). "Re: The origin of the name lilypond". lilypond-user mailing list. lists.gnu.org. Retrieved March 19, 2014.
  10. Nienhuys, Han-Wen (July 31, 1998). "GNU LilyPond 1.0 released". gnu-music-discuss (Mailing list). Retrieved February 16, 2010.
  11. Nienhuys, Han-Wen (September 24, 2003). "LilyPond 2.0 – make beautiful music prints". info-lilypond (Mailing list). Retrieved February 16, 2010.
  12. "LilyPond programming languages" . Retrieved March 21, 2015.
  13. "GNU LilyPond Music Typesetter – Code Analysis" . Retrieved July 25, 2017.
  14. "Overview of LilyPond architecture" . Retrieved March 21, 2015.
  15. Griewank, Andreas (January 4, 2010). "Tuning guitars and reading music in major thirds". Matheon Preprints. Berlin, Germany: DFG research center "MATHEON, Mathematics for key technologies". 695. Retrieved January 14, 2020.
  16. "LilyPond - Essay on automated music engraving" . Retrieved December 23, 2017.
  17. "Proportional notation" . Retrieved March 21, 2015.
  18. "LilyPond Learning Manual: 1.2.2 Working on input files" . Retrieved March 21, 2015.
  19. "LilyPond Notation Reference: 1.1.1 Writing pitches" . Retrieved March 21, 2015.
  20. "LilyPond Notation Reference: 1.3.1 Expressive marks attached to notes" . Retrieved March 21, 2015.
  21. "LilyPond Notation Reference: 1.3.2 Expressive marks as curves" . Retrieved March 21, 2015.
  22. "LilyPond Notation Reference: 1.2.4 Beams" . Retrieved March 21, 2015.
  23. "LilyPond Notation Reference: 3.3.3 Text encoding" . Retrieved March 21, 2015.
  24. "org-babel lilypond language module". December 17, 2018. Retrieved November 30, 2019 via GitHub.
  25. Klaus Blum (April 18, 2017). "OOoLilyPond: Creating musical snippets in LibreOffice documents" . Retrieved October 12, 2017.[ permanent dead link ]
  26. LilyPond community (1996–2020). "LilyPond Usage manual".
  27. Peron, Fr. Jacques; Liska, Urs; Springuel, Br. Samuel (May 27, 2019). "LyLuaTeX 1.0f" (PDF). Comprehensive TeX Archive Network (CTAN). Retrieved April 16, 2020.
  28. Hawryluk, Andrew. "Finale and LilyPond" . Retrieved February 15, 2010.