Back into Lilypond with Elysium

I’ve recently returned to working on scores with Lilypond thanks to the Elysium IDE for Eclipse. Development on Lilypondtool for JEdit stopped more than a year ago and it definitely cramped my style to go back to a simple text editor. I even resorted to MuseScore for a recent project thinking that my needs were simple enough to be met by the program. (Maybe “resorted to” is too strong a term–I love the idea behind MuseScore, I want to support MuseScore, I want others to support it, too.) And MuseScore mostly pulled-through for me, but working with it made me miss Lilypond even more.

So I searched for a Lilypondtool replacement and found Elysium. The installation with Eclipse was straightforward and Elysium is working well for me. I find Eclipse to be harder to get around in than JEdit. It’s likely a much more powerful application, so one day I may be thankful for the time spent getting it running, but for now it feels like overkill for my needs.


This month’s score from Post & Beam is Fencepost. This is the last song I wrote for the record and has become the sleeper hit of the release.

Download the score as a pdf file: fencepost.pdf
Download the score as a Lilypond .ly file:

Notes on Fencepost

  • The cFCFAb tuning is one I came to after trying a more standard minor (fCFAbC) or sawmill (cFCFG) tuning. I use a Pythagorean temperament based on F which doesn’t change the tuning of the C’s and F’s very much, but makes the Ab significantly flatter than an equal-tempered Ab.
  • The whooshing, windy sound throughout (heard prominently during the intro) is generated by walking on a pair of foot pedals, almost the way you would pump an old pump organ. (You can see this motion in the video.)
  • While recording, I kept missing the foot pedals and accidentally stepping on a mic stand instead. I decided to embrace the resulting bass drum thumps and include them in the piece.
  • Yet another song with bird imagery (YASWBI).

Ice Age

This month’s score from Post & Beam is Ice Age.

Download the score as a pdf file: ice_age.pdf
Download the score as a Lilypond .ly file:

Notes on Ice Age

  • I call this banjo tuning the “So What” tuning since it produces the same voicing as the horn chords in the Miles Davis tune “So What”. (Bar all four strings at the second fret. Strum. Release. Strum. Whattya know! Modal jazz and mountain modal banjo tunings…same difference.)
  • I wrote most of the lyrics while pushing my son around in his stroller, wondering what would be worse: global warming or my first upstate New York winter in ten years.
  • The electronics part was originally all about a piercing drone that slowly oscillates between a and b-flat. The movement between the pitches is based on the gestures played by the banjo and would sometimes produce amazing microtonal difference tones. Listening back to my recordings I realized how painful the experience could be for the audience. With the encouragement and discerning ears of Troy Pohl I pushed the electronics far into the background.

Born in the Desert

In continued celebration of the release of Post & Beam, I’m posting the score for Born in the Desert.

Download the score as a pdf file: born_in_the_desert.pdf
Download the score as a LilyPond .ly file:

Each month I’ll post another score for a piece on the album, until I’ve shared them all. The scores will be available as pdf files and as Lilypond files.

The scores are for acoustic, “unplugged” versions of the songs on the album. All the electronic gewgaws and interactive foofaraw have been left out; they wouldn’t make much sense unless you happen to have a sensor-encrusted banjo plugged into an arduino and a laptop. I think these songs are perfectly playable without the electronics, anyway. In fact, most of them existed that way just fine for 100+ years before I got my mitts on them.

Notes on Born in the Desert:

  • I think I got the four note motive that spans a minor 7th from a Bob Dylan tune.
  • I wrote most the lyrics while riding my bicycle.
  • I later tightened up the lyrics and squeezed them into a formal scheme where the second line of each pair of couplets becomes the first line of the following pair of couplets. (I’m sure some sainted English major can tell me the specific poetic form that I took the trouble to reinvent.)
  • The banjo is played using a two finger, thumb-lead style. Thanks to Vic Rawlings for teaching me the mechanics of this picking style.
  • There’s an extra bar added to the end of each section. The Carter Family recordings have these kind of extensions sprinkled throughout, but it’s just as likely I picked this up from Olivier Messiaen or Igor Stravinsky or Philip Glass or Joni Mitchell–all of whom I heard long before the Carter Family.
  • I posted an earlier version of this score last summer. This one is the more correctest.

Hopping Around the LilyPond

I’ve been experimenting recently with the open source music notation software LilyPond (thanks CDM!). I had looked into it in 2005 or 2006 and couldn’t understand how it would be of much use to me at the time. I think I recognized the flexibility of LilyPond, but couldn’t justify learning a scripting language (programming language?) when Finale met most of my notation needs. Since then I’ve become increasingly frustrated with Finale–more reluctant than ever to shell out more money for another incremental upgrade that never seems to provide the features I need. At the same time I’ve become more interested in creating non-standard notation, and so I developed a workflow in which only bare bones musical notation was produced using Finale, with the rest of the layout work done in a graphic design program like Illustrator. I’ve also been working more with tablature for five-string banjo, which has never felt comfortable in Finale.

So when I came across LilyPond this time I immediately noticed the support for non-standard notation, everything from Gregorian chant notation to proportional notation found in contemporary music, and of course, tablature. I also saw examples of common (for me) notation tweaks and features such as staves without bar lines; staves in multiple, simultaneous time signatures (that align!); note heads without stems; staves without staff lines (blank staves); note clusters; quarter tones; various accidental-handling schemes, etc. More encouraging was the fact that these features, while not always highlighted, also weren’t buried in the back of the documentation and were presented as viable (even desirable) notational choices. And did I mention that the output looks amazing! LilyPond produces gorgeous scores.

With those encouraging signs I jumped right into the tutorial and quickly decided I would try to notate some of my songs for five-string banjo. After about about a week of daily half-hour sessions I had a usable score for “Born in the Desert” and a new found enthusiasm for LilyPond.

Download the score as a pdf file: born_in_the_desert.pdf
Download the score as a LilyPond .ly file:

Working with LilyPond

LilyPond uses a scripting language for all input: there’s no GUI, no point-and-click, no pretty graphics. I suspect my initial reluctance to try LilyPond the first time around was largely a result of this structure. (“What? I have to type out a bunch of ASCII? And then compile it to see the result?”) After a short time with the language, however, I found I quite enjoyed working without a GUI. Here are a few reasons why:

WYSIWYM: LilyPond operates on a “What You See Is What You Mean” principle. I like the fact that I can encode the information that’s important to me separately from its presentation. Working with tablature provides a good example. In some tablature programs, your data only “looks” like actual notation. Behind the scenes it’s actually a collection of graphics commands and specifications–a drawing that resembles music. If you decide later to extract the notation, or even simply transpose it or try an alternate tuning, you quickly find you’re stuck; there’s no (musically significant) “there” there. In LilyPond, you encode the important data and then decide how to present it. If you later change your mind about the presentation, the original data is still around, preserved in a musically sensible manner.

Variables: I may be more of a programmer than I realize or admit to being, since I immediately grabbed on to the powerful options presented by variables. Anything that can be represented in LilyPond can be assigned to a variable: from a recurring rhythmic motive, to a sequence of pitches, to an entire staff of notation. This provides  composers with the ability to generate a personal “language” of modules.

I used two simple variables in the score for “Born in the Desert”. One holds a recurring “pinch” gesture that will be familiar to fingerpicking guitar and banjo players. I named it “pinch”

pinch =
< g’\5 d’ >8

This simply creates an eighth-note chord consisting of a d and g above middle c. The “\5” after the g tells LilyPond that this note belongs on the fifth string.

The other variable contains a similar sequence of notes, a sixteenth-note g on the fifth string played by the thumb followed by a d on the first string plucked by the index finger. I named this variable “ti” for thumb-index.

ti = {
g’16\5 d’

My use of these variables is far from earth-shattering but felt wonderfully convenient. Every time I needed to represent these gestures all I had to do was type \pinch or \ti.

Note to self: I enjoyed how useful writing comments to myself could be. If something wasn’t working exactly how I wanted it I could simply add a comment like “% ??? what’s going on here? why is the second verse not aligning the way I expect?” or “% FIX This bar may need to be transposed.” These kinds of placeholders are nothing special in a word-processing environment, but when working with a graphical notation tool I often resorted to maintaining a separate “to do” file that was clumsy to use since it required including wayfinders like: “violin part, page 6, bar 23, beat 1: …”

And here are a few frustrations with Lilypond, all having to do with its script-based nature:

“error: failed…”: Seemingly trivial lapses in syntax can produce disastrous results. More than once I forgot a curly-brace or a quote and witnessed a dismaying string of errors pop up in the console when I tried to compile the score. A little bit of code management and common sense goes a long way here, such as indenting blocks of code and adding plenty of comments. I also found working with LilyPond within jEdit provided excellent color-coding of syntax.

Move it!: Sometimes I wanted to nudge a notational element or move staves a bit closer together. With Finale or Sibelius there is often a simple click-and-drag solution. in LilyPond I was back to poring over the documentation to find the correct \override statement and which engraver to invoke. Sound tricky? It is. And for simple fixes it was frustrating (though I’m sure with time the simple \overrides would become second nature). The one consolation is that the same \override principles are used to move practically _anything_ in LilyPond, providing a degree of flexibility that Finale or Sibelius simply don’t offer.

LilyPond Life

My next step with LilyPond will be producing scores for more banjo tunes to be released in conjunction with my upcoming CD. I’m particularly interested to find out how flexible the tuning schemes for tablature can be. LilyPond’s banjo tablature supports a number of common tunings already. I wonder how will it handle the non-standard tunings in some of my pieces. Then I hope to tackle some of the more outlandish notational problems in my existing works that have previously prevented me from rendering them electronically.