Comment 5 for bug 653446

Revision history for this message
In , Murz (murznn) wrote :

Version: 3.7 (using KDE 4.5.2)
OS: Linux

I have use pulseaudio with Surround 5.1 speakers.
And I setup different volume per each channel for normal volume near computer, it looks like this: http://imagebin.ca/img/0wF1MTI.png
But when I change volume to 0% and 100% via kmix, and revert volume back to near 50%, kmix broke my volume configuration and do the same volume for each channel!
And after this channels volume looks like this: http://launchpadlibrarian.net/56971008/snapshot2.png

Via pactl command I see that each pulseaudio sink have per-channel volumes and base volume, for example in my situation it looks like this:
---------------------------------
Sink #1
        State: RUNNING
        Name: alsa_output.pci-0000_00_14.2.analog-surround-51
        Description: Internal Audio Analog Surround 5.1
        Driver: module-alsa-card.c
        Sample Specification: s16le 6ch 48000Hz
        Channel Map: front-left,front-right,rear-left,rear-right,front-center,lfe
        Owner Module: 1
        Mute: no
        Volume: 0: 28% 1: 27% 2: 30% 3: 30% 4: 33% 5: 21%
                0: -33.05 dB 1: -34.11 dB 2: -31.36 dB 3: -31.36 dB 4: -29.02 dB 5: -40.33 dB
                balance -0.02
        Base Volume: 63%
                     -12.00 dB
        Monitor Source: alsa_output.pci-0000_00_14.2.analog-surround-51.monitor
        Latency: 153185 usec, configured 156000 usec
        Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
---------------------------------

And kmix changes volume of each channel:
        Volume: 0: 33% 1: 32% 2: 35% 3: 35% 4: 38% 5: 26%

But better is to change base volume of channel, because it didn't break anything!

I can do it manually via command
pactl set-sink-volume 1 [0-65535]
and it works very good.

So I think that kmix must switch to base volume changing instead of change volume for each channel in pulseaudio sink!

Reproducible: Always

OS: Linux (x86_64) release 2.6.35-22-generic
Compiler: cc