The Monome project, a USB MIDI and OpenSoundControl control surface for music and art, was built on open source principles, on its users making the product better as they used it. Its community has already built custom housings and elaborate software setups. But a clone based on the Arduino microcontroller promises to do still more.
Created with Admarket’s flickrSLiDR.
The “Arduinome” gifts the Monome with two new possibilities. First, it’s a breakthrough on the availability front: at a time when official Monome kits are backordered, it makes it easier to make your own Monome on a budget. Second, it makes hardware hacking on the Monome far easier, by allowing people to make microcontroller-level modifications on the relatively friendly Arduino platform. (The Arduino was designed not for electrical engineers, but for artists just dipping their toes into electronics, even for the first time.)
Now, if you went out and cloned, say, the latest Roland keyboard, they’d understandably take issue. But part of what tells you this is a different kind of product is that the Monome creators have actually taken an active interest in the Arduinome’s development. Support won’t go through the Monome team, and there are still plenty of reasons to buy the real thing, but true to those open principles, both projects stand to benefit.
I got the scoop on the details of this project, what it’s about, and the gory details of how caffeine can fuel a massive electronics project even with relative newcomers to the craft. Jordan Hochenbaum, a leader of the project, talks to CDM (with some additional comments by his partner in crime, Owen Vallis. (Jordan and Owen, students at CalArts, also won CDM’s Futuristic Design Challenge earlier this year — video of that coming soon, I swear!)
(Skip about two minutes into this video for some side-scrolling LED action.)
Arduinome Nerdscroll Demonstration from BricK Table on Vimeo.
Why clone the Monome? What’s special about this project?
The Monome represents not only a controller interface, but also a new way of thinking about interface design. The very heart of the Monome concept is its minimal, open-ended form. This ideology is reflected in Monome’s decision to make the firmware and software open-source. Coupling these ideas with the strong community development support in the Monome forum, it became clear that the Monome was the perfect interface to try and port to the Arduino microcontroller. What makes this project special is Monome’s willingness to make their controller open-source. No other manufacturer would dream of letting people see how their stuff works, or letting a bunch of curious individuals try to build a clone.
What’s the relationship of Arduinome to Monome? What’s unique about the Arduinome?
We love the Monome, and the concept behind it. While the original Monome is difficult to come by, the Arduinome project was really born out of a desire to learn about physical computing and to better understand interface design. With this knowledge, we hope to be able to better use our Monome clones and develop new ways to push the buttons – er, envelope! We hope to build off the Arduinome in the future and explore new ideas.
What was the response from Brian and Kelly [Brian Crabtree and Kelly Cain, creators of the Monome] to the project?
Brian and Kelly have really provided encouragement towards our project. Actually, Brian was surprised the code wasn’t ported a while ago, especially since they’ve licensed their work for non-commercial use. Brian actually seemed really thrilled to see a bunch of people collaborate, which we think is just great!
What’s done, and what remains to be done? Where do you need contributors?
Completed:
- Finished porting the 40h firmware serial protocol
- Added additional support in Arduinomserial in order to address Arduino serial stability issues.
Still needs work:
- Implementing ADC and Encoder support.
- Testing for additional bugs.
- Porting the 256 serial protocols.
- Adding RGB support
Background – and Behind the Scenes
“Arduinome” is a collaborative project that aims to create a clone of the popular and inspiring Monome USB controller using the Arduino platform. The idea was originally brought up in a “Music Tech Forum” at the California Institute of the Arts. With about two weeks left in the semester, and very little experience, Owen Vallis and I put together a group buy and decided to just go for it. Everyone absolutely loved the original Monome, and we all figured this project would be a great introduction to the crazy world of physical computing.
Owen had already purchased the original Monome button pads, however the rest of us went for the Sparkfun button parts due to their availability and cost. After putting together a parts list, we began researching the 40h protocol and what it would take to port the firmware to the Arduino. The Arduino needed additional multiplexors in order to work with the matrix (specifically the MAX7219 and the 74HC165n/164n); fortunately, we found an amazing Arduino shield already designed by Brad Hill (unsped). After contacting Brad, he was kind enough to share his design. He asked that, in keeping with Monome’s business ideologies, the PCBs be printed locally and environmentally friendly. We were more than happy to do so; Monome’s business ideologies are very admirable, to say the least.
As soon as the parts were in, you could almost always expect to see somebody in the tech shop at CalArts soldering up their LEDs or diodes, etc. It was really amazing. As the semester’s end came near, Owen and I took on the responsibility of finishing the firmware. We started meeting every day or so at Silverlake coffee, feverishly trying out other people’s methods and ideas. (Thanks, Melka, Octinct, and others.) We had come pretty close, but always ended up having difficulty getting the buttons to work properly. After another night of caffeine-fueled failed tries, we came back to my house and decided to work for just a few more hours. At about 2:30am, we still didn’t have it working. We looked at each other, realized we wanted to call it a night, but in the traditional fashion of how Owen and I work, said “f@#!” it! Lets open up the 40h source, and work on porting it over to Arduino, as best as we can.” We were able to keep some things from the code we were working on, and at about 6 a.m. we got it working! With the sun barely rising through the LA smog, we went to get even more coffee and celebrate over breakfast.
Later that day, I made a section on the BrickTable blog detailing a short parts list, a little information, and of course the firmware. We posted the firmware link on the Monome forums. Immediately, there was a ton of interest, and people either seemed to be already in the middle of their own projects, or eager to start a new one. The response was fantastic, and quickly began to reveal the bugs in our early work.
Through the Monome forum, we’ve met and worked with a lot of great people. One person in particular has really pushed the project to where it is today. After two revisions on our website, Ben Southall made some major improvements to the firmware (addressing the Arduino Ports directly), and began working on “ArduinomeSerial”. It’s a MonomeSerial hack, if you will, which is optimized for the Arduinome. Ben realized that the USB serial chip on the Arduino differed from the one on the Monome, requiring changes to the original MonomeSerial in order to keep the serial connection happy. After testing, testing, and more testing, and a premature release, we now have a SourceForge project up with both the firmware and ArduinomeSerial. Anyone interested in delving into the source code, we have an SVN repository for version control, so feel free to dig in!
We are really happy with the speed, response, and stability of both the firmware and ArduinomeSerial. It uses a specifically named protocol “a40h-xxx” vs. “m40h-xxx” like the regular 40h Monomes. However, ArduinomeSerial should be able to work with both regular Monomes as well as Arduinomes – thanks, Ben! I have modified Melka’s instructions on flashing the FTDI serial name on the Arduino to have ArduinomeSerial properly recognize your clone. This is posted on the Brick/Arduinome website (http://bricktable.wordpress.com/), and the process shouldn’t take more than a couple of minutes.
The next steps, of course, are to continue improving speed and reliability, as well as implement the ADC support. After that, there is the possibility of looking into the 256 series protocols as well as RGB support; however, these are both going to require a large rewrite, as well as hardware changes.
Monome is truly an amazing community; I’ve seen it firsthand working on this project. When Owen and I first posted the firmware, people started suggesting ways to improve it. Ben Southall took it to the next level and made crucial changes and additions to the firmware, in addition to creating ArduinomeSerial. We really feel that this kind of collaboration is amazing, and one of the great results of Internet collaboration and making ideas open-source. We can’t thank the Monome community enough for making all this possible, and of course Brian Crabtree, Joe Lake, and the rest of the Monome collective for creating an amazing and inspiring canvas. If you build your own, please send in details, pictures, bug reports, and the like.I know Owen, Ben, and myself would all love to see your work or find out about kinks we need to work out. We have a forum on the SourceForge page as well as a thread on the Monome forum. We believe in the Monome and the community ethic around it, so don’t be strangers!
The Arduinome Site contains a parts list, instructions for building your own Arduinome, and other documentation. We’ll have more on this project very soon!