Ardrumo: Mac OS X Virtual MIDI Interface for Arduino Prototype Boards

Background

This is a software MIDI interface designed to accept serial data from an Arduino board and convert it into MIDI drum data in OS X. The application acts as a bridge between sensors connected to the Arduino board and applications such as GarageBand or Logic without requiring additional MIDI hardware. All data is transferred directly over the USB connection and no additional power source is needed.

The Ardrumo application has been an enormous success since its launch. To date this site has had tens of thousands of visits and the Ardrumo app has been downloaded almost 3500 times all across the world.



Ardrumo is free open source software, but please consider a small donation to keep the project going.


Concept

I wanted to make an inexpensive electronic drum setup that could be used with GarageBand. There are some great projects out there that describe how to output MIDI from an Arduino board (see References below), but these require additional hardware (e.g. MIDI modules, MIDI interface, etc). Since most people don't have extra MIDI hardware, I decided to just write some software to accept serial data from an Arduino board and make a virtual MIDI instrument that would be recognized by GarageBand. Here is the idea:





Implementation

My Setup

My homemade drum kit is pictured below. Each pad is a circle of Duralar (i.e. thick mylar) sandwiched between two pieces of foam (from Pearl Art Store). Attached to the Duralar circle is a piezo sensor extracted from its plastic casing. Everything is then just glued together. Each pad cost about $3.00 to make.



Video

Click on the image below to see a video of Ardrumo in action:


Pad Construction

Bill of Materials

  • Arduino prototype board $35
  • pad materials x 6 $6
  • piezo transducer (1500-3000Hz) x 6 (Radio Shack part #273-073) $12
  • Total $53
  • If you can't find piezo sensors at Radio Shack, you may be able to get them from DigiKey or Jameco.
  • Assembly Instructions





    Wiring

    The wiring is very similar to todbot's. I borrowed his image and modified it below (hope he doesn't mind). I didn't bother using a Zener diode as todbot suggests. It may be safer to do so, but I haven't blown out the Arduino board yet.



    Downloads

    Mac OS X Universal Application

    Compatible with OS X 10.4 (Tiger), 10.5 (Leopard), and Snow Leopard (10.6) (see below for troubleshooting). This also assumes you have installed the Arduino drivers and have a working connection between your Mac and Arduino board (how else would you load the sketch below?). If you don't have an Arduino board, you can still run the application and click the on-screen triggers to see how it works. To use it, plug in your Ardruino board with drum triggers attached, start GarageBand (or another MIDI-compatible application), and launch Ardrumo.

    Latest Version

    Downloads require a quick registration. Registration lets me gauge how useful this software is to users. A link will be sent to your e-mail, but don't worry. I will not use your e-mail address for any other purposes and will never send you any other e-mails or spam.

    Register


    Ardrumo (Universal) (beta v100.2)
  • Updates RXTX Java library. Thanks to Jenna Fox for suggesting the solution to the permissions issues mentioned in Troubleshooting section below. With the latest RXTX library, these permissions corrections should not be needed.
  • Previous Versions

    Ardrumo (Universal) (beta v100.1) (November 8, 2007)
  • Fixes problems with PowerPC machines.
  • Ardrumo (beta v100.0) (November 2, 2007)
  • Initial release.
  • Source Code

    SVN repository
  • NetBeans-compatible Java project directory
  • Arduino Sketch

    ardrumo.pde Load this sketch into your Arduino and connect up to 6 piezo sensors.

    Support

    Known Issues

    There are several known issues that will be addressed in the next release. Stay tuned! Planned features/bug fixes include:
    • Bug: Correct double triggering
    • Work in progress: the Threshold knob is not wired up yet
    • Feature request: Save "scenes" feature
    • Feature request: MIDI channel support

    Troubleshooting

    Ardrumo has been tested with Mac OS X 10.4.8 (Tiger), 10.5 (Leopard), and Snow Leopard (10.6) on both PowerPC and Intel-based Macs. Users who run into unrecognized serial port errors should correct permissions by doing the following:
     Under Finder click on the "Go" Menu
     Select "Go to Folder..."
     Type "/var/"
     Finder will open var folder.
     Right click on folder named "lock" and select "Get Info"
     (some users have reported a missing _lock_ directory.  
     If it is missing, you will need to create it)
     
     Open drop arrow titled "Sharing & Permissions"
     Set all privileges to: "Read & Write"
     Close Get Info dialog
     
     Go to the Var folder on the finder and open the "spool" folder
     Right click on folder named "uucp" and select "Get info"
     Open drop arrow titled "Sharing & Permissions"
     Set all privileges to: "Read & Write"
     Close Get Info dialog
    
    (This information from (bacadd) here)

    Contact

    If you use Ardrumo and like it, please drop me a line: ardrumo <AT> gmail <DOT> com I'm happy to answer questions or take suggestions for improvements but request that you make a donation to the project if you find it useful or require technical support.


    Acknowledgements

    Java Libraries

    Ardrumo uses the following Java libraries. Many thanks to the developers!

    References

    This project was inspired by the following projects, especially todbot's: