However, I couldn't figure out a good way to "read" these states into variables in a C++ program.
The program on PC will actually play the songs for every key...
Why not? What did you try?
Songs? Or notes?What program on the PC? What operating system?
the last works very well, but It's not standard.
Is that a problem? Why?
You might read to the end of the data, and then try to read again, and by now more data has appeared on the port, so the read will succeed, whereas when you encounter an end-of-file on a file, no subsequent reads will ever succeed.
this is pretty much what I am doing, however, I don't know if the constant readings(/accessing) can cause some kind of undesired behaviour... like overheating of the USB controller, asynchronism (because the port may "slow down" I think), or something like this.