Using special characters from SMuFL fonts

Recently Joram Berger gave an introduction to Steinberg’s proposed new font standard, Standard Music Font Layout SMuFL and its possible use in LilyPond. He also compared LilyPond’s Feta font and Bravura, the only SMuFL font that is currently available. In addition I would like to expand on some specific cases where accessing specific SMuFL glyphs can become handy in solving specific notational problems. But I promise to put in some useful tips also for the LilyPond user more interested in solutions using the regular Feta font. Continue reading

Music Functions 4: Recursion

Today we’ll come to an end with a series of posts demonstrating how to write a comparably simple music function in LilyPond. I deliberately chose to describe the stuff with such verbosity and at that gentle pace because I think that’s what is missing in LilyPond’s (otherwise excellent) documentation. At least I think I would have greatly benefitted from that kind of explanation …

In the first part we started considering how to insert a Scheme music function in a LilyPond input file, and in the second part we started writing a function that colors an arbitrary function with an arbitrary color. While this was more or less hard-coded and exposed lots of redundant code we wanted to improve it in the third part through refactoring and list processing. Unfortunately this didn’t work out as easily as expected, and finally we’ll be solving the task through recursion today. Continue reading

Music functions 3: Reusing Code

In the last post We wrote a music function that took an arbitrary music expression and applied an arbitrary color to it. The problem we immediately saw is that we manually had to override all properties – and that we still didn’t manage to catch them all. In general terms, a function that redundantly calls \override for each new property isn’t exactly elegantly programmed. So today we will do better and at the same time learn something about reusing code by refactoring and by processing lists. Continue reading

Music Functions 2: Start Doing Something Useful

In the previous post I demonstrated how to include Scheme code in LilyPond input files, and we saw our first music function, although it still was a static function only producing a hard-coded middle c. Today we’ll do some more by writing functions that actually do something useful and can handle arguments. Continue reading

Music Functions 1. Getting to Grips with Scheme in LilyPond

With this post I intend to start a series of posts introducing writing Scheme music functions in LilyPond input files. Please note that this is not a guru’s wisdom poured into blog posts but rather a documentation of my own thorny learning process.

Being able to include Scheme code in LilyPond files is one of the foundations of Lily’s higher powers, as this isn’t “just some scripting interface” but allows you to interact with its processing on the lowest level. Basically LilyPond works through a combination of compiled C++ code and Scheme code interpreted at runtime. Injecting Scheme code in input files is therefore literally extending LilyPond’s built-in capabilities. Continue reading

One Day At the Messe

Travelling sixteen hours by bus and having a whole day of fun can actually make you tired.

Travelling sixteen hours by bus and having a whole day of fun can actually make you quite tired.

We had lots of fun at the Frankfurt Musikmesse :-) .
It has been a great experience for both of us, me having most of Thursday and Janek joining for Friday. Actually we were so excited that we forgot to make pictures during the Messe ;-) – sorry for that! Continue reading

Oskar Fried: the Big Bang

It seems the circle is going to close now.
Nearly three and a half years ago Janek introduced himself to the lilypond-user mailing list with this message – and see who were his first two contacts from the LilyPond community :-) .
In the meantime we had several projects, exchanged thousands of emails (not including on-list communication), even talked a few times over Skype – but never had the opportunity to see us in natura (and I think our Avatars aren’t exactly revealing). Now’s the time to change this: On Friday we’ll finally meet at the Musikmesse Frankfurt! Let’s hope the blind date won’t be a disappointment ;-) .

But this isn’t the Big Bang promised in this post’s title. ;)

The Big Bang is that…

… (drum roll) …

This Friday we’ll receive the BEST EDITION 2014 award of the German Music Publishers’ Association for our edition of Oskar Fried’s songs!! :) :) :)
BEST-EDITION-small Continue reading

Engraving statistics: timing

This post is part of a series analyzing LilyPond’s performance during the preparation of a new edition of Oskar Fried’s songs.

Hello again!

Our regular readers must have noticed that our “blogging schedule” is recently quite spotty – we apologize for that! There’s a lot of things that are keeping us busy, and one of them is very important news for LilyPond – we’re going to announce it this Tuesday, be sure to drop by! :)

Anyway, I’ve recalled that I had written one more post draft about our Fried project, and I’ve decided to finish it because this information may be interesting for you: it’s the concluding statistic – the timing of my work. Continue reading

Massive improvement in LilyPond’s horizontal spacing!

In the post about horizontal spacing in Fried Songs edition I have complained about a nasty bug in LilyPond horizontal spacing (issue 3304), which was causing us a lot of trouble in pieces that contained a lot of triplets. I am extremely happy to announce that the bug has been fixed by Keith OHara!
Continue reading

Feta and Bravura

In the last post I have shown what the SMuFL font layout is and how it can be used in LilyPond. In this post, we will have a closer look at the SMuFL compliant Bravura font and compare it to Feta, which is the default music font in LilyPond. Let’s look at the example from the snippets repository again: Continue reading