Frequently asked questions

Introduction

What is LilyPond?

LilyPond is an "automated engraving system." It will format music notation beautifully without requiring typographical expertise of its users.

Automatic notation, so that means I can play the music, and then it rolls out of the printer?

No. Our system assumes that the input data is available in an exact, abstract form. Printing music is difficult enough as it is, so we do not wish to add another problem. Translating what a human plays to exact form is hard. Even if you get the correct pitch data from a MIDI keyboard (as opposed to a sound recording), one has to get the rhythms correct. For example, how is a computer supposed to distinguish between a staccato quarter note and an eighth note? Moreover, how would you print a piece that you cannot play in such a system?

There are other program that do notation. What's so special about yours?

Modern computer printouts do not look nice: they have a bland, mechanical look. By contrast, we try to mimic traditional plate engraving in the general impression, layout algorithms, and the font design. Consequently, our output often beats our competitors when it comes to good looks.

What is wrong with other computer printed scores?

Normally, one notices these details only subconsiously. The best way to become conscious of these differences is to compare a traditionally printed and a computer printed edition of the same piece, preferably with a magnifying glass. If you are not sure: traditional engraving is photographically reproduced hand-work, and can be recognized by slight irregularities in symbol placement, and small blotches due to the reproduction process.

What is engraving?

Originally, music was printed by stamping and engraving symbols mirrored into metal plates. The plates were inked, and paper was pressed to it, yielding a left-to-right printing. Hence, professional music typography is now known as engraving, even when it is done with computers today. People who do this are called engravers or copyists.

Why do you care about engraving?

We think that beautiful music deserves to be printed with a beautiful layout.

Why would I care about engraving?

Good engraving helps to read the music, making it is easier to play from. For example, if the layout reflects the character of a piece, then it is easier to interpret. If it is tightly spaced, it will take less pages, reducing the number of page-turns. If a system (a “line”) has a unique horizontal layout, then it is more easily found back after looking away at the conductor. A part which is printed with heavy symbols and thick lines will be easier to read from a distance.

You say your program is special; you must be trying to sell it?

No. We give it away for free. Go to the download page.

It's free now, but then you will start charging in the future?

No. Not only do we give it away for free, but we also deliver it with full source code, and permission to distribute, modify, sell or mutilate it. In other words, LilyPond is libre software; it is part of the GNU project, and distributed under the terms of the GNU General Public License.

We think that this is much more important than cost. It means that you have the freedom to fix, modify and extend the program, or you can pay someone else to do so. We will not force you to upgrade when your system is abandoned, and you are not lost when we abandon the program.

About the program

How is LilyPond used?

LilyPond is a compiler: the music is encoded in a .ly file. When LilyPond is run on it the input is transformed into music notation, which is written to disk as PostScript or SVG and postprocessed to PDF and PNG.

What is the input format?

We have designed our own input format, the .ly format. It is a language that encodes music using expressions. These music expressions are composed of simpler music expressions, where the simplest expressions are notes and rests. This is analogous to how arithmetical expressions can be broken down in simpler expressions, where the simplest expressions are numbers, operators.

There are lots of good formats, why not use ABC, MusicXML or NIFF or DARMS?

We have the following requirements. It must

We believe that none of the existing formats address all these requirements. For example, MusicXML cannot be typed by hand, DARMS is limited in its application, ABC has no strict formal definition, and NIFF is binary. Nevertheless, this does not restrict you for using those formats: there are filters that convert from various formats to .ly.

How do I learn the syntax?

Take a look at the tutorial. It is pretty short, chopped in easily digestible chunks, and we've spent a lot of time polishing it. If you like to learn by fiddling around, then you can get input examples, by clicking the music images in the tutorial.

Stop changing the syntax all the time!

We try to make LilyPond as good as possible, and that implies that we continually improve the input format. We change the syntax whenever we feel that it will simplify the language as a whole, or ease the learning curve. Keep in mind that the syntax is as great as it is now because we also did this in the past.

Most of the language changes can be handled by running the program convert-ly, which is supplied with LilyPond. However, convert-ly can only do its job if it knows what version the original file was written for. Therefore, it is important to add version statements to your files like this:

\version "1.3.17"

Changes that cannot be handled by simple edits are marked by a bump in the major version number: converting 1.8 to 2.0 files will need overseeing.

How quick is entering music with LilyPond?

There is no single answer to this, as the time spent depends on the complexity of the music, and your fluency in LilyPond. Music with complicated constructs (cross-staff beaming, collisions) takes longer to enter than simple monophonic music. Experienced users have reported average times of 3.5 pages per hour for typing straightforward music monophonic with an editor only. This time includes corrections and minor layout tweaks.

I want to use my MIDI keyboard for entry

Try the following:

I don't want to learn another syntax. Now what?

There are other options: it is possible to create the music in another format. Supported formats include

MIDI
LilyPond includes midi2ly, a program that translates a MIDI file to LilyPond.
ETF
LilyPond includes etf2ly, a convertor for the Finale ETF format (about ETF)
ABC
LilyPond includes abc2ly, a convertor for the popular ABC format (about ABC).
MusicXML
LilyPond includes musicxml2ly a partial convertor from MusicXML, and Guido Amoruso's xml2ly will convert MusicXML to LilyPond. (About MusicXML).
NoteWorthy
Mike Wiering's nwc2ly will convert NWC format to LilyPond.
Band In A Box
Alain Brenzikofer's biabconverter will convert Band-in-a-box files to LilyPond.

I want to have an Graphical User Interface!

We have no time to also make a graphical user interface. Luckily, other people have filled the gap. The following programs have competent LilyPond export functions and are actively being developed.

There are also different, non-graphical interfaces:

Support

Help, I can't get it to install or compile. Where do I get help?

If you have a binary package which does not install correctly, or if you have trouble while following the instructions, then send a full bug-report to our bug list. Of course you can also write to the lilypond-user list for help.

Help, I can't get it to do something. Where do I get help?

You can write to the lilypond-user mailing list (which is at http://mail.gnu.org/mailman/listinfo/lilypond-user). It is also a good idea to check the archives of the mailing list, which are at http://mail.gnu.org/archive/html/lilypond-user/.

I found a bug.

If you have input that results in a crash or erroneous output, then that is a bug. Please help us by sending a good bug-report: an input file that will reproduce the problem. Please make it small, so we can easily isolate the problem. Don't forget to tell which version you use, and on which platform you run it. Send your report to bug-lilypond@gnu.org.

Could you add this feature for me?

Sure! Read sponsoring for more about getting custom functionality.

But it is very easy, just extend the syntax like this...

It is a tempting to think that inventing the syntax solves the problem. In practice, less than 10% of the program is involved with handling input and the syntax. Almost always, adding features involves a lot more than syntax, and is also much more complicated.