Arduinome: An Arduino-Based Monome Clone, Behind the Scenes

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.

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.)

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.

Creating Arduinome was a team effort.

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!

Guessing the project makers are fans of this site! Thanks!

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!

Wow thats cool… so does all the monome software run on this? mlr and molar et al?

And I know the arduino boards are cheap – but how much does the whole kit/all the parts cost? I may be up for trying to learn some soldering myself! I could build a guitar effects pedal first – but I dont really need one!

"Wow thats coolâ€¦ so does all the monome software run on this? mlr and molar et al?"

Short answer: yes!

The 'Arduinome suite' (Arduinome controller plus ArduinomeSerial software) has been designed to mimic the way the 'monome suite' (Monome controller plus MonomeSerial software) works. This means that as far as software like mlr is concerned, it's exactly as if it was talking to an official monome.

I ordered my pcb from batchpcb without checking them up properly. It turns out that the company, owned by Sparkfun, sends all pcb:s to Gold Phoenix in China which was a real disappointment.

poopoo

I'd like to see a midi port based monome clone. A replacement for monomeserial could be written to convert the midi to OSC on the PC side if you wanted to use mlr or any of the other apps.

Without a PC, it would be possible to use the midi ports to control a hardware synth. Even more interesting it should be possible to write some firmware to do some tenori-on type sequencing application. The midibox platform is more than capable in this department, a core, a din and a dout should cover the pcbs. Add a gm5 and you get midi as well as port powered usb.

thats very cool looking – 280 eur isn't a bad price considering… and i like the look of the MachineCollective arduinome enclosures – would make things way easier – i'll have to keep watching this space… or maybe just go out and get all the gear…

280EUR sounded about right at first, but I do think it could be done for much less. I'm not sure if its more expensive in europe, however, I think I paid somewhere around $130 for all my parts, and although I haven't encased mine yet, that will probably top my off at about $250. If google currency translation is right, that would put it at $250 vs. $400+ (280EUR) which is a big difference… do you think it has something to do with ordering from Europe, or maybe the group purchases we put together really saved us that much? I'll see if we can track down our receipts (ordered a while ago!) and get an official added up. This could be important for people as I've already seen many group buys on the shields, and at that price point, might be economical to do group buys on other parts…

Yeah the sparkfun order cost about 35EUR to ship to europe, more than I'd expected. And an enclosure can be put together more cheaply than the cost of the machinecollective one that I went for (80EUR).

I'd like to just pour on more thanks to the people of Monome for making their product so open – they're amazing.

Just in case it doesn't come through loud and clear in the article, ArduinomeSerial, is a modification of the original MonomeSerial by Joe Lake, Brian Crabtree, Steve Duda, Kevin Nelson and Daniel Battaglia.

Anyway, it's great to see the enthusiasm for the project, which as Jordan says, has been really a fun collaboration.

Thomas Cermak

Can anyone explain the advantage of using an Arduino microcontroller? I tried researching it but I can't even ascertain the benefit of using the Arduino programming language.

I'm a web programmer not an application programmer so I definitely need some help 😉

A few reasons… its a pretty simple/easy language to write for. It is also SUPER CHEAP and readily available. It has a good community for help if you are new to programming or just get stuck. Additionally, you don't need an expensive programmer to write to it, its all done through USB. Im sure there are many other things to add to this list!

yah, we've always planned on possibly doing RGB support… first things first, get adc added and 40h rock solid. Then start playing with the other protocols (256) and rgb… the only thing about RGB support is its not only going to require a software rewrite, but also hardware.. I'm not too keen on taking apart my current Arduinome, which means I'd have to purchase and build a new rgb arduinome which is more $$$. Soo, hopefully get to it soon, but priorities and $$ take precedence…patience is a virtue!

Hope you understand Julien, for now, I'd play around with Ben's suggestions on our forums if you already have the hardware… all it takes to program what you want if you aren't a comfortable programmer is will and endurance.