nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.11k stars 637 forks source link

Application volume adjuster: make the setting profile independent #17124

Open Adriani90 opened 2 months ago

Adriani90 commented 2 months ago

Steps to reproduce:

  1. Open NVDA
  2. Create profiles for different applications with different audio playback (e.g. MS Teams, a browser of your choice, audio editing application etc.
  3. Enable the application volume adjuster while on the standard NVDA profile
  4. Play some audio on an applicationw ith a profile (e.g. a youtube video on Chrome)
  5. Adjust the volume of all applications with the coresponding commands while focusing the desktop
  6. Switch to the Chrome window playing the Youtube video with alt+tab
  7. Enable the application volume adjuster on this application as well
  8. Repeat step 5 while focusing desktop
  9. Switch back to the Chrome window
  10. Press nvda+alt+delete to mute the application
  11. Switch back to desktop to activate the standard NVDA profile
  12. press nvda+alt+delete (you will hear applications unmuted)
  13. Switch back to the the Chrome window with the Audio playback from the Youtube video
  14. Change the applications volume with nvda+alt+pg up and pg down

Actual behavior:

Expected behavior:

The application volume adjuster should not be profile dependend in order to avoid these issues. Also it is confusing to describe the setting as "it adjusts the volume of all applications other than NVDA". In this case this is not true because it depends on whether you enabled the applications volume adjuster for all your profiles or not.

NVDA logs, crash dumps and other attachments:

n/a

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

last alpha

Windows version:

Windows 11 23 H2

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

Any application with a NVDA profile

Other information about your system:

n/a

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.

no

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?

n/a

Adriani90 commented 2 months ago

cc: @mltony

seanbudd commented 2 months ago

It's hard to say which behaviour is desired - you may want a situation where applications change whether or not this is enabled. We'd like to hear more from the community before making a decision.

Adriani90 commented 2 months ago

@seanbudd could elaborate what you mean exactly? I mean the feature as such is defined as adjusting volume of all applications other than NVDA. However as per current implementation this doesn‘t work as long as it is profile dependent. It‘s just confusing as it is now.

Adriani90 commented 2 months ago

So community feedback seems required in this logic, let's start a new feedback loop on this because the feature is really not working as expected. cc: @CyrilleB79, @XLTechie, @LeonarddeR, @ABuffEr maybe you have some thoughts on this as well. We really have to make sure feature are doing what they should before merging. This had already a very long feedback loop and it was from the beginning actually clear that it shouldn't be profile dependent.

CyrilleB79 commented 2 months ago

There is clearly an issue described in this ticket and the current experience is not satisfactory.

Though we can discuss if making this parameter profile independent is the most desirable solution to the issue described here.

My personal opinion is that making application volume adjuster profile independent helps clarifying the UX. It avoids to have to answer to questions such as:

If someone has a real-life use case for a profile dependent configuration of the volume adjuster, I'd like them to describe it in details.

The follow-up question if we make volume adjuster profile independent is: should other apps volume and mute other apps parameters also be profile independent? I'd say yes for clarity again.

XLTechie commented 2 months ago

I was going to comment on this earlier, to say that I agree with @Adriani90 and now also @CyrilleB79.

I hesitated, because I was thinking about what @seanbudd implied. But I just can't figure why someone would only want this feature in a subset of apps, or why we should expect that to be a valid use case.

IMO, we are really getting outside the territory of something a screen reader should be responsible for. Which is close to what I've thought about this feature all along anyway.

That said, I'm not the target audience for this, so the value of my opinion is limited. But if I had to go one way or the other, I would vote for not allowing profiles to change it, as it just muddles the UX, and would be a nightmare for people who offer support.

These opinions apply to the system-wide audio features in general, as @CyrilleB79 mentioned.

Adriani90 commented 1 month ago

@seanbudd, @SaschaCowley could you please consider prioritizing this one? It just caused a lot of mess on my end since I have about 30 profiles and I needed about half an hour until I turned mute all apps other than NVDA which this feature actually promisses. In the end I get alot of mess because some apps mute when I change the window to them and some not, it is really a pity. Otherwise I vote for reverting the whole feature because it is really not intuitive at this stage for an user, in case a profile independent solution is not acceptable.

cc: @cary-rowen, @hwf1324 maybe you have feedback as well but it seems quite clear to me that this feature should be profile independent.

CyrilleB79 commented 1 month ago

@Adriani90 could you answer to:

The follow-up question if we make volume adjuster profile independent is: should other apps volume and mute other apps parameters also be profile independent? I'd say yes for clarity again.

Adriani90 commented 1 month ago

Yes that makes sense in my view as well.Von meinem iPhone gesendetAm 26.09.2024 um 08:52 schrieb Cyrille Bougot @.***>: @Adriani90 could you answer to:

The follow-up question if we make volume adjuster profile independent is: should other apps volume and mute other apps parameters also be profile independent? I'd say yes for clarity again.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Adriani90 commented 1 month ago

@mltony, @codeofdusk could you please have a look into this? Unfortunately the feature as it is implemented broke my NVDA and I had to reinstall it from scratch, since I had 30 profiles with different audio output applications and when trying to run all through the adjuster it ended up in chaos. This feature should definitely be profile independent, otherwise it doesn't corespond to what is written in the user guide. cc: @gerald-hartig

codeofdusk commented 1 month ago

It's admittedly a little contrived, but one case for making this profile-dependent might be someone who heavily uses volume mixer (which the application volume adjustment overwrites) but wants to bring down (or up) the volume level in specific apps?

I agree with @XLTechie that this feels a little outside the domain of a screen reader.

Adriani90 commented 1 month ago

That would be already possible if the adjuster was profile independent. There is no issue in turning up the volume for one application after you turned down the volume for all of them. But this should be done manually from the volume mixer. The adjuster in NVDA was really meant to adjust the volume of all apps at once, this was the request. There was never the discussion about turning up or down the volume of single apps from NVDA.

Von: Bill Dengler @.> Gesendet: Donnerstag, 10. Oktober 2024 00:48 An: nvaccess/nvda @.> Cc: Adriani90 @.>; Mention @.> Betreff: Re: [nvaccess/nvda] Application volume adjuster: make the setting profile independent (Issue #17124)

It's admittedly a little contrived, but one case for making this profile-dependent might be someone who heavily uses volume mixer (which the application volume adjustment overwrites) but wants to bring down (or up) the volume level in specific apps?

I agree with @XLTechie https://github.com/XLTechie that this feels a little outside the domain of a screen reader.

— Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/17124#issuecomment-2403555523 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AGVCP4KBWVMTBBQTASH5Y5LZ2WXDFAVCNFSM6AAAAABNWTMZDKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBTGU2TKNJSGM . You are receiving this because you were mentioned. https://github.com/notifications/beacon/AGVCP4O3YSSLL5YWD7XGF3TZ2WXDFA5CNFSM6AAAAABNWTMZDKWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTUPINMMG.gif Message ID: @. @.> >

Adriani90 commented 2 weeks ago

@mltony can you please look into this? Seruiously, we are having hard times investigating audio related issues in the german and romanian community, the issues are most of the times reported due to the fact that the adjuster is profile dependent. Expected behavior when the adjuster is enabled:

@gerald-hartig in case no solution is found, I think the best way is to revert the whole feature due to following reasons:

  1. The user guide is misleading, it explains in section 12.1.7.8, 12.1.7.9 and 12.1.7.10 the feature but it is wrong. The current volume adjuster is not controlling all applications volume if there are more profiles, but only those who are focused with the coresponding NVDA profile.
  2. The feature as it is implemented now, causes confusions for users when many profiles are used. Apps volume and unmuted state can be only restored by disabling the feature completely, or manually pressing the key stroke for any application that has a separate NVDA profile which is very inefficient. And this doesn't corespond to the original request in #16052.
codeofdusk commented 2 weeks ago

@Adriani90 This issue is fixed by #17335 (currently under review).

mltony commented 2 weeks ago

Hey @Adriani90, sorry for not responding earlier - I was going through some rough time at work. Looks like @codeofdusk already has a fix for that - I appreciate your help. But after reading this thread I have a tangential question regarding profiles. Is n't this a fundamental problem of the way profiles are currently implemented in NVDA? To be clear:

CyrilleB79 commented 1 week ago

@mltony, profiles already work as you describe. E.g. create a Word profile and modify the punctuation level in Word. If you modify any other parameter such as speech rate out of Word, it will still apply in Word since you have never modified speech rate in Word.

Adriani90 commented 1 day ago

@mltony the solution by @codeofdusk has been closed. And this particular issue still causes significant inconvenience when the adjuster is enabled. Are you available to provide a solution until 2025.1 is released?

@SaschaCowley could you please share NV Access position? Can we go with the revert of this feature until 2025.1 in case no solution is provided? It is really hard to investigate audio related issues reported by users in our local communities when this setting depends on profiles.

mltony commented 1 day ago

@Adriani90, I am trying to reproduce this issue on my computer but getting very different results. I don't use profiles myself and I am relying on @CyrilleB79's description in the last comment to understand how profiles work. I started with blank profile (I deleted UserConfig directory when running from source. Here is my experience follwoing your steps:

  1. I created a profile only for chrome, since I don't use Teams or any other audio editing apps.
  2. I enabled AVA while on Windows Desktop. I presume this should enable it in all profiles. I assume this implies standard NVDA profile.
  3. The volume of Youtube playback is in fact affected by NVDA+Alt+PageUp/PageDown command. So I cannot reproduce your problem at step 5 on my computer as it works as expected.
  4. AVA is already enabled in chrome profile. In my understanding this is expected since it was enabled in the default profile and wasn't overridden.
  5. Same thing: the volume of YouTube is affected by AVA keystrokes. Works as expected.
  6. I hear applications muted instead. This is expected because the default is unmuted and I didn't touch the default in default profile.
  7. Chrome stays muted when I adjust applications volume. This also works as expected since chrome profile has been muted.

Do you have any idea why there is so much discrepancy? Also I am now looking at @codeofdusk's PR #17335 - I will try to extract only the part that makes this setting profile independent - as there seems to be a general consensus regarding that.

mltony commented 1 day ago

On a separate note, it still seems to me that there is a fundamental problem with NVDA profiles. Using @CyrilleB79's example with MS Word. Personally, I wish speech rate would be profile independent - as I change it frequently and would like it to stay the same when I switch between apps. BTW that's the reason why I couldn't use profiles: once I set up different profiles for different apps, then trying to adjust speech rate becomes a nightmare, because I'd have to switch it one by one in each profile. In theory it can be argued that I can just switch to Windows Desktop and adjust speech rate there, but that's 3 keystrokes instead of one, and I adjust speech rate so frequently, that it is already deep in my muscle memory. In my understanding that's essentially what is @Adriani90 complaining of with regards to AVA. So the way I envision an ideal solution for profiles would be is: we should be able to specify which settings are profile dependend (e.g. using @CyrilleB79's example, only mark punctuation level to be overridden in MS word), while keeping all the other settings profile independent. I would prefer the default to be profile independent as I would think that in most cases you would only want to override only a single setting in a given app. Does it make any sense to you guys? I am just throwing an idea, as I don't expect enough free time to implement this idea in the nearby future.

mltony commented 1 day ago

I studied #17335 and it seems that @codeofdusk proposed to remove AVA related config settings and use a local variable instead. The problem with this approach is that settings won't be saved across restarts. I would think this would be a serious regression as I would want my AVA settings to be saved. Otherwise it would be too much hassle to enable AVA upon every restart. So I can't just copy @codeofdusk's solution. Is there another setting in NVDA that is both profile-independent and persistent? If so, please LMK, I'll try to copy that approach. Otherwise it seems that there is no easy solution for this issue. LMK if I'm missing anything obvious though.

Adriani90 commented 1 day ago

Yes enabling or disabling WASAPI in advanced settings and beeps volume follow voice volume in audio settings are profile independent. I gues sound split is also profile independent, or am I wrong?Von meinem iPhone gesendetAm 16.11.2024 um 21:09 schrieb mltony @.***>: I studied #17335 and it seems that @codeofdusk proposed to remove AVA related config settings and use a local variable instead. The problem with this approach is that settings won't be saved across restarts. I would think this would be a serious regression as I would want my AVA settings to be saved. Otherwise it would be too much hassle to enable AVA upon every restart. So I can't just copy @codeofdusk's solution. Is there another setting in NVDA that is both profile-independent and persistent? If so, please LMK, I'll try to copy that approach. Otherwise it seems that there is no easy solution for this issue. LMK if I'm missing anything obvious though.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

codeofdusk commented 1 day ago

So the way I envision an ideal solution for profiles would be is: we should be able to specify which settings are profile dependend (e.g. using @CyrilleB79's example, only mark punctuation level to be overridden in MS word), while keeping all the other settings profile independent. I would prefer the default to be profile independent as I would think that in most cases you would only want to override only a single setting in a given app.

@mltony See https://github.com/nvaccess/nvda/issues/10156#issuecomment-701027087

Adriani90 commented 23 hours ago

Speech mode setting is also profile independent. So there are lots of settings that could serve as an example.

CyrilleB79 commented 10 hours ago

So the way I envision an ideal solution for profiles would be is: we should be able to specify which settings are profile dependend (e.g. using @CyrilleB79's example, only mark punctuation level to be overridden in MS word), while keeping all the other settings profile independent. I would prefer the default to be profile independent as I would think that in most cases you would only want to override only a single setting in a given app.

@mltony See #10156 (comment)

Yes, let's discuss the general issue regarding profiles and how they are modified in #10156.

mltony commented 9 hours ago

@Adriani90, I just checked and both these are profile-dependent:

Adriani90 commented 4 hours ago

@mltony got it about WASAPI, sorry for the confusion there. However, that setting is gonna be removed anyway, so the WASAPI will be enabled by default globally.

So far, my assumption that there is no mechanism to make profile-independent yet persistent settings holds true. Perhaps we should push for Allow excluding certain settings from configuration profiles #10156 as a fundamental solution to make any setting profile-independent.

I understand your point, and I also think fixing #10156 will also fix this issue.