Accessibility: don't read staff text and other extra info for each note of chord

• Sep 8, 2019 - 17:17
Reported version
P2 - Medium
S5 - Suggestion

1) enable a NVDA
2) chord of 2 or more notes
3) add staff text
4) navigate between notes using Alt+left/right

Result: the staff text is read for each note of the chord. Same for lyrics, articulations, and other elements actually attached to the chord or segment and not the note itself.

This is unnecessary and distracting. This information actually doesn't need to be read at all when navigating with Alt+left/right, because it will eventually be hit by the navigation. But it is helpful to hear it when navigating using left/right alone, since that will hit only the notes.

Luckily there is a simple solution: only read the chord info for the top note of the chord. This is the only note hit when using left/right. When using alt+right, the top note is encountered first, so one hears the extra info when you first hit the top note of the chord, then navigation takes you through the other notes, then through the other elements - so the extra info "bookends" the notes. The reverse is true with alt+left - first navigation takes you through the extra elements, then through the lower notes in the chord, and finally the top note which reads the extra info, again giving you the "bookends".

Because this relates to #293300: Optimize screenreader info information during score navigation, I am including my implementation for this in the same PR.


Status PR created fixed

Fixed in branch master, commit 5eccc30d1a

_fix #294237: optimize reading of extra information for notes and rests

In the original implementation of accessibility,
we had the screenreader always read all extra information associated with a chord
(including articulations, lyrics, staff text, etc)
every time a note in that chord was selected.
This was necessary becayse we had no no way at the time to reach those elements individually.
Now that the next/previous element commands can access those elements directly,
we no longer need to read them on selection of the note.
And yet, reading this information on ordinary navigation (left/right) is not without value.
So this change simply limits the reading of the extra info to the top note of a chord,
and even then also checks voices for segment annotations.
The result is, when navigating, you'll hear the extra information read
when the chord is first hit, because we navigate chords top to bottom,
ut will not hear the extra information repeated for each subsequent note in the chord.
Beat information continues to be read always._

Fix version