JAWS Scripts for Reaper

The Reaper application is a multiTracked audio and MIDI recording program, availble from Reaper.fm

These scritps are free of charge, and are intended to support the OSARA accessibility package for Reaper, being developed by NVAccess. Link to the NVAccess OSARA page Make sure you have the latest Osara installed.

The following installer has been modified to work with jaws after version 2018, as well as with earlier versions: Download the scripts installer, and run it as normal. Instructions on how to use some of the script featues appears further down this page. Use the H key in JAWS to jump to those headings.

Scripts version 38 (most recent)

See the documentation further down this page. If you are using Reaper version 6, you must use at least Reaper 6.02, as 6.0 and 6.01 do not work properly with JAWS. If you experience problems with these, please write to snowman@SnowManRadio.com

Build 38 adds several cool new features.

To read about them, search for {build38} in this document.

Download: Reaper Scripts Version 38

Scripts documentation

The rest of this document describes extra functionality that is provided by these scripts. To find what is new in this build, search for the phrase "{build36" For a list of hot keys, while focused in Reaper, press jawsKey+h, and review the list. For Layered hot keys, press JAWSKey+z followed by h. For german keyboards, we understand that equates to jawsKey+y. in any event, it is the key just to the right of the left shift key. for object Navigation layer hot keys, press jawsKey+z, followed by h.

Required Settings

The following reaper settings need to be made in order for the scritps to work properly:
  1. View Menu, make sure transport is the only item that is checked.
  2. In the options menu, up arrow to layouts, and to themes, and make sure both are set to default.
  3. in the Media Explorer, accessed with alt+control+x, activate the context menu, and make sure dock media explorer in docker is not checked
The jaws scripts will attempt to assure that reaper is maximized when focus lands in reaper. Operating as maximized increases the likelyhood that all fields currently only obtainable from the screen can be seen.

tabular Data Reading in Special Dialogs

{build36} Several dialogs in reaper present data in a format similar to a table. In many cases you can use the jaws list view reading commands control+jawsKey+ a number to read the column. Often you can also use left and right arrow to choose a column to be spoken, and then up and down arrow keys will only speak that colum, as you move row to row. To have jaws speak all columns, use left arrow to move all the way to the left, to the setting of "all". Generally, the function keys are used in a dialog if focus is to be placed on a particular control. And the control+jawskey plus a number are used if only reading is involved. Special hot key help is avaailable unser jawsKey+h for these dialogs. they include:

Detecting Open Windows

{build37} It is common for people to have certain windows open, and then leave that window without actually closing it, such that the window remains open, undetected. Often, they can block other things that would normally be visible. for example, open the media explorer, and thenb alt tab away from it, rather than pressing escape to close it. It will remain open, but not reachable. It is nromally difficul to return focus to those windows. but, this feature lets you scan for those open windows, and return focus to them so you can close them, or continue operating in them as needed. Press control+jawskey+f4. A list of open windows is presented. You can escape out of the list without choosing one. Or, use the up and down arrows to select a window, and press enter to place focus there.

TrackList Bookmarks

{Build38} In projects with a significantly large track count, it can become cumbersom to find the track you are interested in. This feature lets you assign one of the ten numbers row keys to a track of interest, so you can conveniently return to it, and is for use when you are focused in the track list. The track list is stored in the reaper.bkm file, and is specific to the project you are working on. So, all the projects you work on will be stored in there, in case you return to them.
To bookmark a track, activate the jaws layer iwth JawsKey+z. When you hear the clicking sound, if you have sounds enabled, press shift, plus the numbers row key you want to assign to this track. The layer will close, and you will return to the track list.
To return to this track, press jawsKey+z, followed by the numbers row key that you assigned.
You can review the list of assignments by pressing jawsKey+z, followed by the letter t. A List of the current assignments will appear. Arrow up and down the list to review it. Press enter on an item if you want to go to that track, or escape out of the list to stay where you are.

There is no mechanism provided for deleting assignments, as they can simply be reassigned. But, you can edit the reaper.bkm file manually, if you really want to get rid of them. Those assignments are stored by project name in the reaper.bkm file, located in the Explore My settings area of jaws, in the form:
"[MyProject Tracks]"

Options List

This list, accessed by press insert+z, followed by the letter o, is the new place where all yes/no options are located. This replaces some of the selections that originally required editing the reaper.ini file. Use the up and down arrow to choose an item, and enter to toggle it's state. For backward compatibility, the insert+z layer n key, for nudge autoplay can be accessed in the original way, as well as via this dialog.

Item At Current Position

{build38} This feature lets you know if there is an item present at the current position on the currently selected track. This not only works when you are stopped at a particular location, but also updates in real time as the project is playing. There are 3 ways you can make this determination:
  1. double tap the sayWord command, jawsKey+NumPad5 or equivalent. A single tap speaks the current cursor time, and double tap speaks the item name, if one exists at this position on the current track.
  2. If you are using Braille, and no time selection is in effect, the item name will appear at the right end of the braille display. With a given track selected, items will appear and disappear as the project plays.
  3. Track names that are spoken as you use up and down arrow will be spoken in the jaws message voice if there is an item on that track at the current position. If you configure the jaws message voice to speak differently than the PCCursor voice, you can easily identify tracks that are populated at the current position.

Next Track With Item

{build38} This feature lets you find the next or previous track which has an item at the current cursor position, thus allowing you to quickly skip empty tracks. Press control+DownArrow to find the next track, or control+UpArrow to find the previous. If all tracks are blank in this spot, the top, or bottom, track will end up being selected, depending on which direction you searched. This feature does not presently restore you to the current track if no items are found. But, maybe someday it will.

If you find a reason to use these hot keys in the traditional fashion, remember you can press jawsKey+3 on the numbers row, and then hold down the control key while you operate the arrow keys, and bypass this feature.

Braille Level Meter

{build38} you can cause the braille display to continuously show the audio level for the currently selected track. Double click the j key to monitor channel 1. Double click the k key to monitor channel 2. You can monitor both channels at the same time. Simply double click the corresponding key again to disable monitoring for that tchannel. This works for playing tracks, as well as armed tracks. The braille display rapidly updates with the peak reading. In order for this to be usable, it is best to go to the track control Panel settings in preferences, and configure a slow decay time, on the order of a few DB per secondd, for the meters. As a result, when silence is encountered, you will see the numbers slowly decay.

Track Number Verbosity

{build36} This option lets you prevent the track number from being spoken when you use up and down arrow in the track list. When tracks are named, that track number is redundant, and this speeds up the recognition process. If the track is not named, then only the number of items is spoken. But, sayLine will say the entire track number. This setting is toggled in the inser+z, o, options dialog.

Media Explorer

{build38} added f9 to activate the hardware outputs menu. Note that, for the keys in this section to work properly, the media explore should not be docked. When you open the media explorer, using alt+control+x, focus is probably on the database field. You can press the context key there, and perhaps other places as well, and find the option to dock the media explorer in that menu. make sure it is unchecked.

In addition to the ability to read the file length in minutes and seconds, several accelerator keys are now added which will let you focus on the various controls, or toggle certain checkboxes. The insert+h hot key list is specific to the media explorer dialog.

The backspace key now clicks the ParentFolder button, which means you no longer need to add the media explorer parent folder action to the backspace key. All hotkeys in this dialog are free for other uses when focus is not in this dialog.

The f4 key takes you to a media review window, which will let you skim through the file while listening, looking for a particular passage. You can use control left and right arrows here to jump forward or backward as you listen, the dash and equals keys control how much movement occurs with each control arrow press. Using the control arrow makes absolute jumps, relative to the previous jump position. Add the shift key to make jumps relative to the current play position. This could be useful if you want to look through a lonter file to see if it contains a piece you are looking for.

It is possible to select only a portion of the audio file for inclusion in your project. There is some nominal support for this via the scripts, using the bracket keys. But, it is a mouse driven process. So far, it is very difficult to use and has lots of caveats. As of this writing, we are still trying to make it work reliably. So, the easiest way to use part of a file is still to just include the entire file, and then trim down the resulting item in the track list.

Actions Dialog List

{build36} The Actions dialog has been enhanced with the ability to choose what is spoken when you use up and down arrow while focused in the actions list. The function keys described here are assigned for use only in that list, and are free for other uses when this dialog is not open. Use Insert+h when focused in this dialog for a list of the hot keys. But, in general, you can choose what is spoken in response to the up and down arro, choosing between hot key, action description, or both, and have a choice as to which is announced first. If you turn on the filtering option, jaws will scan each new description, and try to identify a prefix, and announce that prefix only when it changes. In addition there are four hot keys for announcing individual fields in the currently selected action. Those are: hot key, action name, Command ID, and Script Path. The last two items there allow you to double click the key to copy that information to your clipboard. In order for the latter two items to be visible, you need to routeJawsToPC, and get the context menu in order to cause the command ID, and script path to be included. Note that support is not provided for allowing the latter two items to be spoken automatically. You need to ask for those to be spoken, using the hot keys provided.

Customizing Your Keyboard

{build36} Because the reaper key map is very busy, you might find cases where traditional jaws key strokes collide with hotkeys in the currently distributed reaper key map. If you want to cause a default jaws key stroke to be ignored when in reaper, there are a few ways you can do that. You can edit file Reaper.jkm, which is located in the folder where your jaws user scripts are stored. If you know the name of a jaws default script you want to assign to a different key, you can add a line, in the form of hotkey=Scriptname.

However, if you want to simply eliminate a jaws defautl key, so reaper can use it, we have added a special scritp you can call that will do that.

for exampel, by default, the keystroke +alt+control+PageDown, decreases the speech rate in JAWS. However, it is assigned to the sensitivity setting for transients in reaper.
Perhaps a better solution would be for you to modify your reaper key map, to move those related keys to another hot key. but, if you want to prevent jaws from using that key stroke, and let Reaper use it, add the following line to your JKM file>
alt+control+PageDown=ReaperPassThrough
That will prevent jaws default processing from intercepting that key stroke, and allow it to be passed to reaper. Any number of keys can be pointed to that script, ReaperPassThrough, and it will simply forward whatever key was pressed.

KeyStroke Logger

When you want to submit a more specific bug report, this feature lets you turn on a key stroke logger, which will help us find the exact control that is causing you trouble. This does not record keys until you turn it on. And, the only place it sends the log is to your clipboard. So, you are fully in control here. To use this, focus in the track list, so we have a known starting point. Activate the jawsKey+z layer, and then press the letter k. After that, each key stroke will be recorded. You will hear a small click with each keystroke, telling you that logging is active. navigate to the control of interest. When you get there, activate the jawsKey+z layer, and press the letter k once more. The logger will then be disabled, and the log will be copied to your clipboard. Paste that log into an e-mail message, and include it with your bug report. If you forget to turn it off, the log will automatically disable itself, and discard the log after 30 key strokes. The evidence is that the clicking sound will no longer accompany each key stroke.

Script Settings file Reaper.ini

You can edit this file to set certain preferences, such as defeating sound effects, or changing the way audio skimming works. In the folder where user scripts are stored, there is a file named reaper.ini. You can get to that folder by finding your version of jaws in the Windows programs list, and descending into that branch until you find, Explore My Settings.

Mostly, this file is used by the scripts, to store certin information. But, here are a few keys that you may wish to modify manually:
QuietMode - set to 1 so page up and down do nott speak cursor time, even when not playing
NudgeAmount - how many beats to back up when auditioning nudges
SoundsEnabled - 1 to enable scripts sound effects

In case you want to connect alternate jaws configurations, such as scripts that may support your favorite pluggin, those configurations also need to be listed in this file, as described later. Search for the heading entitled Scripts For Plug ins.

Slider Value Indications

When using up and down arrows to change the value of a slider, there is a variety of different behaviors that REAPER will exhibit. In some cases you can also use page up and pageDown to move the value in larger increments. In other cases, only the arrow keys will modify the value. Sometimes, the value changes in very small amounts, and you need to hold the arrow key down for a time while the value slowly changes, at a rate that is controlled by your key repeat interval. In other cases, sliders behave more like combo boxes, where you can choose from a small set of text values. Some of those exhibit immediate change, with each arrow press. But, in other cases, you must press the arrow key many many times until a new text value is produced. In cases like that, the slider is actually producing an integer value behind the scenes, and modifying it with each arrow press. But, a new text value is not posted until that integer value reaches a certain threshold. An exampel would be an on/off indicator, which displays the word "on" if the value is above 50%, and Off if it is below 50 percent. In a case like that, if the slider is currently at 70 percent, you have no way of knowing that. So, you press down arrow, and maybe it now changes to 69, but it is not yet low enough for a different text value to be posted. It looks like moving that slider had no effect, even though it actually does.

To help deal with these various circumstances, the jaws scripts are providing special handling of sliders. There a lot of different behaviors, and some quirks may still exist. But, the overall attempt is to let you know more about what is going on with that slider as you manipulate it.

First, logic has been implemented that dramatically speeds the rate at which you can manipulate the slider value. You can move much more quickly than you can if you were using JAWS default settings. The Scripts will not attempt to speak the slider value until you release the arrow key.

If you are manipulating a numerical value, holding down the arrow will slew through the values. You will see the slider value rapidly changing on the braille display. And, you will hear a periodic default ding sound when the slider stops changing. This will inform you that you have reached the end of the slider.

If the slider is producing a text value, the end of the slider can not be detected, since the scripts can not learn the integer value behind the scenes. In that case, there will be a soft click produced when the text value does change. This will lead to a soft click with each new text value for normal cases. But, for the example case described above, where large spans of slider range lead to no change in text value, you can hold down the arrow key until you hear the soft click, at which point you can release the key and hear the new value.

The sounds described here can all be defeated by editing your reaper.ini file, and settings SoundsEnabled to 0.

Faster File Navigation

The page up and down keys, by default, move one measure at a time. For an audio file, with a default tempo of 120 BPM,each key press moves you about 2 seconds. And OSARA causes the new time location to be spoken with each key press. By default, this movement is relative to the edit cursor, not the play cursor. However, many of those behaviors are modified, as described in this major section.

Silencing Speech

If the scripts can determine that the file is playing, there will be no speech resulting from page up and page down key presses. You can hear what happened by listening to the audio. If the file is stopped, then that determination is made based on a value in your reaper.ini file, which is located where your user scritps are stored. Look for a line that says:
QuietMode=0
If you change that to 1, the scripts will not speak the location, regardless of whether the file is playing, or is stopped. You can always query for the cursor time with the sayWord command.

Absolute Or Relative Movement

By default, reaper moves relative to the edit cursor position. But, as also described below, the reaper jaws command layer, insert+z, lets you choose whether to move relative to the edit cursor, or the current play position. Activate the layer, and then choose:
alt+windows+f9 for absolute mode, which is edit cursor referenced.
alt+windows+f10 for relative mode, which uses the current play position as it's reference.

Larger steps

If you like to move through a file in larger steps than is allowed by those keys, this feature lets you do that.

In the JAWSKey+z layer, you can use the dash, and equals keys to choose the time interval that you want to jump. Choose from 5, 10, 30 or 60 seconds. Those keys keep you in the layer, so you can press them multiple times without exiting the layer, in order to pick the interval you want.

While you are in the layer, you can select whether you want to jump relative to the edit cursor, or the playback cursor. The edit cursor is an anchor that stays in place as the file plays. That is the anchor the page up and page down keys use. the playback cursor advances as the file plays. So, use these keys to decide which will serve as your reference. If you use our Sound Forge scripts, you will be familiar with these obscure hot keys. Again, these require the inser+z jaws layer to be active.
Use alt+windows+f9 for absolute mode, using the edit cursor as the basis.
alt+windows+f10 uses the play cursor, and will necessarily drag the edit cursor along with you. With each jump, the edit cursor is moved to the start of that jump. It is not possible to do relative jumps without affecting the edit cursor. So, if you want to get back to where you were editing before you went hunting around, you will need to drop a marker.

The keys for making the jumps are the keys assigned to the jaws scritps for SayToCursor and Say FromCursor, as those scripts have no purpose when in the track view. For the desktop layout, that is insert+NumPad 7 and insert+NumPad9. Because the scripts are activating the jump dialog behind the scenes, there is a limit to how quickly you can use these keys.

Selection Nudge Mode

There are two ways you can audition your adjustments to a time selection. The first, is using reapers standard behavior. to do this, the special nudge mode, described in the next section, must be disabled. (insert+z, followed by n).

Standard Nudging

For the most part, in this mode, the jaws scripts just suppress extraneous speech when nudging during playback. However, when sliding the entire selection left and right, reaper only lets you hear the entire selection, starting at the left end. the scritps add the ability to listen to only the last portion of theselection, starting about a second prior to the right end.

Establish a time selection with the left and right bracket keys.
Turn on repeat mode with control+r, which will cause reper to repeatedly play the time selection, once you press the space bar.
each time you nudge either of the end points, or slide the entire selection, playback will begin from your chosen starting point. By default, that will be the beginning of the time selection.
If you nudge the left end, playback starts at the left end.
If you nudge the right end, playback starts about one second prior to the right end
If you are sliding the entire selection, reaper defaults to starting playback at the left end.

Jaws managed Nudging

This feature can be enabled, or disabled by the n key in the JAWSKey+z layer described later in this document. When the feature is disable, nudging reverts to default behavior. This generally also applies to nudging the boundaries of time selections, or the currently focused item. It is a means of letting you nudge one of the edges, and then automatically playing some portion of the audio to show you the effect of the most recent nudge. The scritps are intercepting each of the nudge keys in the standard reaper key map, passing those keys on to reaper, and then deciding what to play. That decision is made based on the mode that you have selected by the control+windows +f9, f10 and f11 keys in the JAWS Key+z Layer.

You can always stop playback by pressing the space bar, or pressing another nudge key. And, it is perfectly reasonable to have repeat mode turned on as well, if you prefer. Here are the three modes currently supported:

You can press the nudge keys as rapidly as you like. Playback will simply be canceled, and not restarted until you stop pressing keys. For An audio Demo of this feature, you can download the following file Reaper time Selection Nudging Demo

The Effects Chain

If you have multiple effects concatenated for a track, when you press the letter F from the track view, you enter the fx chain list. Focus lands in the list of effects in the chain, and you can up and down arrow to select the effect of interest. When you press control+b, the bypass state of the currently selected effect is toggled. JAWS will now attempt to announce the state of that effect as it is toggled, as well as when you move through the list with up and down arrow keys.

Since this mechanism is dependent upon a graphic, there is concern that the graphic may not be recognized on all systems. If it does not work for you, you can help improve these scripts by labeling the graphic yourself, and sending your reaper.jgf file to:,br> snowman@SnowmanRadio.com
We will incorporate all the graphics we recieve, and form a composite JGF file. To do that, you need to toggle jaws graphics recognition to All Graphics. Select a pluggin that you know is enabled, and route Invisible to PC. You may land on the graphic. Or, you may need to insert+leftArrow to find it. Once you find a numbered graphic, press insert+g, and label it "enabled". Now, left click the graphic, and it should turn to a different number. Label it again, this time calling it "bypassed". Now, this mechanism should start working. Thank you for sending us files that do work.

Dialog Navigation Commands

These are hot keys that work in various dialogs to help you more conveniently move around, and avoid the need to do so much tabbing.

MultiPage Dialogs

The control+tab and shift+control+tab keys now should work to move you between pages of dialogs such as the ReaEQ and ReaXComp dialogs. You can, for example, put focus on the frequency slider of the first band, and press those keys to move to the next, or previous page, and hear the frequency for that band. Focus should remain where you put it. This makes it easy to survey how similar controls are set for each band.

The Monitor Object

This feature is nice for dialogs where you want to change some of the controls, and keep wanting to refer back to some other control to learn if it's value has changed. With this feature, you can pick the control that you want to refer to, and essentially bookmark that control, then go change other values, and then simply press a key to get the new value at the bookmark. These object navigation keys reside under the jawsKey+z layer, which is triggered by pressing JAWSKey and typing the letter z. After you have pressed those keys in combination, you can release them, and the reaper jaws key layer will open, and you can use the keys listed below to move around. You will hear a soft ticking sound as long as that layer remains active.

We already described how control+tab should work. But, if it doesn't, For exampel, suppose you want to know the gain for each frequency band in an equalizer.

  1. Navigate the the band gain edit box with the tab key.
  2. Activate the reaper jaws layer with jawsKey+z, followed by control+home. That will capture the object with focus
  3. At this point, you can use the arrow keys to move from object to object hearing name and value. The say word command will repeat the current object.
  4. use the tab key to navigate back to the tab controls. That will exit the jaws key layer
  5. use the arrow keys to choose other tabs.
  6. The band gain edit box will be automatically spoken as you move left and right along the tab control
  7. Repeat the sayWord command to hear the band gain for the new tab.

Other commands are provided, which allow you to move the reference object around in the structure, for when you want to view other fields. When you are moving from one object to the next, name and value are spoken. However, the tab control oarrow keys, and the say word command only speak the value.

  1. Prior Object = JAWSKey+LeftArrow, (sayPriorWord)
  2. NextObject = SayNextWord (JawsKey+RightArrow)
  3. parent object (up a level) JawsKey+UpArrow
  4. First child object = sayAll, (JAWSKey+DownArrow)
  5. sayCurrentObject = sayWord, JAWSKey+NumPad5

when you press escape to exit the dialog, the object will be discarded, and the sayWord command, and left right arrow keys, will revert to their normal behavior.

Bookmarking Position In A Dialog

{build38} These dialog bookmarks were significantly enhanced in build 38, and now include effects dialogs. To make dialog navigation a bit easier, rather than laboriously tabbing from control to control, the following short cuts are provided.

windows+right arrow will move to the next control in the tab order that is of the same type as the control with focus. Likewise, windows+LeftArrow will move in reverse tab order. This, for example, will let you move from slider to slider, without having to also tab through the edit fields an checkboxes. If the control is not named, such as some edit boxes, for example, the scripts can not identify the field for you. IN many cases, the sliders are named, but the associated edit boxes are not. if you are simply tabbing, you can infer the edit box name by context. But, if you are skipping the sliders, using this technique, you lose that context. So, be mindful of that.

There are also two hotkeys for memorizing, and then returning to a control in a dialog. Suppose you opened the item properties, and pressed tab tab tab a million times, to laboriously find a control, which you knew you would want to return to. Before leaving the dialog, press control+windows+tab to memorize the position. Next time you open the dialog, you can press windows+tab to return focus to the memorized position.
This bookmark will be saved in the Reaper.bkm file, along with the name of the dialog in which it was recorded. so, the next time you open this dialog, even after a complete computer restart, the bookmark should be remembered.

Such bookmarks can also be recorded in the effects dialogs, and will be stored using the name of the effect. You can even insert a chain of effects, and record a unique bookmark for each effect. In that case you can move to the list of effects in the chain by pressing control+shift+l. Choose a different effect, and then press windows+tab to go to the bookmark for that particular effect.

Scripts For PluggIns

Starting in version 28, you can specify alternate jaws configurations which can be loaded for supporting other scritps that are written for various pluggIns. Perhaps this will eventually be an automatic process. But, until we completely understand the behavior of reaper when a bluggin is loaded, this is a manual process.

The way to think of this, is that the Snowman's scripts for reaper is the basic set of settings that you would use. but, if you want to focus in a plugin for which special scritps have been written, you focus there, and then take steps to load the alternate set of scripts. If those scripts have been written in such a way as to support our bridging method, then you would take similar steps to return to the main reaper scritps when you were done working in the pluggIn. So, at any one moment, you are running the main scripts, or some alternative script, and never the two at any one time. If those scritps have not been written to support our bridging, then you will not be able to switch back, unless you edit file reaper.ini in the folder where your scripts are stored, and cause jaws to find the reaper scripts again.

Here are the requirements that alternate scripts need to follow in order to make this work:

  1. The alternate jss file must contain the following line:
    Use "ReaperBridge.jsb"
  2. The alternate JKM file must contain the following line:
    control+JAWSKey+tab=ChooseAlternativeConfig
  3. File Reaper.ini, in the folder where your jaws scripts are stored, must be updated with the name of the alternate configuration.
    Under the line that says: [ConfigNames]
    you will find a line that says: reaper=reaper.
    That is the line that allows you to switch back to the main reaper scritps.
    Under that, add a line of the form: friendlyName=configName

The "friendly Name" is a name you will see in a list of configurations to choose from. But, to support a future automatic process, it is thought that the friendly name should probably be the first part of the Real window name that contains the pluggIn. Be sure to omit infomation that will change over time, such as document names or track numbers.

The configName is the name of the JSB file that contains the alternate scripts.

To perform the manual switchover, pres control+JAWSKey+Tab, and use the arrow keys to select the configuration you want to load. The names are alphabetized, so you can use first letter navigation if you like. then, press enter to switch.

When you are done working in the PluggIn, and want to return to the main reaper scripts, press control+JAWSKey+tab again, and type r for reaper, and press enter. The reaper main scripts will be restored.

Track Automation Envelopes

In version 26, the Track Envelopes dialog, accessed with shift+l, was enhanced to speak the checked, or unchecked status of the checkboxes in the list of envelopes. Since that list of envelopes does not gain focus, you must use the jaws cursor to move down to that list. The envelope names are listed on the left side. Each row contains an envelope name, whether that envelope is visible, and whether it is armed for recording. For the most part, you can just toggle the name field to get what you want. Move the jaws cursor to the column you want to toggle and press the numPad slash, or left mouse button. JawsKey NumPad5 will also report the name and status of the current item. When moving down by line, JAWS just reads the line, and does not report the checked status. But, you can immediately Press NumPad5 if you want to know the status of the current element.

Favorite Actions Cache

Some of the action names in the Reaper actions list can get very convoluted. This feature allows you to build a list of your favorite, most commonly used actions, so you can give them more friendly names, and conveniently pick them from a list and have them executed. These are stored in the [actions] section of the reaper.ini file, which is stored in the same jaws folder where user scripts are stored.

To memorize an action, and have it included in your list, first open the Reaper actions list with f4. Remember, you have convenient hot keys in here for setting focus, such as control+shift+f to focus on the filter, and control+shift+l to focus on the actions list. Find the action you want to add to your collection, and make sure it is selected in the actions list. Then, with the actions list in focus, press JAWSKey+z, followed by the letter c. You will be prompted to enter a nickname. When you do that, and press enter, the action will be memorized, and you can close the actions list

To execute the action, double click jawsKey+z. A list of your memorized actions will appear, and you can use first letter navigation, or just arrow to the one you want, and press enter. If you have sounds enabled, you will hear a couple of tones, one when jaws starts to execute the action, and another when it finishes. This is because the scripts can not invoke actions that hot keys are not assigned to, and must open the actions dialog, and find that action, and request reaper to execute it. Actions that already have hot keys assigned clearly do not need this feature. But, this allows you to keep actions handy, without having to occupy hotkey space for them.

To delete an action you no longer use, you must delete that line from reaper.ini manually.

Preferences Navigation

To facilitate navigating the treeView in the preferences dialog, optional sounds have been added, which indicate when you enter a level on the tree, when you exit that level, and as you use lef and right arrows to open or close a level. To disable those sounds, read the section on Audio Cues

Actions list, and Effects List Hot Keys

There are three hot keys that do not require the jaws layer, but which work only when focused in either of these two dialogs. You can use them to set focus on commonly used elements in the dialog:

Track and FX Parameters Lists

As you arrow up and down the list of parameters, the name of the parameter, is followed by the value of that parameter. SayLine will also say name and value. This avoids the need to press tab to hear the value. You still must tab over if you want to change the value. In the Value field, you can hold down the up or down arrow, or page up / page down, if you want to rapidly scroll through the values. Jaws will no longer insert a keyboard delay. JAWS will remain silent as long as the key is held down. If you want to hear the current value spoken, just lift your finger. When you reach the end of the value list, jaws will ding repeatedly, until you release the key.>

The JAWSKey+z Layered Keystrokes

Because the Reaper key map is a very busy place, keys that only have significance to a user of these scripts have been hidden in this layer to prevent conflicts. To access these, press JAWSKey+z, followed by the layered key you wish to use. All keys listed below will exit the layer, back to the normal reaper keymap, once they are pressed. The following keys are presently defined:

Braille Support

This section describes the use of a braille display with the Snowman's JAWS Scripts for Reaper. This system requires structured mode, which will be set by default. There are two major cections here, one for the track list, and another for the MIDI Editor.

It is recommended that you disable toolTips in Reaper, in order for this to work properly, or else make sure the jaws cursor is at the top of the application. ToolTips can override some of the fields we are using to learn the track information. If your display shows unexpected things, that may be the cause.

Another may be that, in the place where you expect to see the cursor time, you see the word "obscured" enclosed in less than and greater than signs. Usually, this means that another window is open, which is hiding the time field in the status bar. A common cause for that is having the midi editor open, and simply alt tabbint away from it, ratehr than closing it with the escape key. If that happens, you can route the jaws cursor to the top of the windo, and you should find the MIDI Take there, along with a close symbol.

If the Selection values do not show up, the window that contains the status information, at the bottom of the REAPER window, may be obscured.

Track List

Text on the display is broken into the following components, which appear in the order listed:
  1. Cursor time, as control by the reaper ruler time format selection. .
  2. track status, this is a single character with the follwoing meanings. *=armed, -=muted, +=soloed, or space.
  3. track name. This will be the letter "t" followed by the track number, such as t3, or t15.
  4. Item count, in parenthesis, such as (3) meaning there are 3 items on this track.
item 4 depends on context, and will be one of the followeing:
  1. Item number and item details, when control+left or right arrowing.
  2. Marker number name and details.
  3. Special phrases such as armed, muted, soloed, etc. Phrases like these will appear when you press the function keys to arm or unarm a track. However, when you arrow away, and come back to a track, the only phrases that are allowed are, armed, soloed, and muted.
  4. Item 5 will contain the boundaries of a time selection, if one exists. These are in the following form: <> Length But, if the status window is made too small, that information is not displayed on screen, and can not be captured. Watch out for the right end of that window. We have seen that window be too narrow to show the selection data. It may be that messing with the themes, and layout control is what causes this.

    TrackList Braille Examples

    ? ? ? t1(0)
    This is track one, not named, and has no items. You have not moved the transport since you started reaper, so the time field has question marks.

    0:00.000 *t2(5)
    The edit cursor is at time 0. This track is armed, as indicated by the asterisk, it is track 2, and has 5 items.

    0:02.000 songs(3)
    This is a tracked called "songs". The cursor is at 2.0 seconds. It contains 3 items, but you are in track context. So, no item is selected.

    If you press control+rightArrow to select the first item, and that item is at 3 seconds, the display might look like this:
    0:03.00 songs(3) 1 MyFirstSong

    Now, move into your song, and establish a time selection from 5 seconds, to 7 seconds. And put the cursor at the start of the time selection. That would look like this:
    0:05.000 songs(3) 1 MyFirstSong <0:05.000-0:07.000> 2.000

    Marker Navigation

    {build38} If an edit box is in focus, the routing buttons behave in the customary fashion. However, when you are focused in the track list, the routing buttons on your Braille display can be used to jump to positions along your project timeline. This was enhanced to give you two options for doing this, as controlled by a new option in the jawskey+z, o, options dialog.

    If you have braille routing to bookmarks enabled, and you have established markers or regions, you can also use the first 10 routing buttons to jump to those entities, analogous to using the keys on the numbers row on the keyboard.

    However, if braille routing to bookmarks is disabled, then the braille display can be thought of as a ruler that extends from the start, to the end of your project. Press a routing button at a point along that ruler, and reaper will jump to a point along the time line that is proportionate to the fraction of the distance that the pressed button is along the total length of the display. For example, press the button in the exact middle of your display, and jump to 50% of the project length.
    If reaper is playing, jaws will not speak, but playback will simply jump to the new position and continue playing. This makes it really nice if you are hunting for a particular passage. If playback is stopped, then the new position is spoken, and the time shown on the display is updated.

    Whizz Wheels And The Track Volume Control

    If you have a Freedom Scientific Braille display that has Whizz Wheels, you can use the right Whizz wheel to dynamically adjust the track volume. First, adjust the track volume manually to the maximum volume you want to allow, and press down on the right Whizz wheel. that will set a limit for how loud the volume will be adjusted by the wheel. Now, roll the wheel down to decrease the volume, and up to increase it. Increases will be limited to the level you set initially. This does what it does by using the action attached to control+shift+UpArrow, and control+shift+downArrow. You can change the action that is used, by editing file reaper.ini, which is stashed where your user scripts are stored. It does seem that the default xenakios/SWS action is not recorded as automation. However, if you make a custom action, which is a collection of multiple occurrences of the action attached to alt+up and DownArrow, those do get recorded.

    MIDI Editor

    This is support for the MIDI editor, Piano view, activated by control+shift+e, and thebn alt+1. When using left and right arro to move between notes, the display shows the current position in the format bar.beat.percent. If Osara has not told us one of those items, then that position is filled with an asterisk. For example: *.*.* means we have no idea where we are, until we arrow around sufficiently to learn it. The scripts will attempt to learn the current position when entering the editor, pending a better solution from Osara. But, if that stop gap method causes problems on your system, you can disable that by editing file reaper.ini in the jaws scripts folder, and setting MidiEditorInit to 0.

    Also, when using left and right arrow, the number of notes is displayed.

    When using up and down arrow, the note name is displayed, folllowed by a comma, then the length of the note in percent. This is the percent that Osara reports to us, and it is presumed to be a percent of a quarter note.

    Note names are in the following format, name, followed by the flat or sharp indicator, followed by the octave.

    Her are some note name examples: b4 = 4th octave b natural
    bb3 = third octave b flat. Note that osara prefers all sharps as of this writing.
    f#3 = third octave f sharp.

    Midi Editor, Events List

    This supports the Midi Editor Events List, accessed by pressing control+shift+e, from the track view, then alt+3 on the numbers row. Normally, you use up and down arrow to explore the events in chronological order. The entire event is spoken, including all fields, from left to right. The scripts allow you to use left and right arrow to choose from the available fields in the event. For example, pressright arrow a few times. each press announces a new field name, and its value. For example, press right arrow until it says, value. If this is a note, then the note name is spoken. Pressing numPad 5 will repeat the note name. Using up and down arrow now will only say note names, with none of the other fields being spoken. This is a great time saver. You can focus on the field you want, and then up and down arrow will only speak that field. To return to the normal mode where all fields are spoken, press left arrow until it says, all fields.

    You can also use the standard JAWS listView reading commands, attached to JAWSKey+control plus the number keys on the numbers row, to read a particular column. Double clicking one of those keys will constrain the vertical navigation to only speak that field. If you want to return to hearing all fields spoken, just arrow all the way to the left again. The short audio click that happens when you double click one of those keys, confirms that the double press was detected.
    to prevent the audio click, see Audio Cues

    Audio Cues

    There is a set of sound files that is played when various events occur, such as navigating the preferences tree, or when focusing the midi events list on a particular column.
    To disable these sounds, go to the folder that opens when you choose, Explore My Settings, from the JAWS item in the windows programs list, and edit file reaper.ini.
    In there, you will find a line that says: SoundsEnabled=1
    Change the 1 to 0, and close the file.

    Create Cue Sheets For Station Playlist Creator

    If you want to use Reaper to create a program for broadcast, and that program contains elements that you would like to send out via title streaming when the program is streamed, using Station Playlist Creator, you would need a means of converting the reaper project file into the cue sheet format used by SPL. This section contains a simple utility for doing that.

    This is a Python program. So you need to install Python on your machine in order to use this program, or otherwise have a means of running python programs. JAWS Scritps are not required for this.

    This converter assumes that the audio files that you are including in your project are named using the artist - title format. If further assumes, that all tracks will be scanned, and that items of 60 second length, or longer, should be included. But, if your items in reaper are just live voice recordings, those file names will turn up in your cue sheet as well, and you will need to edit the resulting cue sheet manually, to turn those numerical filenames into something useful to stream.

    To use this, download This Python program


    Use your Backspace key to browse the rest of the JAWS scripts offered by The SnowMan.

    Back to The SnowMan Main Page