In the end I redesigned my project which was going to be a musical keyboard where each piezo was a key. Too many piezos, to many analog pins, it was simply too much.
So now I'm rather thinking of four thin ribbon controllers in a row used for intonation like the four strings in a violin, and then four piezos to "percute" the strings, that is, to send the velocity values.
Ok, happily there's a lot of info in the net about how to make and use linear potentiometers as ribbon controllers, and there's also some commercial options like the Softpot sensors, which are a bit pricey but still affordable. However, some people say they are not as reliable as you're paying for them. Others are in love. Some get very good DIY linear potentiometers out of VHS and a string, some other have their complains about that system. So there seems to be no consensus at all, which is a bit confusing.
My question was to anyone who has had any experience in the field: what has worked best for you?
Hello. Nice photo, the construction looks good. i'm using HDPE for the construction of my board - but I like the clear look of yours.
What do you mean about linear potentiometers? Do you want to use these ribbon pots to determine the velocity sent to the midi controller?
Six piezo on arduino analog
getting six analog inputs on an arduino with piezo inputs is easy. you can buy the board here or just download the code. http://midikits.net23.net/ be certain to put 1M pull down resistors on all analog inputs. Tom has been really helpful and he will answer questions by phone or online.
my effort to design a higher quality touch
but using piezos in this fashion won't give you the velocity of a standard weighted key controller, and doesn't allow you to 'hold a note". it's hobby-grade. Tom and I are working on something that is production quality. My design uses 96 keys and i can't explain that here. I've spent hours testing piezos and while the price point makes them attractive they don't have the fidelity (true response) needed for a production instrucment. I can't get them to accurately play repeated notes (let's say 1/8 note triplets with a tempo of 60).
using optos
i'm still considering piezos but also looking at opto sensors. I'm doing quite a bit of work on this with the goal of measuring velocity. i am moving towards optos which are < $2 each and considering the vishay opto CNY70, vishay TRCRT5000, and the Rohm RPR-220 all which measure distance from 2-12mm very well. To get them working in a test jig all you need is two resistors (220 ohm; 10k ohm) and maybe a 2nw capacitor (mine works without).
holy grail of keyboard
the trick is writing an arduino program to measure velocity. that's the wall i am currently hitting my head on. I'll probably need some sort of fancy library to measure the time that each keystroke travels and report that as a byte to the arduino. Maybe an interrupt handler of some sort.
mayhew mux shield - 48 analog channels on one uno
I've purchased a few of these multiplexors. The code is easy to implement. If I use a mux shield i get 48 analog inputs per uno. This is all throttled down to one analog input pin. All the math so far says that one arduino can handle the keyboard - but the overhead with the velocity is a concern to me - probably even the storage (several large arrays) required to do this. The trade off is creating a circuit for each key to offload some of the compute time but with 96 keys i really don't want to go there.
I2C communication
I'm also experimenting with I2C to communicate between boards. pretty cool way to go but it uses two analog ports (clock, and serial).
let me know how yours progresses! i hope to have my design up and running by maker faire (california) 2013.