setting crescendo / diminuendo lines and hairpins position to below staff doesn't 'survive' save/close/reopen

• Apr 9, 2019 - 11:11
Reported version
P1 - High
Graphical (UI)
S3 - Major

Steps to reproduce bug:
1) SATB reduced sheet
2) write 2 different voices in 1 staff (not unison)
3) set different crescendo/diminuendo for each voice
4) set 2nd voice's crescendo/diminuendo below the staff and 1st voice's crescendo/diminuendo above the same staff
5) save end exit
6) open the same file

2nd voice's crescendo/diminuendo should be placed below the staff.

But, it is not. It happens that all crescendo/dimunuendo appear above the staff.

OS: Windows 10 (10.0),
Arch.: x86_64,
MuseScore version (64-bit):,
revision: 58dd23d

Attachment Size
Lightning.mscz 27.52 KB


Regression Yes No
Reproducibility Randomly Always
Status open issues by design
Workaround No Yes
  1. Different dynamics and hairpins are not possible for voices, playback wise (see also #58031: Dynamics/hairpin range for Voice)
  2. Different style settings for dynamics and hairpins per staff are not possible, these are per score

It's been that way ever since > not a regression
You can change those dynamics' and harpins' properties to 'Below' via inspector > Workaround

Regression No Yes
Status by design active
Workaround Yes No

Oops, I see, the (de-)crescendo lines and hairpins don't retain their setings across a safe/close/realoed

Title Wrong crescendo / diminuendo position in 2 voices staff setting crescendo / diminuendo lines and hairpins position to below staff doesn't 'survive' save/close/reopen
Severity S4 - Minor S3 - Major
Priority P1 - High

I guess this is probably only an issue for scores in which the style default has been changed to above staff (the base default in MuseScore is below). So now if you flip something below, it is probably seen as being the default value and hence not written to the file. We should be setting the UNSTYLED property flag which should make this work. But clearly it doesn't for whatever reason.

Workaround No Yes

so the workaround is to leave them at the default (below, via style) and modify those for voice 1 to above (via inspector)

Turns out that code is fine, the problem is a bit deeper but still simple. In short, we don't fully honor the placement style default for hairpins (or pedal lines, perhaps some other elements too) at all. Sure, it works to have the style default set to "Above" when adding the hairpin via drag&drop or keyboard shortcut, but not on double-click. You can also see this if you hit Ctrl+R on a hairpin - it reverts to below even though above is supposed to be the default. Same for the reset button in the Inspector.

The fix is to make sure propertyDefault returns the correct style value for PLACEMENT for all elements. RIght now it does only for the elements that went out of their way to special case it. I think it's best to address this at the Element level, and that does fix these problems, but I will do more testing to be sure.

Fix version