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.39k stars 2.68k forks source link

Rests on hidden staves distort spacing on visible staves #19850

Open sammik opened 1 year ago

sammik commented 1 year ago

Issue type

Engraving bug

Bug description

In some situations quater notes are spaced weiredly.

Propably core of the issue could be, that hidden staves affect spacing of visible staves, but they shouldn't!

Steps to reproduce

see attached file ~Morales-Missa_Pro_Defunctis.zip~ right one for testing: weird-spacing.zip

Screenshots/Screen recordings

syncopated-hspacing

https://github.com/musescore/MuseScore/assets/1646034/a65161f8-d257-4f98-97ad-0d26b7af573d

MuseScore Version

master

Regression

I don't know

Operating system

Ubuntu 22.04

Additional context

No response

MarcSabatella commented 1 year ago

I can reproduce on master, but only by showing empty staves and entering the series of rests shown at 0:36 in the video - the file as is has those measures with only a full measure rest.

sammik commented 1 year ago

@MarcSabatella thanks for testing. You are right, I posted corrected version.

Here is single measure test file. weird-spacing weird-spacing.zip

I think, simplest solution could be, that option "hide empty staves" replaces also rests there by measure rests.

(Edit: this file with 'hide empty staves' turned off): image

MarcSabatella commented 1 year ago

I'm not crazy about that idea, as there are cases where people plant rests in a specific rhythm and wouldn't want that lost without an explicit action. For instance, people do this as a prelude to attaching symbols or text or whatever. Whether any of those cases overlap with hide empty staves, I cannot say. But still, it makes me uncomfortable for toggling hide empty staves to be destructive in any way

In theory, there would be some place in the code where we are failing to check if a staff is empty before considering it in layout. But I know it's often tricky with hide empty staves, because until you're done collecting the system, you don't know which staves will in fact turn out to be empty. Similar issues come up for instrument names. I gather the MU4 horizontal spacing does work in two passes at some level in order to get the basic note spacing correct. My hope is that there's just some place in there where this check could be added. But I don't know the current code well enough to say more.

bkunda commented 1 year ago

@sammik can you please confirm whether this is a regression on 4.1.1?

sammik commented 1 year ago

@sammik can you please confirm whether this is a regression on 4.1.1?

@bkunda It is not regresion on 4.1.1.

oktophonie commented 1 year ago

If a stave is hidden (because the logic determines that it doesn't contain anything that requires it to be shown) then, just as it no longer has any impact on the vertical layout of the page, its contents - in this case, rests dividing up the bar - shouldn't have any impact on the horizontal layout either. The actual rests should be preserved, though.

See also https://github.com/musescore/MuseScore/issues/19850