[Update: an improved version of this idea, called RoombaMidi2, is available on the HackingRoomba.com Projects area.]

The Roomba has a piezo beeper that can play tunes. You’ve heard it.
And its motors make noise. Why not put them under MIDI control?

So here is RoombaMidi: a Mac OS X application that creates a virtual MIDI instrument for use by any Mac OS X MIDI sequencer, like Ableton Live, Logic, and so on.

If you don’t have a sequencer or just want to play with this quickly, grab the awesome and free app MidiKeys. It’s a little virtual MIDI keyboard.

RoombaMidi has the following features:
- provides GUI interface to controlling Roomba (MIDI not required)
- acts as normal MIDI interface to any MIDI application
- supports up to 16 Roombas, one per MIDI channel.
- responds to MIDI notes 32-127 as tones on Roomba beeper,
- MIDI notes 32-127 play corresponding pitch, velocity is duration in 1/64ths-second increments
- MIDI note 24 turns vacuum motor on-n-off for bass drum fun
- MIDI note 25 blinks the LEDs, velocity is color of Power LED
- MIDI note 28 & 29 spins left or right, velocity is speed of spin
- can act as general multi-Roomba test system
- written in Java, but acts like Mac OS X application

To download:
RoombaMidi-0.9.zip
RoombaMidi-0.93-Panther.zip, for Mac OS X 10.3, aka Panther

And if you really want to look at the source…

Here’s what RoombaMidi looks like:
roombamidi1

The about page:
roomba midi about

Here’s one example use:

revver version

Other recorded compositions are forthcoming….

(as always thanks to MikeK for helping with this)

27 Responses to “RoombaMidi: Roomba as MIDI instrument”

RoombaMidi: Roomba MIDI instrument…

MAKE pal and Roomba hacker Todbot show you how use the Roomba as a MIDI instrument, maybe we’ll have this running at the Roomba fights - “The Roomba has a piezo beeper that can play tunes. You’ve heard it…….

i really want to hear it play smoke on the water! Great job with the hack!

[…] Roomba MIDI […]

More Roomba stuff and the 2006 Power Tool Drag Races…

Tod did it again, and based on an idea I had while talking to Chris, he wrote a Roomba to MIDI application, which lets you play a Roomba like a musical instrument (check out the video). Chris is considering composing some music for it. Phil blogged it …

“smoke on the water” blows

[…] Roomaba MIDI Instrument http://todbot.com/blog/2006/05/03/roombamidi-roomba-as-midi-instrument/ 不涉及Hardware, software一樣玩得開, Roomabaçš„ i-robot機械吸塵機你可能聽過或擁有, 但用來當instrument就真係第一次聽 […]

Nice job. The interface looks friendly and the project thorough. Now I may be an amateur of amateurs but I’d say it took some work man, oh and btw, awesome job with the Mario ;)

[…] Tja, warum eigentlich nicht. Staubsauger als Musikinstrument haben ja eine ebenso lange Tradition wie Roboter als Musikinstrument also hier ist der: Roomba as MIDI instrument […]

Can you make it windows compatible?

It should be easy to port it to Windows. The code is 100% Java. It does use OS X specific Java classes to create MIDI virtual destinations (which isn’t normally possible in the javax.sound.midi API). If there exists a Java class to create Windows virtual MIDI destinations, then the port would take about an hour.

And now, to play the National Anthem to kick off the 2nd Annual Philadelphia Roomba fight, the Roomba Symphony Orchestra.

See, this is a useful app.


That rocks.

That’s awesome! I want to buy a roomba to do that with my PB! :D

That Pacman sound was really inspirating - hack it to play an actual Pacman: place pieces of dirt (corn for example) on the floor and play pacman on screen syncing with Roomba.

Can someone help me to get this program working on OSX 10.4.6 and a RooStick to connect to the Roomba.
When RoombaMidi connects to /dev/tty/usbserial0 it seems to work: The display shows:
RoombaComm, version 0.93
connect
Roomba startup
Roomba connected

But when i try to read the sensors:
sensors
couldn’t read Roomba. Is it connected?

Roomba is connected and updated with Osmo/Hacker. On a PC it does work (with other program).
Please advice, what do i forget to do?

Thanks in advance,

Matthijs

Matthijs,
Did you run the “macosx-setup-command” that RXTX Java serial library requires? (Instructions are in the About box) After you run that command, you may need to reboot too.

Have you tried using the RooStick on the PC after using it on the Mac? If not, try that known-good configuration again. Perhaps something happened to the RooStick or the Roomba.

(btw, RXTX will do away with this craziness in its next release and I’ll update RoombaMidi and all my other Roomba projects to use the new version)

good

very nice blog, congratulations…

Hey, this is a great hack!

I thought I’d pass along an idea. Unfortunately I’ve lost the source code, but back when I was doing J2ME development for my cell phone, I came up with a way to get “simulated polyphonic sound” on a monophonic instrument (in my case, my cell phone). Basically the approach was to use the JMusic library to write a little conversion tool. The tool would time slice a MIDI sequence into 1/64th intervals and then round robin through all active voices as it processed the sequence one note or chord at a time. In other words, a C major chord played for 1/4 note would get turned into C, E, and G played over and over again 16 times in rapid succession. Your brain is tricked into hearing chords (that waver a bit in timbre like an old telephone ringer). It doesn’t work as well obviously when the song you’re playing has a lot of very short interval notes (like real fast 32nd notes and trills), but it still works tolerably well–it doesn’t mangle the song to the point that you can’t tell what you’re hearing.

I wish I still had the code for that thing, but I looked all over the place and I can’t remember what I did with it. It only took me a day or two to throw it together though–it was pretty simple. It’s based on an old idea I saw implemented with an Apple II computer back in the 80s. (If you remember, Apple II just came with a piezo speaker, so someone had rigged up a way to get polyphonic sound out of it using essentially this same technique.)

I thought I’d pass along that idea to you. You could use the same approach with your Roomba to get simulated polyphonic sound. You’d feed in a normal multichannel polyphonic MIDI sequence, and you’d get a single channel “simulated polyphonic” sequence that you could feed to the Roomba. If you put a separate Roomba on each of your 16 channels, and ran a deep multitrack sequence through your “JMusic demultiplexer”, you could probably get the sound of 64 to 128 Roombas playing at once–it’d be like a symphony of Roombas! You could go on tour as the

;-)

[…] RoombaMIDI can be used to play any song with the fidelity of an old monophonic cell phone ringer or a really old video game, and even the dustiest floors are no match for this robotic muse. The Mac-only MIDI software can control a legion of 16 RoombaMIDI at one time, which disturbs and excites me. Surely a RoombaMIDI orchestra is in the works, and I can’t wait! […]

Won’t Work on my Windows PC.

Todd,

In case you don’t know your Hacking Roomba website is blank when accessed.

Rich

Hi Rich, Thanks. I don’t know what happened, but toggling themes fixed it. I upgraded Wordpress on it recently, maybe there’s some new weirdness there.

Something to say?