On Sun, 2012-08-12 at 03:06 +0200, Ralf Mardorf wrote:
On Sun, 2012-08-12 at 02:43 +0200, Tom Gundersen wrote:
On Sun, Aug 12, 2012 at 1:23 AM, Fons Adriaensen <fons@linuxaudio.org> wrote:
If that is true it is completely wrong from the start. Because that setup can't be maintained when a second app starts playing which can happen at any time. Suppose that first (single) app has its volume set to some low value, and PA uses the soundcard PCM gain control to achieve that as you claim it does. Now suddenly there's a second app which wants a higher level. The only way to achieve that is to raise the hardware gain - you can't compensate for a low setting there by sending a louder signal, it would just clip. So PA now has to adjust the hardware gain and at the same time start scaling down the output from the first app. It's impossible to do that in any acceptable way.
That's how it works. I have not noticed any problems. How would the problems manifest themselves? I'm not an audio expert by any stretch of the imagination, but I think even I would be able to notice skipping, clipping, noise, ... What should I be listening for?
It only can work without clipping, if first the volume is lowered with more headroom than needed, because you can't know how much headroom you exactly need and then the second volume will be raised until an equal level is reached and this step by step. But how does PA know at what step the level is equal, when the audio signal isn't a constant tone? Poettering expect a perfect control values to dB(FS) mapping?! You at least will hear skipping. Or else, Poettering add at the end of the chain a hardcore multi-band compression, which would be very audible and unwanted too.
This is the way how to lower one and to raise another volume for just one signal to keep the loudness, by getting audible steps. But there is a second signal, it's unknown, any automation would be very audible.
Simple fact is that most soundcards, even if they have a 'mixer', can't mix PCM signals (i.e. signals from the software) - they can mix in a CD player, or an external mic input etc.). So for anything coming from the system there is just one path, which has two controls, the 'PCM' and the 'master'. The only way to correctly use them if there if there is software mixing is to set them once to their correct values (which may depend on what is connected externally), and them leave them alone and do the rest in software.
So that's apparently not how it is done in PA. Why must it be done in this way? How can I verify that there is a problem?
The analog output level has to fit to the input of your amplifier, to reduce noise and to avoid distortion.
'A lot of meta-information' LOL. It will provide some usually meaningless and inconsistent names of controls, their min and max values, and if you're extremely lucky maybe some indication mapping control values to dB, which may or may not be correct (and if it isn't that's not ALSA's fault, it just crappy and undocumented harware). All of that is visible in alsamixer.
Yes, this is exactly what PA uses. ALAS just displays it without using it.
So PA does use Voodoo?!