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 63 (most recent)

Installation Requirements

Please note the following requirements prior to installation:

Now that Microsoft is more strict about security, some people have problems loading the executable installer into their Windows 10 machines. This file was scanned and guaranteed to be free of harmful software when we posted it. Naturally, you should scan it as well, for your own comfort.

The following tips may be helpful:
Download the file.
. Edge will block it.
In the downloads bar, tab over to Keep, and press space.
Then tab to save as, and specify where it is to go.
When the installer is run, Microsoft still may try to block it.
If so, tab to more info, press space, then tab to run anyway.

This installer will deposit a DLL file into the UserPlugins folder for reaper on your C drive. But, the installer does not yet know about portable reaper installs. So, if you are running reaper from a memory stick, you will need to copy the ReaperCommAccess DLL files manually into that folder on the thumb drive. Therefore, please close reaper entirely before running this installer.

See the scripts documentation further down this page.

If you experience problems with these, please write to snowman@SnowManRadio.com


SPECIAL NOTE: -- If you are using an old version of the scripts, not the most recent, The first time you run reaper after installing this version of the scripts, you will hear a good news message, telling you that you can continue to use Reaper in the current session, if you like. But, for a more responsive experience, close Reaper, and then start it back up again. You will only need to do this once. This is not a problem, it is a sign that things are working properly. The reason for this is that the script sneed to make a small tweak to the reaper configuration, but the only way to get Reaper to believe in that change, and adopt it, is to close and restart it. If you choose not to do that, reaper will work fine, just won't be quite as snappy until you do. IF you do not receive that message, then you are running scripts 55 or later, and all is well.

If you are one of the few people who are having trouble getting the installer to compile your files, there is a batch file included called RecompileReaperJaws.bat, and it is placed in the folder where your JAWS user scripts are stored. That file will compile all of the modules for your version of jaws. Most people do not have that problem. but, a sign that you do have it would be that JawsKey+q does not say scripts version 56.

You Can download the installer directly as a .exe file. However, if your security settings or other policies prevent you from downloading the .exe file, you can dowload in .zip format. open the .zip file, to extract the .exe installer file, which you can then treat normally.
If you are using reaper in a portable install, you still must do a couple of manual steps to migrate these scripts into that portable install, as described in the next section. Reaper Scripts Version 62 in .exe format Installer inside a .zip file.

Protable Istallations The installer for these scripts is currently not smart enough to handle portable installations, where you want to install reaper on a thumb drive that you can carry with you. Here are some notes about what you need to do manually to create that, once you have also installed these into your permament installation. If you do not have a permaanent install, you can use 7z or similar archiver to extract the mentione dfiles from the scripts installer.

The scripts installer wants to deposit two files into the reaper folders. These are the dll's used to communicate with reaper:

Those files normally reside in: C:\Users\YourName\AppData\Roaming\REAPER\UserPlugins
So, those need to be migrated to the portable install.

Also, the following reaper file needs an addition.
File: reaper-ExtState.ini
Normally resides in:
in the OSARA section, add the following key:

Scripts documentation

The rest of this document describes extra functionality that is provided by these scripts. 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.

Regions Markers Manager Dialog

{build41} This dialog did not speak in builds prior to build 41. In this dialog, when focused in the list of markers/regions, use up and down arrows to read list items. If the item is a marker, jaws will read the marker name, and the marker time. Or, if it is a region, jaws will read the name, and the start and end times.

Use left and right arrows to focus on various fields in the durrent item. This is defaulted to the name and start time when entering the dialog. but, you can use right arrow to focus on the end time, or length, or render matrix fields. Once focused on a field, up and down arrow as well as the sayWord command, will report only the value in that field. To return to speaking name and time, arrow all the way to the left.

Braille will generally display one of two formats. For markers, braille will show name followed by marker time. If it is a region, braille will show in the following format:

Braille does not show length, or render matrix, and is not affected by left and right arrow field focus.

FileSave As Dialog HotKeys

{build40} There are checkboxes in the File Save As dialog that do not appear in the tab order. Hot keys have been added which allow you to read, or to toggle these checkboxes. The JAWSKey+h hot key help is now updated to be specific to this dialog, and lists those hotkeys. Press a corresponding key once to hear the state of the checkbox. Press it twice in rapid succession to toggle the checkbox.

Item Boundary Exploration

{build40} This feature lets you explore item edges with the left and right arrows. There are other ways of doing the same thing, using the OSARA short cuts provided. But, this method will not change item selection. This analysis is confined to the currently selected track. It's behavior when multiple tracks are selected, is undefined.

To use this, go to the jaws options with jawsKey+z, followed by o, and enable the item called "beep at item edges". Sound cues must also be enabled.

Now, you can use left and right arrow keys to move along the time line. Special toens are played when you cross from one item into another, when you move out of an item into blank space, and when you move from blank space into an item.

Press control+jawskey+Numpad 5, or say character, to hear the name of the item under the edit cursor, on this track.

This feature should work, even if you hold down an arrow key and scrub rapidly. You will also hear the sound when moving from a track with no item in the cursor position, to one where an item is present etc.

To review the tones that are used, focus in the track view, press jawsKey+h, and then enter on, Explore The Sound Cues.

Region Boundary Exploration

{build 51] This feature lets you be notified when scrubbing across region boundaries. This works similarly to Item Boundary exploration, in that you will hear particular sounds play when using left and right arrows to scrib across region boundaries.

To use this, go to the jaws options with jawsKey+z, followed by o, and enable the item called "beep at Region edges". Sound cues must also be enabled.

This feature should work, even if you hold down an arrow key and scrub rapidly. But, your most efficient way of finding the edge of the region is to use the relevant Osara shortcuts.

tabular Data Reading in Special Dialogs

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

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

{redesigned in build 50}
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 key assignments are stored in the reaper.bkm file in the JAWS user scripts folder, and can be specific to the project you are working on. Or, the assignments can be applied globally, making them shared across projects. So, if you elect to use project-specific bookmarks, all the projects you work on will be stored in there, in case you return to them.

As of build 50, this mechanism uses a layered approach. You can define key that only apply when the current project is open, as well as keys that are always assigned, regardless of project. This is controlled by an option flag that you can toggle, Go to the jawsKey+z, followed by O, option settings. and find: Use project specific track hot keys. When that flag is set, any new keys you define will be assigned to the project that is currently open. Those would be project specific assignments.

If that option flag is not set, then any new assignments will be stored in a default set that will apply to all projects.

If the option is enabled, the set of assignments that will be used when you activate a track, will be the default set, as modified by those settings for the current project. That means that a given key can apply to all projects, or just to the current project. If a key exists in the default set, as well as the project specific set, and the option flag to use project specific settings is enabled, then it is the project specific version of that key that will be used.

Only limited management facilities are provided. In the JAWSKey+z, t, listing of assignments, there are a couple new items at the bottom of that list to help you manage lists. Those are present if you have the option flag set to use project specific assignments.
You can store the assignments for the current project for global use. That moves all the keys associated with the current project, out of the project specific set, and into the default set. At that point, you will be using only default assignments, and the option flag will be returned to global only mode.. Perhaps, you prefer the term, global. Those keys apply to all projects, unless specifically overRidden.
Or, you can simply delete any project specific assignments. In this case, assignments are simply discarded. But, yes, there is a prompt to confirm your intent.

For more editing options, you can use a text editor to modify file Reaper.bkm, which is located in the jaws folder where your scripts are stored. You can move assignments around, or delete sections as required.
The format of that data is a project name enclosed in brackets, followed by a list of key assignments for that project, one per line.
for example, if the project is called MyProject, you will see something like:
[MyProject Tracks]
That means, the number 1 key is assigned to track 3, which is named Introduction.

If you rename a track in reaper, this file does not get updated automatically. the bookmark should still work. It's just that the name in the jawsKey+z t list will be incorrect. To fix that, simply reassign the key.

If you don't care about project specific settings, it is perfectly valid to always use this feature in global mode, so that all assignments apply to all projects. It is most likely that that flag will initially be set to for global mode only until you change it. But, any assignments that you made prior to scripts build 50 will likely not work.

To bookmark a track, first, make sure the option flag is set to the mode you wish to use. That will determine which set your new key will be assigned to. 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. Each line is of the form trackName = key Number. So, you can use first letter navigation to go to track names, if you like. 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.

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

{build340 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

{build40} 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

{Revised in build 52}
you can cause the braille display to continuously show the audio level for the currently selected track by enabling one or more of the meters as described below. when no meter is enabled, the display shows the standard format, including track name, item name, and selection info.

A few things must be set up manually for your particular Braille display. You must set the following options in the jaws settings center for reaper, under
structured mode:
include optional components
show dialog title: unchecked
Show dialog descriptive text: unchecked
This display format is designed for displays 40 characters in width or larger. The 32 cell displays will mostly work, but fields may be pushed off the end of the display in some extreme cases, such as double digit track numbers and hundreds of items on the track. Turning off the cursor time field, as described below, will help for 32 cell displays, and some people just find that it leads to a less cluttered display.

This mechanism has been designed to keep field locations constant and left justified in their positions. To that end, braille is forced into grade one when the meters are enabled, and should return to your preferred grade when you leave the trackview, or turn off the meters.

The display shows the following fields, left to right:

The routing buttons above the mode field can be used to change the meter mode in either direction. Four buttons are assigned, from one button to the left of the first character in the meter mode field, to the button above the last character. Press the left 2 buttons to decrement the meter mode, and one of the right 2 buttons to increment it.

Furthermore, you can rearrange the order in which those modes appear in the list to make it easier to quickly flip from one mode to the other. To do that, use the routing buttns to move to the mode you wish to move. Then, hold down the control key on your keyboard, as you operate those same routing buttons, the left 2 buttons of that field, will move your current mode left in the list, and the right pair will move it right in the list.

by default this field wraps, as you are using the routing buttons to change modes. However, if you would like it to not wrap, edit file reaper.ini, which is stored where you jaws user scripts are stored. In that file, find MeterModeWrap, and change the number to the right of the equal sign to a 0, and save the file.

Once you select a meter mode, that mode is saved as the default, and reaper's track meter for the currently selected track is automaticaly force to that mode. And, as you up and down arrow to other tracks, the meters for those tracks are also automatically forced to your selected mode.

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. Having those dashes as the place holder for a disabled meter can serve as a useful land mark when first touching the display to check a reading.

If the track is armed, the peak meter forms will monitor the live input, not the playing track. The LUFS meters are not able to track live input, but only work on playing tracks.

Also, the LUFS meters seem to be monaural, combining channels 1 and 2. This seems to be a Reaper thing. So, both meters, left and right, show the same value.

In peak Instantaneous mode, the braille display rapidly updates with the current reading. The speed of the update may make it difficult to read a particular value, but will give you a quick feel for the range in which the numbers tend to fall. Slowing down that display frequency would make the value more readable, but would be more likely to miss quick transitions.

In order for the instantaneous peak method 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, which will cause the readings to cluster around the true peak. Think of that as a filtering action. As a result, when silence is encountered, you will see the numbers slowly decay until they reach -150DB.

Track Number Verbosity

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

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. This is changing, as OSARA is adding some keys for use in this dialog, so some of our older keys are becoming unnecessary. The insert+h hot key list is specific to the media explorer dialog.

For example, f2 takes you to the files list. F8 takes you to the media explorer toolbar where you can use left and right arrows to move between the various buttons and checkboxes, press space bar as needed to activate them.

When in the files list,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. This facility is a bit problematic and will surely be replaced by more reliable methods in time. Once you start playback, 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 longer 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

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

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>
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:
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.

Establishing A Tiome Selection

{build 55} When you press the left bracket and right bracket keys to establish a time selection, Osara speaks a confirmation message. An option has been added to allow you to suppress that spoken message, and replace it with a couple short click sounds, one for each key. The clicks differ from one another in pitch, and the one assigned to the left bracket will sound left of center in the stereo output assigned to jaws speech. Likewise, the right bracket sound, higher in pitch, is right of center. To suppress those messages, and enable those clicks, go to the jawsKey+z options.

A second option causes the scripts to attempt to validate your selection. Depending on exactly how keys are pressed, and in what order, it is sometimes possible to think that you have established a selection, when in fact that is not the case. So, a second option under the jawskey+z options list, is one that causes the scripts to examine the length of the selection after the right bracket key is pressed. If no selection exists at that point, a warning will be spoken.

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

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:
  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 the Selection values do not show up, the window that contains the status information, at the bottom of the REAPER window, may be obscured.

If that happens, you can open a list of the open child windows, by pressing control+jawsKey+f4. If there are any such windows open, they will be listed there. Use up and down arrows to select a child window, and press eenter to place focus in that window. You can then press escape to close it normally, and return to the track view.

Track List

Text on the display is broken into the following components, which appear in the order listed:
  1. Recording indicator, if this option is enabled in the jawsKey+z o options list, then the letter R will appear on the left end of the display when reaper is actually recording, and all other text will moved 2 characters to the right.
  2. Cursor time, as control by the reaper ruler time format selection. . This field can be enabled and disabled with the control+jawsKey+t key.
  3. track status, this is a single character with the follwoing meanings. *=armed, -=muted, +=soloed, or space. This field shows if the track is armed, or soloed, or muted, and can be enabled or disabled as one of the options under the jawsKey+z o options.
  4. track name. This will be the letter "t" followed by the track number, such as t3, or t15.
  5. 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. meter readings and meter mode, if one of the braille meters is enabled.
  2. Item number and item details, when control+left or right arrowing.
  3. Marker number name and details.
  4. 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.
  5. Item 5 will contain the boundaries of a time selection, if one exists. These are in the following form: <> Length

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

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 three 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.

in {build48} a second option was added to the JAWSKey+z options to enhance this ruler navigation such that, if a time selection is active, the braille display width will be scaled to the length of the selection, and will revert to the span of the entire project if no time selection is active.

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, and we have not found another way to learn it, 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. 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.

Here 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 edit that cell focus on the cell you want, and press control+shift+enter. 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 place your virtual focus in that column, and 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