.:Bordel-de-Nerd:.

PulseAudio et touches multimedia

closeCet article a été publié il y a 2 ans 3 mois 11 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Au travail, j’ai un ordinateur portable qui tourne sous Archlinux avec l’environnement de bureau KDE4.6.
Récemment j’ai voulu utiliser un micro/casque Bluetooth avec celui-ci.

Même s’il semble possible d’utiliser le micro/casque uniquement avec alsa, sa configuration se révèle être des plus difficile.
C’est la raison pour laquelle j’ai installé le serveur de son PulseAudio me permettant ainsi de pouvoir procéder à des opérations avancées sur mon système de son très simplement.

Le but de ce billet n’est en aucun cas d’aborder la configuration de PulseAudio (cette partie fera l’objet d’un article à part entière si nécessaire).

Je n’ai eu aucun problème pour configurer le serveur PulseAudio mais comme le suggère le titre de l’article, après l’installation les touches multimédia ne fonctionnaient plus.
Impossible donc de diminuer/augmenter ou couper le volume depuis ces touches pourtant prévues à cet effet.
En effet sous KDE pour que ces raccourcis clavier fonctionnent il faut avoir kmix (le contrôleur de volume par défaut).

Le problème et que je n’ai maintenant aucun intérêt à utiliser kmix car depuis l’installation de PulseAudio j’ai installé un plasmoid nommé veromix qui permet de gérer le volume de PulseAudio (de façon beaucoup plus complète que le fait kmix qui est prévu pour alsa) mais ne fonctionne pas comme kmix avec les touches multimédia.

J’avais donc deux solutions, la première, lancer kmix juste pour que les raccourcis fonctionnent à nouveau et la seconde trouver comment faire autrement :)
Allez savoir pourquoi c’est la deuxième solution que j’ai choisi !

PulseAudio est livré avec un utilitaire en ligne de commande nommé pacmd qui permet de le reconfigurer à chaud.

Cet utilitaire permet donc, entre autres, de régler le volume sonore.

On commence par regarder la sortie de pacmd dump (qui nous donne le contenu du fichier de conf default.pa de PulseAudio)

$pacmd dump|grep "set-sink"
set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 0x000
set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo no

Ici on peut lire par exemple que mon volume est à 0 et que mon son n’est pas sur Mute.

On peut donc maintenant modifier les valeurs.

Pour augmenter le volume au maximum :

pacmd set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 65536

Pour mettre le volume au minimum :

pacmd set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 0

Et enfin pour désactiver le volume :

pacmd set-sink-mute 0 yes

Maintenant que nous avons trouvé les commandes qui permettent de contrôler le volume de PulseAudio il ne reste plus qu’à automatiser tout ça à l’aide d’un petit script bash.

#!/bin/bash
# -*- coding: UTF8 -*-
#
# This script is used to set volume up/down with pulseaudio
# usage : you have to create 3 symbolic link to this script named :
#   - pa_vol_down
#   - pa_vol_up
#   - pa_vol_mute
[[ ${0##*/} == pa_vol_down ]] && _down=true
[[ ${0##*/} == pa_vol_mute ]] && _mute=true
[[ $1 ]] && let _vol_step=$1*655 || _vol_step=655
_pacmd_dump=`pacmd dump|grep "set-sink-volume"`
_sink_cmd=`echo $_pacmd_dump|cut -d" " -f1`
_sink_id=`echo $_pacmd_dump|cut -d" " -f2`
_sink_vol=`echo $_pacmd_dump|cut -d" " -f3`
_sink_mute=`pacmd dump|grep "set-sink-mute" | cut -d" " -f3`
[[ $_sink_mute == "no" ]] && _sink_mute="yes" || _sink_mute="no"
[[ $_down ]] && let _volume=$_sink_vol-$_vol_step || let _volume=$_sink_vol+$_vol_step
[[ $_volume -lt 0 ]] && _volume=0
[[ $_volume -gt 65536 ]] && _volume=65536
[[ $_mute ]] && pacmd set-sink-mute 0  $_sink_mute > /dev/null || pacmd $_sink_cmd $_sink_id $_volume > /dev/null

Pour commencer il faut copier/coller le contenu du script ci-dessus dans un nouveau fichier, par exemple /usr/local/bin/pa_volum_control

On le rend exécutable

sudo chmod +x /usr/local/bin/pa_volum_control

Et pour finir nous allons créer 3 liens symbolique vers ce script (un pour augmenter le volume les deux autres pour le diminuer ou le couper).

sudo ln -s /usr/local/bin/pa_volum_control /usr/local/bin/pa_vol_down
sudo ln -s /usr/local/bin/pa_volum_control /usr/local/bin/pa_vol_up
sudo ln -s /usr/local/bin/pa_volum_control /usr/local/bin/pa_vol_mute

C’est terminé, pour utiliser nos 3 nouvelles commandes c’est très simple, pour augmenter ou diminuer le volume il faut exécuter les scripts pa_vol_down et/ou pa_vol_up suivi d’un nombre qui représente le seuil.

par exemple pour augmenter le volume de 5% on fait :

pa_vol_up 5

le script pa_vol_mute quant à lui ne prend aucun argument il se contente de lire l’état du mute et de l’inverser.

Enfin pour terminer j’ai créé 3 nouveaux raccourcis personnalisés associés à mes touches multimédia dans le panneau de configuration du système de KDE (il est tout à fait possible de faire la même chose dans la conf de gnome ou même d’utiliser xbindkey si vous utilisez un autre WM).

One Response to PulseAudio et touches multimedia

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash player