Removing a tuplet on voice >0 does not bring rests in place

• May 24, 2022 - 13:14

When a tuplet on lower voice (voice 1, 2, 3), using the full measure length is deleted, it is not replaced by rests.
Making it difficult to re-enter notes on that voice.

The same action done in a non-tuplet context produces the expected rests.


Is this the expected behaviour ?

Attachment Size
mcveTupletDeletion.mscz 3.46 KB


To me this is expected behavior. If the entire contents of voice 2 are now empty, there is no harm at all in leaving it empty. You can enter notes into the empty voice 2 just as if there had never been notes there before - empty is empty and works the same in either case. Are you seeing some specific sequence of steps where this isn't the case - where something that would have worked before entering then deleting the tuplet doesn't work afterwards? If so, could you post the precise steps to reproduce the problem?

Normally, the only time missing rests cause problems is if they represent "holes" within a measure - if some beats have notes/rests but other beats lack them. And as far as I can tell, MuseScore is careful to avoid doing this here. If you delete a tuplet that does not cover the entire measure, it correctly leaves a rest behind rather than create a hole.

In reply to by Marc Sabatella

I raise that point because it is not consistent to a non-tuplet context.
If instead of the tuplets one have a whole on each voice, deleting the whole on the 2nd voice, MuseScore replaces it with a rest.


In the end, this is definitely not a blocking inconsistency (except for my Duration Editor plugin that has some troubles in that use case ;-) )

Attachment Size
removeTuplet3.gif 25.91 KB

In reply to by parkingb

True, because then you are selecting individual notes (just one note, but still, a list selection that contains only notes). With a list selection containing notes, each individual note is replaced by a rest, thus retaining the original durations and segment structure, but just replacing notes with rests. The same if you select the individual notes of a tuplet - they are replaced by notes, while preserving the durations. This works also if the notes aren't contiguous.

The special casing that happens here is because you are not just selecting individual notes, you are selecting an entire tuplet. Deleting the tuplet means you can't simply replace the notes with rests, as those time positions no longer exist (they happen to in your example only because the same rhythm appears in another voice). So it's fundamentally a different operation from deleting individual notes, and is more like a range selection in that sense - deleting everything between a given start and end time position. And just as with range selections, deleting is smart enough to not just leave behind individual rests, but to instead calculate the correct series of rests to fill the allocated space - which in this case turns out to be, no rests at all, because the voice is now empty and that's the correct way to show an empty voice for voice > 1. Had it been in voice 1, it would have been a full measure rest, because that's the correct way to show an empty voice 1.

So again, there shouldn't be an actual problem from any of this. Deleting the full tuplet leaves you in a completely consistent / correct state - with the correct series of rests left behind to replace the tie formerly taken by the tuplet. This works correctly whether that happens to be a single duration rest (eg, deleting a quarter note tuplet leaving behind a half rest) or combination of rests correct for the time signature (eg, deleting a tuplet whose total duration is three beats leaves behind a quarter and half rest in the correct order for the beat position) or a full measure rest (if it's voice 1 and is now empty) or nothing (if it's voice > 1 and is now empty). So you are now in exact the same state as if the tuplet never existed, and can proceed in in exactly the same way.

Do you still have an unanswered question? Please log in first to post your question.