Thursday, July 19, 2007

Lilypond is really stupid

I love open-source software. I regularly read While I am a Windoze user, virtually everything I use regularly is open-source software, from Vim to to Firefox and Thunderbird to Pidgin. Open source software got me my first job out of college, where I was a network monitor and a programmer designing web applications with Perl.

Most stable open-source software that’s been around for a while is well-documented, and documented in ways that a programmer understands and appreciates. If, for example, one wants to see a list of functions available in PHP, you just go down to the function reference in the online manual, and voilà. If you want to see the syntax of a function, you can even go to function name), and boom, there it is, with usage examples and all.

Perl is much the same way, though without a centralized site that explains the language itself; instead, you buy a book from O’Reilly or take your chance with Google. (Usually a safe bet.) Or, Perl’s provided documentation works well, too. And certainly for using Perl modules, CPAN is a gem that explains everything in concise, clear terms. Lots of usage examples for the code that save buckets of time. (I don’t think I am the only programmer who learns more, and more quickly, from example code than from a prose explanation.)

The list goes on. MySQL has Javascript has’s exaplanations and example code. The W3C DOM, HTML, and CSS all have’s specifications, which are surprisingly helpful. and other sites provide much help.

And then....*sigh*. There is Lilypond. A system for music notation designed by programmers who are also musicians. The output is very nice-looking usually, and you generally don’t have to spend the time futzing with making this note not overlap that note etc. that Finale makes you spend. It could be so nice.

But, you basically have to learn a programming language to use the thing. In other words, you don’t point-and-click notes/rests onto a staff the way you do with Finale; rather, you open up Notepad, Vim, emacs (God forbid!), or your other favorite text editor and create what is called a “source file”. The Lilypond program then takes that “source file” and turns it into a PDF that has your music in it.

That in and of itself is not necessarily a bad thing, but it does mean there is a substantial learning curve. It also means there is no way to enter music via a MIDI keyboard, so it can take a while to enter a score. Again, not the worst thing, but it means the documentation should be helpful, as it is in the programming languages above described.

But the documentation for this thing is AWFUL. I mean BAD. If you want to look at a source for the various keywords and commands available to you, you are either a better geek than I, or you will search in vain ’cuz it ain’t there.

If you download the lilypond source for the Victoria “Conditor alme siderum” and then try to turn that source in the current Lilypond, it will tell you that this source file is for an old version of Lilypond, and you need to run a different program to update the file so that modern Lilypond knows what to do with it. Fine.


Lilypond will then tell you that it doesn’t know how to update this particular source file. A little bit of googling shows that certain commands are deprecated - of course, the Lilypond documentation doesn’t have a clear explanation, as any decent language would, of what the old command did and what has replaced it (preferably with sample code for both).

It took me several hours to figure out that what I needed to do was a mechanical update of the commands used for lyrics and an updating of the syntax for entering the lyrics themselves. This *could* have been done by the script. It *should* have been easy to find something on this in the documentation.

Oh well. At least the output is pretty. But I certainly can’t drop Finale, which lets me enter a score quickly (since I know it inside-and-out after 7 years now of using it) and in whose format I already have tons of music entered.


At Thursday, July 19, 2007 12:14:00 PM, Blogger Jeffrey Tucker said...

Glad to know that I'm not alone in this respect! Generally my impression is that the music world is way behind the rest of the software world. I use Finale but it sure seems like an antique to me.

On the other hand, I love Meinrad fonts. Clean and clean.

At Thursday, July 19, 2007 12:36:00 PM, Blogger Cantor said...

Yes, music notation suffers from:

1) Relatively small pool of users who will pay for the software.

2) Those users don’t realize that Finale 2007 SHOULD be able to write in the 2006 format, just as Word 97 can write Word 95 files.

At Thursday, July 19, 2007 12:37:00 PM, Blogger Cantor said...


What do you think of Cæciliæ?

At Thursday, July 19, 2007 2:13:00 PM, Anonymous Klaus der Große said...

Being more programmer than musician (and a sysadmin by trade), my perspective is a bit different, and I do find Lilypond more tractable than you do; still, I agree with you on the deficiencies in the documentation. The programmer's reference, which is the most complete part, is useless to the average user.

What really ticked me off when I was first learning Lilypond is tbat there is no clear description of what a properly-organized source file should look like. If you're learning practically any programming language, the book/website/class you learn from shows you what a complete program looks like. Lilypond doesn't. In the end I came up with a set of default templates for various common types of scores I have to create, which have withstood the manifold revisions of the input language pretty well.

In keeping with the open-source ethos, I feel a mite guilty for not trying to remedy the problem, but only a mite. After all, documenting Lilypond is not what I get paid for.

At Thursday, July 19, 2007 2:33:00 PM, Blogger Jeffrey Tucker said...

I've tried that Cecilia font but the problem is that it is not functional in Word. You need in design, or, actually and oddly, the write.exe program in Vista works. In any case, it's structure is too limited for broad use, at least for now. I'm really interested in programs that can be democratized, since sacred music is necessarily a community project.

At Thursday, July 19, 2007 6:26:00 PM, Blogger Mary Jane said...

I use Sibelius because it is more user-friendly than Finale, especially if you need to pick it up after a break and knock out a score RIGHT NOW. I acquired it with an educator's discount by joining ACDA.

It's not perfect, but I'm no programmer and have no interest in the same. (I remember key-punching cards in the basement of the university library during the dawn of the computer age.)

At Friday, July 20, 2007 10:45:00 PM, Blogger Mike said...

I used Gregoire (not open source, but it's freeware) for the square neum notation. It has several dpi output options with its image files. I use LaTeX for type-setting documents and carry the dpi quality throughout my conversion processes until the final convert into pdf format. There I set the output quality to 600dpi and I end up with very sharp notation in my documents.

This process can be contrasted to MS Word which crappifies image files and seemingly downgrades any dpi I try to give it. There the same images are fuzzy (a quillisma is impossible to distinguish from a salicus, for instance).
-Mike J.

At Tuesday, July 24, 2007 3:46:00 PM, Anonymous brandon field said...

Hey, what's wrong with emacs?!?

I've never used Lilypond, but it seems to be an enhanced version of MusicTeX, with the same mentality as LaTeX. I'll agree that it takes a long time to get into that mentality, and I don't know if the aesthetic and other payoffs are as big for Lilypond as it is for LaTeX.

At Tuesday, March 25, 2008 6:04:00 PM, Anonymous Anonymous said...

There are several front-ends to Lilypond, such as GNU's Denemo. While it can be perplexing to think about Lilypond not having it's own front-end, it's not to uncommon in the Linux world (take FCE for example). These front-ends give you a means to use the GUI and even play the MIDI on-the-fly. Some even allow you to import music from a MIDI device (such as a keyboard). And just for clarification, Lilypond syntax is a kind of Markup Language rather than programming.

At Friday, May 30, 2008 4:44:00 PM, Anonymous Anonymous said...

I have used Lilypond for several years. There is a significant learning curve, and it is quite a different paradigm than most other music scoring programs, but I like it very much. The output quality is fantastic, and the text-based "source file" input allows power users to do all kinds of automated processing. I have even grown comfortable with the Lilypond syntax. I think the complaints about Lilypond would be greatly reduced if there was a decent front end GUI available.

At Tuesday, July 22, 2008 4:15:00 AM, Anonymous Anonymous said...

Hello. I'm computer scientist, but my girlfriend does not understant a lot about computers and is a very basic user of Apple OSX. However as a music professor she wanted a software for music printing. she already know about Cubase but it's not intended for printing music. At that time I was really lacking time and after having installed the software (which she could not do be herself I confess), I only spent a few minutes explaining the basics of Lilypond, and then gave her a link to the documentation.
Maybe the doc has really improved since you wrote your post, and I must admin that there was (of course) a learning curve, but it was amazingly fast!!
After only a few hours she had all the necessary knowledge for basic musci typesetting/printing.

Actually this is know the only software she uses for music printing, and she is very happy with it.

And as already said by other people above, there are know more and more frontends for Lilypond, including for MIDI input :)


At Friday, September 26, 2008 4:50:00 PM, Blogger Patrick said...

Check out the "Learning Manual" for the 2.11 documentation. It is very helpful!

At Sunday, December 14, 2008 2:22:00 PM, Blogger Chilkari said...

I'd agree with the recent posters. Being a programmer, writing the lilypond file in emacs is more comfortable and MUCH faster than clicking (or speed-entering) notes into a GUI for me. I'm a Finale user for about 15 years, and I'm planning to use LilyPond from here on out. Using the current documentation, I was able to learn it from ground zero and get a small piano piece completely typeset in a couple of hours. Works for me!

At Monday, December 22, 2008 12:53:00 AM, Anonymous Anonymous said...

Lilypond is now up to 2.11.65, and the documentation is getting better all of the time.

Yes, it is not easy at deeper levels, but it does a BEAUTIFUL job when you get there...well worth the effort.

It is constantly being worked on, and the work is intelligent work. They have significantly improved the documentation over time and I suspect that will be true in the future. The basic manipulations are set up to be as sparse as possible. If you want to do a c scale, try:

% set the starting point to middle C
\relative c' {
c d e f
g a b c

The new learning manual is quite good. This is currently found at:

(be sure to check for newer versions if this is some time after the date of this note: 12/21/08 )

At Friday, March 06, 2009 12:29:00 PM, Anonymous Joel said...

I heard Denemo referenced above as a front-end for LilyPond, but right now I think that is only partially true. If Denemo didn't create the LilyPond file, it may have a rough time reading it.

At Tuesday, March 10, 2009 7:35:00 PM, Anonymous Anonymous said...

I use LilyEditor since a couple of weeks and it seems ok, though it is not very well documented:

anyone knows it?

At Thursday, July 23, 2009 2:44:00 PM, Blogger thSoft said...

Since the Grand Documentation Project, the documentation is getting more and more usable. In the meantime, great LilyPond IDEs are evolving like e.g. LilyPondTool for jEdit:

At Thursday, October 22, 2009 9:12:00 AM, Blogger Scott J said...

I recently came upon a program called MuseScore - a free cross platform WYSIWYG music notation program, licenced under GNU GPL.

It is the first free notation program that I have found that shows any threat to Finale or Sibelius. The in-built printing is OK for quick and simple projects, or you can export to Lilypond when you need to get serious.

Some highlights:
* WYSIWYG; notes are entered on a virtual note sheet
* Unlimited number of staves
* Up to four voices per staff
* Easy and fast note entry with mouse, keyboard or MIDI
* Integrated sequencer and FluidSynth software synthesizer
* Import and export of MusicXML and Standard MIDI Files
* Platform independent code, binaries available for Windows, Mac and Linux
* Available in 20 languages
* GNU GPL licenced

Available from

At Tuesday, August 03, 2010 9:43:00 AM, Blogger orion_access said...

If you were using linux, most of what you disliked about lilypond would not be as much of a problem. You would just use Rosegarden 10, and after you finally got used to the software and its notation editor, output to lilypond. You can then edit the lilypond file to make a few changes if need be.
But yeah, it's not for everyone. Lilypond in my opinion is really wonderful, and I'm glad it exists. It's output is still better than anything else I have used to date.

At Tuesday, October 05, 2010 4:41:00 PM, Blogger Greg Underhill said...

I've used finale, mup, and now Lilypond for music typesetting. Lilypond wins for me in so many ways -- appearance of output being only one. no one seems to have mentioned using jedit ( for editing. There is a plugin called "LilypondTool" that can be installed under jedit which has an excellent wizard, syntax highlighting, autocomplete functions, etc. Using jedit it is easy to create a score, enter notes, run lilypond, and view the score. You can also use the built-in midi player to check your work aurally.

LilypondTool also includes complete lilypond documentation.

One other aspect of lilypond that I use a lot is that it integrates so well with LaTeX. As an educator, I use it a lot to include music snippets in text documents (using lilypond-book).

At Monday, December 20, 2010 6:57:00 AM, Blogger Romel said...

"After all, documenting Lilypond is not what I get paid for."

That's only half the truth, of course. In fact /no one/ gets paid for documenting /any/ open-source project, Lilypond included.

I would add that the reference for Lilypond has been restructured and greatly improved. You should come and check it out. If a problem arises that cannot be resolved by reading the reference, the user mailing list is also available. And mind you, it's amazing how many effective responses you get, especially when you realize that /none/ of those people get paid, either.

At Saturday, May 24, 2014 12:02:00 AM, Blogger Akulkis said...

Oh for crying out loud, do you complain about PDF, because PDF source is absolutely clear-as-mud

And guess what... IT'S A PROGRAMMING LANGUAGE (in fact, the first version of SunOS -- before Solaris -- actually ran the graphics display with PDF code--in real time).

Your problem is expecting lilypond, the programming LANGUAGE to be the same thing as, say, any of a number of PDF-document CREATORS... all of which are tools for Writing PDF CODE.

There are several GUI tools for creating lilypond code. I suggest you use one of them, and quit bitching about the fact that a programming language is not a GUI. It's like complaining that your remote control isn't a damned TV show.

At Thursday, June 26, 2014 3:25:00 PM, Blogger Tim Wright said...

I don't think it's an accurate representation to call it stupid.
It *is* very different, in much the same way that LATEX is different to MS Word.
That's a very deliberate design decision. It has consequences, not the least, that
there's a much steeper initial learning curve.

I own both Finale and Sibelius, and I greatly prefer to work with Lilypond (I end
up typesetting or modifying a lot of music for "Cantores in Ecclesia" in Portland, OR).
Once you have learned a sufficient amount, I find it much *faster* than either of
the GUI tools, primarily because, as you point out, the output generally looks
great immediately, rather than after hours of painful tweaking. Here's one simple
example: Musica Ficta. These seem to be purely graphical objects in Finale and
Sibelius, and so transposing the piece (which, again, is amazingly easy in Lilypond)
results in ficta that are wrong, i.e. a natural that should be a sharp, etc.
Musica ficta are semantic objects in Lilypond. They're related to the note, and
when you transpose music, the ficta automatically change to the correct symbol.

The tool to update a score to the latest version (convert-ly) isn't perfect. It
doesn't handle everything. There are multiple options here. You can still use the
older release of Lilypond to typeset the score (my Lilypond VM currently has versions
back to 2.10). You can consult the manual for details on the needed changes. There's
a mailing list with helpful people. Etc.

The documentation has improved enormously in more recent releases, and graphical
tools like Frescobaldi are less "hardcore" than notepad/vi/emacs/...

I'd recommend looking into Lilypond again. Also, if you are interested in typesetting
Gregorian chant, then Gregorio is another fantastic open-source tool.


Post a Comment

Links to this post:

Create a Link

<< Home