Arduino: MIDI Remote

I mentioned in a previous post about Netduino, that a constant risk with playing around with Netduino (and Arduino) is that it becomes a time-waster, as it’s so much fun to work with, and it’s so easy to test ideas, but it’s a great learning tool for MCU programming and new types of sensors and controls.

The rationale for this specific project, based on a Freeduino board (Arduino compatible), was to determine how to support IR remotes (the type used with any audio/video equipment at home), partly as the cost for using IR in a prototype is way lower than Wi-Fi or Bluetooth (more at the end about costs and trends), and is handier as you can use existing multimedia remotes.

MIDI Remote enables control of a music sequencer from afar (room scope). It achieves this by converting received “buttons” into sequencer-related MIDI messages, as further described below.

The remote:

026

The exterior:

024

The interior.

025

I put it in a box, so others can try it out. Not that I believe it would be possible to sell this kind of device in quantities.

Note that it has both MIDI In and Out, so that it can be used for other applications as well (just add new software, and maybe other input and output devices, even though a remote could be used for more applications than controlling a sequencer; more about that below). MIDI In is currently cut, to avoid conflict with programming the MCU (same serial port). I’ll add a switch for that later.

The above video is not narrated and remarkably crappy, but it shows the following:

  • The IR remote (the smallest I could find), where I have mapped (from top to bottom): Start, Tempo up, Tempo down, Continue, Song Select down, Song Select up, Stop. Hence, the basics for controlling a sequencer.
  • The battery-powered box containing an Arduino board with a MIDI interface and an IR receiver put on a prototype board (no off-the-shelf shield used this time). That’s it from a hardware standpoint.
  • After that I control the synth via the IR remote. No wires, except between the box and the synth.

I’ve tested that the remote works securely from 3-4 meters away, provided line of sight, and lights in the room don’t seem to affect that.

Note that the MIDI Remote generates MIDI Clock (tempo) for two reasons: Synths typically don’t react to Start/Stop/Continue unless they also get external clock. Secondly, that way the tempo can be adjusted. The drawback is that it doesn’t know the song’s original tempo, so it always assumes 120 BPMs to start with.

I estimate that the BOM for an optimized solution, that could be made much smaller, would be $5 to $7. As it stands now it costs around $30 (a cheapish Arduino board, a prototype board and a few extra components), not counting the box and battery.

Of course the device could send any MIDI messages (All Notes Off, Reset All Controllers etc come to mind) and it would be very easy to use the IR remote functionality for something completely different, like lighting, heating, AC switches, media gadgets, robots, toys etc.

Also, if adding an IR LED the device could communicate bi-directionally with appliances. Not with high speed (a few bytes per second) and of course still with the requirement for line of sight, but again for a very low cost and ditto small size. E.g. toys could “chat” this way, etc.

Even so, the future is in low-effect short-range radio, that will eventually completely replace IR. Sadly though, making this kind of functional prototype would be quite expensive with Bluetooth or Wi-Fi, as such modules are still rather expensive (for arguable reasons, considering Bluetooth and Wi-Fi USB dongles are quite affordable, yet are of course also produced in much larger quantities).