For those of you unacquainted, LilyPond is music notation software. Unlike other programs such as Sibelius or Finale, which are both great in their own right, LilyPond deals with sheet music creation as source code in text files using a simple language. You run the files in a compiler, and out come beautiful PDFs of your music. It also can create MIDI files so you can hear a quick gist of what you’re working on too.
From a coder’s point of view, it is great to be able to work in your favorite text editor and work in a largely similar way that one would when working on software: code, compile, test, publish. But it’s not as hard as it sounds – beginners can get started producing sheet music scores very quickly by just going through a quick tutorial. Might not work for everyone – some of us need to be able to drag and drop the notes on the staff, or that extra abstraction layer to source code may be just one bridge too far. But the price is right, and it’s worth a try.
For those of you musicians out there who use LilyPond, you understand how useful and powerful the software is. Your music source is in simple text files, easily displayed on the web, ported, and shared. Sharing is a foundation of LilyPond engravers, and there are tons of places to find free and open scores – most notably the Mutopia project.
But creating large projects, especially transcriptions, can sometimes be daunting tasks for one individual. Manually uploading corrections to a site might be tedious, and version control might not even exist.
Now imagine people are hosting their LilyPond works on GitHub. Say it’s a transcription of some Baroque-period composition by an obscure composer, and photographic plates are available to view. You want to get it ready for your orchestra, but imagine hammering out all those notes alone. Enter open source: A team of volunteers can grab copies of the project, work on it, and merge code back in. Git handles this process elegantly, and everyone can work together on the same code base. The project is done in record time, and you can spit out parts just in time for the first rehearsal.
But wait, there’s more. Say the band director wants to try this out on the wind ensemble. Rather than starting from scratch, they can fork the project and leverage the existing code. Another person wants to grab the melodic fragments and arrange the same work for baritone sax and synthesizer – another fork. Check out code that is freely available, and rework it ad infinitum.
This might even apply to my stewing idea of crowd-developed open-source composition. I wonder what a symphonic work would look like developed by a team of composers? If we can put together things like Linux and Firefox using the open source model, why not a piece of music?