-
-
Notifications
You must be signed in to change notification settings - Fork 646
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
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
Feature request: Add audio volume control and sound split commands #16037
Comments
@mltony thank you very much for these great proposals. I think. Regarding NVDA volume, is the volume switcher in the settings ring not already doing the same thing like you propose with nvda+ctrl+page up or down? |
for the NVDA+alt+s command, I also propose a checkbox in the newly added audio settings pannel and a combo box which lets you choose if NVDA should go to the right or the left speaker.
|
@mltony not sure about microfone mute gesture, actually this contradicts the philosophy of a screen reader because the microfone as such does not have anything to do with speech output. Note that there is also the powertoys tool which provides keyboard shorcuts for muting the microfone and turning on and off the camera no matter if you are focusing an application. But i guess not every company would allow you to install powertoys. To be clear, i think such a global feature to mute the microfone makes totally sense, but i am not sure this is really a feature fitting into a screen reader. Sighted people have the same issue. |
So I think first of all we should put the focus on the splitting feature and the adjusting of the volume of other apps because this would definitely improve user experience significantly. |
|
Thanks Tony for these details, I think your arguments make sense. |
As for the microfone mute, I was thinking more about the uuse case where the application like teams or so is minimized, then sighted people have also to navigate to the application first and then click on mute. That's why I thought it would be kind of strange to have a global command that works even when Teams is minimized. Or is it possible for a sighted person to mute teams directly from another place while it is minimzed? |
Hi Tony These would be very welcome features.
Do you plan to implement all these 4 features in the same PR or in separate ones? My opinion is that you should implement the 4 ones separately. This way, you may not hold back, e.g. sound splitting capability while discussing if mute mic should go in NVDA and / or how. Cc @jcsteh who has implemented WASAPI. |
Hi,
Of these proposals, I think proposal 4 is the easiest to implement although it will be limited to Windows 11 22H2 and later (need to test with Windows 11 21H2 when I have time). Also, if you don't mind, let's discuss one proposal at a time (one issue per proposal please unless a thematic issue/discussion is needed to tie issues together) and refer each proposal issue back to this issue/discussion. P.S. @LeonarddeR, I know you wanted to limit volume announcement to when File Explorer is focused, I think announcing mic status from everywhere is a good justification for relaxing this a little as it is UIA notification that reports mic status in Windows 11. Thanks. |
@Adriani90 , |
Hello,
Only to say that pageUp and pageDown could be a bit tricky with laptop. For
example on my Lenovo keyboard, the pageUp is function-key and down arrow.
So for laptop I ask you to use some combinations that can be easier.
I'm using the volume adjustment add-on, and for volume it uses
ctrl-nvda-horizzontal arrow keys for navigating the app and
ctrl-nvda-vertical arrow keys for changing volume.
Il giorno sab 13 gen 2024 alle ore 01:55 mltony ***@***.***>
ha scritto:
… @Adriani90 <https://github.com/Adriani90> ,
Thanks for the info, I wasn't aware of that checkbox. Then indeed it
doesn't make any sense to reimplement it. I updated my proposal - excluded
this item.
As for microphone mute, sighted people don't typically minimize
application. Therefore they always have a button visible and available
within one mouse click. Typical scenario during these meetings is that 90%
of time you are muted listening to other people. An when your turn comes -
which often times comes all of a sudden, then you need to quickly unmute.
Therefore II came up with that shortcut so that my response time is
comparable with sighted people.
@CyrilleB79 <https://github.com/CyrilleB79> ,
Re 2: I agree that adjusting the volume of all applications at once is the
simpler use case that should probably be enough for like 90% users. The
need to control each application separately arises when two or more
applications play sounds at the same time. That's not my use case, but I
can keep this in mind and make the code reusable in case someone wants to
implement this scenario later.
re 3: Ah, that's funny, now I remember, that is your feature request that
originally inspired me to write sound splitter in the first place!
Re 4: Fair enough, it seems that @josephsl <https://github.com/josephsl>
mentioned he has a solution for automatically announcing microphone mute
status. This convinces me that my microphone mute feature should indeed
only live in an add-on. I dropped this from my proposal.
@josephsl <https://github.com/josephsl>,
Re 1. I dropped proposal 1. As for proposal 2 (controlling volume of all
apps except NVDA) - this is an integral part of sound splitter. When you
split sounds into left and right channel, there must be an easy way to
control left and right separately, hence this feature.
Re 2. I am @mltony <https://github.com/mltony>. HI there.
Re 3. Fair enough. I hope announcing of mic mute messages can one day also
be merged into NVDA core.
Re ps: At this point I only left two proposals: SoundSplitter and
controlling the volume of all other apps. The latter is an integral part of
the former. In fact it is impossible to implement sound splitter without
chaning the volume of all other apps. So at this point I believe both
proposals should stay together in a single issue.
—
Reply to this email directly, view it on GitHub
<#16037 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AD5H6GD6NBP6PYBHCMWK3MTYOHLRHAVCNFSM6AAAAABBYVX4VCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOJQGIZDANBVGM>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
Simone Dal Maso
www.nvapple.it
www.nvda.it
|
I think in this case you will have to use a tool to remap some of the keys you don‘t use to page up and down. There are also other commands in NVDA which use these keys such as changing review mode, scrolling by paage etc. I still stay with tony‘s approach. We cannot consider every keyboard configuration out there. We should stick to the standard keyboard configuration. People with non standard keyboard configs have to remap coresponding keys.There is also an NVDA add on for remapping keys I think. Von meinem iPhone gesendetAm 13.01.2024 um 19:47 schrieb dreinn ***@***.***>:
Hello,
Only to say that pageUp and pageDown could be a bit tricky with laptop. For
example on my Lenovo keyboard, the pageUp is function-key and down arrow.
So for laptop I ask you to use some combinations that can be easier.
I'm using the volume adjustment add-on, and for volume it uses
ctrl-nvda-horizzontal arrow keys for navigating the app and
ctrl-nvda-vertical arrow keys for changing volume.
Il giorno sab 13 gen 2024 alle ore 01:55 mltony ***@***.***>
ha scritto:
… @Adriani90 <https://github.com/Adriani90> ,
Thanks for the info, I wasn't aware of that checkbox. Then indeed it
doesn't make any sense to reimplement it. I updated my proposal - excluded
this item.
As for microphone mute, sighted people don't typically minimize
application. Therefore they always have a button visible and available
within one mouse click. Typical scenario during these meetings is that 90%
of time you are muted listening to other people. An when your turn comes -
which often times comes all of a sudden, then you need to quickly unmute.
Therefore II came up with that shortcut so that my response time is
comparable with sighted people.
@CyrilleB79 <https://github.com/CyrilleB79> ,
Re 2: I agree that adjusting the volume of all applications at once is the
simpler use case that should probably be enough for like 90% users. The
need to control each application separately arises when two or more
applications play sounds at the same time. That's not my use case, but I
can keep this in mind and make the code reusable in case someone wants to
implement this scenario later.
re 3: Ah, that's funny, now I remember, that is your feature request that
originally inspired me to write sound splitter in the first place!
Re 4: Fair enough, it seems that @josephsl <https://github.com/josephsl>
mentioned he has a solution for automatically announcing microphone mute
status. This convinces me that my microphone mute feature should indeed
only live in an add-on. I dropped this from my proposal.
@josephsl <https://github.com/josephsl>,
Re 1. I dropped proposal 1. As for proposal 2 (controlling volume of all
apps except NVDA) - this is an integral part of sound splitter. When you
split sounds into left and right channel, there must be an easy way to
control left and right separately, hence this feature.
Re 2. I am @mltony <https://github.com/mltony>. HI there.
Re 3. Fair enough. I hope announcing of mic mute messages can one day also
be merged into NVDA core.
Re ps: At this point I only left two proposals: SoundSplitter and
controlling the volume of all other apps. The latter is an integral part of
the former. In fact it is impossible to implement sound splitter without
chaning the volume of all other apps. So at this point I believe both
proposals should stay together in a single issue.
—
Reply to this email directly, view it on GitHub
<#16037 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AD5H6GD6NBP6PYBHCMWK3MTYOHLRHAVCNFSM6AAAAABBYVX4VCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOJQGIZDANBVGM>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
Simone Dal Maso
www.nvapple.it
www.nvda.it
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Hi, Update on mic mute proposal: Windows+Alt+K is ineffective - supposedly only Microsoft Teams supports this, and turns out Teams does not respond to Windows+Alt+K shortcut (when I create a meeting in Teams and Zoom, both apps do not respond to Windows+Alt+K shortcut but provides their own hotkeys to mute/unmute the microphone). Discord had a feature request to support Windows+Alt+K shortcut. Unless an app that does respond to Windows+Alt+K is found, I think microphone toggle may need to be considered part of this proposal or a separate one. Also, do note that some vendors include a command to toggle microphone on their computers (for example, ThinkPad series uses Fn+F4). Thanks. |
hello @mltony |
Hi @mltony - please split the 2 remaining feature request proposals into separate issues so that they can be triaged, discussed and fixed separately. |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
I propose to add the following commands related to audio volume. If approved I will implement this myself.
(As a result of discussion below I dropped two out of four proposals and marked them as deleted; but keeping them in the list to preserve their indexes)
NVDA+Control+PageUp/PageDown
- adjust NVDA volumeNVDA+Alt+PageUp/PageDown
- adjust volume of all other applications except NVDA.NVDA+alt+s
: sound splitter: send NVDA sound to left channel while sound from all other applications to the right channel.NVDA+delete
toggle microphone mute.I will not insist on these gestures, so feel free to propose other gestures. It would also be fine with me to leave them unassigned.
Utility
Sound split function, initially implemented in Tony's enhancements add-on proved to be very popular among NVDA users, to the extent that it was copied by @josephsl into Sound Splitter add-on and also was copied in NVDA Extension global plugin. On one hand this proves the demand for sound splitting feature; and on the other hand having the same feature implemented in so many add-ons creates incompatibility between them that hurts end users. Therefore I believe it would be benficial to implement this feature in NVDA core. Another reason is that with the recent switch to wasApi, at least two out three add-ons now suffer from compatibility problems, which means it is perfect time to move this feature into NVDA core.
Adjusting the volume of NVDA and other apps separately is closely connected with sound splitting feature: since we diinto two streams, we need to have a way to control their volumes separately.
Toggle microphone mute command proves immensely helpful for people like me who work in large IT companies and have to frequently attend online meetings. At Meta two other screenreader users expressed interest in that command, although they are Jaws users, but this still illustrates the demand.
Technical details
In Tony's enhancements add-on I implemented these commands by using PyCaw library; however if I remember correctly I grabbed a modified version of this library from yet another add-on, name of which I don't remember at this point.
In order to implement this PR, I see a bunch of different approaches with regards to interaction with Audio Manager interface:
comInterfaces
that appear to have many COM interfaces seemingly generated in an automatic fashion, but I couldn't figure out how to do that myself.At this point I prefer option 3, but I'd like to check with NVAccess if you have different opinion. I wish I could go ahead with option 4, but I spent quite some time trying to generate COM interfaces for
MMDevAPI.dll
module with no success, so if anyone can teach me how to do so - option 4 would be a great choice then.Another detail to call out is the fact that we'd need to create a separate thread to monitor audio sessions. It turns out audio sessions tend to come and go when new applications launch and for example when new system notification sounds play. We need to catch them and apply volume settings as they appear, therefore I implemented a monitor thread that performs this check every second. I haven't found a better solution, so wanted to check with NVAccess if you'd be okay with creating a monitor thread. That thread will only be running when sound split is active.
The text was updated successfully, but these errors were encountered: