The Problem With Being a Composer AND a Programmer

Posted April 7, 2012

I was editing dynamics and articulations in a piece today. One of the things I think about most when working in creative software is usability issues. I’m starting a small collection of notes detailing what I like and don’t like about working with music notation software. Someday soon I’ll write a post about it. In the meantime, here’s some stream–of-consciousness revealing the road this thinking often leads down.

The problem with being a composer AND a programmer:

Using Sibelius to write mah trio. I really like their use of the keypad. Alrighty, everyone needs to be DOUBLE FORTE YEAUH. I wonder if there’s an easier way to duplicate dynamics across multiple parts? Let’s see what the manual has to say. Hmm, looks like it’s only via this copy-paste thing, kinda useless for small scores. I wonder how Finale does it? Did they release a new version? Oh god. Sibelius 7 looks kinda pretty with the ribbon going on, but Finale 2012 still looks awful. Though I guess people are really productive in it. I wonder what note entry is like? Lemme find a youtube video of someone demoing it. Found one. …Okay this dude is boring. And it looks to be pretty much the same only different from Sibelius. Oh hey, I remember LilyPond is like music notation with LaTeX. I wonder if there’s a visual editor for it? Oh, right, MuseScore! That’s cool, I’ll download it. Interesting, this is basically a FOSS Sibelius clone. But it does export to LilyPond. And it imports MusicXML too! Does Sibelius do that? Hmm, v7 does but I only have v6, so I need a plugin. Oh look, the MusicXML people wrote this “Dolet” plugin to do it. Hmm, but it’s probably not guaranteed to be clean with spacing and such. I wonder how much info you can store with MusicXML? Let’s look at the spec . . . god this is verbose. Figures, it’s XML, and the fundamental data is pretty complicated. Maybe it’d be faster to edit LilyPond files directly? Oh look, a jEdit plugin that shows the score updating as you work on it! But damn, who uses jEdit anymore? I want something like ruby-processing that will just update the rendered score as I work on it in whatever editor I like. Looks like there’s some tools but they’re Linux/BSD only. Damn, I really need to get an Ubuntu partition. And LaTeX’s a pain to write anyway. Oh wait, what’s this thing, Abjad? Interesting! A python library that wraps LilyPond so you can compose in a REPL and periodically view the score as you’re working on it. Pretty neat! I wonder how hard it was to wrap the LilyPond concepts in a pythonic library. Furthermore, how fast does LilyPond render? Maybe python isn’t the best solution for this thing. What was that MaxMSP plugin I used in my Computer Music class? Oh right, JMSL! Let me check it out, and it’s a java library, maybe I can use it in Scala? Oh right, that shit’s expensive. I wonder how fast document rendering is done in Word and Sibelius and all those programs. Oh hey, MuseScore’s open source, I can just look and see how they did it!

And before long you’re extracting rendering modules from MuseScore and looking at native Cocoa and Win32 painting APIs while studying LaTeX line breaking algorithms as an analogue to note spacing in music staves. I’m sure visual artists go on similar tangents, but I’m really terrible at any sort of visual art so the usability issues in GIMP or or Photoshop don’t occur to me nearly as easily as those in notation software and DAWs.

[EDIT] I’m also perfectly aware you don’t need to also be a programmer to get distracted like this, but adding the programmer bit gives me the context to link to some cool computer music stuff.