[pulseaudio-discuss] remap-sink reproduces sound on more than the target channels

Matthew Patterson matt at v8zman.com
Thu Jun 12 00:31:20 PDT 2008


Hello all,

Today I got a new sound card (Diamon XtremeSound 7.1, CMI8768 chip) so 
that I could have more zones in my whole home audio system. I started by 
installing the card and running "speaker-test" on it to validate that 
all the outputs work, which they do. I then updated my pulseaudio config:

load-module module-alsa-sink device_id=1 channels=8 sink_name=xtreme

for the new card, and added a bunch of remapped sinks which serve as the 
various playback zones:

load-module module-remap-sink sink_name=zone1 master=xtreme channels=2 
channel_map=front-left,front-right master_channel_map=front-left,front-right
load-module module-remap-sink sink_name=zone2 master=xtreme channels=2 
channel_map=front-left,front-right master_channel_map=rear-left,rear-right
load-module module-remap-sink sink_name=zone3 master=xtreme channels=2 
channel_map=front-left,front-right master_channel_map=front-center,lfe
load-module module-remap-sink sink_name=zone4 master=xtreme channels=2 
channel_map=front-left,front-right master_channel_map=side-left,side-right

So now I would think that I could play sound out of zone1 and I would 
only hear sound out of the front speakers, but alas this is not the 
case. This is what I get:

Play through zone1:
All speakers play sound

Play through zone2:
All speakers play sound

Play through zone3:
front-center,lfe,side-left,side-right play sound

Play through zone4:
front-center,lfe,side-left,side-right play sound


Does this make sense to anyone? Here is what pulse spews when I start it 
with verbose output and my config file:

pulseaudio -n -C -F config.pa -vv
I: main.c: We're in the group 'pulse-rt', allowing real-time and 
high-priority scheduling.
I: core-util.c: Successfully gained nice level -11.
W: main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
W: main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
I: main.c: This is PulseAudio 0.9.10
I: main.c: Page size is 4096 bytes
I: main.c: Fresh high-resolution timers available! Bon appetit!
I: client.c: Created 0 "STDIN/STDOUT client"
I: module.c: Loaded "module-cli" (index: #0; argument: "exit_on_eof=1").
D: alsa-util.c: Trying surround71:1...
I: module-alsa-sink.c: Successfully opened device surround71:1.
I: module-alsa-sink.c: Successfully enabled mmap() mode.
ALSA lib control.c:909:(snd_ctl_open_noupdate) Invalid CTL surround71:1
I: alsa-util.c: Unable to attach to mixer surround71:1: No such file or 
directory
I: alsa-util.c: Successfully attached to mixer 'hw:1'
I: alsa-util.c: Using mixer control "Master".
I: sink.c: Created sink 0 "xtreme" with sample spec "s16le 8ch 44100Hz"
I: source.c: Created source 0 "xtreme.monitor" with sample spec "s16le 
8ch 44100Hz"
I: module-alsa-sink.c: Using 3 fragments of size 17632 bytes.
I: alsa-util.c: ALSA device lacks separate volumes control for channel 
'rear-left', falling back to software volume control.
D: module-alsa-sink.c: Thread starting up
D: rtpoll.c: Acquired POSIX realtime signal SIGRTMIN+29
I: module-alsa-sink.c: Starting playback.
I: module.c: Loaded "module-alsa-sink" (index: #1; argument: 
"device_id=1 channels=8 sink_name=xtreme").
I: sink.c: Created sink 1 "zone1" with sample spec "s16le 2ch 44100Hz"
I: source.c: Created source 1 "zone1.monitor" with sample spec "s16le 
2ch 44100Hz"
I: resampler.c: Forcing resampler 'copy', because of fixed, identical 
sample rates.
D: resampler.c: Channel matrix:
D: resampler.c:        I00   I01
D: resampler.c:     +------------
D: resampler.c: O00 | 1.000 0.000
D: resampler.c: O01 | 0.000 1.000
D: resampler.c: O02 | 1.000 0.000
D: resampler.c: O03 | 0.000 1.000
D: resampler.c: O04 | 0.500 0.500
D: resampler.c: O05 | 0.500 0.500
D: resampler.c: O06 | 1.000 0.000
D: resampler.c: O07 | 0.000 1.000
I: resampler.c: Using resampler 'copy'
I: resampler.c: Using s16le as working format.
I: sink-input.c: Created input 0 "Remapped Stream" on xtreme with sample 
spec s16le 2ch 44100Hz and channel map front-left,front-right
I: module.c: Loaded "module-remap-sink" (index: #2; argument: 
"sink_name=zone1 master=xtreme channels=2 
channel_map=front-left,front-right 
master_channel_map=front-left,front-right").
I: sink.c: Created sink 2 "zone2" with sample spec "s16le 2ch 44100Hz"
I: source.c: Created source 2 "zone2.monitor" with sample spec "s16le 
2ch 44100Hz"
I: resampler.c: Forcing resampler 'copy', because of fixed, identical 
sample rates.
D: resampler.c: Channel matrix:
D: resampler.c:        I00   I01
D: resampler.c:     +------------
D: resampler.c: O00 | 1.000 0.000
D: resampler.c: O01 | 0.000 1.000
D: resampler.c: O02 | 1.000 0.000
D: resampler.c: O03 | 0.000 1.000
D: resampler.c: O04 | 0.500 0.500
D: resampler.c: O05 | 0.500 0.500
D: resampler.c: O06 | 1.000 0.000
D: resampler.c: O07 | 0.000 1.000
I: resampler.c: Using resampler 'copy'
I: resampler.c: Using s16le as working format.
I: sink-input.c: Created input 1 "Remapped Stream" on xtreme with sample 
spec s16le 2ch 44100Hz and channel map rear-left,rear-right
I: module.c: Loaded "module-remap-sink" (index: #3; argument: 
"sink_name=zone2 master=xtreme channels=2 
channel_map=front-left,front-right 
master_channel_map=rear-left,rear-right").
I: sink.c: Created sink 3 "zone3" with sample spec "s16le 2ch 44100Hz"
I: source.c: Created source 3 "zone3.monitor" with sample spec "s16le 
2ch 44100Hz"
I: resampler.c: Forcing resampler 'copy', because of fixed, identical 
sample rates.
D: resampler.c: Channel matrix:
D: resampler.c:        I00   I01
D: resampler.c:     +------------
D: resampler.c: O00 | 0.000 0.000
D: resampler.c: O01 | 0.000 0.000
D: resampler.c: O02 | 0.000 0.000
D: resampler.c: O03 | 0.000 0.000
D: resampler.c: O04 | 1.000 0.000
D: resampler.c: O05 | 0.000 1.000
D: resampler.c: O06 | 0.000 0.000
D: resampler.c: O07 | 0.000 0.000
I: resampler.c: Using resampler 'copy'
I: resampler.c: Using s16le as working format.
I: sink-input.c: Created input 2 "Remapped Stream" on xtreme with sample 
spec s16le 2ch 44100Hz and channel map front-center,lfe
I: module.c: Loaded "module-remap-sink" (index: #4; argument: 
"sink_name=zone3 master=xtreme channels=2 
channel_map=front-left,front-right master_channel_map=front-center,lfe").
I: sink.c: Created sink 4 "zone4" with sample spec "s16le 2ch 44100Hz"
I: source.c: Created source 4 "zone4.monitor" with sample spec "s16le 
2ch 44100Hz"
I: resampler.c: Forcing resampler 'copy', because of fixed, identical 
sample rates.
D: resampler.c: Channel matrix:
D: resampler.c:        I00   I01
D: resampler.c:     +------------
D: resampler.c: O00 | 1.000 0.000
D: resampler.c: O01 | 0.000 1.000
D: resampler.c: O02 | 1.000 0.000
D: resampler.c: O03 | 0.000 1.000
D: resampler.c: O04 | 0.500 0.500
D: resampler.c: O05 | 0.500 0.500
D: resampler.c: O06 | 1.000 0.000
D: resampler.c: O07 | 0.000 1.000
I: resampler.c: Using resampler 'copy'
I: resampler.c: Using s16le as working format.
I: sink-input.c: Created input 3 "Remapped Stream" on xtreme with sample 
spec s16le 2ch 44100Hz and channel map side-left,side-right
I: module.c: Loaded "module-remap-sink" (index: #5; argument: 
"sink_name=zone4 master=xtreme channels=2 
channel_map=front-left,front-right 
master_channel_map=side-left,side-right").
I: module.c: Loaded "module-cli-protocol-unix" (index: #6; argument: "").
I: protocol-native.c: loading cookie from disk.
I: protocol-native.c: using already loaded auth cookie.
I: module.c: Loaded "module-native-protocol-tcp" (index: #7; argument: "").
I: main.c: Daemon startup complete.
Welcome to PulseAudio! Use "help" for usage information.
 >>> I: socket-server.c: TCP connection accepted by tcpwrap.
I: client.c: Created 1 "Native client (TCP/IP client from 127.0.0.1:34905)"
I: client.c: Client 1 changed name from "Native client (TCP/IP client 
from 127.0.0.1:34905)" to "Audacious"
I: sink-input.c: Created input 4 "Beatles - Love - All You Need Is Love" 
on zone1 with sample spec s16le 2ch 44100Hz and channel map 
front-left,front-right
D: memblockq.c: memblockq requested: maxlength=132300, tlength=88200, 
base=4, prebuf=86436, minreq=1764
D: memblockq.c: memblockq sanitized: maxlength=132300, tlength=88200, 
base=4, prebuf=86436, minreq=1764
I: sink-input.c: Freeing output 4 "Beatles - Love - All You Need Is Love"
I: client.c: Freed 1 "Audacious"
I: protocol-native.c: connection died.


It just seems so odd that the channels would work perfectly when playing 
multi channel audio via alsa, but be all mixed up via pulse. Is there an 
equivalent to "speaker-test" that is pulse compatible?

Thanks,
Matt




More information about the pulseaudio-discuss mailing list