October 28, 2006

LilyPond

This is only going to be of interest to people who are both programmers and musicians. I only barely fall into the latter category, but I did come across a great open source project today that perfectly solved a problem I had.

For an upcoming performance (it'll be the third time I've played in public), I was handed some photocopied sheet music. The pieces had been copied multiple times, and were pretty much unreadable. Now, I have enough to worry about when I'm playing without trying to figure out what the notes are, so something needed to be done.

I'd downloaded the free version of Finale some time ago when I hit a similar problem with another piece of music. At first it was fun to place the notes on the screen, but I soon hit limitations. It was impossible to make the computer version look anything like what I had in front of me because it automatically decided how to space out the bars and when to do line breaks (and it didn't look good doing it, either). This is an obvious problem when playing with other people and they say "start on line 4" or something like that, and your line 4 isn't their line 4. I pretty quickly gave up on Finale, and based on the experience, I wasn't too keen on upgrading to their higher-end software. And some of the other commercial music notation packages looked really pricey.

But I ran across this cool little app/project called LilyPond. Basically, you write the music in a text editor, and then use LilyPond as a rendering engine to produce a PDF (it'll also spit out a midi file, which is fun, too). If you have any programming experience, you'll find the notation markup to be quite easy to pick up. Shoot, if you've ever done basic HTML, you'll probably get the idea. And, much to my delight, the system is very customizable. In other words, I can make it do what I want it to do. As an added bonus, the output looks great. I couldn't be happier with it!