On Tue, 26.05.09 19:47, Jud Craft (craftjml at gmail.com) wrote: > > Long post coming, I apologize ahead of time. I really do appreciate > you taking the time to explain it, even if I am a little frustrated > (and you may be as well if I drag this thread on for much longer). > > First, I'm not sure what you mean by "reference volume" and "virtual > volume". My "Internal Audio" card has one volume, the Output Volume > in g-v-c. Let me be clear about the puzzle I am facing, and you can > tell me if I misunderstand. Please read my mail again. I explained the difference between reference and virtual volume there. I also explained that only the latter is really visible in the UI. Or at least I tried to explain that. > This example has two applications, one of which does not have a > pre-set volume in Pulse. (For the both-apps-have-a-volume case, see > below). Let's say I have _one_ application running, App A. The > volume of the app is 80%, and thus my Output Volume on the main sink > is 80%. If I launch a new App B that has never been seen before, > Pulse will set B to the current volume (80%). Not necessarily. Please read again what I wrote about ref vs. virt volumes. And again, please stop talking about those percentages, they are misleading. > On Tue, May 26, 2009 at 5:47 PM, Lennart Poettering > <lennart at poettering.net> wrote: > > If you have one stream A at linear volume factor X and one B at linear > > volume factor Y with X < Y, then the device will be configured to Y > > and internally the data from B will be passed through untouched and > > the one from A will be attenuated with the factor (X/Y). That is > > completely different from what you wrote above. > > That sounds weird. If X is 0.75 (and thus my main system volume is > 75%), and I launch Y (which has a previous volume of 0.8), then the > main system volume will be set to 0.8 (to the loudest app), Y will be > 0.8 (untouched), and X will be, to your formula, (0.75/0.8 = 0.9375?). > What? That can't be right (0.93 and 0.8), so you must have meant > 0.93 and 1.0. Again, please don't mention the percentages. If at all speak about the linear factors. 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. > > I think the core problem is that it is impossible to figure out what > > the user actually wants. When he increases a volume of a stream he > > might A) want it a bit louder then whatever else is currently playing > > and would be pissed off if the other stream would get louder at the > > same time or B) want it a bit louder because everything that's playing > > is just too silent and he would be pissed off if only one stream would > > get louder and not all. > > 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! > 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. > doesn't even bring them up, even if increasing one App changes the > system volume. The only time Vista touches all Apps is when I adjust > the main output device volume - the only time it should, since > changing the main volume should change everything (like Pulse). Vista is broken in this way too. Some apps expose the device volume, others expose the stream volume. > And in Vista, changing one app doesn't change the main system volume > -- and more importantly, I can SEE that it doesn't. The "main volume" > isn't suddenly some nebulous value that means "the current volume > value of the loudest app". Which is exactly what PA does. Really, please try to understand what I wrote in my last mail. PA's flat volume work very much like Vista, with the exception that we save/restore volumes. Lennart -- Lennart Poettering Red Hat, Inc. lennart [at] poettering [dot] net http://0pointer.net/lennart/ GnuPG 0x1A015CC4