Thirty hours later

My plans to managing my LilyPond addiction have been working well. Ten days ago, I began restricting myself to 3 hours a day; I've managed to stick to that. It's been immensely refreshing -- I'm no longer managing a beast with an unending list of problems to work on. Instead, I look at the problems, pick out the most important or most unique (i.e. difficult for other people to work on) issues, and work on those for my allotted time. Other issues are filed away in the bug database, where somebody (possibly me) can work on them later.

Quite apart from the morale boost, this has given me time to get back to my actual research. I have to admit that I was a bit surprised about how easily I got back into it -- I'd forgotten how interesting it was. I'd spent over a month working other stuff, both lilypond-specific, and helping out other people in the lab.


I've decided to reduce my lilypond time to 2 hours a day for the next few months. This isn't part of a gradual withdrawl from lilypond [1]; rather, it's because I have a few conference paper deadlines in April and May, and I want to make sure I do a good job on them.

(I'm not ruling this out at a later stage; it's a great way to force other people to take over your tasks).

So the general rule is 2 hours a day. Any day that I'm not at home (i.e. wake up and sleep at home) is an exception; depending on the circumstances, I might spend more than 2 hours, or not do anything at all. For normal days, my time will be prioritized as mentioned before: urgent emails, mentoring contributors, non-urgent emails, then working on various problems or feature requests.


PS. no, this is not a "new year's resolution"; it's pure coincidence that I switched to 3 hours ten days ago and started looking ahead at what I wanted to get done in the next few months.

Posted at 2009-12-31 21:20 | Permanent link | Comments

Managing my LilyPond addiction

Since it's the end of term, it's time to look back and reflect. When looking back, I see that I have a problem. I seem to be addicted to working on LilyPond.

Like all great addictions, it doesn't even make sense. Yes, I first got involved because I was using it for composition, it was a great piece of software, and I wanted to give back to the community.

After a few years, I stopped composing, as I shifted from music composition into teaching/performance and then into computer science. But I kept on working on LilyPond. In fact, I did more than ever. I kept on doing more and more.

In the past three days alone, I've exceeded 20 hours of LilyPond work. Not "using lilypond for composition", not "using lilypond to generate images for my PhD research", and definitely not "using lilypond to research music notation or presentation or computational aesthetics" or anything research-oriented like that. No, 20 hours of mentoring new contributors, preparing the build system for the new website, getting the 2.12.3 release out, discussing documentation restructuring, etc. No wonder I've barely done 1 week of actual research over the past four months!

This has to change.

I hereby announce that starting tomorrow (21 Dec 2009), I'm only going to do 3 hours of lilypond work each day. That's still 21 hours a week, which is very respectable for a volunteer job. And it's not going to count working on other open-source projects; that time is separate from lilypond time.

My time will be carefully prioritized:

  1. Urgent emails.
  2. Mentoring contributors, new and old.
  3. Dealing with non-urgent emails.
  4. Working on stuff that only I can work on (the Grand Unified Builder, releases, and the website).
  5. Working on complicated stuff that I can do much faster than other people (large-scale documentation rearrangements, build system stuff, etc).
  6. Working on other issues.

I'll record time in 15-minute blocks; when I reach 3 hours, I'll stop for the day. My apologies in advance to any contributors who send me questions after this cut-off; you'll have to wait until the next day. Speaking of that, I define "a day" as "the period between waking up"; my sleep schedule sometimes has no relation to the visibility of the sun.

This will undoubtedly slow down lilypond development -- if we have a lot of new documentation contributors, then I'll be doing less release work. And it would be quite difficult for anybody else to pick up that slack; GUB is a beast to get running.

I make no apology for this; my time is my time, and I consider keeping new contributors happy to be more important in the long term than having more releases or better-quality releases. If anybody wants to volunteer to mentor a few people, that would obviously reduce the burden on me, thereby allowing me to spend more time on releases, the build system, or whatever else occurs at a lower priority level.

Posted at 2009-12-20 14:58 | Permanent link | Comments

A tale of Ice and Fire

Snowies! It finally snowed here! Snow makes everything so pretty... and also reverts me to a mental age of 9 or so, when everybody would rush to the windows whenever somebody said the magic word and watch the swirling flakes with awe. I was actually jumping up and down in the lab this afternoon. Fortunately, the lab was empty, so nobody knows my deeply embarrassing secret.

Sadly, the snowfall only lasted about 20 minutes, and began to melt immediately. I went food shopping 3 hours later, and the snow was almost all gone -- replaced with ice. It melted, but then froze. There was a fairly substantial amount of black ice around... not the most I've ever seen, but definitely noticeable. Especially in my running shoes, which turned out to be quite flat. I hadn't noticed it before, but they're really not intended for slippery conditions.

On the heat front, it's still working. But the (deliberate) heating times are inconvenient to say the least -- the residence only turns on the heat for one hour in the morning, and from 18:30 to 23:30 at night. If you come home at 17:00, you'd better be prepared to leave your jacket on!

At first I thought the "heating times" were a quaint British custom (like high prices and football violence), but when I mentioned it to a labmate he was shocked. Apparently it's just one more instance of the university accommodation sucking.


Real work was delayed for another week: I've gotten involved in the programming for the bow sensor project. This is real EE&E programming -- it's on a PIC microcontroller (smaller than any of my fingernails). We need to pore over the datasheet, figure out that if we put 0x50 into register TXRDYSND.H and 0x01 into TXRDYSND.L, then we can put the value we want to send into the TXTRMT.H / TXTRMT.L register pair. Different registers have different functions depending on what you've put into other registers previously. Fun!

I'm really enjoy this stuff. This microcontroller in particular is collecting data from 4 or 5 different sensors, then sending it all over a bluetooth chip. We have another bluetooth chip on the other end, hooked up to a RS-232 port. The undergraduate is quite good at hardware, and it's all his own design. So we do a combination of programming, looking at the output on a scope, and sometimes even sticking a multimeter on the wires or copper to check if any of the etched tracings are accidentally touching. We think that happened once; after he carefully scraped away a few places that were suspicious, the output looked much better.

In case you're wondering, the bow sensor is a long-term project in the lab (somebody's going to have to work on it in the future, and having somebody with a passing knowledge of the system is will definitely make that easier), and I checked with my supervisor before getting involved. The guy's project is almost entirely the hardware, and in industry they'd have a hardware+software guy working on it, so my involvement isn't going to be a problem for his grade.


Apparently it's Christmas soon. Feels like early Nov to me, but oh well... I bought a pair of slippers for the lab. No, they're not the wonderfully girly fuzzy slippers I got for home; there are "manly house-wear", as the undergraduate put it. Dark blue, not fuzzy, etc. I change into them as soon as I get to university.

I also finally bought a violin shoulder rest, and started practicing Bach. No, I'm not going to say something horrible like "it eases my loneliless". Nor am I going to say something even more horrible like "playing Bach makes me realize that we're all together in a cosmic sense". No, I'm practicing Bach (the second solo violin sonata or partita, whichever was easier. It's the one that's all fairly easy, until the last movement which is impossible) because it's an appropriate level for me, and I need to get better before I can start playing in public with other people. If I'd started earlier, then I'd be seriously looking at joining an orchestra in the new year, but I doubt that I'll be good enough. Also, having a £50 violin doesn't precisely help. Not that I'm complaining -- a poor craftsman blames his tools. A good musician should sound decent on any instrument; a poor tone quality doesn't exist bad intonation or lack of bow control!


Buying that shoulder rest has caused me to re-evaluate my research direction. The current plan was to a year really nailing the rhythms -- how do musicians perceive them, how can a computer grade like that, analyzing music to automatically create meaningful rhythmic patterns, etc. I still think that's not a bad idea.

However, there's nothing for me personally in it. Oh, I'm really looking forward to doing the rhythmic analysis and whatnot... but I don't need to practice rhythms. Violin intonation, on the other hand, I really do need to practice. But in my original plan, I wouldn't even start that for another year.

Now, I'm not thinking about abandoning rhythms -- I'm just musing with the idea of banging out a quickie. Slap together a python application for testing violin scales. Nothing fancy... no finger patterns, no arpegios (although those wouldn't be hard to add), no grading mechanism supported by extensive surveys of muscians, and no fancy graphics or animations. Just an objective listener that gives me a score. Something that stops me from blasting through stuff and saying "meh, close enough".

It should only take a day or two... hey, that would make a nice Christmas present for myself. "Merry Christmas, now start practicing your scales seriously".


Last night (Saturday), I tried to do laundry three times, but there were no free washers at 21:30, 22:30, and 23:45. This morning (Sunday), I went there at 11:00 -- completely empty. I'm sure there's a joke in there somewhere.

Posted at 2009-12-19 21:49 | Permanent link | Comments

The grass is greener

I was walking back home at 10am a few days ago, happily exhausted, and I happened to notice a sloped lawn of some houses next to my residence. That grass was really green! I then started looking around at other grass -- the corner of a wooded area, stuff growing in cracks on the pavement -- and yep, it was all really green. Much greener than the grass in Vancouver!

Granted, the last time I was in Vancouver it was late summer; not precisely a time noted for having lots of rain. And come to think of it, I can remember looking out the kitchen window last year and being surprised at how green the lawn looked. (especially my parent's back-yard lawn)

But hey, it made a nice introduction to this blog post.


My teaching ended almost two weeks ago, and I immediately shifted into my "sleep whenever I want" schedule. This normally results in a 26-hour sleep cycle (awake 17 hours, sleep 9 hours), but for the first time ever, I ended up on a 14-hour cycle. Awake 9 hours, sleep 5!

I felt great, though. And it was useful to have the shorter cycle, because it meant that I spent some time at university by myself (so I could get work done), but also some time there when other people were around (so they could test what I was working on).

Oh, as for "what I was working on"... half the lab is now in either Australia or New Zealand, for a series of conferences and/or workshops. I was preparing an electronic clarinet that plays in 19-tone equal temperament and unearthing a two-year old version of rosegarden with a 19-tone equal temperament pitch tracker. I was happy to volunteer for the task, but I underestimated the amount of work required.

I'm now porting the ancient rosegarden pitchtracker code to the latest version (using Qt4 instead of Qt3). I'm happy to report that so far, it's going exactly on schedule: this job should take a week.


Granted, that's another week that I'm not doing research. Speaking of research, I'm seriously reconsidering whether to include a metronome in the rhythm game. About half the people I've showed the game to (and everybody over here) have complained about the metronome. Or rather, they've complained about having to follow the metronome. (yes, I'm sure there's a pianist or singer or whatever joke in there somewhere)

But there is a serious issue there. I did a few quick tests on myself -- I had the computer give me a 4-beat metronome introduction (set to a random number between 60 and 120 BPM), I tapped the rhythm, then the computer told me my tempo. I generally varied between -5 BPM and +10 BPM. Now, I'm a great ensemble player. I'm not claiming on being the best musician ever, but when it comes to rhythms, aligning rhythms, keeping track of what everybody's playing, etc., I'm above average for a classical musician with 20 years of training. So if I naturally vary the tempo by that much, there's no point penalizing students for doing the same!

Basically, "with metronome" tests your ability to play rhythms in a large ensemble (say, an orchestra). But when you're playing chamber music or in a private lesson, the tempo is much more flexible. I'd estimate that in a normal "simon says" type of private lesson (teacher claps a rhythm, then the student claps it back), the teacher wouldn't complain if the student was +- 20% of her initial tempo -- and probably wouldn't even notice if it was +- 10%. (yes, I should spend more time looking at psychology papers to find exact numbers for these)

So I'm now thinking that the most useful rhythm training tool would give an initial "target" tempo, but then stop the metronome and let people clap or tap the rhythm. Technically, this means that I need to detect the tempo of the student's exercise. This is a well-known problem in Music Information Retrieval, but this application has special constraints. First, it needs to be very reliable; we don't want to give students bad grades because the tempo-detection algorithm gives the wrong answer. Second, it needs to be robust against incorrect rhythms. If somebody taps four 8th notes instead of four 16th notes, the tempo detection should still work.


All in all, it's looking like the actual rhythm survey won't happen until January. This week is devoted to cleaning up the mess of previous research in the group (i.e. the rosegarden thing); next week I'll start the tempo detection in earnest.

Posted at 2009-12-09 20:03 | Permanent link | Comments

Recent posts

Monthly Archives

Yearly Archives


RSS