I would like to create a program that would generate a random note on a musical staff that scrolls across the screen. The user would need to either click on a fretboard or a piano keyboard to indicate where that note would be. A score would be generated and a high score would be saved. Furthermore, the user could determine a subset of the available notes from which to select, whether or not to use the treble cleff, bass cleff, or both randomly (or not randomly). The user would be able to select a speed at which to run the notes as well. It would be really cool if it would generate a tone so folks could even do some sort of ear training by guessing what note was generated.
This would be a local program that would run on someone's computer.
There is a program out there that does this already, sort of. There just aren't many configurable options which I don't like. It does not play tones either.
I've done a lot of scripting with VBS and some VBA so I'm somewhat familiar with the term "object model". I've done some simple HTML as well. I purchased what appears to be a
good book on C++ but I don't know if it will get me where I need to go with this project.
Generating the notes is the easy part; I think it would be simple to just assign a value to each note on the staff and the random number selected from a pool would indicate where on the graphic the note would show up. Adding an additional variable to indicate whether the note is natural, sharp, or flat would be easy as well. Essentially, the calculations behind the program are about as simple as you can get in my opinion. The hard part for me is putting the graphics on the screen.
Now that I've typed a bunch, on to the questions:
1. What programming language would you suggest?
2. What software would I need to implement that programming language?
I am not opposed to Flash, but wouldn't I need to purchase an expensive piece of software?
Like I mentioned, the calcs are easy. For me it's the graphics that would be hard.
I appreciate whatever advice you can give, Thanks!
-Matt