Suggestions/requests for the plugin API
Some additions to the plugin API I believe useful:
1) MuseScore version: as the plugin API is going to evolve, it is important a plugin knows which version of MuseScore it is running in.
This may take at least three forms (in desired order):
* 1 global variable returning the major, minor and update version in a combined form; for instance the global variable musescoreVersion could return 905 for version 0.9.5, 906 for version 0.9.6 and, in the future, 10213 for version 1.2.13;
* 3 separate global variables, returning the major version, the minor version and the update version: for instance musescoreMajor could return 0, musescoreMinor 9 and musescoreUpdate 6;
* 1 global variable returning the revision (then 2012 for the stable 0.9.5 version); this would be the most precise, but less understandable than the previous.
I think a string return value, like "0.9.6" would be the least useful, as numbers in strings are difficult to compare.
2) invisible status: an item may be irrelevant (or maybe not) if it is invisible (for instance an invisible rest in multi-voice staves); it is better to report the visibility status and let the plugin to decide.
3) The Note object could take advantage of several additions:
* the datum contained in the <tpc> tag of the .mscx format, for easy enharmonic recognition;
* the datum contained in the <userAccidental> tag of the .mscx format, for quarter-tone info;
* the tied status, possibly differentiating between tie beginning, tie continuation, tie end, so a plugin can distinguish between notes inherently separate or only graphically divided;
* the slur status (similar to tie status);
* the invisible status, as per point 2)
* 'small' notes (appoggiaturas and acciaccaturas) are currently hidden to plugins: they should be reported and qualified as such.
4) Selection info: I know this is under discussion, but I though it useful to repeat it here.
5) curCursor: I have never been able to use the value returned by this global variable; either it is my fault or an issue with the program...
I would like to help with these issues, but all my attempts to replicate a development setup of MuseScore have miserably failed so far (probably I'm too spoiled by VisualStudio...), so I can only beg at the moment.