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
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) - OS X 10.10 (Yosemite) (see below for troubleshooting). This software was written in Java, so newer versions of OS X will require Java to be downloaded. This should be automatic. 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.Ardrumo (Universal) (beta v100.2)
Previous Versions
Ardrumo (Universal) (beta v100.1) (November 8, 2007)Source Code
SVN repositoryArduino Sketch
ardrumo.pde Load this sketch into your Arduino and connect up to 6 piezo sensors.Support
Known Issues
"Ardrumo.app is damaged and can't be opened. You should move it to the Trash." ErrorBecause of security "improvements", OS X Gatekeeper may prevent Ardrumo from starting depending on the settings. Since I'm an unregistered developer, unfortunately, the error shown below implies the download is corrupt when, in fact, it isn't.
macOS Sierra (macOS 10.12)
In macOS Sierra, Apple has made it more difficult for users to start applications from unregistered developers for security reasons -- and likely because they can also collect a $100 fee from every registered developer (see this tip for details). To resolve this under macOS Sierra, you may temporarily disable Gatekeeper by opening Terminal (under /Applications/Utilities) and type:sudo spctl --master-disableThis will disable Gatekeeper to enable developers "Allow from anywhere" security option shown in the Mac OS X El Capitan section below. After starting Ardrumo for the first time, you may reenable Gatekeeper with:
sudo spctl --master-enable
Mac OS X El Capitan (OS X 10.11)
To resolve this under Mac OS X El Capitan and below, please launch OS X 'System Preferences' and adjust your 'Security & Privacy Settings' to allow apps downloaded from anywhere to run (see below). Now, try to launch the Ardrumo application. If successful, Ardrumo will continue to start correctly even if the security setting is changed back to a more restrictive setting, so go ahead and change it back to the original setting. For a more detailed explanation of this error, see here and here.Other 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 from 10.4.8 (Tiger) to macOS Sierra (10.12) 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:- http://todbot.com/blog/2006/10/29/spooky-arduino-projects-4-and-musical-arduino
- http://itp.nyu.edu/physcomp/Labs/MIDIOutput
- http://members.cox.net/ampage/triggers.htm