Staccato overlaps highly slanted beam on upper voice

• Feb 18, 2019 - 17:44
Reported version
3.0
Priority
P0 - Critical
Type
Functional
Frequency
Once
Severity
S4 - Minor
Reproducibility
Always
Status
closed
Regression
No
Workaround
Yes
Project

Automatic placement doesn't seem to put staccato markings high up enough in some cases:

overlap.png

See attached score.

Reproduce:

1) add some high, beamed notes in voice 1
2) add some lower notes in voice two so that the beam is forced to go above.
3) add staccatos to the voice 1 notes

Result:
staccatos collide with the beam.

Expected result:
they don't collide with the beam.

Attachment Size
Sweden.mscz 32.39 KB

Comments

It's an issue for staccato and tenuto, which are the articulations we try to place close to the note (inside slurs) as per Articulation::layoutCloseToNote().

Articulations are computed in three passes right now, the first of these happens before beaming so stem lengths are not really known. I think probably we are initially placing the layoutCloseToNote() articulations during that first pass (Chord::layoutArticulations()) but not updating them during the second (Chord::layoutArticulations2())

I am not actually sure these need to be three passes anymore, we could possibly get away with calling both layoutArticulations() and layoutArticulations2() at the same time, or just combining them. Seems there must have been some reason I kept that first pass where it was, but since it causes this problem, that needs to be revisited anyhow.

Fix version
3.0.3