Loading AI tools
Free software scorewriter From Wikipedia, the free encyclopedia
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.
![]() | |
![]() | |
Developer(s) | David Kastrup, Werner Lemberg, Han-Wen Nienhuys, Jan Nieuwenhuizen, Carl Sorensen, Janek Warchoł, et al.[1] |
---|---|
Initial release | 1 August 1997 |
Stable release | |
Preview release | |
Repository | |
Written in | C++, Scheme, Metafont, PostScript, Python[4] |
Operating system |
|
Size | 20–100 MB |
Standard(s) | EPS, MIDI, MusicXML, PDF, PS, SVG |
Available in | Catalan, Dutch, English, French, German, Hungarian, Italian, Japanese, Spanish |
Type | Music software, scorewriter |
License | GPL-3.0-or-later[6] |
Website | lilypond![]() |
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.
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]
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]
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]
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]
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]
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.
%
.[18]a'4
is an A, one octave up from the base A (A3 in scientific pitch notation), of quarter note length.[19]\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.[20](
and )
indicate the beginning and ending of a slur, respectively.[21] Another example is with manual beaming, where [
and ]
indicate the extent of the beam.[22]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.
\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\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
<e gs,>4 \acciaccatura { cs16[ ds] } <e gs,>4 | % m. 51
<ds gs,>4 \acciaccatura { e16[ ds] } <cs gs>4 | % m. 52
<cs gs>4 \acciaccatura { ds16[ cs] } <c g>4 | % m. 53
<cs gs>4 \acciaccatura { ds16[ e] } <es bs gs>4 | % m. 54
<e gs,>4 \acciaccatura { cs16[ ds] } e16 f gs a | % m. 55
<gs c,>8 \acciaccatura { as16[ gs] }
<es b>8 ~ <es b>16 ds b as | % m. 56
b16 d8 bf32 f' g16 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
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
}
>>
}
Lilypond can also create extensively customised output. An example is the short extract of a Karlheinz Stockhausen piano piece below.
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]
Lilypond is available in MediaWiki via the Score extension code. This, for example, transforms the notation
<score sound="1">\relative c' {
\key d \major
fis4 fis g a a g fis e d d e fis fis4. e8 e2 }</score>
into
The above is an excerpt from Ludwig van Beethoven’s 9th Symphony, commonly known as "Ode to Joy". More complex scores, including lyrics, are also possible within MediaWiki wikis.
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.
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.
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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.