PulseAudio et touches multimedia
10
mars
Cet 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).
Merci beaucoup, efficace!