Musescore does do a great job and is open source, so there's that. Another option is to have users manually upload midi with a proper score attached to some store or community repo with user reviews. It's less satisfying as a solution, but it means all it takes is one motivated user for everyone to enjoy the score.
For my final point, you can model this as a hidden markov process. You're observing notes, but not the user moving his mental "cursor". Classical filtering algorithms should do well here.
Ah, one more missing feature, good scores have fingering, but it gets lost in the midi. I'm pretty sure fingering can be infered though and this would be pretty powerful. Amusingly, it can also be seen as a filtering problem:
- At any given point, a hand can have a finite number of fingerings, and that number isn't that large. Give each of them a difficulty.
- Now, make that difficulty conditional on the previous hand position.
- Run Viterbi's algorithm on the score to minimize the difficulty.
The difficulty can be obtained from an expert or through some physiological model, but they could also be inferred from an existing body of music sheets.
Fingering we have a pretty good hold on already, so I'm not too worried there.
Importing alternative formats (xml for instance) is definitely an option worth looking into, but because the bulk of the material that is out there that people can freely access is in midi format we chose that one first.
> have users manually upload midi with a proper score attached to some store or community repo with user reviews. It's less satisfying as a solution, but it means all it takes is one motivated user for everyone to enjoy the score.
Musescore already has such a collection of sheet music https://musescore.com/hub/piano so it'd also be possible to allow users to import from there, going from sheet music to midi instead of trying to reverse the process.
Yes, but then you would still lose quite a bit of information. Besides that, musescore is pulling a bait-and-switch on the user generated content that makes gracenote look good.
For my final point, you can model this as a hidden markov process. You're observing notes, but not the user moving his mental "cursor". Classical filtering algorithms should do well here.
Ah, one more missing feature, good scores have fingering, but it gets lost in the midi. I'm pretty sure fingering can be infered though and this would be pretty powerful. Amusingly, it can also be seen as a filtering problem:
- At any given point, a hand can have a finite number of fingerings, and that number isn't that large. Give each of them a difficulty.
- Now, make that difficulty conditional on the previous hand position.
- Run Viterbi's algorithm on the score to minimize the difficulty.
The difficulty can be obtained from an expert or through some physiological model, but they could also be inferred from an existing body of music sheets.