[pulseaudio-discuss] Per-app flat volume adjustment is highly unintuitive, if mathematically consistent.

Jud Craft craftjml at gmail.com
Tue May 26 19:25:33 PDT 2009


Thanks again.  Keep in mind that to me, the percentage IS the linear
factor.  That's all it is to me.  It is a linear factor relative to
the ...internally applied volume, or whatever.

I really am not concerned about the internal virtual volume or whatnot
(please don't be too disappointed!), because it is wrestling with
exactly this distinction that prevents me from formulating why the
system's behavior seems off to me.  Pulse's inner workings are your
realm, and I do respect that.  But I must give my explanation using
"user talk" only.

I could tell you things like "but Vista doesn't hide the true system
volume from me!" but the truth is, I can't.  I could be equally wrong
about Vista, even though I've been using it rather heavily with music
for over a year and a half and feel like I understand how to use it's
volume control pretty well.

But I could be wrong, so I am going to refrain from all assumptions
about the inner workings of Pulse and Vista and merely discuss the
user-facing behavior that I see.  It will be easier for you too, I bet
you.



On Tue, May 26, 2009 at 8:40 PM, Lennart Poettering
<lennart at poettering.net> wrote:
> So, reading these as linear factors. If X is 0.75 and Y is 0.8, then,
> yes, the virtual sink volume and hence the hw volume control is
> configured to 0.8, which is then shown in the UI on the volume slider
> of the sink. As I said the internally applied volume for stream B will
> then be 1.0, let's call that Y'. The internally applied volume X' for
> stream A will be X/Y:
>
> The final output volume of B will be Y' * Y = 1.0 * Y = Y = .8
>
> The final output volume of A will be X' * X = (X/Y) * Y = X = .75
>
> Which is exactly what was requested.
>
> if this is not clear to you, please read my last mail again.
>

That does make sense.  But you missed a part of my example -- I don't
want my system playing at full volume.  I want it playing at 80%
(whatever that means -- let Pulse and Vista figure that out), and I
want A playing at 75% of that, and B playing at 80% of that.

And it really doesn't matter to me what ALSA or Pulse think those
percentages are.  I consider them to be factors, where 1.0 = full
system volume and 0.0 = mute.  This is important.  I want to know when
my system is at max volume, and when it is muted.  I need to know
this, not just what volume my streams are at.



>> I think you might be thinking too hard.  When I increase the volume of
>> my system, I expect everything to get louder.  When I increase the
>> slider of a program, I merely expect that one program to get louder.
>> I don't expect everything else to get louder too, and I don't expect
>> everything else to get quieter.  Nothing else should chang except that
>> one program.
>
> Sure, but RB only shows one volume slider. Which one should it show?
> The stream volume? If so users of use case B would be pissed off. The
> sink volume? Then the users of use case A would be pissed off.
>
> And don't suggest that we should show both sliders in rb!
>

I really don't know the distinction.  I merely have one Factor that I
multiply Rhythmbox by.  When it's 100%, I want it playing NOT at
maximum volume, but at the max of whatever I have set the system
volume to (100%, 80%, whatever).  And when it's at 0%, I want it to
shut up.

And when I mess with Rhythmbox's internal volume knob, it can do
whatever it wants.  It can scale it even further, it can cause the
system to crash and make me not mess with it, sure.  But I don't want
it to mess with the Factor that I have set for it.  That's between me
and Pulse, and only Pulse.  Rhythmbox should have no say outside of
itself how loud it gets played.  If, in addition to being scaled by
Pulse's Factor, it wants to scale itself again by another 0-1.0
factor, sure.  But don't touch the value that I gave Pulse.


>> Windows Vista doesn't do this, really.  When I increase the volume of
>> one App, it doesn't touch any of my other Apps (unlike Pulse) -- it
>
> Uh? That's bogus. Are you claiming that if you change a stream volume
> of A this might have the effect of changing the volume of a stream B?
> That's simply not true.
>

You know, you might be right.  I thought I know Vista's system well,
but truthfully after all this, my mind is getting fuzzy.

But I will say this:

In Vista, I have two volume meters.  The master volume that my volume
knob controls, and the volume for my music stream.
And when I tell my music to play at 50%, it doesn't bother my master
volume to 50%, it's still at 100%.  Only my volume knob controls that.

But in Pulse, they behave as the same meter, and it drives me nuts.
Nothing against your design and your logic -- but frankly, I can't
figure out this Pulse flat volume stuff.



For my final assumption -- I always figured that there is no such
thing as "flat volume" and "non-flat volume" logic.

Serious.  There was only one way to scale volume values to me.  I
assumed that even in non-flat volume mode, Pulse behaved the same way
as Vista.  I just figured that Vista had the stupidity to scale all of
my volume meters relative to the master volume meter, just to make me
think extra hard.

To me, the difference between flat- and non-flat- was just the way the
volume meters were displayed relative to each other.  I figured it was
the same math in the background.  I am very disturbed to find this is
not the case.



As a final note, thank you for continuing to respond to me.  My dinner
is getting cold, my viola lays unpracticed (and trust me, I need it),
and I've missed phone calls from my girlfriend and best friend trying
to type this stuff and keep up with the messages you guys keep
posting.  I appreciate your patience.   And with that, it's dinner
time.



More information about the pulseaudio-discuss mailing list