Guitar Tab Reader for JAWS

Guitar Tab Reader for JAWS is a free, open source JAWS script that enables JAWS screen reader users to read guitar tablature notation. It does this by converting the fretting information that appears on the six parallel lines of tab notation into a series of playing instructions.

Here is an example. First you will encounter a short line of tablature. To keep things simple there are only a few notes just on the high E string. Immediately after the tab notation are playing instructions created by the Tab Reader script.

First string: Third fret
First string: Third fret and slide up to Seventh fret
First string: Seventh fret and bend up to the note on Ninth fret 

The tab reader script works with the Windows Notepad program to read guitar tablature. It takes just 3 steps to read a tab line:
  1. Copy and paste a full line of tablature from any source into Notepad.
  2. Move the keyboard cursor anywhere on the top line of the tab staff.
  3. Press Control plus Alt plus: T  .
The script places the playing instructions in the JAWS virtual buffer, and you can read them using any of the JAWS reading commands.

The following sections contain instructions for downloading, installing, and running the Tab Reader script. These instructions are based on Windows 7 and JAWS 16. You may have to adapt them slightly if you are using a different version of Windows.

Downloading the Tab Reader Script

File to Download

Download the Tab Reader Script

Step by Step Instructions

To download the Tab Reader script using Internet Explorer, follow these steps:
  1. Navigate to the link prior to this step.
  2. Press Enter to activate the link. JAWS announces the Do you want to open or save dialog.
  3. Press Alt plus: N, to activate the Open or Save dialog.
  4. Press Tab to move to the Save split button.
  5. Press the Down Arrow twice to select the Save As menu item.
  6. Press Enter to open Windows Explorer.
  7. Press Tab repeatedly until JAWS announces: Tree View.
  8. Use the Arrow keys to navigate the Tree View until you have selected the desired folder and then press Enter. You may store this file in any folder.
  9. Press Alt plus: S, to save the file in the folder you selected. A download dialog is displayed. When the download has completed, JAWS announces: 100 percent.
  10. Press Alt plus: N, to activate the Download dialog.
  11. Press Tab three times until you reach the Close button and press Enter to close the dialog.

Installing the Tab Reader Script


The file that you downloaded is called It actually contains 4 different files. To install the tab reader script, you will be extracting these 4 files from it and placing them in a location that allows them to work with JAWS.

Step by Step Instructions

  1. Launch Windows Explorer. One way to do this is to press the Windows Start key plus: E  .
  2. Navigate to the folder where you saved the file. You can do this by pressing Tab until JAWS announces that the Tree View control is active. Use the Arrow keys to locate and select the desired folder.
  3. Select the file. To select this file, use the Arrow keys to navigate to this file within the selected folder and press Enter.
  4. Press Control plus: A, to select the four script files in the zip file.
  5. Press Control plus: C. The selected script files are copied to the Windows Clipboard.
  6. Open the JAWS User Settings folder. The easiest way to do this is to press the Windows key, use the Arrow keys to navigate to the JAWS program group, and press the Right Arrow to open it. Next, select the folder named: Explore JAWS, and press the Right Arrow to open it. Finally, select the folder named: Explore My Settings, and press Enter. Windows Explorer opens the correct location for JAWS script files.
  7. Press Control plus: V, to paste the script files into the open folder. There should be the following 4 files: Notepad.jkm, Notepad.jsd, Notepad.jss, and Notepad.jsb.
This completes the installation process. You can close all Windows Explorer windows.

Running the Tab Reader Script

Step by Step Instructions

Note: In order for the script to work correctly, the option in Notepad to wrap lines of text must be turned off. This option is found in the Format menu on the main menu bar.
  1. In the program containing the tab line you wish to read, move the keyboard cursor to the beginning of the top, high E line.
  2. Hold down Shift and press the Down Arrow 6 times to select the entire tab line.
  3. Press Control plus: C, to copy the selected tab line.
  4. Paste the tab line into Notepad.
  5. Move the keyboard cursor to any location on the top, high E line.
  6. Press Alt plus Control plus: T. JAWS translates the tab line, places the translation in the virtual buffer, and performs a Say All command to read the guitar tablature notation.

More Info

Here are some things to know about the Tab Reader script.
  • The playing instructions can be read using any of the normal JAWS reading commands.
  • You can select the playing instructions in the virtual buffer and copy and paste them into a document or email.
  • Tab lines are read whether or not they begin with a string letter.
  • Vertical bars that appear on the staff are ignored.
  • If two or more strings are played together, the script will tell you how many strings to play together before presenting the fretting instructions for those strings.
  • The script translates the notations for bends, releases, hammer-ons, pull-offs, slides and vibrato. It can read these instructions whether or not there is a blank or hyphen on either side of the symbol. Parentheses around a fret number are ignored.
  • If the script encounters notation that it can't translate into playing instructions, it identifies the correct string and outputs the raw notation for that string.


The Tab Reader script is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. Attribution should be made to George Calvert.

Version History

Version 1.1 corrects a defect in version 1.0 which only defines an activating keystroke for laptop layouts in JAWS. The new version works with all keyboard layouts.

Developer Information

This script is a free, open-source program that may be freely copied and distributed as long as there is no charge for it. It is my hope that other developers will improve upon it, including adapting it for other string instruments. After I lost my vision, I developed this script to enable me to play classical guitar. I have not used it with tabs for other styles of music.

The source code for this script is in the Notepad.jss file contained in the JAWS user settings folder. The function documentation is contained in Notepad.jsd.

How the Script Works

The script reads in a set of six lines of string input from a Windows Notepad document. As used here, the words: tab line, refer to the set of six parallel lines of fretting instructions corresponding to the six guitar strings.

When the script is run the keyboard focus must be somewhere in the top, high E line of the tab line. The six guitar string lines are read into a collection object consisting of six string variables. Each string in the collection is accessed by a string letter key. Each of the individual strings are stripped of any string letters, vertical bars or actual space characters that may appear at the start of the string.

In guitar tablature, the notes are played in sequence from left to right. However, there is a second, vertical dimension to a tab line. Notes may be played together on two or more strings, and this is represented by positioning the fret numbers in a vertical column across the six string lines. The challenge here is to organize playing instructions over two dimensions. The way the script handles this challenge is to move horizontally across the tab line, processing fret information in chunks I have called: slices.

Here is a very simple example. Suppose you were to play the following 3 notes together. The first note is the 12th fret of the first string, the second note is the 9th fret of the second string, and the third note is the 8th fret of the third string. In tablature notation, the digits: 12, would be found on the top line in the first two character positions. The digit: 9, is found in the first position on the second line. Let's suppose that the digit: 8 is in the second position on the third line, which still puts it under the digits: 12, from the high: E, string.

While a sighted musician could tell at a glance that the three notes are played together, the script reaches this conclusion by using the following algorithm:
  1. Set the Start position at character position 1, in the tab line.
  2. Examine each of the six strings to see if there is any fret information beginning at the start position.
  3. If yes, count the number of adjacent characters until a hyphen is encountered.
  4. After all six string lines are examined, select the highest count number. This number becomes the width of the slice.
  5. Set the start position for determining the next slice by adding the slice width to the current start position plus one.
Applying this algorithm to the example, the width for the high: E, string would be 2, the width for the: B, string would be 1 and the width of the: G, string would be 0, since the fret number was placed in the second position on the line, rather than the first.

After determining the first slice width is 2, the script then processes each string by extracting any data from positions 1 or 2. This would include fret information for all three strings. Even though the digit: 8, was in the second position on the: G, string, it fell within the slice width which was set by the fret information from the high: E, string line.

Once the slice width is determined, the script performs a parsing operation on the fret information for each string played in the slice. The fret information is called a token, and is processed by the ParseToken function of the script. This function performs the translation of fret information into a playing instruction. This includes translation of tokens that include special characters for performing bends, slides, hammer-ons and so forth. In all cases it works whether an extra space or hyphen appears after the special character. In the case of releases, it works whether 0, 1, or 2 frets are specified.


You can contact me with development questions at:

No comments:

Post a Comment