Object Location Tones

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.

Features:

MIDI-based tone generation

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.

Limitations of Microsoft's built-in synth

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.

You can get better results with third-party software synthesizers

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: what to look for

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.

For advanced users

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.

Bundled MIDI components

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:

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.

Important Notes: