Grant Muller

RWMidi, GMS, and GOL Sequencer: Adventures in Social Coding

Many moons ago, I created a little tool called the GOL Sequencer Bank. You can read more about it here, and here. In order to create the tool, I used RWMidi, a Java/Processing library created by Manuel Odendahl of Ruin&Wesen. While creating the sequencer bank, I discovered that the RWMidi library had no support for MIDI Sync messages, preventing me from syncing the sequencer with a master, like Ableton Live. This simply would not do.

In the past, I would have looked for another library, but given that I had the source readily available, and had already written a ton of code interfacing to RWMidi, I decided it would be a better use of my time to modify the RWMidi library to support sync messages. You can read more about that here. The changes were minimal, and I learned a lot in the process about MIDI, Java, and the art of modifying open source.

Not too long after that word got out that I had made this change to the RWMidi library, and I started getting one-off requests to send my modified library to folks for their own use. For instance, John Keston over at AudioCookbook built his GMS synth using my modified library.

A short time after that, Mr. Keston approached me with what I thought at the time was a strange requirement: modify the library to support greater than 24PPQ for recognizing 64th and 128th note resolutions. In plain English, John wanted the GMS to support 64 and 128 notes using plain-jane MIDI clock. I thought it couldn’t be done, but loved the challenge, and modified the RWMidi library accordingly. It was a doozy.

These modifications to the RWMidi library have only been available as a custom change to the GMS and the GOL Sequencer Bank, but now, through the power of GitHub and social coding, I can make these changes available to anyone who wants them. I have forked the RWMidi library on Github, incorporated the changes there, and issued a pull request to Manuel to include them in the main source.

You can check out the source here.

I have also built a jar file and included it as a download on GitHub. You can get it here.

Having finally discovered the beauty of social coding, I plan on eventually uploading the source of both the HarmonicTable and the GOL Seqeuencer. I’ve had requests in the past to make changes to the synth that I just don’t have time for, this way people in the know can simply fork the source, make their own changes, and ask me to pull them into the main body of work.

As more and more regular Janes and Joes become savvy programmers (i.e. our children), I expect we’ll see the power of social coding change the way we think about how software is made in general…


  1. Thanks for sharing this, Grant! I’m going to getting back into developing the GMS soon. I’ve upgraded my system, so it needs to run on OS X 10.6.x. Also, I’m going to be presenting the GMS at the in June 2011, so I will be refining a few things before then. I’ll be mentioning your changes to RWMidi during my presentation, so if there’s anything specific you’d like me to say, let me know.

    1. That Eyeo Festival looks like a lot of fun! I should try to schedule a trip around that time… If you want any help refining stuff let me know, I always like working on a cool MIDI tool.

      You can mention that I will code for food 🙂 Seriously though, you don’t need to mention anything specific about the RWMidi changes or me if it doesn’t fit your presentation. I would point out the power of the internet to get stuff like this done, how reaching out to others and putting this kind of thing online for the world to see really opens the door to make new ideas actually happen. I think the synergy of GMS, RWMidi, and Processing and custom code coming together are all perfect examples of that.

      I may be getting a Mac soon as well, I miss the command line! Cheers!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.