Making great scores with LilyPond

Software debates: Finale vs. Sibelius vs. Dorico

For many years, one of the main “debates” for composers was Finale vs. Sibelius. Now that Sibelius has been incorporated into AVID (which owns Pro Tools and other programs), I see the name less. The original Sibelius team moved on to create Dorico, which seems to be a popular growing upstart.

I’ve been a contrarian in these “debates” (scare quotes fully intentional). They really are up to personal taste. I felt that Sibelius was more intuitive than Finale, and stuck with that. Yet, I’ve taught students how to use Finale several times…

A software contrarian

In 2012 or so, I went really contrarian and started using the free platform LilyPond. This is less of a “notation program” than a “markup language” like HTML or LaTeX, and it creates really beautiful-looking music.

The visual appearance is the selling-point for this free software.

I hear less and less about Lilypond these days; I think it’s mainly used by computer geeks who dabble in composition, rather than composers who dabble in computer geekery. (Say hi in the comments if you use LilyPond!)

How do you use LilyPond?

Let me reiterate: LilyPond is a markup language, so it works very differently than Finale, Sibelius, Dorico, MuseScore, etc. You can’t click on a staff and make a note. You type it all out.

That may sound cumbersome, but it’s not, necessarily. I think I’m just as fast typing in notes by text than I was when I typed in notes on Sibelius. The codes are pretty intuitive:

What I typed was: ees4-.\p r4 r2. fis4(\mf g2)

Natural notes are just their letter names. Flats add “es” and sharps ad “is”. Articulations are a hyphen and a similar glyph. -> is an accent. Ties are ~ and slurs are ( )

LilyPond is for engraving, not for composing

Writing directly in LilyPond would be a pain. I’ve never done that. I always sketch by pencil beforehand, then enter the notes all at once. I tend to print out that draft, mark it up in red pen, then enter my edits.

Where I usually run into trouble is taking out measures and adding text across all instruments. On a score, you could add tempo markings to the top staff, and it will look fine. But when you make parts, the lower parts won’t have these markings. So tread lightly.

One last quick recommendation: Frescobaldi. This is a LilyPond editor, which highlights bits of code in different colors, shows you exactly where your errors are located, and shows the score on the side (you do need to save and recompile to see changes).

LilyPond resources

LilyPond has a lot of documentation, and I’ve learned a ton from message boards and snippets. If you’re new to this, maybe try one of my files and poke around. The three pieces below should demonstrate a lot of the things you might want to do.

Free LilyPond score files you can adapt

These are .txt files, so to use in Frescobaldi, change the extension to .ly or copy/paste the entire text. WordPress doesn’t like .ly files.

  • Blocks for String Quartet – very standard score, so maybe the best place to start. Includes time signature changes, articulation, dynamics
  • Komorebi for solo piano — includes pedal marks, tuplets, cross-staff notes, chords, 8va, rolled chords, hidden rests.
  • Object for small orchestra – includes multiple parts in “families” (brackets), meter and tempo changes, text indications (e.g “st. mute”), diamond noteheads.

5 thoughts on “Making great scores with LilyPond

  1. Years ago, I tried and gave up on Lilypond probably 3 times before I discovered Lilypond Tool (a jEdit extension), and then Frescobaldi to use as frontends. Those made a world of difference. Lilypond is a powerful engine; all you need is a well-appointed operators’ cockpit from which to control it.
    I and a friend made a few templates that were useful to us as primarily hymn writers, and the process of composing in Lilypond was profoundly simplified. In most of our templates, for example, we use a \transpose line (comment it or not), which allows us to compose any song in the Key of C, and then transpose the output to any key desired.
    I have also found it much easier to input music using \include This eliminates the is and es for sharps and flats, using instead s and f, which I find more intuitive. B flat becomes bf, C sharp becomes cs, and so forth.
    I also output the midi to a higher quality player through easily found settings in Frescobaldi.
    We easily made a basic songbook template, which consisted of nothing more than a few global settings for consistency, and a list of \include files referencing all the songs we wanted in our collection, and markup options between each file for title and composer information.
    With a little use, I found that I could compose directly in Lilypond just as fast as I could in Noteworthy Composer, Harmony Assistant, Musescore, Staffpad, etc. And since many of my scores were intended to be printed, I found that the whole process was quicker in Lilypond, because, almost invariably, once I had the music and words typed in, the job was finished. Only very rarely did I need to ponder spacing and layout issues.
    Over time, we have added a few bells and whistles according to our hearts’ desire. Lilypond, controlled with Frescobaldi, has continued to serve us very well. The ability to copy and paste any text in your score or other’s is more powerful than one can possibly appreciate who has not worked with it.
    In short, each person will have personal preferences in input procedures and output options, and the beauty and power of Lilypond is that it is flexible enough to suit almost any taste while still producing dependably flawless results.

  2. Hi ~

    I happen to be a music teacher/composer/arranger that dabbles in coding. I took a lot of computer science classes in college and was a database administrator and help desk technician as my “real job” for 15 years (my dad told me that being a music teacher was not going to pay the bills – so learn how to code and learn computers!), so yes, I’m a computer geek as well as a musician.

    I almost never compose straight in Lilypond, but find the engraving to be absolutely *chef’s kiss* – as long as I’ve coded everything in the correct order so that it compiles correctly. I use the Friscobaldi shell – but find that it is much easier (since I’m used to coding/programming) to just code directly into the source box and compile as I go to make sure that what I **think** I’m coding is what the compiler also thinks I’m coding.

    I stumbled onto Lilypond looking for engraving software since my handwritten engraving is difficult to read and very messy – even when I’m taking my time and trying very hard to be legible. After comparing the top engraving options out there, I’m more than satisfied that Lilypond will keep up with whatever I choose to do with composing and arranging, and if I run into a situation where I can’t find what I need in the Lilypond library, I can either add to the python library with the commands that are already in Lilypond or I can drop straight into the source code and add the command I want/need in C++ (the python scripting option has been all I needed, so far.) In order to get the same flexibility in Sibelius, I would have needed to subscribe to the top-tier level – not really a doable option for this teacher’s budget!

    So glad I found Lilypond, and extra gratified to learn that many of the volunteers engraving for the IMSLP database are also Lilypond users.

    ~ Joanne (fellow contrarian 🙂 )

  3. Thank you for posting this article. I’ve been using LilyPond since early 200s, and the output was always great and appreciated by my colleagues, although some manual positioning was required at the time.
    Nowadays I just type the music and I get a really nice layout page, which needs minimal tweaking (break the page after this pause, major things like this). I’ve been using an old template with global style that use for many projects.
    Regarding your need to add text to all parts at once, it can easily be done by having this text or mark on a separate variable, which you then merge with each notes in the final score. Each part will get the same text at the correct place, and for the conductor’s score you can set the contexts to engrave this text just once per system or for each stave or for each group of staves. There’s also the “edition-engraver” (google it on github) to add arbitrary elements to existing must at any place.
    For removing bars, yes, I think that’s unavoidable.

  4. I have used Lilypond since 2004. I am an organist, a pianist, and a composer. I also recently retired from a career as a software developer. I still hold an organ position, and I still compose. I don’t see any reason to switch from Lilypond at this point.

Leave a Reply

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