Quick: you need to produce a music score. It needs to look really great. The deadline is looming. You’ve lost your serial number for [insert program here]. What do you do? The answer might surprise you.

Lilypond is something of a cult secret in music notation circles. It’s free software for high-quality computer engraving, it runs on any platform (Mac, Windows, Linux), and it produces exceptionally good-looking output, often exceeding leading commercial programs in particularly tricky notational situations. But it could easily scare off beginners, because it isn’t necessarily graphical software. The tool generates its output from text files, a bit like the way in which a Web page is rendered from an HTML file.

What beginners don’t know is that text entry doesn’t have to be slower or more daunting – especially if you choose a tool that assists you in the entry process.

Lilypond’s language for basic music entry is actually reasonably simple. If you want a g flat, for instance, you just type “gf.” (Note: you will probably need to adjust Lilypond for your native language to get an abbreviation for “flat” that makes sense to you! Hint: “flat” is in English.) To change rhythmic durations, you use a number, so two eights followed by two quarter notes would look like “c8 d e4 f.” Because it’s text-based, you can be explicit about what you want, which avoids some of the pitfalls of graphical entry methods. If text is to be attached to a specific note, you specify which note in your text file. Most importantly, this means that entering and arranging notation doesn’t get any harder as the score becomes more involved. For complex measures with densely-packed material, or tricky notations from early music to modern composition, Lilypond continues to handle layout and rendering automatically, without intervention – just at the point many graphical programs will have you pulling out your hair.

Lilypond “Switch” How-to Crash Course

Entry itself can therefore move really fast, especially if you like to sketch out an idea on paper (or in a MIDI file) first. I recently completed my first score in Lilypond, and was surprised that – after the initial hour or two of entry – I started to really like it. Getting the first few bars in was a bit tricky as I got the hang of entry, but then, to my surprise, finishing the score went as fast or faster than it had in other programs.

Find the Right Tools

That isn’t to say you won’t want some help. Music notation is always involved, because of the sheer quantity of notational conventions used – even for fairly simple musical contexts. And while text entry makes copying fast, you’re likely to want some MIDI playback and entry assistance. In fact, I’d wager the quality of your experience with Lilypond will depend on choosing a front-end tool you like.

I experimented with various tools on my Ubuntu install, including some graphical programs that can read and write Lilypad files. If anyone is interested, there are a number of programs I can recommend you don’t use. In the end, I found that what I wanted was essentially a text editor – so I could take advantage of the speed of Lilypond’s text-based language – but with plenty of shortcuts so that I’d never get lost trying to look up how to input a symbol.

Frescobaldi was a real pleasure to use, if you have a Linux install. (That’s the case for now; efforts to port KDE and Python should mean Mac and Windows versions aren’t far off.) It’ll install a lot of dependencies on a stock Ubuntu install because it relies on KDE, but it’s a nice all-in-one tool. A PDF preview accompanies your text so you can see what you’re doing, and by clicking on a note, you jump to the correct place in the text. There’s instant access to online help and notational references. The nicest feature is perhaps the MIDI input using Rumor, which worked out of the box with an M-Audio USB MIDI keyboard I connected.

Frescobaldi

The other best-of-class tool I found is none other than omni-platform text editor jEdit, with the LilyPondTool add-on (Mac, Windows, Linux). (Thanks to a Twitter friend for the tip; thanks to Twitter’s terrible archiving, I’ve lost who you are, so say hi in comments?)

Grab jEdit, and perform two steps:

1. De-uglify jEdit. Yes, that default skin is hideous, and doesn’t look like any OS you’ve seen in the past ten years. Choose Utilities > Global Options > Appearance > Swing look & feel, and set it to something native for your OS. Reboot, and take a deep breath.

2. Install the plug-in. Incredibly, it’s a default option. Choose Plugins > Plugin Manager > Install > LilyPondTool.

jEdit’s LilyPondTool does a lot of what Frescobaldi does, with wizards for setting up scores and changing parameters and various clickable shortcuts. But it benefits from putting this functionality inside an extensible, standard text editor, which means you can do anything with LilyPondTool that you can with jEdit. And there are simply more options – there are more quick menu shortcuts for symbols, tweaks, and all the other little things you have to do in notation that you don’t realize you have to do until you get halfway through a score. That makes LilyPondTool a bit friendlier to beginners. It doesn’t have MIDI input as Frescobaldi does, but it does have MIDI playback. You even get nice tools for making templates and OpenOffice-based hyphenation of lyrics, plus a virtual on-screen keyboard to aid with entry.

http://www.jedit.org/
LilyPondTool

One part of the process I didn’t quite work out was the best MIDI import tool. There’s a simple Python script that ships with the Lilypond distribution, and it can be called from tools like jEdit+LilyPondTool. But converting MIDI to notation isn’t a simple task in any tool, so I’d have to research this further. Doing note entry in a proper MIDI sequencer, then adjusting the engraving in a Lilypond editor like jEdit or Frescobaldi seems a terrific workflow, though, if anyone has found a process that works for them.

What you might miss…

So, how does a free tool like Lilypond stack up against the newest version of, say, Sibelius?

Even if you’re a seasoned Sibelius user, I highly recommend doing at least one score in Lilypond, as it’ll give you a window into how Sibelius works, and the issues that arise in computer notation. I believe Lilypond may have even helped influence modern versions of Sibelius with its approach to engraving, though that’s only from memory – don’t quote me on that.

You will see some advantages of Sibelius. Sibelius’ graphical layout means there’s no separation between what you see and what you edit, and one big edge of the Sibelius engine from the beginning has been its ability to reflow even huge scores almost instantly. That visual process could become part of your compositional workflow, too, with on-screen clipboards for ideas and quick playback of ideas. Sibelius has also done a lot recently with DAW-style tools for MIDI, live tempo tapping, integration with ReWire, and so on. That makes Sibelius a powerful tool for creating high-quality playback right in the score.

Nice as Lilypond is, I certainly have an easier time imagining teaching students notation with Sibelius than with a text editor.

Advantages of the Lilypond approach

I commonly hear odd, defensive barbs about free software, especially in the music community. People will casually drop statements like, “but the open source community doesn’t innovate. They just rip off commercial software. And it’s just not as good.” As near as I can figure, this entire argument is often based on one or two bad experiences with OpenOffice a few years ago.

Now, some of this defensiveness comes from the fair perception that discussion of free software often centers more on philosophy than practicality. And there, I agree. Software is a tool. Philosophy matters, but you ought to be able to look at tools in more or less objective terms. You ought to be able to like using the tool.

Lilypond is a perfect counter-example. It is innovative software, period; now well over a decade old, it’s well-respected in the engraving community. I’ve been surprised to find out how many people use it, and they do so because it saves them time and headaches and they like the output.

It’s also just plain different from the commercial offerings. Its free nature means it can do things that commercial software doesn’t even try to do. (Can you imagine a major vendor unveiling a text-only notation app? Didn’t think so.)

As with any design, this means some trade-offs. They aren’t as simple as “Sibelius and Finale are for casual users; Lilypond is for hard-core geeks.” On the contrary, I found some real advantages.

Text input means backup, file exchange, and tracking revisions becomes a whole lot easier. Lilypond’s output is more like traditional engraved scores than anything I’ve seen from Sibelius or Finale, even when swapping fonts in those packages. Lilypond is uniquely equipped for doing early music notation; it makes a lot of alternative notations as easy as modern notation. Sure, that sounds like an “advanced” feature, but it’s an “entry level” feature if you happen to perform or research early music.

Also, despite improvements to things like Sibelius’ “magnetic layout” and other automated features, I find that even the newest versions of these apps still require a lot of tweaking after the fact. Lilypond still requires “subjective” tweaks – adding a page break where you want one, for instance – but I tried some tests with bars of music that broke my favorite commercial tools, and Lilypond was very hard to stump. There’s also the simple fact of the matter that with graphical tools, it’s easier to screw up the notation yourself, by attaching text to the wrong note or dragging something slightly out of place. Those changes are hidden in the graphical view, too, whereas they’re explicit in the textual score.

I don’t think one approach is necessarily better than the other. The point is, you need both. Something like Sibelius or Finale is just not going to evolve in free software. But something like Lilypond isn’t going to evolve in commercial software.

You also don’t have to choose one or the other. Thanks to MusicXML, an interchange format, you can exchange files between Sibelius or Finale and Lilypond easily. If you work a lot with scores, it’s worth a download – and the price is right.

And I don’t believe Lilypond is “for geeks only.” Give yourself a simple job, like a lead sheet, and pick a solid tool. Give it a real try, with a couple of evenings to get used to the language. I think whether you like the results will have more to do with personal preference. But I’m glad Lilypond exists, and I think you may find it’s something you want to add to your arsenal, even if that arsenal also includes one of these other tools.

For good measure, here’s a visualization of the open source contributions to the project.

code_swarm: LilyPond apr 23, 2010 v2 from Paco Vila on Vimeo.

Keep up with news from the project, and some good tips, at:
http://news.lilynet.net/

Share your experience

If you want to give this a try, I recommend both the jEdit and (for Linux) Frescobaldi routes. Each has links to Lilypond tutorials and documentation right in the program. I’ll try to work out a quick tutorial at some point, too; I’m planning a bigger set of scores and am going to give Lilypond the old college try.

Worked with Lilypond? Found a tutorial that helped you out? Got some tips? Trying it out and need help? Do share.

By the way, that score I worked on will be premiering as part of a party with operatic and musical theater types Monday in New York. Alongside digital music made by computers, it’s nice to get to work with humans, too, which is why I suspect notation will be with us for a long time to come.

New music party, NYC, Monday night 5/17

  • http://twitter.com/urbster1 urbster1

    As a graduate intern in the music technology department of a university music school, I have found Lilypond to be invaluable. I've used it for a number of projects where professors needed scores transcribed and transposed; while I could probably do this easily in Sibelius, but a. I don't have a personal license for the program and don't use it regularly, so either way I am going to have to learn the ins and outs of a particular notation program, and b. with Lilypond's "bit-exact" capabilities, it's easier to reproduce a score with all the dynamics, accent markings, and so on (and it looks great!). The documentation is also really superb, so if I get stuck it's not really worse than having to dig through, for example, the Sibelius help files– with a quick search through the documentation or a Google search (lots of online info in the mailing lists), I could solve whatever problems I was having. Like you said, the more you work with it, the easier it becomes to use.

  • http://twitter.com/urbster1 urbster1

    By the way, thanks for the jEdit tips. I've just been using Notepad2 to edit the text files, although it's been pretty painless. :)

  • http://arnout.engelen.eu Arnout Engelen

    One hugely powerful feature of LilyPond (that hard to transfer to a traditional GUI) is the possibility of creating a snippet, and referring to that snippet from different parts of the score.

    For example, say I have a simple 1-bar accompaniment riff, and I want an instrument to play this riff throughout a 12-bar blues schema. Instead of copy-pasting the riff 12 times and making the necessary adjustments, I can define '
    iff' once and refer to it several times:

    <code>

    epeat unfold 4
    iff

    ranspose c f {
    epeat unfold 2
    iff }

    epeat unfold 2
    iff

    ranspose c g
    iff

    ranspose c f
    iff

    epeat unfold 2
    iff

    </code>

    This will generate 12 bars of this riff, 4 of them transposed.

    This makes 'maintenance' of the score much easier: when I want to make a change to the riff, I only need to change it once, and all occurrences will be updated.

  • http://www.dezeo.com.ar Zajaro

    My setup ended up being composed of just the vi , lilypond and timidity for composing and csound for when I'm aplying original sounds,… I mean is not just for making scores for other musicians,,, you could very well compose and listen to your work directly from lilypond,… you could export the midi version of your score to a sequencer and use any soft synth that you like.

  • anechoic

    thanks Peter! I've been using Lilypond for about a year now and love it!

    also, check out MuseScore which is also worthy of serious use
    :)

  • http://www.createdigitalmusic.com Peter Kirn

    @Zajaro: Ah, nice setup.

    @anechoic: Hmmmm… can't seem to get ppa:mscore-ubuntu/mscore-stable to work on Lucid. But I'll give MuseCore a try, for sure.

  • Kyran

    I didn't know about the frescobaldi tool. Great find!

    I guess the difference between somethink like sibelius and lilypond is not unlike the difference between word and latex.

    Latex is not quite suited as a quick sketchpad, because it has a bit a of learning curve and requires some setup, but the effort you put in pays off greatly at the end during big projects.

  • http://andrew.hicox.com plurgid

    @Zajaro … good gawd man. vi … really.

    you use vi to edit text files which you will then "compile" in lilypond (for notation) or csound (for actual sound).

    if that's true, you officially win the "building a skyscraper with a hatchet" award.

    really. I solute you. That right there … that's the definition of tenacity, kids.

    … also lilypond looks pretty cool and useful.

  • http://abletonlife.com Ryan

    Thanks for shining light on this hidden gem! Gotta love free things that are made with dedication and passion.

    -Ryan

  • http://www.computermusicblog.com Evan

    I use lilypond for all of my scores. If you want to do anything that is outside the normal range of notation, then lilypond is absolutely your best bet. I like to mix semi-notated and loosely-notated music with more strict traditional notation … it's just so much easier to do in lilypond than in any other program.

    Also, if you are good with a keyboard, then entering notes via text is about a million times faster than using a mouse.

  • Jeff

    Probably not the best place to ask… but I'm playing around with Lilypond and JEdit on Mac. I got some notes entered and preview working, but is there any way to have preview update automatically as I'm editing or do I have to hit the preview button again every time I want to see an update?

  • Refund

    is there a frescobaldi style editor for lilypond in windows? with a display while you edit function?

  • Pingback: The Week Link – 10.05.15 « The-Source.com

  • poorsod

    Sibelius still sucks at drawing slurs after all these years

  • Random Chance

    @Refund: Perhaps there is, but you should be able to make do with something like Emacs (or any other text editor that you normally use) + a keyboard shortcut for compile and open in Acrobat Reader (or whatever PDF viewer one normally uses on Windows these days). That's how I edit LaTeX or other formats that are "compiled", and it works on Mac, Windows, Linux, etc. (for me crossplatform capability of the tools I use is often more important than having one really great, polished and convenient appliction which only works on one platform – YMMV).

  • Random Chance

    @Jeff: I do not know JEdit (only use MacVim and Aquamacs under Mac OS), but generally if you "recompile" the source of a PDF document, Preview will (at least upon switching focus to Preview) reload the PDF if it has since changed on disk. It's not 100%, but it's good enough for casual editing and the occasional preview (because if you have to preview every time you make the slightest change in your document, you're far better of with WYSIWYG tools (trust me, I had the same problem with QUCS vs. SPICE for circuit simulation)).

  • Arne Peters

    MIDI Input in jEDit

    There is MIDI Input which works with jEdit’s LilyPondTool, thought not listed in jEdit's Plugin-Manager.

    It converts MIDI key strokes to LilyPond pitches in relative mode. It is available

    from
    http://www.musicbyandrew.ca/MidiInput.jar . Source code can be

    found at
    http://www.musicbyandrew.ca/MidiChords-source.zip

  • Tal Eisenberg

    It's very nice to see LilyPond getting some proper spot light after all this time. I've been using it for the past 5 years or so for professional music type-setting (that is when I'm doing it as a paying job) since the outcome is indeed much nicer than Finale or Sibelius.

    For composition tasks it's a bit too abstract for me, but there were times when I wrote a draft in Finale and for the final version rewrote it in LilyPond just to get a beautiful engraving.

    In the nature of open-source software, they also had an enormous number of little tweaks and new features added through the years and useful updates come out on a regular basis (unlike Finale's yearly bloating).

  • Refund

    Jedit did the trick for me!

  • http://www.fejalish.com fejalish

    So great to see two LilyPond GUIs I haven't seen before! I've been writing in Rosegarden for some time and then exporting to LilyPond, tweak in gedit and done. This promises to make my life even simpler!

  • Billy

    Thanks for mentioning this, Peter. I had discovered LilyPond several years ago while looking for notation software, but was intimidated. Revisiting it now with knowledge of LaTeX makes it less scary.

    I think I'll still have a use for Sibelius (ease of composition), but the next time I need a final score, I'll be trying LilyPond.

  • http://www.gsabo.com/ Greg Sabo

    Glad to see you got a some mileage out of my LilyPondTool recommendation. I've been using it for almost a year now and it works great for composition.

    One thing that I like about LilyPond is that it's very easy to use it for algorithmic music.

  • Polite

    Wow. That's cool. Actually, i wouldn't mind something that would convert musical scores into lilypond script. I find reading that a lot easier than reading notation. :P

  • Evgeny

    Thank you, Peter. I use Lilypond with Canorus or Noteedit (or Denemo) + Frescobaldi on Linux.

    Quick visualy insert notes of first voice (withwithout bar set), than copy lily-code (good – in Denemo and Canorus – in special window) and past them to Frescobaldi for editing and engraving. After that – second voice, etc. And after all – lyrics.

    For nonmetric music (ortodoxy church songs), (Canorus or s.e.) + Frescobaldi + Lilypond – best tool. Full free.

  • http://musescore.org lasconic

    Give MuseScore a try : http://musescore.org

    MuseScore supports lilypond export, midi inport and export, MusicXML etc…

  • Pingback: Hopping Around the LilyPond « The Field Guide

  • Pingback: Initial commits « After the Crash

  • http://www.mcmusiceditor.com Reinier

    Thanks Peter for your review! However, Lilypond is too complex for me and also for my students of the ArtEZ Conservatorium Netherlands…so I made the free MCMusiceditor, based on a modification of the ABC-language…Try and you will agree with my students: it's so easy…

  • Tony

    @plurgid

    The reason one might use vi as the editor for lilypond, is because it’s the fastest way to enter score, as a result of its decades-long evolution as a programmer’s text editor. I would certainly advise new users of lilypond to start with JEdit, same as sax players start with soft reeds.

  • Andy

    THANK YOU for this tip and to bring it back into my mind. Although I allready knew Lilypond I never used it. Know I've to do a transcription but I hesitated to buy a notation software. Now I don't have to spend any money thanks to Lilypond and thanks to your reminder.

  • neily_b

    To make jEdit even more useful, I use this over Eclipse as my main code editor. There are a couple of other plugins worth investigating.

    Minimap – creates a mini view of your code.

    Buffertabs – simple buffer/window management

    TaskList – Detects "TODO: " across all open documents

    EditorSchemeSelector – quick syntax highlighting theme selection

    SuperAbbrevs – Doesn't come with any Lillypond abbrevs out the box but they're easy to write:

    Plugins -> Plugin options -> SuperAbbrevs -> Abbreviations -> "+"

    Enter in the boxes:

    Abbreviation: "Score"

    Expansion: "score {

    <>

    midi {

    $end

    }

    layout {

    }

    }"

    Then when you're in back in the editor, type "score" then hit Tab, it will insert the code (very similar to textmate)

  • neily_b

    try that again:

    <code>

    score {

    <>

    midi {

    $end

    }

    layout {

    }

    }

    </code>

  • Kevin

    Is it feasible to generate an entire orchestral score with Lilypond? How well does it handle multiple staves?

  • Seth Heeren

    @plurgid

    I use vim (improved) all the time. Note that I use for all my other text processing needs so it's just a no-brainer: I got it down and no need to /learn/ another IDE (Sibelius is just that, too).

    @Kevin

    Do try? Also, do a google search for filetype:ly +orchestra, then click a link, Ctrl+A,Ctrl+V, open frescobaldi, Ctrl+N, Ctrl+V, Ctrl+M and presto: you are viewing an orchestral score just typeset by lilypond on your machine.

    Thanks peter, I have found frescobaldi just today and it might give me reason to switch from vi for the lilypond work!

  • robert

    Kevin: yes, lilypond handles full scores well. It'll do parts w/transpositions from scores, and the text-based nature of the input means (for me) that it's easy to logically separate the various parts and sections of a full score and build the final output by putting them together with a /score section. It does a really nice job with vocal parts (with aligned lyrics), too. Recommended.

  • http://szelrozsa.org Harry

    I've used Frescobaldi and Lilypond to do a string orchestra score and lots of charts for my band. Charts are at http://szelrozsa.org/charts.

    There is a bit of a learning curve, but it works very well. Output is perfect and I can share the PDF output easily with my band/orchestra and not get involved with the usual incompatible secret code nonsense that commercial software inflicts on users.

  • Pingback: Utterly Brilliant Fan-Made Jonathan Coulton Music Video, with Lilypond Notation Cameo

  • u_li

    Two things to note (that don't seem to be mentioned in the text or the comments:

    - You can't "exchange" files between Lilypond and Finale/Sibelius, because you cannot convert a lilypond file to MusicXML (unfortunately).

    - It is said several times that LilyPond isn't usable as a tool for quick sketches because of the learning curve. This isn't quite correct. You can't use LilyPond quickly as a sketching tool. But if you have gone a little bit on the learning curve it actually _is_ very good for simple music examples or sketches.

    This is even more true if you consider that you can include shorter LilyPond snippets directly in OpenOffice (throught the OOLily Plugin). This is way more convenient than exporting graphics and inserting it in a word processor.

  • Pingback: MuseScore 1.1, Free and Open Source Notation, Rivals – and Plays with – Sibelius 7

  • Albert

    You stated in the article that “You also don’t have to choose one or the other. Thanks to MusicXML, an interchange format, you can exchange files between Sibelius or Finale and Lilypond easily.” How do you export MusicXML from Lilypond? A quick Google search of the issue reveals that this feature is still in development. In 2012.

  • Trevor Dixon

    I made this: http://lilybin.com. I think it’s a good tool with potential to be somebody’s main editor.

    • Paul G. Janzen

      Nice Job. Great if you don’t want to install much software (or are not allowed). I got some errors in more complicated songs (where I changed defaults and used other advanced techniques) , but it works great in normal usage.

  • Iamanonymous

    When I first used LilyPond, version 1.2 or 1.4, it was really a geeky aplication, with few users and the output was not that good.

    At the horn group, we wanted to play a piece for which we only had a hand-written score and I was asked to do the parts. After thinking about Sibelius, I decided to give LilyPond 2.6 a try. On the next rehearsal, I put the parts on the stands and when the others saw the result they were astonished  about the quality: «what did you use to make them?».

    When I now review these parts I see some errors, LilyPond has improved a lot since then. But even the results from 2.6 were already better than anything else. It is not that other software is bad, but rather that musicians do not know how or want to spend hours mouse-moving slurs, notes, ties, beams, accidentals to get a decent result, which is the case for everything else.

  • Paul G. Janzen

    In my experience I would say that Sibelius is a tool for a quick job (besides the playback feature you mentioned), you get to an acceptable result fast. But if you need, say 200 songs, formatted in the same way, or even mixed in a song book, where the songs continue in the next page, you will soon realize that Lilypond is the right tool. It is a real pain getting all the 200 songs formatted in the same way in Sibelius (I know, there are templates, styles and plugins, but you still have to open all the songs to see if everything is like its supposed too). In Lilypond, it is a matter of changing one setting (or two) in one place, and with one command, all songs (pdf and midi) are updated. A songbook, is a breeze with Lilypond, not so much in Sibelius.
    I use both to accomplish my goals (Using Sibelius since version 2, (before that I used Finale), and I met Lilypond 2 years ago. They are both great tools in my opinion.
    Great article, by the way!

  • Pingback: How to write music with LaTeX