mjrgh / PinVol

Audio volume control software for virtual pinball cabinets
MIT License
6 stars 5 forks source link

[Feature Request] Global Volume changes OS volume when table launches - to normalize the settings #11

Open Ltek opened 1 year ago

Ltek commented 1 year ago

Since PinVol's "Global volume" is not the actual OS system volume; its relative to the OS volume.

For example... if the OS volume is 50% and PinVol's global is 100%... when PinVol is 50%, OS is at 25%.

This is potentially a problem / confusing, and for sure limiting. PinVol cannot increase the OS volume above the 'starting' volume that the OS is set to when PinVol loads.

For example... if the OS volume is set to 10% (you were doing something that is not Pinball -- or your kid was messing with it)... then your max volume any Pinball Table can be is the OSes set 10%. "Hey why cant I hear the table sounds?" ;-)

Then we must manually change the OS volume (exit the front end, table, etc) to make it work... which kind of defeats the purpose of having a software controller for volume.

I would love to see an option, that watches for Popper or FX3 or some table to load... then PinVol sets the OS volume as the level 'Global volume'. This will create a single reference point (normalization) for all tables.

This the screenshot shows that the OS currently at 50% would change to Global Volume's 100% every time we load a new table.

PinVol

Ltek commented 1 year ago

here's a screenshot after restarting PinVol...

PinVol_restart

Ltek commented 1 year ago

OK, I think I know what PinVol is doing... looks like PinVol's "Global volume" is not the actual OS system volume, it relative to the OS volume. For example, if the OS volume is 50% and PinVol's global is 100%... when PinVol is 50%, OS is at 25%.

This is confusing and limiting since there is no way to increase the OS volume above the 'starting' volume that the OS is set to... so if the OS volume is set to 10% (you are doing something that is not Pinball)... then your max volume on pinball is 10% of the max OS volume AND you must manually change the OS volume to make it work... which kinda defeats the purpose.

Would be nice to have an option that PinVol, upon loading, sets the OS volume to the 'Global volume' set in PinVol. Then we always have tha same reference point (normalization) for all tables.

mjrgh commented 1 year ago

PinVol actually does set the global system volume. I see you mentioned Popper - assuming you're using it, any chance you missed "Attention Pinup users" in the PinVol setup notes?

Ltek commented 1 year ago

The issue is irrespective of Popper (yes i have Popper vole control disabled but this problem occurs when Popper is closed)

I'm not ever seeing PinVol reset itself or the system to 100% when it starts up.

With no running Pinball apps... I open PinVol and it opens with Its own levels set to whatever they were when PinVol closed. They do not start at 100% and they do not change to match windows audio device levels.

This creates a big problem : whatever PinVol's 100% is will only be whatever the relative # is for the system at that time... it can NEVER be the system's 100%.

In screenshot 1... PinVol app loads with those settings. Thus, when PinVol is at 100%, the HDMI audio device level is 50% and the HDMI can never get higher than 50% controlling it with PinVol.

In screenshot 1... PinVol is set to 50% so the max that HDMI audio device volume could ever be is 50% (because its starting at 25%)

The solution is when PinVol launches it sets itself and the the linked audio device to the same user preset level. This way everything is normalized. I'm happy to have you on a video call and show you. I'm very surprised you have not ran into this?

PinVol1

PinVol2

Ltek commented 1 year ago

What do you think? Will you add a setting for "Default Global Volume (for new Tables)"? and make it non-relative?

Ltek commented 11 months ago

PSA for anyone that may run across this. I'm using a free command-line app called SetVol to workaround this problem in PinVol. An initial on-load (on-start) level set would be best built-into PinVol but SetVol does work.

I created a BAT file that runs on user login (user I use for the pinball login) to set the OS volume to what I want (50%). This way, PinVol will have the same starting point every login and thus 'normalize' the cabinet volume. So even if someone changes the OS volume prior to the last shutdown or log out, you will not need to re-do volume level for pinball because SetVol will re-set it to your a 'calibrated' volume for your vPin tables.

https://rlatour.com/setvol/

Hope this helps others.