fingerplay: a midi controller for android

I’ve been slack in updating ye olde blog, but I have an excuse — I got a new phone! It’s a HTC Desire, running Android of course, and I’ve been having great fun trying different apps and discovering what I can do with it. I started a lengthy post covering my thoughts on both the Desire and Android, but in lieu of finishing that, I present you instead with an introduction to FingerPlay MIDI, a very cool MIDI controller app for Android.

FingerPlay gives you a selection of controllers — sliders, X/Y controllers, and drum pads — all of which send MIDI messages via Wi-Fi to a tiny Java-based server app on a PC. There, you can connect the MIDI output to whatever app you like, just as you would with any other MIDI controller gear. The controls are set up in separate “pages”; a scroll bar on the right switches between the pages.

I did some quick testing, using the drum pads to trigger drum pads in Hydrogen, and using the sliders and pads to control the gain and muting of individual loops within SooperLooper, and it did a great job, responding quickly and smoothly to my input.

FingerPlay MIDI's pad page

FingerPlay MIDI's slider page

Here are the steps I followed to get it up and running:

  1. Install the FingerPlay MIDI app on your device, and download and extract the server app from the FingerPlay MIDI site
  2. Load the ALSA “virmidi” driver:
    sudo modprobe snd-virmidi
  3. Launch the server app:
    java -jar FingerPlayServer.jar
  4. Connect the “Virtual Raw MIDI 1-0” ALSA MIDI device up to whatever app you want to control.
  5. On the phone, launch FingerPlay MIDI, and hit the icon in the top right corner to open the settings screen. Set the “Server Address” to your PC’s IP address (or hostname), and click the “Connect to Server” button.
  6. Scroll further down on the settings page and open the “MIDI Out Device” option. In the list, select the top “VirMIDI” option — in my case, it’s “[hw:1,0,0]”.
  7. Exit the settings and start hitting some controls!

You can use the usual tools of choice to see what MIDI messages are actually coming out for each control — I tend to use QMidiRoute, since it also lets you remap or process the messages if you need to. As you’d expect, the sliders and X/Y controls send MIDI CCs, while the pads send notes. With Hydrogen, I had to transpose the pads up an octave to match what Hydrogen was expecting, but when I did, tapping out drum lines seemed quite responsive.

One thing to watch out for with tools that have MIDI learn features, like SooperLooper, is that the sliders and X/Y controls send “trigger” CCs when they’re touched in any way, as well as the CCs you’d expect. I had better luck with SooperLooper when I set up the bindings manually instead. My bindings file is available here.

8 thoughts on “fingerplay: a midi controller for android

  1. Pingback: The Open Source Musician Podcast Episode #45 – New Format and Project « Guitar Emporium Online

  2. GREAT post!
    I have been looking for a good android midi control app.

    Thanks very much for the easy instructions, too!

  3. Now that I managed to update my phone to Android 2.2 (I was on 1.5) I finally got around setting this up too. Very cool stuff!



  4. This was just what I needed to get Fingerplay working. I was missing the VirMIDI part.

    I can think of a few uses for this. The main one would be controlling various Ardour functions.

    One problem. The drum pads all seem to send the same note. How do you configure that?

  5. can somebody give me full detail as to how this is done and what i will need software wise?

  6. This was just exactly what I had to get Fingerplay working. I was missing out on the VirMIDI part.

    I could think of a few usages for this. The major one would be regulating numerous Ardour functions.

    One issue. The drum pads all seem to send the exact same note. Exactly how do you set up that?

Leave a Reply

Your email address will not be published. Required fields are marked *