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.33k stars 2.66k forks source link

‘Merge matching rests’ default value as a staff style property #24983

Closed rpatters1 closed 1 month ago

rpatters1 commented 1 month ago

Your idea

Add a Merge matching rests by default option to the Staff Style properties that checks (or unchecks) Merge matching rests accordingly when new staves are created.

Problem to be solved

The Merge matching rests option in the Staff properties is an excellent feature, but I and (I suspect) many others would like it always to default to checked when starting a new project or importing a MusicXML. To this end, I would like to see a new style property that accomplishes this.

I've been assured that one can do this with templates, but that cuts me off from all the built in templates unless I go through and recreate every one of them.

Prior art

Finale added this feature as a document-level setting a number of years ago, due to clamorous demand from the user base. Since that version, it is the default setting for all new documents, even the bare-bones "New document without libraries". As with MuseScore, it can be overridden with manual edits on specific rests.

Additional context

This is a project I could work on, if there is consensus that it is a good idea.

Checklist

bkunda commented 1 month ago

Can I just confirm: do you mean you'd like this to be a global style property (so affecting all staves; not a staff style property that has to be set on a per-stave basis)?

rpatters1 commented 1 month ago

A global style property affecting all staves would be fine with me. But I would be satisfied with a global style property that overrides the settings in the templates when staves are created.

An alternative would be to set the property in all the packaged templates, but I'm not crazy about that. (Nevertheless, this is more akin to what Finale did when they introduced the feature.)

rpatters1 commented 1 month ago

The global style property might be a checkbox like:

[ ] Always set 'Merge matching rests' when creating new staves.
cbjeukendrup commented 1 month ago

I think our preference would be to make it a global style setting, that users can override per-staff if they want, but by default staves would follow the global setting. Is that right @bkunda?

SteveBlower commented 1 month ago

I think that having merged rests as the default is not ideal.

If you click on a merged rest it is only the rest in the highest numbered voice that gets selected. Thus, if you specifically want to edit voice 1 and you select a rest that has merged voices 1 and 2 you next have to select voice 1. If you do not notice that voice 2 is selected your intended voice 1 edits end up in voice 2. If the rests are not merged you can immediately select the voice 1 rest. Merging rests is an operation best done after editing is completed -similar to page layout.

I also suspect that merged rests as a default may cause confusion with some users who will not realise that rests have been merged rather than removed completely.

But having don't merge as a default global setting for new scores that users can decide whether to leave as is or turn on (to merge) seems mostly harmless.

rpatters1 commented 1 month ago

I think that having merged rests as the default is not ideal.

Different strokes. This is why it will be an option. I also think there needs to be a way to change all staves at once, which would be in line with the idea of changing it later in the process.

Also, is selecting the highest numbered voice the right choice? It seems to me like it should select the lowest numbered voice.

SteveBlower commented 1 month ago

Yes, a choice, but my comment discusses which choice should be the default. The original issue suggests merging should be the default and I disagree for the reasons I gave.

rpatters1 commented 1 month ago

If someone would like to assign this to me, I'll work on it.

The default value of the new setting will be current behavior (i.e., unchecked).