Archive for the ‘multimedia’ Category

XBMC and pulseaudio master volume (Ubuntu 11.10)

Saturday, October 15th, 2011

If you use XBMC as standalone in Ubuntu(choose it in the login screen), volume control is limited to XBMC as a source in pulseaudio. If you login to Gnome/Unity/whatever, and forget to set sound level to 100% before you logout, XBMC sound volume will suffer from this.

Solution:
You can control sound volume in terminal with

1
pactl set-sink-volume # n%

.
# is a number of a so called sink, which is the same as an output device(analog, HDMI, SPDIF, etc). n% is percentage of volume. This will set sink 0 to 100% volume:

1
pactl set-sink-volume 0 100%

You need to find out which number your default output device is:

1
pactl list sinks

Should output something like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sink #0
	State: RUNNING
	Name: alsa_output.pci-0000_00_1b.0.analog-stereo
	Description: Intern lyd Analog Stereo
	Driver: module-alsa-card.c
	Sample Specification: s16le 2ch 44100Hz
	Channel Map: front-left,front-right
	Owner Module: 4
	Mute: no
	Volume: 0:  90% 1:  90%
	        0: -2,75 dB 1: -2,75 dB
	        balance 0,00
	Base Volume: 100%
	             0,00 dB
...

Play some music and test(music should mute 1 second):

1
pactl set-sink-volume 0 0%; sleep 1; pactl set-sink-volume 0 90%

To get XBMC set volume to 100% before startup we create a new command called xbmc-standalone-max-volume. Do this as root:

1
2
cp /usr/bin/xbmc-standalone /usr/bin/xbmc-standalone-max-volume
nano /usr/bin/xbmc-standalone-max-volume

In xbmc-standalone-max-volume find pulse start section and add three lines after it:

1
2
3
4
5
6
7
8
9
10
11
12
PULSE_START="$(which start-pulseaudio-x11)"
if [ -n "$PULSE_START" ]; then
  $PULSE_START
else
  PULSE_SESSION="$(which pulse-session)"
  if [ -n "$PULSE_SESSION" ]; then
    XBMC="$PULSE_SESSION $XBMC"
  fi
fi
# set volume to 100%
PACTL="$(which pactl)"
$PACTL set-sink-volume 0 100%

Now edit XBMC session:

1
nano /usr/share/xsession/XBMC.desktop

Change Exec and TryExec:

1
2
3
4
5
6
[Desktop Entry]
Name=XBMC
Comment=This session will start XBMC Media Center
Exec=xbmc-standalone-max-volume
TryExec=xbmc-standalone-max-volume
Type=Application

You may also do the same with xbmc -> xbmc-max-volume, but when inside gnome you could simply use your keyboard and Alt-Tab, set volume up, and Alt-Tab back.