mirror of
https://github.com/MonitorControl/MonitorControl.git
synced 2026-05-15 14:15:55 -06:00
[GH-ISSUE #570] Option to alter the brightness & volume slider skew (mapping curve) #425
Labels
No labels
Status: Abandoned
arm64
beta
beta
bug
done
duplicate
enhancement
feedback needed from reporter
in progress
invalid
investigating
known Issue
monitor Issue
pull-request
translation
unable to reproduce
unreleased
x86
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/MonitorControl#425
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @waydabber on GitHub (Sep 7, 2021).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/570
Originally assigned to: @waydabber on GitHub.
Before opening the issue, have you...?
Is your feature request related to a problem? Please describe
For some displays the volume and brightness curve of the display is uneven - it is common that most of the visible changes in brightness happen between 0-10% of the curve and also the volume curve can be such that beyond 20% starts the too loud category - so the actually sensible range to deal with is the 10-20% of the slider.
Describe the solution you'd like
This problem could be solved by introducing a setting to have an upward opening parabola/exponential curve for brightness with a setting for a curve factor (combined with an upper bound setting for volume which allows the remapping of the the sensible maximum to 100% - this is already planned in https://github.com/MonitorControl/MonitorControl/issues/310).
Describe alternatives you've considered
Anything else?
No response
@JoniVR commented on GitHub (Sep 7, 2021):
Wouldn't a regular min/max setting work fine here? Feel like custom curves are going to complicate things a bit? E.g. if most of the brightness happens between 1-10, just set 10 as max?
I personally don't think we can ever cover all edge cases for everyone, I also don't think we should try to do so (maintenance burden etc). There's just too many weird variations (reversed controls, weird scales, random mute behaviour, flickering,...).
Stuff like curves seems to be part of Lunar though, so perhaps we could point users who need extreme customisation to it? Seems like a thing to do after the help we received :) Just a my 2 cents though, if you disagree, let me know :)
@waydabber commented on GitHub (Sep 7, 2021):
Yes, Lunar is a great app and I completely agree that we could direct users with 'special needs' to it! @alin23 will be delighted! :)
You are right, for volume, simply setting a max is fine as beyond a specific point (everything above a subjective "loud") is not really needed by the user. A curve probably just complicates things.
For brightness on the other hand, I am not so sure. I am afraid a simple max setting is not enough since if we set the brightness max at 10 artificially for example, we loose the ability to set the backlight to maximum. In terms of brightness the problem is that the brightness curve is non linear - a change from 0 to the value 10 might feel a 50% difference in perceived brightness, while a change from the value 10 to the max 100 accounts for the remaining 50%. The user still needs the entire scale since he definitely wants to set the brightness to maximum at some point (for example during daytime) but at night he/she wants fine control on the lower end of the spectrum, exactly where the display does not handle the brightness linearly - and is frustrated that the he can't easily achieve the desired effect (especially with the keyboard where one chiclet change in the lower end of the spectrum might feel for a sudden 20% change in perceived brightness). This is why I feel that the right solution to this problem is to provide an advanced option to adjust the brightness curve.
About the curve, I don't propose much, only a simple number (or some pre-determined sets of number with some phantasy names) for adjustment. The curve in this context means how steep the actual change is based on the slider value. The default is the following which maps 1:1 the slider/osd level to the display's brightness setting:
if we simply change
pin((x/100)^p)*100(which we could use to calculate the curve) then we can get an adjusted curve. Forp=1.5we get:for
p=2we get:With this curve, if the slider is at 50%, the display's brightness will still be at about 25%.
With a simple adjustment as this we could compensate for the nonlinearity of the display brightness controls and fit the slider/OSD control to the perceived brightness.
@JoniVR commented on GitHub (Sep 8, 2021):
Sounds good to me, let's do it :D
@waydabber commented on GitHub (Sep 15, 2021):
See screenshots of the implementation in the v3.1.0 preliminary discussion.