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.
Here are the steps I followed to get it up and running:
- Install the FingerPlay MIDI app on your device, and download and extract the server app from the FingerPlay MIDI site
- Load the ALSA “virmidi” driver:
sudo modprobe snd-virmidi
- Launch the server app:
java -jar FingerPlayServer.jar
- Connect the “Virtual Raw MIDI 1-0” ALSA MIDI device up to whatever app you want to control.
- 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.
- 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]”.
- 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.