Remarks for MuseScore3, bugs, issues
the Qt state machine abstraction was removed in 3.x. The original goal to more abstract and simplify the code could not be achieved. The qt solution was replaced by an "in line" implementation which is simpler and easier to maintain.
During the transition some code was commented out resulting in some state transitions currently not working. For example some drag/drop operations may not work right in some states.
Tablature needs testing, has likely regressions.
Implementation of scripting interface is incomplete. The current regression tests reflect the status of implementation.
Due to many problems with QTextDocument, the class was replaced by an own implementation. The current implementation is incomplete. Only simple text editing works. Undo/Redo does work only for simple operations.
More style values need to be added to several elements. A style value may also have an corresponding element property. The inspector dialog and the style dialog needs to be updated along.
Import of 2.x and other formats needs to be tested. For this probably more regression tests are needed to get a better test coverage. 2.x scores will look different when loaded with 3.x. Especially the placement of manually moved elements will be different.
Remove the ability to define a Symbol as a list of Symbols. This was implemented to be able to compose a symbol out of other symbols. Its not necessary anymore as smufl (and bravura) now define all necessary combined symbols. MuseScore symbol names for this combined symbols should be replaced by smufl names.
Album feature is only implemented 10%. Old album features are removed.
Finishing this is a bigger task. Maybe this can be postponed after 3.0 release.
Autoplacement: the current status looks good to me but test coverage is hard to number. I expect lots of bug reports when users try to enter real scores.
Collision detection: the code is yet not optimized. The algorithmic behaviour of collision detection is quadratic. This means that if the number of elements double we need four times the time to detect a collision. This is ok for small numbers of elements but there is a risk this will not scale well for more complicated scores.
In 3.x text styles were removed because they do not fit well in the new scheme of property and style values. Somehow they are reintroduced as sets of style values. The current implementations hardcode some style sets as user1 user2 etc. to enable some of the previous text style functionality. This could be extended to allow arbitrary user-defined style sets. For this a gui similar to the old text styles would be needed.
Program Documentation: Better document the element interface to property and style values.
Code cleanups: check for consistent use of the documented interface.
Testing: Coverage of our regression tests and also the visual tests is low and should be enhanced. We have currently no way to test regressions during user interaction. Implementing a way to record and playback user interaction (events) would be helpful. Any attempt to implement something like this has failed so far.
*Inspector: It's not yet defined how the inspector should handle multiple selections. We should distinguish homogeneous (selection of same element types) and inhomogeneous (selection of mixed types).
Debugger: the internal debugger is not very up to date. I believe it is a useful tool and deserves some love.
Notation symbols: add more symbols from the smufl font to palettes.
Properties, Styles: add more properties and style values. Check the program for hardcoded values and replace them by style values. Especially style values to change the autoplace behaviour may be incomplete.
Profiling: the new layout engine together with collisions detection and autoplacement needs profiling to locate hot spots. It's important for a good user experience to make layout fast as possible.
MuseScore 2.0 had "MuseScore connect" a browser window in the start center where we could display scores, information, ads for "Mastering MuseScore", tutorials. It relied on Qt Webkit which doesn't exist anymore in Qt 5.9. It has been replaced by QtWebEngine which doesn't work on Mingw Windows. In order to solve that, we need to re-implement "MuseScore Connect" with another technology (QML/QtQuick?Widget?) or compile MuseScore with Visual Studio to make use of QtWebEngine, or try something else (Qt WebView ?)
Regressions in visual tests
- frametext (ok)
Check text alignment of topLeft Lyricist topRight Composer
Autoplace for slurs is work in progress. Some slurs look bad/wrong.
The augmentation dot distance for small notes seem to be to large.
This seems to be a bug for me. (Also present in 2.x)
Collisions between harmony elements
Chord name (harmony) and fret diagram are stacked in wrong order
- harmony-3, harmony-5, harmony-7/8/9/10/11
Check style for vertical default position.
slant should be zero for third beam
size for first staff is wrong
layout is wrong
change file format to mscz as mscx does not support images
LyricsLine is not handled right in autoplace. The line vertical position is wrong.
Lyrics are cut on the left if they do not fit on page
- slash-1, slash-2
stem direction and anchor point is wrong
System bracket is misplaced
Instrument name on second system is missing. Hide staff only if complete instrument is empty?
barline is missing
trill, gliss etc. is too big in small staff
Should there be a clef?