After installing this add-on and restarting NVDA, you will hear tones to indicate the location of different objects on the screen as you navigate.
To turn off object location reporting, press Ctrl+NumpadDelete. To enable it again, use the same gesture.
Object Location Tones will remember your preference, and when NVDA starts, it will retain the last state.
All settings will persist, even after disabling and re-enabling the add-on.
Ctrl+NumpadDelete gesture. This feature lets you activate positional tones during navigation only when you need it.Ctrl+Windows+NumpadDelete gesture to turn caret location reporting on or off. This allows you to keep positional tones active during navigation while disabling them for text fields (or vice versa).NumpadDelete to explicitly report the focused object's location. In editable input fields, it will report the caret's position if caret reporting is turned on. This is useful when tones during navigation are off, or when you want to hear the location of the focused object again without having to navigate away from it first.Windows+NumpadDelete gesture to report the mouse cursor's location via a positional tone.Ctrl+Shift+NumpadDelete gesture to hear a positional tone indicating the outline of the currently focused graphical object. This gives you a sense of the size and location of UI controls or other elements, which can be helpful in understanding how visual elements are arranged on the screen. This feature is very useful in GUI development.Ctrl+Alt+Shift+NumpadDelete gesture to hear the outline of the currently focused object's parent. Pressing it multiple times moves further up the ancestry chain. This feature helps you understand the relationships between the focused object and its ancestors, which is particularly useful for GUI development.Shift+NumpadDelete gesture to turn on continuous reporting of the mouse cursor's location in relation to a reference point. This feature plays one tone for the mouse and another for the reference point. The reference point is by default set to be a location of currently focused object or system caret if caret reporting is enabled, but it can be changed in the settings panel. Other options are the location of the center of the screen, the center of the foreground window or a top left corner of either mentioned, None, which excludes the reference point from the output, or the position where mouse monitoring started. The feature remains active until the same gesture is used to turn it off or the mouse stops moving. This is helpful in applications or websites where interaction is only possible with the mouse, and it can also assist with text editing and selection. This feature can be automatically activated upon mouse movement if thus selected in Object Location Tones settings panel.Ctrl+Alt+Windows+NumpadDelete gesture to cycle through different caret reporting modes. Available modes include: Lines: Reports caret movements only when moving up or down lines; Columns: Reports caret movements only when moving left or right across text; Lines & Columns: Reports caret movements in both vertical and horizontal directions; None: Disables caret movement reporting in editable text fields. This feature allows for precise customization of how you receive feedback while editing text, adapting to various workflows and preferences.
MIDI (Musical Instrument Digital Interface) is not audio, it is a protocol used to tell a MIDI compatible synthesizer which note to play, which instrument to use, how loud, and for how long. Using MIDI for location tones gives you a more musical way to hear position on the screen. You can choose different instruments, get more distinctive pitch steps using all 128 MIDI notes, and generally create a more pleasant listening experience that gives potentially more expressive and intelligible sound cues.
When you enable the Use Musical Instrument Digital Interface (MIDI) for tone generation option in settings, Object Location Tones will start sending MIDI note events instead of using NVDA's built-in tones.beep() function. These events go directly to the default MIDI output device set in your Windows system. Most of the time, this will be the Microsoft GS Wavetable Synth, a built-in software synthesizer that has been included since Windows 98.
Right after you activate the checkbox, you will be warned that the option is experimental and asked for confirmation. This is because tone production using MIDI instructions depends on software and hardware elements outside of NVDA's control and there can be so many different setups. For example, if something is wrong with your software synthesizer, a synthesizer volume is down or your hardware synthesizer is turned off or configured incorrectly you will simply not hear positional tones while Object Location Tones add-on will not be aware that anything is wrong. Usual occurrence with third party synthesizers will be that they will stop working after computer wakes up from sleep or hibernation or when virtual machine resumes execution. In these cases, going to settings, disabling and reenabling MIDI will solve the problem. The experimental warning will be changed or removed after collected feedback from users helps mitigate mentioned problems.
When MIDI output is turned off, the MIDI instrument selection control in the settings panel is disabled automatically. This helps indicate that the selected instrument only applies while MIDI tone generation is active.
While it works out of the box, which is excellent because it allows Object Location Tones to work with MIDI with no additional requirements, the Microsoft GS Wavetable Synth has some serious limitations:
That said, one good thing about GS Wavetable Synth is that instruments are mono, which helps with accurate horizontal spatial mapping.
If you want more responsive and flexible sound, you can install a better software synthesizer. Two popular ones that are free:
To use either of these with Object Location Tones, you will need to make sure they’re set as your default MIDI output. CoolSoft can handle this automatically. Otherwise, you will need to adjust the system MIDI Mapper or use a routing tool. You will also need to download and set a SoundFont to use with any of the two synthesizers. You can find a good selection of free SoundFonts listed on the official website of the CoolSoft VirtualMIDISynth.
SoundFonts are files (*.sf2) that contain sampled instruments. Your synthesizer will use these to actually play the MIDI notes. For this add-on, you don’t need anything fancy, but you should keep a few things in mind:
You can choose which instrument the add-on uses from its settings. After selecting one, it’s a good idea to test how it behaves when used for positional feedback. To check this, navigate across fixed interface areas like the desktop, taskbar, Start menu, and system tray. If notes drop out or feel mismatched in height, especially toward screen's top and bottom edges, or elements that are one below another such as menu items are reported to have drastically different horizontal position, especially between screen's top or bottom edges, switch to another instrument.
If you are a musician or have MIDI gear, you can also route the MIDI output to a hardware synthesizer or MIDI sound module. As long as the device shows up as a standard MIDI output and can be set as the default, it will work with this add-on. This setup gives you full control over sound and latency, though it takes a little bit more effort to configure.
Object Location Tones includes bundled external binaries for its MIDI functionality. The MIDI package shipped with this add-on is a heavily modified standalone variant of pygame.midi, adapted for use inside the add-on rather than imported from a complete pygame installation. The package extends original pygame.midi functionalities further with addition of higher-level MIDI event managing API.
The included MIDI support is based on:
pygame.midi, from the pygame projectPortMidi, the cross-platform MIDI I/O library used underneathPyPortMidi / pm_python, Python bindings for PortMidi
Accordingly, the add-on's midi package contains files such as portmidi.dll and compiled Python extension modules (*.pyd) from pm_python, needed for MIDI support.
Ctrl+NumpadDelete gesture will disable both navigation and caret reporting if it is enabled. This is done for convenience and backward compatibility. Using the gesture again will enable the caret reporting as well, unless it has been explicitly turned off using its gesture or via settings panel before that. To enable caret reporting while navigation reporting is off either use the settings panel, or the Ctrl+Windows+NumpadDelete gesture after disabling positional tones for navigation.