Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NVDA does not offer the same audio output devices as Windows. #16162

Open
paulber19 opened this issue Feb 10, 2024 · 11 comments
Open

NVDA does not offer the same audio output devices as Windows. #16162

paulber19 opened this issue Feb 10, 2024 · 11 comments
Labels
blocked component/audio NVDA's audio output (nvWave, issues with usb audio etc). p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.

Comments

@paulber19
Copy link

paulber19 commented Feb 10, 2024

Steps to reproduce:

Actual behavior:

I use an E7 stereo bluetooth headset with microphone.
On my system, and after connecting my headphones, In the "sounds" settings of Windows 10, the audio output devices are:
Realtek Digital Output (Realtek High Definition Audio)
Headset (E7 Stereo)
Speakers (Realtek High Definition Audio)

For a synthesizer, NVDA offers the following audio output devices to choose from:
Microsoft Sound Mapper
Realtek Digital Output (Realtek
Speakers (Realtek High Def
Headset (E7 Hands-Free AG Audio)
Headset (E7 Stereo)

The "Headset (E7 Hands-Free AG Audio)" device is not in the Windows audio output device list.
Since NVDA 2023.2 and wasapi enabled, By selecting the "Headphone (E7 Hands-Free AG Audio)" device for the current synthesizer (OneCore), NVDA speaks normally but the beeps do not work.
An error is logged in the log:
Failed to initialize audio for tones
Traceback (most recent call last):
File "tones.pyc", line 24, in initialize
File "nvwave.pyc", line 832, in init
File "nvwave.pyc", line 875, in open
File "nvwave.pyc", line 991, in _setVolumeFromConfig
File "nvwave.pyc", line 980, in setVolume
File "_ctypes/callproc.c", line 1000, in GetResult
OSError: [WinError -2147024809] Invalid parameter
If wasapi is disabled, everything is normal

Expected behavior:

Apart from the "Microsoft Sound Mapper", NVDA should not offer the "Headset (E7 Hands-Free AG Audio)" Audio)" device as an audio output device.
The beeps should work if the "Headphone (E7 Hands-Free AG Audio)" device is selected for the current synthesizer.

NVDA logs, crash dumps and other attachments:

System configuration

NVDA installed/portable/running from source:

NVDA portable

NVDA version:

All versions after introducing Wasapi:
NVDA 2023.2, NVDA 2023.3.3, nvda 2024beta7 and last NVDA alpha.
With these versions and Wasapi desactivated, there is no problem.

Windows version:

Windows 10 22H2 (10.0.19045) workstation AMD64

Name and version of other software in use when reproducing the issue:

None

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

Yes

If NVDA add-ons are disabled, is your problem still occurring?

Yes

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

@paulber19
Copy link
Author

Since NVDA 2023.2 and wasapi enabled, By selecting the "Headphone (E7 Hands-Free AG Audio)" device for the current synthesizer (OneCore), NVDA speaks normally but the beeps do not work.
An error is logged in the log:
Failed to initialize audio for tones
Traceback (most recent call last):
File "tones.pyc", line 24, in initialize
File "nvwave.pyc", line 832, in init
File "nvwave.pyc", line 875, in open
File "nvwave.pyc", line 991, in _setVolumeFromConfig
File "nvwave.pyc", line 980, in setVolume
File "_ctypes/callproc.c", line 1000, in GetResult
OSError: [WinError -2147024809] Invalid parameter
If wasapi is disabled, everything is normal.

@OzancanKaratas
Copy link
Collaborator

Your NVDA version is out of date. Please update NVDA and test for this issue.

@CyrilleB79
Copy link
Collaborator

@paulber19, please edit your first comment for the following sections:

  • NVDA version: Do not indicate "All versions" here. Indicate the main version where you have had the issue, and if possible the most recent one, i.e. 2023.3.3 or 2024.1beta7 or last alpha (give the real alpha version number)
  • Have you tried any other versions of NVDA? If so, please report their behaviors: here "Yes" is of no use for investigators; they want to know exactly which versions were tested, and for each version, which is working well or not. If WASAPI makes a difference on the list of devices, it's also interesting to know.

@CyrilleB79
Copy link
Collaborator

Also cc @jcsteh for the error with WASAPI (see #16162 (comment)).

@paulber19
Copy link
Author

paulber19 commented Feb 10, 2024 via email

@CyrilleB79
Copy link
Collaborator

Thanks. That's much more precise than "all versions" indeed.

And do you confirm that the issue is present in all these versions? With and without WASAPI?

@jcsteh
Copy link
Contributor

jcsteh commented Feb 11, 2024

Even though we have WASAPI now, NVDA still gets its list of audio devices (as shown in the Settings dialog) from the old WinMM API. We can't change that until the old WinMM (WASAPI disabled) code is removed altogether. At that point, I envisage it will be a lot easier to make the device list more consistent with that shown in Windows settings, etc.

@OzancanKaratas
Copy link
Collaborator

See #15781 (comment): @jcsteh, considering this comment, I think we can leave WinMM support behind now. Can we use the solution there instead of managing audio devices from C++ code?

@seanbudd seanbudd added blocked p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority component/audio NVDA's audio output (nvWave, issues with usb audio etc). triaged Has been triaged, issue is waiting for implementation. labels Feb 12, 2024
@SaschaCowley
Copy link
Member

This may be fixed by #17496.

@CyrilleB79
Copy link
Collaborator

@paulber19 you write:

Since NVDA 2023.2 and wasapi enabled, By selecting the "Headphone (E7 Hands-Free AG Audio)" device for the current synthesizer (OneCore), NVDA speaks normally but the beeps do not work.

Is it still the case with NVDA 2024.4.1 and WASAPI enabled?

@SaschaCowley, there are two issues described in the initial description. #17496 probably fixes the issue related to audio devices list/names. But what about the beeps not working?

@paulber19
Copy link
Author

paulber19 commented Dec 11, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked component/audio NVDA's audio output (nvWave, issues with usb audio etc). p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
Development

No branches or pull requests

6 participants