Project of the Month, December 2006

Rosegarden

Description of project

Rosegarden is an audio and MIDI sequencer, a music notation editor, and a digital audio workstation. It's an interactive way to compose, assemble, and edit musical compositions using notes, recordings, and samples. You can compose or rearrange a piece, print the results, and record yourself playing it on live instruments with your friends, all without using any other applications. It places more emphasis on musical score notation than most sequencers. It's intended to be familiar to home studio users who have used similar software before.

Interoperability is one of Rosegarden's strong capabilities -- not only between MIDI synthesizers and controllers, but also with other audio and MIDI applications. You can connect any input or output of a MIDI or audio program or hardware device to a Rosegarden input/output port. Interoperability with Lilypond is another strong point; you can edit your music in Rosegarden and use Lilypond to produce printed sheet music.

Trove info

The system is Linux-only at the moment, as we have a strong dependency on ALSA for MIDI. There are no specific hardware requirements, except for a well-supported soundcard. Programming language is C++, with Qt/KDE libs.

Why and how did you get started?

Chris: The first Rosegarden project was a university project that started at the end of 1993 at the University of Bath. I just kept working on it after I left university. The current program is a separate project that we made a fresh start on (complete with SourceForge page!) at the start of 2000. But we already knew each other by then and had been working together for a while.

Guillaume: I joined RG back in '96 when it was a C/Athena based project. It took us several tries to rewrite the code to get a suitable code base that we could start to build something on.

Michael: I came to Linux in 2001, and began looking for something to replace Cakewalk and Noteworthy Composer. Rosegarden seemed to be the most promising contender, but it had a number of deal-breaking limitations. I was eventually persuaded to quit whining and do something about it, and I jumped into the ring with what went on to become The Rosegarden Companion in December 2002. I have been trying to make myself useful ever since. My primary motivation is enlightened self-interest, because I use this application all the time, and the better I help make it, the more I enjoy the experience of using it.

Pedro: I started by reporting bugs and sending patches while I was using the program for my own needs. I was later the Spanish translator, and finally started to implement some new features.

What is the software's intended audience?

Chris: Home musicians, amateur composers and arrangers, students, small studios

Michael: We're not after someone who knows Sibelius inside and out, or who has a studio full of high dollar audio and MIDI hardware, although some of these people do use Rosegarden.

How many people do you believe are using your software?

We have very little idea. We get a thousand or so source code downloads a month, but most users probably don't compile their own, instead relying on packages from Linux distributions. Software like ours has a high proportion of casual and occasional users, and most users are not visible to us. Our user mailing list has about 350 subscribers

What are a couple of notable examples of how people are using your software?

Some of the game music for SuperTux was done using Rosegarden, and we have a page of links to music made using Rosegarden.

What gave you an indication that your project was becoming successful?

Guillaume: SourceForge just asked us to be Project of the Month :-)

Michael: I suppose the defining moment was when the developer of NoteEdit threw in the towel, citing his disgust that everyone was talking about Rosegarden, Rosegarden, Rosegarden. I always liked NoteEdit; it fills a niche that we do not, quite, and I'm glad someone has breathed new life into it.

What has been your biggest surprise?

Michael: When Bomots.de came to me out of the clear blue sky with an offer to publish "Using Rosegarden" (now "Rosegarden Companion") as a full-fledged book, and in two languages at that. That was cool!

What has been your biggest challenge?

Guillaume: Notation was one of them. Communication between the UI and the sequencer process is another. All in all, making music means gettings tons of small details right. Individually they aren't that complex, but the sum is.

Michael: I am a truck driver, not a programmer, not a musician. I grew up with computers when that meant you had to know something about programming, but I have no formal training in this area, nor in music theory either. The list of things I've had to struggle to learn "on the job" is really staggering. For all that, I've solved a few thorny problems that defeated others before me.

Why do you think your project has been so well received?

Michael: We tried to do something bold and different, and pulled it off. There really isn't anything else like Rosegarden at any price.

Where do you see your project going?

Guillaume: Hard to say, with so many features left to implement. Guitar-oriented features are on the way. There's also the Qt4/KDE4 port, but we won't worry about that until KDE4 has at least reached beta stage (and probably some time after that). The features of the new Qt4 drawing framework are tempting, and, we expect, will strongly benefit us.

Michael: I see the future more as a matter of polishing than anything else, and an eventual day when there isn't anything left to do. We don't need to release something in order to encourage more sales, and we can already do almost everything I can conceive of doing with an application like this. We have some pointy corners and sharp edges to take care of yet, and some improvements to make, but probably the most sweeping change the future will hold is the move to KDE4.

What's on your project wish list?

Chris: We really need mixer and plugin automation. And for years I've been saying I want to go back and spend more time on the areas that I was involved in when I started, namely score layout and the interaction of MIDI with music notation.

Guillaume: One thing I'd really like to do is automated composition,a la Band-in-a-Box (fill in a chord sheet, set a style - get a whole piece with melody, rhythm, and stuff).

Michael: Rounding out the notation side so it fills in the many functionality gaps which still prevent me from using Rosegarden as much as I'd like.

Pedro: More interoperability: import music files produced by other applications, and also online connectivity using modern technologies (DBUS, for instance).

What are you most proud of?

Chris: I'm proud of the way multiple edit views work, of the undo and redo logic, and of the fact that you can save a file with the newest release of Rosegarden and reload it using the very first public release we made in 2001 (some bits may be missing, but the features that were supported then will work). I'm proud of the fact that, while Rosegarden obviously closely resembles other software in outline, no more than half a dozen features in it have been deliberately copied, and we've never had a plan to directly reproduce the feature set of any given application. Our documentation for users is quite good too. But I'm most proud of the fact that this project is still thriving so long after we started work on it.

Michael: The accidental spelling code. I agonized over that for months before I got it right, and nobody has ever touched it, or found a single bug in it, in years. Sometimes you really can achieve coding perfection.

Pedro: My lastest task was to implement the new build system, based on CMake, and I think it has been quite successful.

If you could change something about the project, what would it be?

Chris:We needed to have a much narrower idea of who our intended user was. It really helps to have one specific user in mind, and "myself" isn't really good enough -- the more you work on an application like this, the less you understand about how to use it.

This project has always suffered from a combination of an ambitious grand plan with a lack of credible alternatives on Linux. If we had been able to restrict ourselves to those features that we were most comfortable and able to do original work in -- or if we'd been forced to do so because some other program was so strong in some areas that it would seem pointless to go into those areas at all -- then I think we would have had a stronger and more interesting program sooner.

Guillaume: Code-wise, probably trying to simplify things a bit, but that's wishful thinking. More generally, adding a couple more developers and being all at the same physical location :-).

Michael: It would be great it everyone had more time, or if we had more people working less. There are far too many long empty stretches where nothing gets done, and we almost never get on the bandwagon at the same time.

How do you coordinate the project?

Chris: We're quite informal about this, because a lot of it depends on who happens to have enough time to work on something at any given moment. We use bug and feature trackers extensively and we have a fairly good shared understanding about who is most likely to be able to work on a particular area or to be most productive in testing something or verifying a bug or fix. Assigning bugs is mostly a matter of each of us deciding to take them on voluntarily, rather than any one person having the authority to dole things out. We're very democratic as open source projects go; we don't really have a leader.

Almost all of our development discussion happens in email on our developer mailing list. We never actually meet in person, and we don't use IRC. (I dislike it -- I feel it gives you all the disadvantages of email, phone and face-to-face communication in one.)

Do you work on the project full-time, or do you have another job?

Nobody works full time on Rosegarden at the moment.

If you work on the project part-time, how much time would you say you spend, per week, on it?

Guillaume: It really depends. Between 0 and 12 hours a week, say 5-6 on average.

Michael: It varies wildly -- 100 hours one week, then nothing for five months. I'd estimate that I spend about 500-1,000 hours a year on the project, including fielding user questions and other tasks not directly related to development.

Pedro: About 5-10 hours per week.

What is your development environment like?

Chris: Fast-ish desktop PCs, slower laptops. All my machines run versions of Studio to Go!, my own company's Linux distribution, and I do all my development on a variation of that. I still use XEmacs exclusively for editing, and the usual GNU compiler toolset. We've just switched to CMake as a build system, and that seems to have gone quite well.

Guillaume: Linux PC, dual core AMD64 with 2GB of RAM, gcc 4.x, Eclipse CDT (the C/C++ support for Eclipse).

Michael: I used Debian with the standard array of GNU tools for most of this time, and have recently moved to Kubuntu. My only integrated development environment is the mighty vim.

Pedro: I use Eclipse/CDT under Linux. I have several machines; my desktop computer has an Athlon XP 2800 with 1 GB of RAM. Tomorrow I'm going to add a new laptop: a Core 2 Duo T7200 with 2 GB of RAM, which will be able to compile Rosegarden in less than 5 minutes (I hope).

Milestones:

  • 0.1: the first release, about a year after we started (2001).
  • 1.0: which occurred 4 years later (2005), after numerous "almost there" releases.

How can others contribute?

Chris: We always like to receive example compositions in Rosegarden or Rosegarden Project format, particularly ones that we can include with Rosegarden and that are unlike the example files we already have. We also accept directed tutorials and other user documentation.

One thing we have always lacked is someone with a really good feel for usability and interface organisation. At this stage we aren't about to completely restructure our user interface, but I have a feeling there are incremental improvements we can make, and we could use some hints.

Of course we always need developers, but they really have to be self-starting to an unusual degree. We very much enjoy getting bug reports with patches attached.

I guess we don't really want anyone to "sign up". We just want people to do.

Guillaume: Code, documentation, translation, and device library files for their synthesizers. The entry gate is the rosegarden-devel mailing list.

Michael: The price of admission around here is about three good patches, and not annoying Chris or Guillaume. You never know when you're going to step on somebody's toe trying to change something around here, and we spend too much time arguing about why some new idea is wrong compared to the old idea.


More projects of the month


Project Name: Rosegarden

Project leaders:

Name: Chris CannamChris Cannam
Age: Mid-30s
Occupation or experience: Programmer
Education: Mathematics & computing degree from the University of Bath
Location: London, England

Name: Guillaume LaurentGuillaume Laurent
Age: 36
Occupation or experience: Software engineer
Education: First Doctoral Degree in Computer Science
Location: Cannes, France

Name: D. Michael McIntyreD. Michael McIntyre
Age: 34
Occupation or experience: Truck driver
Education: BA in Foreign Languages (Spanish, French, Latin)
Location: Christiansburg, Virginia, USA

Name: Pedro Lopez-CabanillasPedro Lopez-Cabanillas
Age: 46
Occupation or experience: Programmer, amateur musician
Education: Biology at Santiago University, music at Coruna/Lugo Conservatories
Location: Barcelona, Spain

Why did you place the project on SourceForge.net?

At the time, there were no alternatives. I also had helped moving gtkmm to SF.net a couple of years back, so I knew that it would suit our needs.

How has SourceForge.net helped you?

Relieving us of most of the hosting headaches (although gave us a few ones, too ;-) )

The number one benefit of using SourceForge.net is:

All-in-one project hosting, more reliable than you could hope for given that it's free.