I have used LilyPond for a few projects now while learning it's syntax and semantics and I have to say that I really like it. This article is therefore a review of LilyPond from a practical perspective. I must admit that I'm a bit of a geek when it comes to computers, so tinkering with source code is right up my alley. Because I am still learning how to use LilyPond, most of the projects I did were fairly simple, but I am very satisfied with the results so far. I was particularly impressed with how little tweaking to note positions and the like I had to do once done with the basic input. In Finale (which I've used for a long time now), I always have to fine-tune the initial layout and correct the program's little deficiencies. In LilyPond hardly any adjustments were needed.
While LilyPond definitely has a learning curve - at times a rather steep one! - most of the developers' choices are sensible and meaningful. Once you know the naming conventions used, editing is fairly straightforward, although I wouldn't call it intuitive. After all: this is a profesional linux music notation solution offering extensive control over the output. Power comes at a price so to speak. Besides, when I first started using Finale years ago, it had a fairly steep learning curve as well. It will take quite some time before I can use LilyPond to the same extend as I'm currently using Finale, but I think I will ultimately switch to LilyPond completely.
Tweaking LilyPond's output
One of the somewhat larger projects I did was create a condensed score from a full big band score, for conducting purposes. For condensed scores I need multiple voices and staves, chords, lyrics and a lot of annotations. I had to dive into the manuals quite a bit before I was able to pull it off, but once more the final result is beautiful. What's more, I now have a template that I can use for similar projects in the future.
This project also made me realise the importance of structure when using LilyPond for your music notation. Get the structure right and you can use the same structure as a template for future music notation projects. Get it wrong and after a day or two away from it, it is already hard to read the code. Let alone after a year. I also use a lot of comments to indicate the structure of the piece of music for example, dividing the score into logical pieces - such as 8 measure phrases. I found that in learning LilyPond it is best to think ahead to future projects. Starting a project again from scratch after I learnt a better way of doing things were definitely worthwhile in the end.
While LilyPond is extensively documented, it can be hard at times to find the information you need. For example: I am not keen on the chord extensions LilyPond uses as default. They are definitely a sensible (and widely used) choice, but I prefer a different system of notating chord extensions. It was quite hard to find the information I needed for this, since it was scattered throughout the manual. Fortunately you only need to do this once since you can then add the new extensions in an include file to be used over and over again. There were however a number of occassions where I had to spend considerable time with the manuals to figure out how to do something.
If you are a professional composer, arranger or copyist, it is likely that you need to produce complex pieces of music notation. Creating them in LilyPond is not easy. But then again: creating complex music notation in any new program is not easy. So in that aspect LilyPond is no exception. And I love the output LilyPond produces. And in the end, that is what this is all about: producing good-looking, clean and easy to read sheet music. LilyPond excells in that. As LilyPond offers a myriad of ways to change the default output, it can at first be quite time-consuming to find the things you are looking for in the documentation. As I said: LilyPond might not be intuitive, but from a musicians perspective all the choices the developers made are very sensible and in general quite easy to memorise. So if you are prepared to put in the time, LilyPond is one of the best linux music notation applications around.
I know it will take me a while before I'm as fluent with LilyPond as I am with Finale, but that is basically because I have over 10 years of experience in Finale. Ultimately I will change to LilyPond for all my projects, simply because I think the final music notation output is better! I will also keep an eye open for Denemo, a graphical front-end for creating LilyPond score; and especially what the OpenOctave team plans to do with that.