LilyPond

LilyPond — Free Download. Music engraving through text-based notation
LilyPond is a computer program for music engraving that produces high-quality sheet music from plain text input. Users write musical content using a markup language describing pitches, rhythms, articulations, and layout rules. The software processes the text file and generates graphical output in PDF, SVG, PNG, and MIDI formats. LilyPond follows the WYSIWYM paradigm (What You See Is What You Mean), similar to LaTeX, applying traditional engraving rules from the era when scores were engraved by hand.
5.0(1 ratings)

Download LilyPond (Official links)
File size: 37.2 MB
The latest version of LilyPond is: 2.24.4
Operating system: Windows, Linux, MacOS
Languages: English
Price: $0.00 USD

  • High-fidelity typographic engraving. LilyPond implements spacing algorithms, staff distribution, stem directions, beaming patterns, and accidental placement following classical engraving manuals (such as Gould or Read). This prevents collisions between musical symbols and produces scores visually identical to those produced by master engravers of the twentieth century.
  • Relative and absolute pitch input syntax. The input language accepts absolute pitches (c' d' e') or relative mode (c d e) to reduce the number of quotes. Durations (c4, c8, c2), dots, rests (r4), and ghost notes are fully supported. This syntactic flexibility accelerates writing of complex musical passages.
  • MIDI generation synchronized with the score. From the same .ly file, LilyPond creates a MIDI file that reproduces the written content including dynamics, tempo changes, and articulations. This serves for aural verification or import into sequencers, maintaining coherence between printed output and sound playback.
  • Layout and paper configuration blocks. The \layout block modifies internal typographic aspects: inter-staff spacing, line thicknesses, note head sizes, and placement of expression marks. The \paper block defines page margins, paper dimensions, measure numbers, headers, and page numbering, providing complete editorial customization.
  • Multiple simultaneous voices and contexts. LilyPond handles several voices within a single staff using << \\ >> or explicit \new Voice contexts. It supports up to four voices per staff with automatic stem direction and slur positioning. Contexts such as \Staff, \ChoirStaff, \PianoStaff, and \GrandStaff organize complex ensembles like choir, piano, or orchestra.
  • Percussion notation and tablatures. The \drums mode assigns specific symbols to each percussion element (kick drum, snare, hi‑hat). For fretted string instruments, LilyPond produces tablature (\tabstaff) showing fret numbers and string indicators alongside standard notation. Alternate tunings and chord diagrams are supported.
  • Expression marks, dynamics, and articulations. The program includes commands for \f (forte), \p (piano), crescendo (\< \!), hairpins, staccato (->), accent (->), slurs (() and ()), fingerings, phrasing slurs, fermatas, breath marks, and glissandi. Each element is placed according to historical engraving rules without overlapping.
  • Variables and automatic repeats. Users define variables (melody = { c d e f }) and reuse them throughout the file. LilyPond processes simple repeats (\repeat volta 2), alternative endings (\alternative), and measure repeats (percent style). The \unfoldReplicates command expands repetitive patterns without manual rewriting.
  • Lyrics (syllables) for vocal music. Using \addlyrics syntax or a \lyricsto context, syllables are associated with notes. LilyPond automatically aligns text below note heads, handles hyphens between syllables, extenders for long notes, and word skips. Multiple stanzas and multilingual typography are supported.
  • Export to SVG, PNG, and PostScript with embedded metadata. In addition to PDF, LilyPond produces vector SVG for graphic editing, PNG for quick previews, and PostScript for legacy workflows. Metadata (title, composer, opus number) is embedded into final files, facilitating indexing in digital libraries.
  • Manual line breaks and page breaks. The user forces line breaks (\break), page breaks (\pageBreak), keeps certain measures together (\noBreak), or sets optimal break points. LilyPond applies an automatic spacing algorithm that can be overridden with \penalty and \linebreak, giving absolute editorial control.
  • Ancient and mensural notation support. LilyPond includes special contexts such as \MensuralStaff, \VaticanaStaff, and \GregorianTranscriptionStaff for Renaissance, medieval, and Gregorian chant music. It produces square note heads, mensural ligatures, custodes, and white or black notation signs, used by musicologists and historical score editors.
  • LilyPond snippets and example library. The official documentation contains hundreds of self-contained snippets demonstrating one specific feature: chords with complex key signatures, guitar diagrams, grace notes, hidden voices, automatic transposition, and harmony schemes. Users copy and modify these blocks to solve concrete problems.
  • Integration with external editors and automation. As a command-line application, LilyPond can be invoked from scripts, Makefiles, or CI/CD environments. Editor support exists for Emacs (lilypond-mode), Vim, VS Code, and Frescobaldi (dedicated editor). This integration allows batch processing of entire score collections.
  • Time signatures, anacrusis, and polyrhythm. LilyPond handles irregular time signatures (\time 7/8), anacrusis (\partial 4), time changes within the work, and simultaneous polyrhythm (different denominators on different staves). Barlines are automatically synchronized and can be customized with \set Timing.measureLength.

LilyPond was created by Han-Wen Nienhuys and Jan Nieuwenhuizen in 1996, originating from their frustration with the poor typographic quality of existing programs. The first public version (1.0) appeared in 1997. The program core is written in C++ to ensure performance when processing large scores. The input syntax and definition file system are implemented in Scheme (GNU Guile), allowing extension of the engraver through custom functions. Since 2002 the project has been an official part of the GNU system. Current main developers include David Kastrup, Jonas Hahnfeld, Werner Lemberg, and other contributors from the international community.


Alternatives to LilyPond: