Recently Daniel Spreadbury (formerly senior product manager at Sibelius, currently product marketing manager for Steinberg‘s upcoming notation software) published a post documenting the development process of Steinberg’s scoring application, which ignited a discussion both in the comments under his post, and on the LilyPond-user mailing list.
As I watched the discussion and read various comments from LilyPond users (explaining why they believe LilyPond is the best notation software around), I once again asked myself this question: are we fair in our claims about LilyPond?
You see, quite often I have an impression that some of us get too enthusiastic when advocating LilyPond – we sometimes say that “LilyPond’s output is perfect”, “you don’t have to do any manual adjustments to get publication-quality scores”. These are, unfortunately, overstatements – and thus it would be good to avoid them, and stay realistic. Don’t get me wrong – I believe that LilyPond is great and that, in many cases, there’s no better alternative: that’s why I continue to use Lily myself and recommend her to other people! And of course you don’t get publication-quality scores out-of-the-box by any other notation software. My point is that in the sea of marketing bullshit – when everyone claims that their product “produces perfect results”, “is the industry standard”, “is the only one allowing you to create anything you can imagine”, etc. (do these claims sound familiar? Very similar ones appear on the website of one of the major notation packages) – having realistic claims is like fresh air, and can win us trust of the other people.
Of course, I have to plead guilty myself: I was an over-enthusiastic user initially, saying “look at how perfect this LilyPond-made score is” and “all other software is crap” to everybody around for some time. Since I’ve realized that, I became sensitive in this area – that’s why I write this post.
So, back to the question from the post title: is LilyPond honestly good enough for everyday and production use?
Firstly, let me say that I’ve never seen a score that was engraved by LilyPond perfectly out-of-the-box, with no tweaks. Not even a short one containing just a dozen measures – there’s always some kind flaw: a wrongly placed beam, an ugly tie (hopefully Tie Crusade will help here – in the next post I’ll give you an update about the situation), or the page layout is off.
Again, don’t get me wrong: in many, many cases the default output is very good or even excellent – Urs Liska posted an example some time ago. But when I say perfect, I mean perfect: flawless, with nothing that could be corrected. We haven’t reached that level yet (if you have a counterexample, please post it!).
However, the percentage of scores that are engraved perfectly out-of-the-box is not a particularly good metric. What really matters is the average effort needed to bring a score to desired quality: do you have to manually adjust numerous objects and change lots of settings, or is it just a matter of inserting an occasional linebreak or inserting a few tweaks?
The answer is: it heavily depends on the music. I would say that:
“Classical” music (before XXth century) is usually easy to engrave. LilyPond’s out-of-the-box results are usually better (quite often a lot better) than the default output from other notation programs, and improving it to publication quality in most cases requires a low or moderate amount of work. Advanced LilyPond knowledge is rarely needed here, but usually you have to go beyond note-entry (i.e. you need to use simple overrides). In general, LilyPond usually is a winner here.
Modern music containing unusual notations requires a lot of LilyPond skills, and for many people without basic programming background it will be very difficult. On the other hand, you can take advantage of LilyPond’s programmability (this can be a big advantage for algorithmic composers). So, depending on computer skills of the user, producing “advanced” notations using LilyPond can range from being “insanely difficult” to “awesomely powerful”.
Vocal music generally requires more work than instrumental music, because lyrics often cause spacing problems, and there is no solution for automatic combining separate parts on one staff (it can be done, but it requires some work). I don’t think that other programs fare better in this regard, but there is much room for improvement (I’m trying to fix some issues in this area, but the work is moving forward extremely slowly). In this area LilyPond is neither worse nor much better than other software.
Parts for monophonic instruments quite often are engraved very good out-of-the-box, and with a moderate amount of quite simple tweaks they can be brought to perfection. Here other programs usually fall behind, as more notation elements have to be manually adjusted for an outstanding result.
On the other hand, polyphonic instruments such as guitar or piano may require a lot more work. Again, much depends on the kind of music, but especially if there’s a lot of slurs, unusual tuplets, cross-voice ties and voices jumping around between staves, getting everything right can require a lot expertise and effort. This is particularly true for complex piano music, where many elements have to be repositioned manually – which gets cumbersome with LilyPond’s text input. While I haven’t used graphical notation software for quite a while, so my judgement might be significantly off, I suppose that in some cases producing good-looking results may be faster in these programs. At any rate, LilyPond isn’t a very convenient tool for such work – although it is definitely possible to create professionally-looking piano scores, default output is rarely sufficient (it is usable, but contains obvious problems).
In any case, achieving perfect results (beyond “basic publication quality”) is usually tedious, because it involves moving many objects around, and the offsets for that have to be determined by trial-and-error. On the other hand, having tweaks explicitly written in the source file is very helpful as one can clearly see what has happened to the music and easily go back to the default state. Still, the fact that one has to recompile the score every now and then to check the results is especially problematic in case of bigger projects.
Of course, there are other factors that make LilyPond attractive: you can modify it according to your wishes and you don’t have to pay lots of money to use it (since it’s Free Software); it supports more platforms than major commercial packages, text input allows effective use of version control, etc. This makes me sure that despite the problems mentioned above LilyPond is a great piece of software definitely worth using, and in many cases it probably is the best choice available.
But there is a lot to be improved. And we shouldn’t forget that.