Oskar Fried: engraving challenges

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):

Op. 8 No. 3 before beautification

Op. 8 No. 3 before beautification

Op. 8 No. 3 after beautification

Op. 8 No. 3 after beautification

Another example. Note that before beautification staff spacing was wrong and systems weren’t visually separate:

Op. 7 No. 6 before beautification

Op. 7 No. 6 before beautification

Fried 7-6 after

Op. 7 No. 6 after beautification

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…

9 thoughts on “Oskar Fried: engraving challenges

  1. Gilberto Agostinho

    Fascinating project, Janek! I look forward to your next post about the challenges in the list you wrote above.

    Reply
  2. Werner Lemberg

    Good job, Janek!

    Two minor issues that I’ve noticed: In the second image of this post, there is one beautification missing: the second rest in the left hand should be moved two staff lines up. Additionally, I think that the decrescendo hairpin in the fourth bar should be either longer or having a smaller gap.

    Reply
    1. Urs Liska

      Good spot, Werner.
      At least the rest issue is already fixed in an open proof-reading branch that Janek hasn’t processed yet 🙂

      The relevant diff reads:

          ais gis8) \oneVoice r r4 | %19
          \voiceTwo
          R2. | %20
      -   eis2 r8
      +   eis2 \oneVoice r8 \voiceTwo
          \shape Slur #'((0.1 . 1.1)(0.5 . 0.9)(-0.5 . 0.5)(0 . 0.5))
          eis8-.( | %21

      It’s fascinating how version control makes this stage of production manageable …

      Reply
    2. Janek Warchoł Post author

      Indeed, good catch, Werner!
      This case demonstrates the reason why we have developed the voice-coloring “library”, and later added it to Frescobaldi. With colored voices turned on, the rest would be painted blue, so it would be obvious that the rest was in wrong voice (i.e. that it should be \oneVoice, which is black).

      As for the hairpin, I agree – but with a limited budget I had to limit my perfectionism, or the beautification would take 3 times longer 😉

      Reply
  3. Pingback: Engraving Challenges: Slurs and Ties | Scores of Beauty

  4. Pingback: Engraving Challenges: Structuring the Input | Scores of Beauty

Leave a Reply

Your email address will not be published. Required fields are marked *