[alsa-devel] FIXME for Rear Channels of CMI8738, how do i write a softvol to fix this defect?

Takashi Iwai tiwai at suse.de
Wed May 9 19:12:01 CEST 2007


At Wed, 9 May 2007 10:07:42 -0700,
John L. Utz III wrote:
> 
> On Wed, 09 May 2007 15:03:32 +0200
> "Takashi Iwai" <tiwai at suse.de> wrote:
> 
> > At Mon, 7 May 2007 14:10:18 -0700,
> > John L. Utz III wrote:
> > > 
> > > Hello;
> > > 
> > > the CMI8738 allows for 4 channel output by providing a second DAC,
> > > but sadly the hardware has no volume control for said second DAC.
> > > 
> > > A review of /usr/share/alsa/cards/CMI8738-MC6.conf shows that the
> > > implementor of said file was aware of the need to fix the problem:
> > > 
> > > # 2nd DAC
> > > # FIXME: we need a volume attenuator for rear channel.
> > > CMI8738-MC6.pcm.rear.0 {
> > >         @args [ CARD ]
> > >         @args.CARD {
> > >                 type string
> > >         }
> > >         type hw
> > >         card $CARD
> > >         device 1
> > > }
> > > 
> > > 
> > > 
> > > I'd really like to fix this!
> > > 
> > > Is it fixable by creating a softvol plugin?
> > > 
> > > http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html#pcm_plugins
> > > 
> > > so, if i have to invoke speaker test with -Dhw:0,1 to get 4 channel
> > > out, what does that tell me about how i need to configure a softvol
> > > for this item?
> > > 
> > > Or am i missing the point and it's actually the *driver* that needs
> > > to be doctored up to provide a softvol implementation. If so, how?
> > 
> > For using the rear PCM defined in the above, you must use "rear" PCM
> > as it's named, not hw:0,1, such as
> > 	% aplay -Drear foo.wav
> 
> thankyou for pointing that out!
> 
> however, i wasnt planning on using -Drear, i included the snippet to
> provide context concerning the fact that a set of folks larger than me
> agree that the problem needs fixin! :-)
> 
> i need to have four channel output, thus my use of hw:0,1.

Do you mean 4.0 surround output?  Then it's "surround40"...

> So, fixing rear volume via softvol or something else has to work in the
> context of four channel output.
> 
> if there is a way to get 4 channel output (as defined as successful use
> of 'speaker-test -t sin -c 4 -Dhw:0,1) *besides* using hw:0.1, i would
> be interested to learn of it.

Actually it's a slightly different issue.  The multi-channel surrounds
on recent CM8738 models are routed via the secondary DAC.  IIRC, the
volumes of the surrounds were actually controlled normally like the
output from the first DAC in this case.  But, it's possible that this
is no longer true on more recent models.

Anyway, for surround40 and surround51, you can add softvol wrapper
just like CMI8737-MC8.conf.

> > The softvol implementation is easy.  See CMI8738-MC8.conf as a
> > reference.  Note that you should use a different mixer name instead of
> > "PCM Playback Volume".  If an existing control name is specified,
> > softvol will be skipped automatically.  Use "Rear Playback Volume"
> > instead, for example.
> 
> I will absolutely use Rear Playback Volume! :-)

I guess it's better to name differently if the volume can be used
generally in surround PCMs because this volume influences on all
channels.


Takashi


More information about the Alsa-devel mailing list