Slurs do not move outside articulations if there is room to thread them through

• Dec 12, 2018 - 03:53
Reported version
3.0
Priority
P2 - Medium
Type
Functional
Frequency
Once
Severity
S4 - Minor
Reproducibility
Always
Status
active
Regression
No
Workaround
Yes
Project

Seems to happen with all of them except tenuto, staccato, upbow, downbow, bartok pizz, and the bend. badaccent.png

Measure 16, clarinets.

Attachment Size
Dvorak_Symphony_No._8_Mvt2.mscz 86.09 KB

Comments

Workaround No Yes

Workaround is to turn off autoplacement. Dragging doesn't work, which is almost worse than the actual issue I reported.

Priority P2 - Medium

According to Gould, the rule is, articulations go outside on the first & last note, inside for other notes (except staccato and tenuto which are always inside). Unfortunately, our algorithm won't make that distinction easy. Worth giving it a shot at some point, though.

As for the dragging behavior, remember, the algorithm goes in one direction only. There is a specific order in which things are laid out, and each goes on top of the other - no way to tuck later ones under earlier ones. So, since slurs get placed before articulation, you won't be able to drag the accent under a without disabling autoplace. Elsewhere it has been suggested that dragging could automatically do this, but there are other use cases where you don't want that. For example, if you want the accents above, you would hate to find that making a slight adjustment to the slur suddenly disabled autoplace and thus forced the accents back down.

In reply to by Laurelin

To be clear: you can drag autoplaced elements around. It just won't work to change the vertical ordering. So that becomes an interesting feature request: disable autoplace automatically on drag only if an element is dragged above or below another. Still, I fear it wouldn't quite do what one wants, as disabling autoplace for that element may change the position of others as well.

Priority P2 - Medium P1 - High

Can anyone verify if this worked differently before the "skyline" code was merged a few months ago? In a build from August (20180 or earlier, what does you do get if you add accent marks to notes within a slur - under or over the slur? I'm guessing over the slur for accents on the endpoints, under the slur for interior notes. Or can someone point me to older builds for Windows?

The "skyline" code was implemented in the first half of September, here for articulations (September 12): https://github.com/musescore/MuseScore/commit/bb08200e1037edb5ec22c99b4…

After checking, I see no difference between before and after (at least with the examples below)

Some images:

1) Nigthly of September 1.
(the first image is the default behaviour: notes + slurs, then adding staccatos)

1septembre defaut.jpg

(The second image is the result after using Flip ('X') for the slurs, then enter staccatos)

1 septembre flip first.jpg

2) Nightly of September 21. (so, same result)

(the first image is the default behaviour: notes + slurs, then adding staccatos.)

21 septembre defaut.jpg

(The second image is the result after using Flip ('X') for the slurs, then enter staccatos.)

21 septembre flip.jpg

On the other hand, not sure if this was planed.

Look at the second C: if the slur exactly fits between staccato and accent or even below both (not shown), it will be there. Doesn't this conflict with Gould?

Title articulation placed outside slur even when slur is far away Slurs do not move outside articulations if there is room to thread them through
Priority P1 - High P2 - Medium
Severity S3 - Major S4 - Minor

Thanks for the kind words - I feel the same about your reordering of the main layout sequence :-)

It is a side effect of how slur layout works (checking for intersection with individual segments shapes rather than with the skyline) that you can get some cases where the slur will tuck itself into places you might not expect. The articulations get laid out first, then the slur checks for intersections, and lo and behold, there are none, so no adjustment is made.

In this particular case, this is arguably a good thing - why move the slur further away than is actually necessary? Especially given the poor results that would generally result given all we do is move the slur, not reshape it. Again, in this particular case, it wouldn't be so bad - the slur would now start and end just past outside the accents on the first and third notes, making us look more clever than we are (Gould does say it's fine to bring the accents in at the endpoints if they would otherwise be too far away). But remove the accents on those outer notes and we don't look so smart:

slur-corner-case-2.png

(that's the result of manually moving the slur up; you can imagine it would look nicer with accent marks still on the first & last notes of the slur)

Anyhow, Gould doesn't mention any such specific exception to allow interior accents to go outside the slur. So, technically, this could be considered a bug, albeit a much more minor one that we probably shouldn't try to address until we implement some sort of slur reshaping algorithm, since otherwise the cure will be worse than the disease. But also, note we provide a combined articulation on the palette and the official recommendation is to use those where possible. Then you can get the result in my image above for free :-)

So I'll leave this open but with the name changed since it really isn't about leaving articulations outside in cases where there is room inside, but more about not always creating room.

I was aware of the combined articulation, but didn't use it, as I wanted to stress the layout engine :-)

This said, I have to admit that I am not happy with these two possibilities to add an accent/staccato combination. Both ways should end up with the same result, i.e. the combined articulation should be (or should at least feel) only like a shortcut for the user. I will put this in a new issue.

I think there is general agreement it makes sense to automatically convert from separate to combined. I've suggested this be the job of autoplace, so disabling it gives you independent control again.