Open Bug 1634712 Opened 4 years ago Updated 7 months ago

Use logarithmic scaling for volume sliders

Categories

(Core :: Audio/Video: Playback, enhancement)

75 Branch
enhancement

Tracking

()

UNCONFIRMED

People

(Reporter: leo, Unassigned)

References

Details

Attachments

(1 file)

Firefox currently uses linear scaling for volume sliders, presumably because it's easier to build. This however leads to a bad UX, as ears are perceiving volume logarithmically. Consider the following example:

Attached is a diagram of the volume in dB the YouTube video 3FBijeNg_Gs has, at various volume percentages (blue).
As you can see, it peaks at -13.9dB, so for us, 100% = -13.9dB, so far, so good. But look at what moving the slider does:
If I move it just barely, from 1%→10%, the volume increases by 22dB, increasing the power over 100x, increasing the sound pressure tenfold.
But if I move it all the way from 50% → 100%, it only increases by 6dB, which just is a 4x power increase and a doubling of the sound pressure.

This makes it super frustrating to dial in the proper volume of the sound on websites, as the right half of the volume slider gives you a super granular control where moving it barely does anything, while the left half may crank up the volume by 10dB at a time just by moving the volume slider by a few pixels.

With a logarithmic response, things get a lot more balanced (orange line in the diagram): Here, the 50% mark is some 20dB away from both the 100% and 1% mark, making the volume slider work more like actual mixing consoles. Moving the slider by n pixels now consistently increases or decreases the volume by n * constant_factor dB.

These types of fixes can of course be implemented by the individual websites or via addons, but then the behavior of one of the most basic media controls changes significantly from website to website, which can be a good reason against moving to a logarithmic response. For example, when YouTube transitioned away from Flash (in which they did use a logarithmic response), they decided to keep things consistent with browsers and now are on linear response.

So I guess this in some sense is a regression, if regressions from 2014 Flash to 2020 HTML5 video/audio can exist :)

Bugbug thinks this bug should belong to this component, but please revert this change in case of error.

Component: General → Audio/Video: Playback
Product: Firefox → Core

Same as bug 1362312

This could be fixed by applying a function as simple as x^4 to slider value.
https://www.dr-lex.be/info-stuff/volumecontrols.html

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: