DrumBurp ain't dead - lots has been happening!

Been a while since I wrote anything about DrumBurp. I actually wrote a big post detailing progress about 6 weeks ago, but my internet connection crapped out and I lost the post. So, what’s been happening?

New stuff!

Well, I’ve added a lot of new user-exposed functionality to DrumBurp. The major features are:

  • Printing
  • Export to PDF
  • Greatly improved ASCII tab export
  • Alternate repeat endings
  • More control over fonts and sizing
  • Display/editing of song metadata in the main window
  • Undo/redo framework
  • Display/editing of the drum kit in the main window
  • Toggle display of various things: song metadata, drum kit key, empty tab lines, time count.

Here’s a screenshot of what DrumBurp looks like now:

DrumBurp in April 2011
Lots of new features and a neater display

Note in particular the fact that the song metadata is now displayed in the same window as the rest of the score. This is the same way it appears when you print or export to PDF, so you have a much better idea of what you’re getting now. On the left we now have much more direct control of what fonts are used for various elements of the score, and what size they are.

There are also a bunch of toggle controls at the top, to the left of the printer icon, which control what gets displayed and what doesn’t. For example, to save space we can tell DrumBurp not to display any tab lines without notes in them:

DrumBurp without empty tab lines
Leaving out empty lines saves space

Getting my hands dirty

I’ve also been working on a lot of behind-the-scenes refactoring to a) make DrumBurp quicker and nicer to use, and b) to tidy up a lot of technical debt to give me a chance of implementing some future features I want.

The biggest change I made was to stop drawing each individual note position in the score as a separate graphical primitive object: big scores have tens of thousands of these, so it was using loads of memory and slowing DrumBurp down hideously. I now draw each measure as a separate object, which draws all the notes it contains – it’s a vast speed up over how I was doing things before, and it’s actually a simpler model too.

Yes, but is it any good?

Well, I think so 🙂 I joined a new band back in January, and that’s meant I’ve had a lot of new songs to learn. I’ve been using DrumBurp pretty extensively to write down what I need to play, then printing it out and using it for personal practice, and taking along a folder of stuff to rehearsal to remind myself of the songs I’m not so familiar with yet. I’m pretty happy with how it works – I find it’s the fastest I’ve ever been able to write down drum music.

Now that might just be because I’m both the developer and the user, so I’ve naturally implemented features which let me work how I want to. However, I don’t think that accounts for all of it – I’ve said from the beginning that this program is all about speed and ease of use, and having a focus on that has given me a tool which lets me work quickly.

What’s next?

I’m currently working on making the time counts a little more flexible. As you can see in the screenshots above I’ve been working on tabbing Livin’ Lovin’ Maid by Led Zeppelin – that 4th bar in the chorus exposes a problem with DrumBurp: you can’t currently mix counts within a bar. The bar above is straight for the first two beats, then the last two beats are in triplets. In order to accommodate that, I’ve had to tab the entire bar in 16th note triplets, which is just horrible. The same root cause means that “non-integer” counts like 7/8 aren’t possible just yet.

I’ve now got the behind the scenes machinery in place to allow for heterogeneous counts to solve both of these problems: the data structures and interface with the GUI to allow for ‘weird’ counts. Now I just need to implement the GUI to allow the user to actually access that functionality, which should actually be reasonably simple.

A selection of future features on my TODO list:

  • Better printing/PDF export: it works great, but it could use a few bells and whistles.
  • Better specification of drum kit information. Loading/saving kits. Default kits.
  • Score annotations: adding text at arbitrary points in the score.
  • Lots of interface/usability improvements: a section navigator, multi-measure copy/paste, etc.

And how about the real blue-sky, wouldn’t-it-be-nice-if? list…

  • Some sort of audio playback of the Score, whether MIDI or something else.
  • An integrated MP3 player so you don’t have to keep switching windows while tabbing.
  • Lilypond export, or some other way of creating ‘real’ notation from DrumBurp scores.
  • ASCII tab import.

So when does it get released?

Well, I guess I’m getting to the stage of releasing an early version pretty soon. I could use some beta-testers. If I get any interest here I’ll be more likely to release something sooner rather than later.