musescore / MuseScore

MuseScore is an open source and free music notation software. For support, contribution, bug reports, visit MuseScore.org. Fork and make pull requests!
https://musescore.org
Other
12.31k stars 2.66k forks source link

Ability to assign tuplets to another voice #23865

Open wizofaus opened 3 months ago

wizofaus commented 3 months ago

Your idea

It'd be great if assigning tuplet notes to different voices were possible and worked just like assigning any other sorts of notes to other voices.

Problem to be solved

If I add triplet 1/4 notes to a measure (e.g. use Ctrl+3 on a half note rest before assigning pitches), currently I can't select just those notes (or even the whole measure) and use Ctrl+Alt+2 to assign to voice 2. This works fine with any non-tuplet note durations. Exchange voices can be used but that only works measure-by-measure (regardless of what's selected), and I may have notes in v2 I don't want moved into v1.

Prior art

No response

Additional context

Alternatively the command should be renamed "use voice 1 for non-tuplet notes except in note-entry mode", or at least the manual should be updated to explain that the command is only designed for non-tuplet notes when not in note-entry mode. In note-entry mode the command works for tuplets (i.e. allows entering tuplets into a particular voice).

Checklist

MarcSabatella commented 3 months ago

Some context:

The reason this limitation was imposed is that the command was originally designed to handle only single notes, and it is considerably more difficult to transfer a single note of a tuplet to another voice (especially since the code predates the use of "fractions" to capture tuplet durations) than for non-tuplet notes. It's basically the same reason we don't support copy/paste of partial tuplets.

But of course, copy/paste does handle full tuplets , and that is relatively simple precisely because it works only on range rather than list selections. So it's much easier to detect and handle these cases. Whereas the voice commands operate on list rather than range selections (even if there happens to be a range selection, it is treated just as a list), so there isn't a point at which it is known the full tupelt is selected.

A special case could certainly be added to handle range selections that include the full tuplet, so we can recreate the tuplet in the destination voice and allow the command to succeed. And then it would be that much smaller of a step to also detect and handle cases where all notes of the tuplet are selected in a list, and from there to make it work even for individual notes within tuplets.

So, obviously, it's not impossible to handle this - just complicated, hence the current restriction.

As for changing the name of the command to document the limitation, that's just silly. We don't call the copy command "copy except for partial tuplets" or anything like that. But sure, adding a note about the limitation to the handbook makes sense - both for the voice commands and the copy/paste commands.

oMrSmith commented 1 week ago

image

It's an odd behavior: You select a whole measure, click "voice 2" and all notes change except the triplet.