staccato dots misplaced

• Sep 10, 2019 - 18:14

I searched for existing problems, and found a similar problem at issue #109096 (sorry, don't know how to make a link), but that must have been ver 2. Perhaps this is slightly different...


Cross-staff notes get the staccato dots in the wrong place. First beat shows the default result. Then (beat 2) there is the problem that the dots crash into each other and the notes. Using x to flip them to the other side sort of works, but not without major adjustment: beat 3. On the last note I flipped them out: they seem to be positioned vertically with some fixed spacing from the top of the beam, so top and bottom ones are quite different. Then on the first note of beat 3, the flipped dot ends up at the end of a stem that isn't there.

Hope this is all specific enough: everything can be worked around...

Attachment Size
Staccato.mscz 5.12 KB


In reply to by Jojo-Schmitz

The other issue seems to be fixed (is that what the crossed-out link means?)... but this is still a problem in version 3. Previously the problem occurred for any beam with note heads on both sides; this does appear to have been fixed. But now the problem is back when the beam crosses to the other staff.

There are various other minor problems with cross-staff beams. I can see that this is a slightly arcane bit of notation, but it is essential in piano writing. What should I do? Raise this as an "issue"?

I have investigated a bit more the problems of cross-staff notes, and "cross-beaming" in general (beams with notes both below and above: please look at the examples in the attached score. (I can't find a standard term: Gardner Read just calls them "exceptional".) Some problems apply both to the single staff and cross-staff cases; the articulation direction one from #109096: Articulations incorrectly placed for beamed notes where stem direction differs from default beam direction has been fixed, but only in the single staff case.

Example score: Cross-beam.mscz
Problem 1: horizontal spacing is wrong. Stems should be approximately evenly spaced; MS spaces the noteheads.
Problem 2: horizontal spacing wrong again; but also stem extends too far.
Problem 3: articulation direction still wrong for cross-staff case.
Problem 4: various beaming issues, perhaps better regarded separately. Some of these are horrendous, and I doubt if there is a clear "right" way to do it.

This seems rather more than an "issue", or at least not a single one. I would be interested in looking at the code, if there is a reasonably self-contained chunk which assigns properties like "stem direction". (It is rather more than a quarter-century since I last used C++ in earnest, so I would need help.)

In reply to by Imaginatorium

Great, we'd love to have you get involved in this way!

Unfortunately cross-staff beaming gets into some complex areas, because things are done in several different passes. We can't fully lay out cross staff beams until we know the distance between staves, but part of that calculation involves things like knowing the position of articulations so we can see if extra space is needed to avoid collisions, so there is a chicken-and-egg problem inherent in this. We make a guess about stem direction early on so that we can make the calculations we need at that stage, but if the guess turns out to be wrong, we don't always recover completely.

Probably the fix would involve hooking into the places where we decide to correct and initial guess, and make sure that when we do so, we update articulation positions. Most of the code involved happens in chord.cpp, beam.cpp, or layout.cpp.

In reply to by Marc Sabatella

I can see that this is a nightmare: every simplifying assumption you can make about how to simplify layout decisions gets broken by cross-staff beaming. I did download the code and started looking, but this is not an easy place to start. I have also collected (surprisingly easily) some examples of real scores with cross-beaming, both ancient and modern, and I will try to write about it. This may not happen immediately.

Do you still have an unanswered question? Please log in first to post your question.