JMRI: Virtual Sound Decoder Decoder Window
Author: Mark Underwood
Keywords: JMRI help Virtual Sound Decoder

# JMRI Virtual Sound Decoder Decoder Window

This is the quick reference page for the Decoder window (old GUI) in the JMRI Virtual Sound Decoder tool.
Note: The old GUI represents the first version of VSD (2011). The old GUI was not available to VSD users since about 2013. In favour of an easier maintenance the programs of the old GUI were removed in JMRI 4.19.5 Test Release.
For users who call VSD from JMRI PanelPro, nothing changes. For users who call VSD from a Jython script, theoretically an error message could occur. In this case please report about the error via JMRI users or via Github. Thank you.
Here is an example for the old GUI: VSDecoderPane. In the new GUI it's called VSDManagerFrame.

What is this thing? The Virtual Sound Decoder ("VSDecoder" for short) sits on your computer, listening to its assigned decoder address. When you do things to the throttle (change speed or press the function button), it makes sounds, just like a physical sound decoder in your locomotive would - except the sound comes from your computer.
Virtual Sound Decoder is completely independent of the hardware layout, and can be used in stand-alone mode. You don't even have to have a locomotive in the Roster to use it.
You do need to have a working sound system and speakers on your computer, of course!
You must also have the OpenAL or JavaSound audio system installed on your computer. See the JMRI Audio Help Pages for details.
See the DecoderPro Manual Pages for more details on Virtual Sound Decoder.

## VSDecoder Window Elements

### Config Tab

The Config pane lets you choose which sound profile to use (steam vs. Diesel, EMD vs. GE, Leslie vs. Nathan, etc.), and assign a decoder address to listen to.

#### Roster Select and Save

You can select an existing Roster Entry, if you have any. Press the "Save" button to store the currently loaded VSD File and Profile to the selected Roster Entry. The next time you select that Roster Entry, it will auto-load the stored VSD File and Profile.
You don't have to use the Roster at all if you don't want to.
NOTE: See the note below about saving the Roster Entry information. There is a bug that I'm working on.

#### Profile Selection

To select a profile, you must first load a "VSD File". An example VSD file is included with the package, more examples are available for download on the web, and you can make (and share!) your own. Choose "File->Loadd VSD File" and load a VSD file. You can't do anything else (except pick a roster entry) until a VSD file is loaded.
Now you can choose one of the listed Profiles from the Profile drop-down. Note that you can't do anything else until you've selected a Profile.

#### Address Assignment and the Roster

Once you've loaded a VSD file and set a Profile, you can either enter a decoder Address directly - and press "Set" - or you can choose a locomotive from your roster. The VSD will then respond to throttle inputs. It will listen to any throttle that sends status information to JMRI. This includes JMRI software throttles, "smart phone" throttles like WiThrottle and EngineDriver, and most (but not all) hardware throttles.

### Options Tab

In the future, the Options pane will provide various option settings. For now, it is non-functional. The gadgets on this pane are just for show.

### Sounds Tab

The Sounds tab provides a set of customized buttons for triggering sounds without having to use a Throttle. This allows the VSDecoder to be used in a sort of "stand-alone" mode. The exact buttons shown will depend on which VSD file you have loaded.
Note: In the "example.vsd" file, the "Coupler" and "Air Brake" buttons are non-functional, there just for show.

#### Special note about Engine sounds

The actual engine sound generation is still very "rough". Expect rather "jerky" transitions between speed steps, and some other odd effects. Be patient. This is still "Alpha" code!
By default, the Engine sounds will not respond to throttle inputs until you have pressed the "Engine Start" button on the Sounds tab. This is to preserve a semblance of realism in that you must start the engine before it will run. This feature is completely independent of the actual locomotive operation. If you would prefer to have your engine sounds start immediately when you advance the throttle, without first pressing "Engine Start", there is a setting in the VSDecoder Preferences to change this. (This feature is currently broken for Steam sounds...)
Also note that the slider above the "Engine Start" button is only an indicator of which notch the engine is in. Moving the slider has no effect.

## Menu Items

### File Menu

Load VSDecoder File
  Pops up a file chooser to load a VSD File. Most VSDecoder functions will not work until you have loaded a VSD File.
VSDecoder Preferences
  Launches the VSDecoder Preferences pane.

### Window and Help Menus

These are the standard JMRI Window and Help menus.

## VSDecoder Preferences

The VSDecoder Preferences pane allows you to customize how the Virtual Sound Decoder works.

Auto Start Engine
  If this box is checked, the engine sounds will respond to throttle inputs immediately, without having to first press the "Engine Start" button.
Auto Load VSD File
  If this box is checked, the VSD File specified in the Default Path/Name fields will be automatically loaded on decoder start-up.
Default VSD File PathThis path is both the default path for the "Load VSD File" chooser box and the expected path for the Default VSD File if the "Auto Load VSD File" checkbox is selected.
Default VSD File Name
  This VSD file, assumed to be in the "Default VSD File Path", will be auto-loaded on decoder start-up, if the "Auto Load VSD File" checkbox is checked.

## Roster Interaction

Virtual Sound Decoder connections to the Roster are still a bit "under construction". You can do the following:

- Set the VSDecoder address from a Roster entry
- Store a preferred VSDecoder File and Profile Name to a Roster entry
- Auto-set the VSDecoder Profile and address from a Roster entry

To store the current VSDecoder profile setting to a Roster Entry, select the Roster Entry and click the "Save" button. See the bug note below, though! A few notes on limitations (bugs, mostly):

- If you choose a Roster Entry before loading the VSD file, it will not set the address.
- If you store VSDecoder info to a Roster Entry, it will not be saved to disk unless you go to "Roster->Edit Entry...", select your roster entry, open the programmer for it, and click "Save to Roster".
- All of the sounds are still "rough". Expect odd transitions between speed settings, strange effects when you press buttons rapidly (and sometimes not), and so on.
- Many other things are buggy or broken. Please log a bug report if something appears truly broken.

(This is the jmri.jmrit.vsdecoder.VSDecoderFrame old GUI help page)