cross-staff notes ignore accidentals

• Apr 6, 2015 - 23:35
Priority
P2 - Medium
Type
Functional
Frequency
Few
Severity
S4 - Minor
Reproducibility
Always
Status
active
Regression
No
Workaround
No
Project
Tags

When notes are moved to another staff, their accidentals are still determined by the staff they came from, not the staff they are now on. The attachment illustrates the issue. As a result, the score may look right but the playback sound wrong.

This is low priority, as there is a workaround: set the note to the proper pitch, then make its accidental invisible. For example, hide the redundant ♯ or ♭ (when the one already on the staff is ignored), or the extra ♮ (in cases where the "from" staff has a ♯/♭ but not the "to" staff so it has to be neutralized).

For practical examples, see e.g Rachmaninoff op 33 No 8 in G minor (at meas. 8, 28, 30).

Attachment Size
issue.mscz 4.31 KB

Comments

FWIW, I suspect that fixing this would be harder than one would think, because at the point where we are calculating accidentals for each note, we really don't have a lot of context. Mostly just the note itself and a data structure that is built on the fly to record "accidental state" for each line of the current staff.

However, when I think about this and #49421: Proper use of accidentals after octave change loco. together, I think the way forward is probably to expand that data structure to be keyed not just on staff line, but to also consider effective staff and ottava state somehow. For cross-staff, that probably means rethinking how we go about doing this a bit - treating the staves of an instrument together rather than one at a time.