[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Fedora 11 nerfed my mixer

On Wed, 22.04.09 14:51, Callum Lerwick (seg haxxed com) wrote:

> > > > >  Can I at least get a secret gconf key to do what
> > > > > I want? :P
> > > > 
> > > > The volume control uses PulseAudio, it doesn't use ALSA directly
> > > > anymore, so no, there's no secret GConf key for that.
> > > 
> > > So a PulseAudio config option then. Do I have to write the patch myself?
> > 
> > Probably not a PA config option either.
> > 
> > The volume control applet will show a mixer for input devices if an
> > application is recording on it. You'd just need to make the mixer think
> > that something is recording on that device. I'm not sure how to do that,
> > but Lennart might.
> No, you are misunderstanding. I don't want to adjust the input volume. I
> want it left alone. I want the master left alone. Master stays at 0dB,
> Line stays at 0dB. I want PA to dink with PCM instead of Master.

You can pass a parameter (control=) when loading the PA ALSA plugin
(module-alsa-sink) which specifies the ALSA mixer element to
choose. It's intended to be used as a hackish work-around for drivers
that don't name their controls properly.

> Let's just reverse that then:
> --- pulseaudio-0.9.15/src/modules/alsa/alsa-util.c      2009-04-13 16:11:32.000000000 -0500
> +++ pulseaudio-0.9.15.patched/src/modules/alsa/alsa-util.c      2009-04-22 14:23:49.367297597 -0500
> @@ -1180,7 +1180,7 @@
>              else if (profile)
>                  e = pa_alsa_find_elem(m, profile->playback_control_name, profile->playback_control_fallback, TRUE);
>              else
> -                e = pa_alsa_find_elem(m, "Master", "PCM", TRUE);
> +                e = pa_alsa_find_elem(m, "PCM", "Master", TRUE);
>              break;
>          case SND_PCM_STREAM_CAPTURE:

The mixer handling code changed a couple of times after this.

> Suggestion: Make fallback order a config option. You are hardcoding
> policy. That's a no-no.

No. This has nothing to do with policy.

We want to control the 'outermost' volume slider. Because that's the
one that most likely controls the actual analog amplifier if there is
any. Controlling 'PCM' is kind of pointless on most modern cards since
it is implemented digitally.

It simply doesn't make any sense to pick 'PCM', unless the driver is a
bit weird and doesn't have a 'Master' control.

And as mentioned there's a workaround, you can specify the control for
a sink. But using that will break device autodetecting and hence the
whole profile logic. BTW, that option was contributed by someone with a
weird driver who supplied me with a patch. He didn't whine on a huge
thread on a mailing list, but just prepared a patch. Could be a good
role model for some other folks, don't you think?

> Suggestion: Hardwired for only two options? 

Yes. 'Master' is the one two use. And 'PCM' is the fallback for broken
drivers. That's it. There's no need for more fallbacks. Drivers
should be fixed to register 'Master' properly. Which is why you even
could argue that having the 'PCM' fallback already hides driver

> There's no such thing as
> two:
> http://c2.com/cgi/wiki?ZeroOneInfinityRule
> http://c2.com/cgi/wiki?TwoIsAnImpossibleNumber
> > I don't know what Pidgin uses, but spitting out alert sounds using
> > paplay is unlikely to work well at all.
> Why not? Small processes working together is the Unix way. But people
> seem to have forgotten that.

Yes, we hate Unix, didn't you notice by now?

Anyway, Pidgin should be using libcanberra. There has been a bug open
in their BTS for a while about that. However, they appear to have
their very own opinions on some things, so this is not going to happen
very soon I fear. Unless of course someone prepares an actual patch
and fights that through the end. 

It would however probably be a better idea to finally move Fedora to
Empathy by default.


Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]