Really more of an electronic music project – but Arduino can do a pretty good approximation.
We need to break this into three stages;
- Detection of keyboard
- Generation of tone
- Misc. I/O (MIDI, et al)
If this was originally an electronic keyboard, then the original wiring is still there. At some point it was probably multiplexed, which may or may not be to your advantage. If there is no wiring, there are a number of contact strategies that might work for you – conductive foams (http://www.mutr.co.uk/catalog/product_info.php?products_id=1144), piezo triggers, leaf switches, buttons, hand-fabricated leaf switches with little bits of brass sheet, etc.
The next problem is that Arduino only has a dozen or so inputs. Meaning, to get a full octave (or two or three) of keyboard you will have to multiplex.
If you solve these two problems, you will now have a variable in code that knows what key was touched. There’s some more software wrangling to allow polyphony!
Assuming you get that far, the next functional block to consider is tone generation. Arduino can generate basic tones, but as far as I know there is no specific hardware function coded in; basically, you would be running a program loop and the time the software routine took to loop would be the base frequency. That’s not optimal.
Better to add an external oscillator to generate the base frequency. This can be hand-tuned (which would drift), or use a crystal and frequency dividers. But at this point we are getting deep into building a music synthesizer – which is a subject better broached on another forum.
A perhaps simpler and more elegant solution is to use that Arduino to take the output of the keyboard you’ve salvaged – as described above – and generate a MIDI signal. That can then be sent to a host computer, or a stand-alone sound generator.
(There’s also been a few threads around here about sending MIDI direct to USB, without need for a MIDI interface on the host computer.)