1. generate audio signal
2. reduce volume of that signal, losing information because it's quantised
3. take that volume-reduced signal and boost it right back up again, but now with the lower bits destroyed
You can make this effect as bad as you like, e.g. turn it down to 1% and then amplify by 100x... but why?
Truly first-class audio with sublime control plane ergonomics.
That'll never happen since any random app developer can just multiply audio volume by a float in whatever API and attach their own unique take on a slider. I'll merit the cases where you need to have individual level and channel controls, such as editing software and professional music tools, but most apps are not these.
It's times like this when I do appreciate Apple's dictatorial take on things, though even they could not win this fight.
Clicks for the click God!
Clearly there is a need to give different volumes to different apps, so you can have quiet background music while a timer app is louder, or Zoom is louder.
Ideally there would be an OS-level mixer to independently set the volume of each app. I believe Windows has this, Mac definitely doesn't. And for convenience, an app's local volume control would exist, but set it at the OS mixer level, so you don't have them competing with each other.
But without this, an app does have to have local volume controls.
Also, it's important to be able to set gain as well, i.e. turn the volume "above 100%". For those YouTube videos that for some reason are only 5% as loud as other videos. Even better is if you can set the gain per-video so that it won't be absurdly loud and clipping when you move on to the next video.
Bonus points if an OS or media player ever gives the option of a dynamic compressor, so you can actually listen to those amateur podcasts where one speaker's microphone is 10x quieter than another's. Or listen to the quiet parts of classical music recordings even in the presence of background noise.
https://github.com/kyleneideck/BackgroundMusic and others.
I'd be much more worried about 44.1khz sources being resampled to 48khz if that's the OS playback rate. I mean you won't be able to hear that either in practice but at least it's not negligible.
https://www.izotope.com/en/learn/what-is-dithering-in-audio....
More information: https://www.youtube.com/watch?v=iuEtQqC-Sqo
I'm aware of ReplayGain and this processing is important for per-track overall gain, but what I'm getting at is lower level: instead of there being two lossy/rounded stages of dimming and amplification, you want to communicate to the OS a log2 "dimming factor", so that this can be subtracted from a later log2 amplification factor such that we ideally waste no processing time if the sum is zero, and otherwise don't suffer the twice-quantised signal degradation (at most one accurate scaling pass, instead of two arbitrarily precision-reducing ones). It's maybe a minor point / imperceptible as others have noted, but IMO this seems like the Correct (TM) approach.
When properly understood.
And provide a consistent interface for managing.
When thoughtfully placed in a signal chain.
There are no controls to indicate that you can pause and restart, but this just-click-anywhere-to-play/pause has been standard on all video players everywhere for a long time.