Silently skiping unimplemented parts of an operation
I ran into a case where MuseScore quietly skips doing a part of an operation it was requested to do. This brings up the question whether or not it should bring up a dialog box warning the user that it was unable to perform all of the operation it was requested to do. The particular case I ran into was merging vocal parts from four staffs (S A T B) to two (SA TB). Since this is you would typically do after you have completed working the individual parts and are reducing the score for printing, it is likely to be done on an entire score. Therefore, having the operation not performed on a few notes within the score can easily go unnoticed until fixing the problems introduced can be difficult.
The details are as follows:
The new voice-move algorithm did a great job when I used it to perform the merges. All I had to do to combine Soprano and Alto parts was to move the Alto part to Voice 2 and then cut the Soprano part from its staff and paste it into the staff where the Alto part was located. I then repeated the process for Tenor into Bass. This worked great because the method I used to move the Alto part to Voice 2 was to use Edit : Voices : Exchange Voice 1-2.
There would appear to be an alternate one-click method of switching the notes in a measure from Voice 1 to Voice 2: just click on the Voice 2 number button in the note entry palate. However, clicking on the Voice 2 button with measures selected is intended to mash all the notes into Voice 2. When the only notes present are in Voice 1 the results will be the same with very important exceptions. Combining duplets with other (non-null) voices is virtually impossible and combining tied notes is very difficult. MuseScore does not attempt to perform merge these notes into Voice 2 but rather leaves them in Voice 1. No notes disappear. When the notes from the other staff are pasted into the staff where most notes were moved to Voice 2, all looks fine. However on closer examination, the tied and duplet notes that were left in Voice 1 are now gone. They are over-written by the Voice 1 content that was pasted into their staff. Performing the operation on those notes that could be merged and presenting a warning dialog box would at least warn the user that something was not done.
Comments
Actually, I'd question your basic assumption - this voice-moving feature was not really intended to be used on an entire score. It was really intended for moving single notes, and just happens to also work with multiple notes selected. I'm not sure why you don't simply continue to use the voice exchange feature - it's really much better suited to what it seems you are trying to do.
In reply to Actually, I'd question your by Marc Sabatella
I certainly will not make the mistake myself (again). It is just that the little numbers on the note entry palette are so inviting. You select all the measures in a staff and click on the number and all the notes appear to be moved to that voice. A dialog box popping up when someone tried to use it inappropriately would warn them that they were not getting what they thought they were.
If dialog boxes for this purpose are not acceptable, it would be better to just not perform the operation on any of the notes if some notes cannot be operated on. That way the user would not think that the operation had succeeded.
In reply to I certainly will not make the by MartinSiii
That's a good idea in principle, but tricky, because we might not know some notes can't be operated on until we've already started.
I too am uncomfortable with how easy it could be to accidentally hit the voice button and have things move around, and this is equally true whether all notes can be operated on or not. I think this operation should be extremely rare, but people might invoke it accidentally. Merely disabling the operation in some cases doesn't really address this more fundamental concern. I think I'd rather it just be harder to invoke this operation, so you don't do it accidentally.
Another thing we could do is refuse to do it for a range selection - only for single notes or a multi-selection of individual notes.
In reply to That's a good idea in by Marc Sabatella
I wouldn't expect the problem to be detected until after some of the notes have been operated on. The program could halt the operation and generate the dialog box when it first detected the problem. Alternatively, the program could set a flag, allow the operations to run to completion, and then generate the dialog box before exiting the command. In either case, the user could then use undo to unwind from whatever had been done.
I am not saying that a user would accidentally hit a Choose Voice button. However, this user wanted to combine two vocal parts into one staff. I realized that it should be possible to do this by putting the two vocal parts in different voices in the same staff. Since all the notes in both source staffs were in Voice 1, it appeared that I could move all the notes in one staff to an empty Voice 2 by selecting all the measures in that staff and pressing the 2. It would then be a simple cut and paste operation to move the other Voice 1 notes into the staff that had had its notes moved. That this would not work but "Exchanging" an empty Voice 2 with a non-empty Voice 1 would work was certainly not obvious to me. I would not expect it to be obvious to another user without knowledge of internal MuseScore workings.
In reply to I wouldn't expect the problem by MartinSiii
These are good points. Hoping others will weigh in on this.