Making a combo keytar / wind controller...

Okay, I'm a little crazy, but I just really, really need a combination keytar & wind controller. You see, going on stage with a wind controller isn't exactly cool. But a keytar... with an incidental saxophone fingering setup... now that's just begging to be made (if you play saxophone, anyway.) Not to mention that wind controllers are prohibitively expensive...

Anyways, I'm looking for suggestions on a few things. Mainly, the buttons (keys?). I can get by without an actual wind input - I can control velocity/etc. via other channels. But for the buttons, I'd like "velocity-sensitive" keys, because that would greatly aid in said velocity control. I could just use the most recently depressed key for velocity, or even better, if all keys output continuous pressure values (e.g. "aftertouch"), I could just average the key pressure (I tend to hold down nice and hard when I want to play louder, so it would be very intuitive.) Maybe the distribution of key pressure could affect harmonics or something, too (in order to be excessively nouveau...)

I need about 15 of these buttons - is my best bet to just tear apart a small midi keyboard and hijack its key components, and possibly hardware engine? Has anyone had any success with that? I've read articles on people converting toy keyboards into MIDI by adding piezo sensors, but I don't think piezos would provide continuous pressure after the initial hit, would they?

Otherwise, I thought maybe someone had seen some sweet (cheap?) pressure-sensitive buttons or keys out there somewhere. Spring-loaded would be fine, or anything else. I haven't had any experience with pressure-sensitive foam & that junk - can you cut it up and stick in wires wherever, or what?

Also, if I'm using the Arduino, this is obviously above the quantity of allowed inputs (especially if I stick some blinky LEDs on there, which, let's face it, would pretty much be a necessity.) Can multiplexing handle this kind of input?

Thanks VERY much for your suggestions!


This is a verĂ½ ambitious project :-)

Most MIDI keyboards implement velocity by having two switches for each key, the velocity is calculated by measuring the time difference betwen the two switches being pressed. This is probably not very practical in your windcontroller setup.

You can try to google "force sensors" (or "FSR" ) or strain gauge, to find some preassure sensitive devices. I know that there is a german guy that builds his own windcontrollers and the synths they drive, i think i have a link to his site at home, will check later.

EDIT: Found it, its Ian Fritz:

Thank you very much for your input! I've been researching force sensors and such and I think I may have found one that fits my needs:

Rather than having 'keys' per se, these FSRs could just hang out on a grippable body, and I could add some elevation to the sensors with foam or something so that they'd be easy to feel. It actually wouldn't be much different than the tone holes on a clarinet.

I guess the important question is, can I use 15 of these with an Arduino? Would multiplexing be able to handle it? I've never been too certain what the limitations are there.

I also see that Trossen Robotics has voltage divider kits for the FSRs as well. Do you think that would be necessary for my purposes? I wonder if I couldn't just deal with sensitivity in the software (since I'd prefer the grips to be as small as possible. Maybe they could be detachable from the keytar body!)

Note: for the keyboard portion of the keytar/keyboard, I will probably just be mounting a 25-key retail battery-powered MIDI keyboard. I have no desire to get into real hardcore MIDI programming, so all I need to figure out is the 'wind' part. :-)


I can't see why multiplexing 15 of these with for instance two 4051 IC should be a problem.

And i don't think you need the volatge divider PCB's. You do need to to hook them up as voltage dividers but this could probably be done with a simple resistor for each.

I made a setup with 16 slidepotentiometers multiplexed with two 4051'a and Arduino could without problems read all of them, format the data and send the data to a PC ovr the serial line (19200 Baud) every 10 mS. I could probably have done it even faster but i didn't try. This was even with the old slower Arduino board. So depending on your "need for speed" i think Arduino can handle this withou problems. The question to have in mind is what else is Arduino going to do ?