Hi all.

Disclaimer: This question is surely similar to many posted before here,
and to solutions suggested on the alsa pages.  Alas, I've had no
success with what I've found over the past few days.

Goal: 
I'm running an AU8830 device connected by coax spdif to a surround
receiver.  I'd like also to be able to capture a copy of the output
with arecord so that I may perform realtime analysis irrespective of
the application playing.  Unfortunately, playing on the spdif output
(hw:0,1), results in no sound in the capture.  Playing on hw:0,0 does
allow me to capture as I expect, but the spdif ouput does not work
correctly.

Basically, my tradeoffs are (spdif with distortion & capture) or (spdif
& no capture).  I'd appreciate any help resolving this.

I am playing mostly stereo music, so I'd accept tradeoffs that loose
proper surround support.  I would, however, very much like to not alter
the PCM data from a playing WAV to the stereo.  In particular, I don't
want to alter volumes, or equalize, and don't really need sample rate
conversion.

What I've tried:
To be sure, the spdif output does work with the following.  Capturing
from "Mix" results in no sound in the recording.
pcm.!default {
        type plug
        slave.pcm "hw:0,1"
}

I then tried using adding a plug with 'route_policy copy'.  No luck.
pcm.copy {
      type plug
      slave.pcm "hw"
      route_policy copy
}

Then, I tried outputting to hw:0,0 using the above pcm.copy.  This does
record the playing sound, and the spdif output does produce sound.
However, the spdif output now contains a great deal of distortion.
pcm.!default {
        type plug
        slave.pcm "hw:0,0"
}

I've also tested using the 'asym' type for pcm, and dsnooper for the
capture, but it remains true that I can capture only when playing to
hw:0,0, which yields distorted sound from the speakers.  None of these
combinations succeed.
pcm.!default {
        type asym
        playback.pcm "nodmix"
        #playback.pcm "both"
        #capture.pcm "dsnooper"
        capture.pcm "copy"
}
pcm.nodmix {
        type plug
        #slave.pcm "hw:0,0"
        slave.pcm "hw:0,1"
        #bindings {
        #       0 0
        #       1 1
        #}
}
pcm.dsnooper {
        type dsnoop
        ipc_key 2048
        slave.pcm "hw"
}

It doesn't seem possible to have either dsnoop or copy use slave.pcm
"hw:0,1".  arecord fails to start recording when this is the case.

Finally, I tried routing sound to both hw:0,0 and hw:0,1 using the
'multi' type.  I'm not sure I have the bindings right
(documentation seems sparse), but I know this produces distored sound
from the spdif, and allows capture:
pcm.both {
        type multi
        slaves.a.pcm "hw:0,0"
        slaves.a.channels 2
        slaves.b.pcm "hw:0,1"
        slaves.b.channels 2

        bindings.0.slave a
        bindings.0.channel 0
        bindings.1.slave a
        bindings.1.channel 1
        bindings.0.slave b
        bindings.0.channel 0
        bindings.1.slave b
        bindings.1.channel 1
}


Also, is there documentation for the 'ttable' or 'bindings' directives
so often used on the alsa wiki pages?

Thanks in advance for the help!

~Jacob

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to