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

Application volume adjuster: make the setting profile independent #17124

Open
Adriani90 opened this issue Sep 5, 2024 · 26 comments
Open

Application volume adjuster: make the setting profile independent #17124

Adriani90 opened this issue Sep 5, 2024 · 26 comments
Labels
good first issue github features these at https://github.com/nvaccess/nvda/contribute p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.

Comments

@Adriani90
Copy link
Collaborator

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:

  • Steps 5 and 8: The volume of Chrome Audio playback from the Youtube video is not changed.
  • Step 14: as soon as the change volume command is pressed, the Youtube audio playback is muted, although I unmuted all applications in step 12.

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
Copy link
Collaborator Author

cc: @mltony

@seanbudd
Copy link
Member

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.

@seanbudd seanbudd added blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. needs-triage labels Sep 10, 2024
@Adriani90
Copy link
Collaborator Author

@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
Copy link
Collaborator Author

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
Copy link
Collaborator

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 I have AVA (applications volume adjuster) enabled in notepad profile but disabled in default profile and if I mute other apps while in notepad, what should happen when I switch to other apps? Should the mute remain but we cannot unmute anymore, or should the sound be unmuted?
  • the same way, if I have AVA enabled in notepad profile but disabled in default profile and if I lower other apps volume to 10% while in notepad, what should happen when I switch to other apps?

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
Copy link
Collaborator

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.

@seanbudd seanbudd added p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority good first issue github features these at https://github.com/nvaccess/nvda/contribute triaged Has been triaged, issue is waiting for implementation. and removed blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. needs-triage labels Sep 16, 2024
@Adriani90
Copy link
Collaborator Author

@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
Copy link
Collaborator

@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
Copy link
Collaborator Author

Adriani90 commented Sep 26, 2024 via email

@Adriani90
Copy link
Collaborator Author

@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
Copy link
Contributor

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
Copy link
Collaborator Author

Adriani90 commented Oct 9, 2024 via email

@Adriani90
Copy link
Collaborator Author

Adriani90 commented Nov 3, 2024

@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:

  • Pressing nvda+alt+pg-up and pg-down: volume of apps other than NVDA should be increased or decreased on a global level, no matter how many profiles I have.
  • Pressing NVDA+alt+delet: all applications other than NVDA should be muted or unmuted, no matter how many profiles I have.

@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 Feature request: add command to adjust volume of all applications except for NVDA #16052.

@codeofdusk
Copy link
Contributor

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

@mltony
Copy link
Contributor

mltony commented Nov 3, 2024

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:

  • Suppose you have 30 different profiles for 30 different applications.
  • Suppose you want to change setting X.
  • You have to change it manually 30 times for each profile separately. Which is unnecessarily tedious.
    Am I missing something? Is there perhaps a way to update a given setting X for all profiles at once? I was playing with profiles a couple of years ago and couldn't find a way. In my personal opinion there is more hassle with profiles precisely because every time you want to update something you end up doing that N times.
    The way I would envision fixing this would be to have profiles override only some important settings instead of all settings. E.g. a user can specify a different punctuation level for some apps, but all the other settings instead of having a stored explicit values, would just point to default profile. Not sure if there is an easy way to implement it though - since it might require modifying all the controls in settings dialogs which is a lot of work.

@CyrilleB79
Copy link
Collaborator

@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
Copy link
Collaborator Author

@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
Copy link
Contributor

mltony commented Nov 16, 2024

@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:
2. I created a profile only for chrome, since I don't use Teams or any other audio editing apps.
3. I enabled AVA while on Windows Desktop. I presume this should enable it in all profiles. I assume this implies standard NVDA profile.
5. 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.
7. 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.
8. Same thing: the volume of YouTube is affected by AVA keystrokes. Works as expected.
12. I hear applications muted instead. This is expected because the default is unmuted and I didn't touch the default in default profile.
14. 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
Copy link
Contributor

mltony commented Nov 16, 2024

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
Copy link
Contributor

mltony commented Nov 16, 2024

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
Copy link
Collaborator Author

Adriani90 commented Nov 16, 2024 via email

@codeofdusk
Copy link
Contributor

codeofdusk commented Nov 17, 2024

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)

@Adriani90
Copy link
Collaborator Author

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

@CyrilleB79
Copy link
Collaborator

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
Copy link
Contributor

mltony commented Nov 17, 2024

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

  • Use WASAPI for audio output
  • Volume of NVDA sounds follows voice volume
    That is when I set them in settings on chrome profile the values are not updated in normal profile.
    As for speech mode, it is indeed profile independent. However, it is stored in a local variable speech._speechState and therefore not persistent across restarts.
    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.

@Adriani90
Copy link
Collaborator Author

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue github features these at https://github.com/nvaccess/nvda/contribute p3 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