How many notes do you want to sound at one time?
I believe you can do analogWrite(frequency) and it will go out as PWM until you stop the write.
(have not actually tried this myself, but I think it works that way, built in atmega hardware function).
Thus you have a fast loop that checks for a keypress, check a list of flags and see if you have a "free" PWM output, assign that note to the "free" PWM pin and set the flag to "in-use", next time thru the loop see if the key is still pressed, if not stop the note with analogwrite(0) and set its flag to "free". (maybe watch how long its been in use and free after some time limit, so quasi-piano like vs organ/synthesizer?)
Take all the PWMs and mix together using a summing amplifer o-amp or similar:
http://masteringelectronicsdesign.com/how-to-derive-the-summing-amplifier-transfer-function/