Accessibility for the Blind

A lot of work has gone into making the KeyMusician Keyboard application accessible to the blind.

Where the application serves as a MIDI controller, it actually makes it possible to use synthesizers whose means of control is an LCD screen, which blind people can’t use. The KMK allows you to control most of the features of such synthesizers, and is accessible to the blind.

We also made it possible to re-map the music keyboard keys, using a text file, rather than totally depending on the keyboard mapping graphics display.

Despite all we’ve done, it is not possible to make the real-time display of the notes played (in key-signature context) accessible to the blind. The same is true for the Keyboard Monitor window, which shows you what keys to play when learning music from a MIDI file.

My advice to users who are blind, is to concentrate on the sounds or sound-changes made by doing various things, rather than relying on tabbing through screen components to see what it tells you. I would also concentrate on playing music by-ear.

It may surprise you, to know that most of the music in the KeyMusician Songbook, was done by-ear, chords and all.

Improvisation is another area made easy by the KMK, where the blind can do things every bit as well, if not better, than the sighted.

The Problems Overcome

Blind people cannot see the screen, and can’t use a mouse to point and click on things. They depend on navigating the components of the screen using the Tab-Key, or Shift-Tab-Key. When a component has focus, a screen-reader (with its robot voice) reads to them what the component is, what it contains, and its tool-tip.

The KeyMusician Keyboard windows make extensive use of tool-tips, and in some cases they are necessary, so the screen-reader should have the capability to read tool-tips turned on.

There are also some things that are screenreader dependent. NVDA, for example, installs Java Access Bridge by default. We're talking Windows here.

Java Access bridge exposes Java objects to a screen reader so it can interact with them effectively. The symptom you'll see if JAB needs to be

installed first, is simply that KMK won't speak.

If you use jaws as your screen reader. You will have to do the following to switch to the F3 instrument in KMK:

  1. Press the insert + 3 (jaws key bypass)

  2. then press F3 and KMK will switch to the correct instrument.

If you use NVDA there are no extra steps required for the F3 instrument in KMK.

Additional note about narrator: DO NOT USE Narrator as it currently does not properly read KMK Windows.

Making the F1 pane accessible to the blind was not too difficult, but the performance panes were another matter, since we don’t want the music to suddenly stop in the middle of a performance, because the Tab-Key was accidentally hit, and a screen component stole keyboard focus!

With a bit of persistence, and a lot of testing, we finally got this to work.

In the performance panes, hitting the Tab-Key (or Shift-Tab-Key) will navigate to the next (or prior) screen component, allowing the screen-reader to describe the component, and every focusable component will pass music keys on to the application, so the music doesn’t accidentally stop. With the reading of tool-tips turned-on in the screen-reader, you know what the component is used for.

When a drop-list is selected, you can enter (and navigate) it, by first pressing the down-arrow key, and later up-arrow keys. When you find the item you want, press the enter-key.

Note: On MacOS, the screen-reader uses the up-arrow and down-arrow keys, so you can’t use these keys to navigate a drop-list. That probably makes KMK unusable on MacOS for blind people.

Groups of radio buttons, are navigated using the left and right arrow keys, selecting the radio-button you navigate to. Pressing the space-bar selects a check-box, or radio button.

We also made it possible to navigate to the MIDI Player/Recorder window, and the Learning Metrics window, using the Alt-Tab-Key, or Control-Down-Arrow (followed by arrow-keys to select which window), on Mac OS X.

But when you’re in one of these helper-windows, you need to remember to navigate back to the KMK main window, to play music.

This works fine on Java 8, which is distributed with the application on Windows and Mac. But on Linux, the application uses whatever version of Java the system uses, which on more modern systems, like Ubuntu 20.04, is Java 11.

For KMK versions prior to 1.51, Java 11 still has some accessibility problems for the blind, in navigating (or setting and clearing) radio buttons. It also doesn’t let you Alt-Tab to the sub-windows of the application. So it’s better to stick with the older Long-Term-Support versions of Linux, which still use Java 8, such as Ubuntu 18.04.

As of KMK version 1.51, Java 11 works fine, and need not be avoided, so go ahead and use Ubuntu 20.04.

In the Help documentation, and in the Tutorials, there are a lot of pictures. But these pictures are useless to a screen-reader, which depends on the alternate-text supplied for the picture, which, unfortunately, was almost never supplied.

We had to go through all of the Help documentation, and every tutorial, to supply alternate-text to describe what each picture shows. Also, there were constant references to clicking on things, with no mention of tabbing-to, and activating controls.

With the above changes, as well as a few re-written sections, the existing documentation now works, and separate documentation for the blind is not necessary.

Switching to the Different Windows of the Application, and Other Details

On Windows and Linux machines, you can switch to the next window of the application by pressing the Alt-Tab-Key (or Shift-Alt-Tab to go to the prior window). These keys will also take you to the windows of other active applications.

On Mac OS X, with a KMK window focused, you press Control-Down-Arrow to arrange the KMK windows on a smaller, overlay screen, then you press an arrow-key to move the focus to the next window in a particular direction. For the blind, that means you try different arrow-keys, and see which window you switch to.

On Chromebook, the Alt/Tab and Shift-Alt-Tab keys worked for the application installed within ChromeOS as a Linux-Beta Application. But on Linux installed in a separate root file system (called Crouton), Alt-Tab and Shift-Alt-Tab only moved within different application windows, and there was no way to access the application’s helper-windows. The same was true for the Gallium-OS system installed on a separate drive, using the Chromebook hardware. The application is generally usable without accessing those other windows, however.

Both the “Num-Keypad – Chords” window, and the “Num-Keypad – Dynamics” window are not focusable (meaning you can’t Alt-Tab to them). These windows supply useful information visually about the current chord, or dynamics, but it would be impractical to focus it and tab-through the components to read it during a performance.

With both of these windows, everything is done using numeric keypad keys. If you’re blind, you need to pay more attention to remembering (or hearing) what you’ve done, rather than glancing at it to remind yourself, and you’re probably better at keeping track of this sort of thing anyway.

If you are blind, and would like to read a words-only description of how all of the keyboard keys are used by the KeyMusician Keyboard, as well as a description of how chords are played, and how dynamics are controlled – both using the numeric keypad, follow the link below. Return back here, using your browser’s back-button.

Keyboard Key Usage by the KeyMusician Keyboard

Specifying The Music-Key Mapping With A Text-File

Note: This is not supported on Java 1.6, which is used on 32-bit Mac OS X 10.6.8, or perhaps on Linux if using an old version of Java. On such systems, no text files appear in the Keyboard Map drop-box.

To work around the problem where the keyboard map graphics area is not accessible to the blind, it is now possible to specify the music-key mapping of the KeyMusician Keyboard, by creating a text file, using an ordinary text editor.

When you create such a file, and put it in the KeyMusician-Keyboard folder, when you run the application, and select the “F1 (Help/Setup)” pane, you will see that file as one of the keyboard-mapping files, if you click on (activate) the “Keyboard Map” drop-box, where that file can be selected and loaded.

Any line in that file starting with the ‘#’ (sharp-sign) character, is treated as a comment, and is not processed.

All the other lines in the text file must start with one or more numeric digits, specifying the number of the white-key of the piano-keyboard diagram being mapped. The number must not start with a plus or a minus sign. It must start with a digit. The numbers must be in the range 0 through 47.

Though the typing-keyboard keys normally map to white-keys of the music keyboard diagram (a diatonic scale), if you set the “Percussion” check-box of a performance pane, they will map to chromatic-scale notes.

The lines (and their starting numbers) don’t have to be in any order, though low-note to high-note is a customary order.

After the number, there must be a space (you can have more than one space, if you want).

After the space (or spaces), is one or more characters, that when typed, will activate the note the number refers-to. More than one character can activate the same note. All of the characters that activate that note should be included here, one after the other, without any intervining space.

After the character (or characters) to be typed, is normally the end of the line. But if you want to include a comment on the line, you can add a Tab-Character, or a space, and anything beyond that is not processed, so it can be used as a comment.

One of the possible typed-characters, the Backspace, cannot by typed in a text document. To indicate the backspace character, enter a back-slash, followed by the letter ‘b’. For example, ‘\b’. It is the only character within the range of music keys, which can’t be otherwise entered in a text file. It is treated as a single, back-space character (not a back-slash and a b).

The characters in the file can be either upper, or lower case. They are converted to lower-case as they are processed.

You cannot map keys outside of the melody-notes keyboard area, which on a QWERTY U.S. 101 keyboard, in the typical meandering’ low to high order, are:

z x c v b n m , . / ‘ ; l k j h g f d s a q w e r t y u i o p [ ] \ \b = - 0 9 8 7 6 5 4 3 2 1 `

Here (below) is a sample text music-key mapping file, corresponding to the above order of keys:

# QWERTY Z-keyboard mapping file

0 z

1 x

2 c

3 v

4 b

5 n

6 m

7 ,

8 .

9 /

10 '

11 ;

12 l

13 k

14 j

15 h

16 g

17 f

18 d

19 s

20 a

21 q

22 w

23 e

24 r

25 t

26 y

27 u

28 i

29 o

30 p

31 [

32 ]

33 \

34 \b This line is for the Back-Space character.

35 =

36 -

37 0

38 9

39 8

40 7

41 6

42 5

43 4

44 3

45 2

46 1

47 `

# This comment is the last line of the file.

Since these text files are created and edited manually, outside the KMK application, it is not possible to save a keyboard-map as a text file. Any keyboard map files edited and saved by the KMK application, are in its own internal ‘.kbd’ format.

To return to the index of all KMK Newsletter articles, click/follow the link below.

Index Of All Newsletter Articles