Hello again – long time no see! I cannot believe that I haven’t published new posts for almost 3 months… In the previous post Urs had already mentioned some of the reasons why I was away for so long: finishing the new edition of Oskar Fried songs requires a lot of attention and I’m not a good multitasker.
As you already know, my job in this project was to bring the scores to publication quality – together with Urs we call this process “beautification”. To get an idea of what this means, compare the following images (I recommend using an “Alt-Tab comparison”, i.e. opening both images in full size and switching between them repeatedly using Alt-Tab or other appropriate keyboard shortcut):
Another example. Note that before beautification staff spacing was wrong and systems weren’t visually separate:
While LilyPond’s default output is quite legible – a commendable feat, given the complexity of the music! – it is clear that all scores had to be post-processed in order to be publication-ready. Such a task may be either very pleasurable (when you see that you create something beautiful – a work of art, basically) or quite frustrating (if you have to fight with the software). It all depends on the complexity of the scores, and available time and skills of the engraver. I have mostly enjoyed the process (especially since we started using version control to track all changes), although there were times when I was really angry at LilyPond for behaving stupidly. Fortunately most of the time it was possible to find an intelligent solution to problems I’ve encountered (for example, write a function or override some settings) instead of making manual adjustments everywhere.
I have learned a lot during the process – about music engraving, cooperation, programming, and LilyPond itself! I’d like to share some of this knowledge with you, hoping that it will help anyone who indends to undertake a similar project, and also that it will be helpful to the other LilyPond developers when discussing new features, architecture changes and development priorities.
Let’s start with some general statistics. The edition contains 94 pages of music which are produced from 320 LilyPond source files – 30 800 lines of code in total. The project structure is moderately complex – 565
\include commands. We had created a dedicated library containing all special functions, shorthands and stylesheets we had designed for the project (we hope to make them publicly available, probably as part of the openLilyLib/snippets repository.
When dealing with a project of this size and complexity (I’m referring to the complexity of the music), what are the biggest engraving challenges? From my experience it seems that they are:
- structuring the musical content correctly,
- making slurs and ties beautiful,
- getting horizontal spacing right,
- getting vertical spacing right,
- managing different LilyPond versions,
- ensuring that nothing accidentally changes to the worse.
I’m going to talk about each of these challenges in detail, and then present you with some statistics. I had initially thought that everything will fit into one article (that’s why Urs announced “a little series of three posts”), but I kept writing and writing (that’s why this post took so long to publish) and now I think it will be best to present each topic as a separate short post. Expect a new one every two or three days!
PS another big challenge was keeping such a project together, managing it’s technical complexity – but that’s something I’ll talk about in the final “conclusions” posts, together with Urs. Stay tuned…