A two-project merge!
The Alesis Vortex needed a bit more… controls! So I decided to add a few sensors that would give me greater flexibility when playing. The Vortex is already quite capable, but my left hand was not “used” enough. Sure, there is a touch strip and a pitch-bend wheel at my finger tips. But I’m not a big fan of pitch-bend. Being a keyboard player, not a guitar player, having more “keys” for my left hand just makes more sense. I have seen keytar players “cross-under” the support strap to use their left hand on the (small) keyboard part. I have tried and it’s really uncomfortable because it puts the left wrist at a very odd angle. Since the keyboard part of the Vortex is only three octave long, my left wrist starts hurting as soon as I try that. Plus it looks dorky… the keytar is bad enough by itself!
So, I decided to add a series of sensors for my left fingers to generate Midi commands. The Midi Processor (MP-2) creates the commands and merges them with the Vortex’s own Midi traffic. The MRe part then sends this data stream wirelessly to another Midi Processor connected to a computer.
Here’s a picture of the temporary hack prototype: (click on pictures)
I have installed a series of (5) variable touch sensors where my left fingers would naturally rest when holding the Vortex. Four sensors are on the bottom and one is on top, near the Pitch-Bend wheel:
A cable (standard network patch cable (UTP)) is used to carry the signal from this end…
to this end: (there’s even a channel at the back of the Vortex!)
I’m combining the data from the sensors with the Midi data coming from the Vortex. I use a Teensy++ 2 for the prototype. It’s programmable in the Arduino environment, has a flexible port definition and is fast. The data is sent wirelessly using an XBee radio (see this post). I can operate all this using a 1.5 Volt battery and a voltage booster (Jeelab’s AA board) but the current draw is quite high (about 60 mA at 3.3 V, so well over 150 mA at the battery), so it’s better, and nearly as compact, using two (or three) AA batteries.
The top left shows the XBee, programmed to communicate with the micro-controller at 31250 Bps (MIDI). Only 3 wires are needed: + and GND (at 3.3Volts) and a connection to the Midi Out pin. On the right, a short Midi cable goes through an opto-coupler to the Midi In pin. The opto-coupler is needed more as a voltage/logic isolator (Midi operates at 5 volts and the micro-controller is using 3.3 volts in this setup) than a standard Midi isolator, but the wiring is the same. At the bottom left, the blue cable is tied to a series of pull-down resistors and each sensor connects to an analog pin. If I operate the Teensy at 5 volts, I have to add a voltage regulator to provide 3.3 volts to the XBee.
The program is divided into two parts. The first part is using the Arduino Midi Library and continuously reads data (if any) coming in from the Vortex. The data is echoed (Thru ON) directly to the Midi Out (and the XBee). The second part of the program is processing the sensor data. Globally, if the thumb sensor is active, the finger sensor data is providing an analog reading that is used to calculate velocity. I use the thumb sensor as a “gate” because the sensors are very sensitive and will send data at the slightest touch. A note (or any Midi commands) is associated to each sensor. The data is transformed into a Midi command (note + velocity) and merged into the Midi traffic from the Vortex. The merging is done using the Midi Library. By the way, the sensors are programmed for velocity, not just ON/OFF, and can provide POLY or Channel Aftertouch!
A video demo is coming.
(No Vortex was hurt during this hack)