GSoC 2018: Score Comparison Tool — Week 11
Hello!
As there are only two weeks left for this GSoC I think it would be better to discuss some plans for the rest of that time in this post. Still I'll begin with those changes that were done during this week.
Recent changes
I. Improvements in a comparison readability
1. A consistent way of adding a human-readable representation of various properties was added to MuseScore code. Note pitches and barlines types are not shown as just numbers anymore but displayed in a human-readable way. I didn't add all properties to that system though. Properties names are not translated for now either.
2. Equivalent (or similar) properties changes are now merged. That helps to avoid displaying, for example, a note pitch change twice as it was done before because of the presence of partially overlapped properties denoting tonal pitch class and pitch itself.
3. More strings are now translatable.
II. General score comparison tool improvements
A score comparison tool tries now to keep the diff up to date if user changes something in the compared scores. The tool avoids unnecessary updates when the it is invisible or when nothing was actually changed. Although I did not target an optimization, after recent changes a score comparison process became somewhat faster too.
III. Minor raw diff view usability improvements
IV. Other internal changes
Also the work was began on adding a possibility to compare score versions. It is still unfinished though.
Remaining issues and plans
Score comparison engine
Alhough I made some effort to improve the score comparison engine it still has one main weakness: it is based on a textual comparison of MSCX code for the scores. Those diffs can be not too meaningful for XML documents (and MSCX format is XML-based). While in some simple cases those "mistakes" can be fixed it can be much more difficult to do it in some other cases. While the current engine should work well for most small changes perhaps in the future the textual comparison component should be replaced to something specifically designed for XML comparison or even MSCX comparison.
Other issues and features to be finished during the remaining time include:
1. Translating properties names and some other text
2. Handling voices changes
Some types of changes like voices changes are not still handled well by the textual diff parser.
3. Versions comparison
This feature is not finished yet even in its most simple version (comparing current, recently saved and session start versions).
4. Command-line options for score comparison
While a work on a score comparison engine is not less important than other listed problems I think it would be better to focus on the latter issues for now to get a tool that can be considered to some extent feature-complete. Then the second pull request including the work on the tool itself should be prepared, and the first one should be updated.
Hopefully this plan is realistic :)
Thank you!
Dmitri Ovodok