What are reasonable ways to allow the user to play a virtual piano using the computer keyboard?
And are there any industry standards across music programs, i.e. keyboard-piano mappings which (whether perfect or not) are learned?
The key mappings shown by user "ekapros" is intuitive. This mapping mirrors (more or less) the white and black keys on the piano.
The "A" on the keyboard is set to correspond to the note "C" each key to the right corresponds to the next white note on the piano. To get to a black key you reach up to the row above so that C# is mapped to the "W" key, and so on.
Let's admit that this is awkward. Playing piano on a computer keyboard is not great. But sometimes you need to do it and as both a pianist and UX designer, I find this mapping OK.
If you have some experience on the piano, this mapping will make sense. Of course you don't look at the letters on the alpha key board -- they do not map to the musical notes in any way. So for people who don't have a mental model of the piano keyboard, this mapping may be less intuitive.
The big problem is that the number of keys available on a horizontal row is limited.
How easy is it to use? Depends, I think, on the specific line of music you want to enter. The mapping results in a very small keyboard which offers only an octave and a half. If you were entering a line in the key of G it would likely work well but if you were entering a line in the key of C you might be doing a lot of octave shifts to get the notes to the left of the lower C.
My instinct is that the left and right arrow keys would be best to use to shift octaves. They align with the physical model of "left=lower" and "right=higher" and are located at the bottom so they can be manipulated with the left hand while the right hand is entering notes.