Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
LilyPond
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Free software scorewriter}} {{Other uses|Lily Pond (disambiguation)}} {{Use mdy dates|date=November 2019}} {{Infobox software | name = LilyPond | logo = LilyPond-logo-with-music.png | screenshot = Fibonacci composition.svg | caption = <!--Current developers get listed here--> | developer = David Kastrup, Werner Lemberg, Han-Wen Nienhuys, Jan Nieuwenhuizen, Carl Sorensen, Janek Warchoł, {{no wrap|et al.}}<ref name="devteam">{{cite web |url=http://lilypond.org/authors.html |title=Authors |publisher=LilyPond Development team |access-date=March 21, 2015}}</ref> | released = {{start date and age|{{wikidata|property|P571}}}} | latest release version = {{wikidata|property|preferred|references|edit|Q195946|P348|P548=Q2804309}} | latest release date = {{wikidata|qualifier|preferred|single|Q195946|P348|P548=Q2804309|P577}} | latest preview version = {{wikidata|property|preferred|references|edit|Q195946|P348|P548=Q3295609}} | latest preview date = {{wikidata|qualifier|preferred|single|Q195946|P348|P548=Q3295609|P577}} | programming language = [[C++]], [[Scheme (programming language)|Scheme]], [[Metafont]], [[PostScript]], [[Python (programming language)|Python]]<ref>{{cite web|title=Source tarball|url=http://lilypond.org/source.html|website=lilypond.org|access-date=March 4, 2016}}</ref> | operating system = {{Plainlist| *[[Windows 2000]] and later *[[Mac OS X 10.4]] and later *[[Linux]] *[[FreeBSD]]<ref>{{cite web|title=Downloads for LilyPond 2.18.2|url=http://lilypond.org/download.html|website=lilypond.org|access-date=March 4, 2016}}</ref>}} | standard = [[Encapsulated PostScript|EPS]], [[Musical Instrument Digital Interface|MIDI]], [[MusicXML]], [[Portable Document Format|PDF]], [[PostScript|PS]], [[Scalable Vector Graphics|SVG]] | language = Catalan, Dutch, English, French, German, Hungarian, Italian, Japanese, Spanish | genre = [[Music software]], [[scorewriter]] | license = [[GPL-3.0-or-later]]<ref>{{Cite web|url=http://git.savannah.gnu.org/cgit/lilypond.git/tree/LICENSE|title=LICENSE - lilypond.git - GNU LilyPond|website=git.savannah.gnu.org}}</ref> | website = }} '''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 system]]s; 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.<ref>{{cite web |url=http://lilypond.org/doc/v2.12/Documentation/user/lilypond-learning/Preface |title=GNU LilyPond Learning Manual: Preface |access-date=December 23, 2017 }}</ref><ref>{{cite web |url=https://github.com/janneke/mpp |title=MusiXTeX PreProcessor README |website=[[GitHub]] |access-date=March 31, 2010 }}</ref> 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 ({{lang|he|[[wikt:שושנה|שׁוֹשַׁנָּה]]}}).<ref>{{cite web|last=Kroger|first=Pedro|title=Re: The origin of the name lilypond|url=http://lists.gnu.org/archive/html/lilypond-user/2004-09/msg00095.html|work=lilypond-user mailing list|publisher=lists.gnu.org|access-date=March 19, 2014|year=2004}}</ref> === 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.<ref>{{cite mailing list |url=http://www.mail-archive.com/gnu-music-discuss@gnu.org/msg00313.html |title=GNU LilyPond 1.0 released |date=July 31, 1998 |access-date=February 16, 2010 |mailing-list=gnu-music-discuss |last=Nienhuys |first=Han-Wen }}</ref> === 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.<ref>{{cite mailing list |url=http://lists.gnu.org/archive/html/info-lilypond/2003-09/msg00008.html |title=LilyPond 2.0 – make beautiful music prints |date=September 24, 2003 |access-date=February 16, 2010 |mailing-list=info-lilypond |last=Nienhuys |first=Han-Wen }}</ref> ==Design== [[File:PL-lilypond-2.10.33-screenshot.png|right|thumb|Screenshot of LilyPond running on Linux]] LilyPond is mostly written in [[C++]] and uses [[Scheme (programming language)|Scheme]] (interpreted by [[GNU Guile]]) as its extension language, allowing for user customization.<ref>{{cite web |url= http://lilypond.org/doc/v2.18/Documentation/contributor/lilypond-programming-languages |title=LilyPond programming languages |access-date=March 21, 2015 }}</ref> 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 (programming language)|Python code]].<ref>{{cite web |url=https://www.openhub.net/p/lilypond/analyses/latest/languages_summary|title=GNU LilyPond Music Typesetter – Code Analysis |access-date=July 25, 2017 }}</ref> It uses a simple text notation for music input, which LilyPond interprets and processes in a series of stages.<ref>{{cite web |url=http://lilypond.org/doc/v2.18/Documentation/contributor/overview-of-lilypond-architecture |title=Overview of LilyPond architecture |access-date=March 21, 2015 }}</ref> In the final stage, [[Musical notation|music notation]] is output to [[PDF]] (via [[PostScript]]) or other graphical formats, such as [[Scalable Vector Graphics|SVG]] or [[Portable Network Graphics|PNG]]. LilyPond can also generate [[Musical Instrument Digital Interface|MIDI]] files that correspond to the music notation output. LilyPond is a [[Console application|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 [[guitar tunings#Alternative|alternative tunings]], such as [[major-thirds tuning]].<ref>{{cite journal |last=Griewank |first=Andreas |title=Tuning guitars and reading music in major thirds |date=January 4, 2010 |url=http://opus4.kobv.de/opus4-matheon/frontdoor/index/index/docId/675 |journal=Matheon Preprints |volume=695 |publisher=DFG research center "MATHEON, Mathematics for key technologies" |location=Berlin, Germany |access-date=January 14, 2020}}</ref> ==Software features== [[File:BeethovenSymponyNo5.JPG|thumb|[[Ludwig van Beethoven|Beethoven]]'s [[Symphony No. 5 (Beethoven)|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:<ref>{{cite web|title=LilyPond - Essay on automated music engraving|url=http://lilypond.org/doc/v2.18/Documentation/essay/|access-date=December 23, 2017}}</ref> * '''Optical font scaling''': depending on the staff size, the design of the music font is slightly altered; this is a feature that [[Donald Knuth|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 line]]s 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 note]]s is four times greater than between consecutive [[sixteenth note]]s.<ref>{{cite web |url=http://www.lilypond.org/doc/v2.18/Documentation/notation/proportional-notation |title=Proportional notation |access-date=March 21, 2015 }}</ref> ==Overview of input syntax== The native input language for LilyPond is comprehensive, and consists of many [[Command (computing)|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 code|source file]] permits arbitrary extensions to the input language and assists with [[algorithmic composition]]. Some general syntactic features are listed below. * Single-line [[comment (computer programming)|comments]] begin with a percent sign <code>%</code>.<ref>{{cite web |url=http://lilypond.org/doc/v2.18/Documentation/learning/working-on-input-files |title=LilyPond Learning Manual: 1.2.2 Working on input files |access-date=March 21, 2015 }}</ref> * [[Musical note|Note]]s are represented in ''pitch-duration'' format: ''pitch'' is specified with [[Helmholtz pitch notation]], and ''duration'' is specified with a [[Numeral system|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, <code>a'4</code> is an A, one octave up from the base A (A3 in [[scientific pitch notation]]), of quarter note length.<ref>{{cite web |url=http://lilypond.org/doc/v2.18/Documentation/notation/writing-pitches |title=LilyPond Notation Reference: 1.1.1 Writing pitches |access-date=March 21, 2015 }}</ref> * Commands usually begin with a backslash (such as <code>\time</code>, or <code>\slurUp</code>). The function of the command in question determines where the command is placed; for example, if the command is used to indicate a fixed [[Dynamics (music)|dynamic]] on a specific note, it is placed ''after'' the note.<ref>{{cite web |url=http://lilypond.org/doc/v2.18/Documentation/notation/expressive-marks-attached-to-notes#dynamics |title=LilyPond Notation Reference: 1.3.1 Expressive marks attached to notes |access-date=March 21, 2015 }}</ref> * Some common commands are represented symbolically to ease typing. One example is with [[Slur (music)|slurs]], where <code>(</code> and <code>)</code> indicate the beginning and ending of a slur, respectively.<ref>{{cite web |url=http://lilypond.org/doc/v2.18/Documentation/notation/expressive-marks-as-curves#slurs |title=LilyPond Notation Reference: 1.3.2 Expressive marks as curves |access-date=March 21, 2015 }}</ref> Another example is with manual [[Beam (music)|beaming]], where <code>[</code> and <code>]</code> indicate the extent of the beam.<ref>{{cite web |url=http://lilypond.org/doc/v2.18/Documentation/notation/beams#manual-beams |title=LilyPond Notation Reference: 1.2.4 Beams |access-date=March 21, 2015 }}</ref> LilyPond's interface with [[Pango]] requires the input [[character encoding]] to be [[UTF-8]].<ref>{{cite web |url=http://www.lilypond.org/doc/v2.18/Documentation/notation/special-characters#text-encoding |title=LilyPond Notation Reference: 3.3.3 Text encoding |access-date=March 21, 2015 }}</ref> One benefit of this is that more than one language can be included in the same source file. ==Example of LilyPond input file== <syntaxhighlight lang="LilyPond"> \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 } >> } </syntaxhighlight> ===Corresponding output=== [[Image:Fibonacci composition.svg|Rendered output]] ===More complex output=== Lilypond can also create extensively customised output. An example is the short extract of a [[Karlheinz Stockhausen]] piano piece below. [[Image:Excerpt from Stockhausen, Klavierstück II.svg|700px|Excerpt from “Klavierstück II” by Stockhausen as a rendering example]] ==Collaboration with other projects== [[File:AdesteFidelesLilyPhil.png|thumb|300px|First [[bar (music)|measure]]s of ''[[Adeste Fideles]]'', generated by LilyPond.]] Several graphical [[scorewriter]]s—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 (software)|Frescobaldi]] and the LilyPondTool plugin for [[jEdit]]. [[Denemo]] integrates the [[Portable Document Format|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.<ref>{{Cite web|url=https://github.com/mjago/ob-lilypond|title=org-babel lilypond language module.|date=December 17, 2018|via=GitHub|access-date=November 30, 2019}}</ref> OOoLilyPond, a [[LibreOffice]] extension provides support for calling LilyPond to embed scores into documents.<ref>{{cite web |url=http://lilypondblog.org/2017/04/ooolilypond-creating-musical-snippets-in-libreoffice-documents/ |archive-url=https://web.archive.org/web/20170708211321/http://lilypondblog.org/2017/04/ooolilypond-creating-musical-snippets-in-libreoffice-documents/ |url-status=dead |archive-date=July 8, 2017 |title=OOoLilyPond: Creating musical snippets in LibreOffice documents |author=Klaus Blum |date=April 18, 2017 |access-date=October 12, 2017 }}</ref> === Integration into MediaWiki === Lilypond is available in [[MediaWiki]] via the {{self-reference link|:mw:Extension:Score|Score extension}} code. This, for example, transforms the notation <syntaxhighlight lang="xml"><score sound="1">\relative c' { \key d \major fis4 fis g a a g fis e d d e fis fis4. e8 e2 }</score></syntaxhighlight> into <score sound="1">\relative c' { \key d \major fis4 fis g a a g fis e d d e fis fis4. e8 e2 }</score> 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. {{self-reference inline|See [[Pastime with Good Company]] for an example of this.}} ===Integration into text using <var>lilypond-book</var>=== 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 <var>lilypond-book</var>, developed and maintained by the LilyPond community.<ref>{{Cite web | url = http://lilypond.org/doc/latest/Documentation/usage/lilypond_002dbook | title = LilyPond Usage manual | author = LilyPond community | year = 1996–2020 }}</ref> 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.<ref>{{cite web |url=http://muug.ca/mirror/ctan/support/lyluatex/lyluatex.pdf |title=LyLuaTeX 1.0f |last1=Peron |first1=Fr. Jacques |last2=Liska |first2=Urs |last3=Springuel |first3=Br. Samuel |date=May 27, 2019 |website=Comprehensive TeX Archive Network (CTAN) |access-date=April 16, 2020 }}</ref> 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 (software)|Finale]] and [[Sibelius (software)|Sibelius]] are two [[proprietary software|proprietary]] scorewriters often compared to LilyPond. Andrew Hawryluk, a LilyPond user, wrote a series of articles comparing output quality between Finale and LilyPond.<ref>{{cite web |last=Hawryluk |first=Andrew |url=http://www.musicbyandrew.ca/finale-lilypond-1.html |title=Finale and LilyPond |access-date=February 15, 2010 }}</ref> Another scorewriter with comparable features to LilyPond is [[SCORE (software)|SCORE]], but SCORE relies on manual positioning more than Lilypond does. See also [[Comparison of scorewriters]]. ==See also== {{Portal|Free and open-source software}}{{Div col}} * [[ABC notation]] * [[Common Music Notation]] * [[Denemo]] * [[Frescobaldi (software)|Frescobaldi]] * [[GUIDO music notation]] * [[Impro-Visor]] * [[MuseScore]] * [[MusicXML]] * [[MusiXTeX]] * [[NoteEdit]] * [[Philip's Music Scribe]] * [[Rosegarden]] * [[SCORE (software)]] * [[List of music software]] * [[List of scorewriters]] {{Div col end}} ==References== {{Reflist|colwidth=30em}} ==External links== * {{Official website}} * {{cite web |url=https://ctan.org/pkg/lyluatex |title=lyluatex – Commands to include lilypond scores within a (Lua)LATEX document |author=<!--Not stated--> |access-date=April 16, 2020 }} {{GNU}} {{Scorewriters}} {{Document markup languages}} <!--Categories--> [[Category:LilyPond| ]] [[Category:1996 software]] [[Category:Cross-platform software]] [[Category:Free music software]] [[Category:Free software programmed in C++]] [[Category:Free typesetting software]] [[Category:GNU Project software]] [[Category:Music notation file formats]] [[Category:Scorewriters]] [[Category:Scorewriters for Linux]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite journal
(
edit
)
Template:Cite mailing list
(
edit
)
Template:Cite web
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:Document markup languages
(
edit
)
Template:GNU
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Lang
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Other uses
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Scorewriters
(
edit
)
Template:Self-reference inline
(
edit
)
Template:Self-reference link
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Use mdy dates
(
edit
)