Configuration PA (Pulse Audio)
CONFIGURATION DE PULSE AUDIO POUR JACK
1- Installation du module jack
Pulse audio est l'API phare sous Ubuntu. Il est possible de transférer les flux audio de Pulse Audio vers le serveur Jack via un module : ce module peut être installé simplement à partir du gestionnaire de paquets et se trouve dans le package "pulseaudio-module-jack".
2- Configuration de Pulse Audio
Il faut à présent configurer Pulse Audio pour lancer ce module, et on en profitera pour modifier d'autres paramètres indispensables pour une écoute hi-fi. Dans un premier temps, faites une copie des 2 fichiers de configuration d'origine :
sudo cp /etc/pulse/default.pa /etc/pulse/default_backup.pa
Ensuite on commencera par modifier le fichier default.pa pour charger le module jack installé précédemment afin de faire communiquer les flux audio de pulse audio vers jack (et réciproquement) :
Dans ce fichier, il faudra ajouter 2 lignes dans la partie "Load audio drivers statically" :
### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
load-module module-jack-source channels=2
Cela aura pour effet de charger module-jack-sink avec 2 canaux pour envoyer les flux de pulse audio vers jack, ainsi que module-jack-source avec 2 canaux également pour envoyer les flux de jack vers pulse audio.
Je conseille également de désactiver les modules de filtres heuristiques qui, il me semble, font varier le niveau sonore aléatoirement :
### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
#load-module module-filter-apply
Enfin on ajoutera en fin de fichiers ces 2 lignes pour envoyer tout les flux audio par défaut vers nos modules jack-sink et jack-source :
### Make some devices default
set-default-source jack_in
Passons maintenant à la configuration du fichier daemon.conf :
La première ligne à modifier est celle qui concerne la qualité de resampling. On peut afficher les méthodes de resampling disponibles via la commande suivante :
Normalement vous devriez voir apparaître ceci :
speex-float-0
speex-float-1
speex-float-2
speex-float-3
speex-float-4
speex-float-5
speex-float-6
speex-float-7
speex-float-8
speex-float-9
speex-float-10
speex-fixed-0
speex-fixed-1
speex-fixed-2
speex-fixed-3
speex-fixed-4
speex-fixed-5
speex-fixed-6
speex-fixed-7
speex-fixed-8
speex-fixed-9
speex-fixed-10
ffmpeg
auto
copy
peaks
A priori les méthodes de resampling les plus performantes (pour des flottants) sont les méthodes speex-float-X où X peut prendre la valeur 0 à 10, par ordre de qualité croissante (10 = meilleure qualité).
En général, on recommande de choisir une valeur de 5, les qualités supérieures ne semblant pas justifier la consommation CPU excessive qu'elles engendrent (source : http://comments.gmane.org/gmane.comp.audio.pulseaudio.general/21051). Personnellement, j'ai testé par curiosité la méthode speex-float-10 et vérifié la consommation CPU sur mon système : pour 2 canaux avec un sampling rate cible de 48khz, la consommation par pulse audio est de 1% : je ne vois donc pas l'intérêt de me priver de cette qualité de resampling ! Je vous invite donc à faire vos essais en fonction de votre matériel et de faire votre propre choix !
Il faut à présent configurer le type de données du flux audio ! Je pense que le module jack_out, connecté au serveur jack, possède un "sample spec" imposé par le serveur jack auquel il est connecté. L'idée est donc de configurer pulse audio de sorte que le "sample spec" soit le même que celui du module jack (et donc que jack) afin d'éviter d'avoir des conversions de format inutile. On peut afficher les informations sur les flux audio sortants de Pulse Audio avec la ligne de commande suivante :
Comme la commande précédente affiche beaucoup de résultats, on peut se limiter normalement aux premières lignes avec la commande suivante qui n'affichera que les 20 premières lignes :
Chez moi il apparaît l'affichage suivant :
* index: 0
name: <jack_out>
driver: <module-jack-sink.c>
flags: DECIBEL_VOLUME LATENCY
state: RUNNING
suspend cause:
priority: 0
volume: front-left: 47155 / 72% / -8,58 dB, front-right: 47155 / 72% / -8,58 dB
balance 0,00
base volume: 65536 / 100% / 0,00 dB
volume steps: 65537
muted: no
current latency: 63,17 ms
max request: 8 KiB
max rewind: 0 KiB
monitor source: 0
sample spec: float32le 2ch 48000Hz
channel map: front-left,front-right
Stereo
Il s'agit donc des informations relatives au module jack-sink, que nous avons lancé sous le nom de "jack_out" d'après notre configuration précédente, avec 2 canaux "front-left" et "front-right". Le sample spec est :
Nous allons donc modifier notre fichier daemon.conf :
; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000
default-sample-rate = 48000
; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
default-channel-map = front-left,front-right
Les 2 dernières lignes indiqueront au serveur pulse audio de fonctionner par défaut avec 2 canaux audio, de sorte que les logiciels fonctionnent par défaut en stéréo (si vous souhaitez une configuration surround, il faudrait modifier la configuration du fichier default.pa pour lancer le module jack-sink avec le nombre de canaux appropriés, mais vous pouvez laisser pulse audio fonctionner par défaut en stéréo et configurer les logiciels tels que vlc pour fonctionner en 5.1 par exemple).
3- Redémarrage de Pulse Audio
Pour redémarrer pulse audio, on tapera les lignes de commandes suivantes :
pulseaudio --start
Il vous faudra probablement relancer les applications audio pour qu'elles fonctionnent de nouveau.
Voilà ! Vous devriez à présent pouvoir rediriger le flux audio de toutes les applications fonctionnant sous Pulse Audio vers le serveur Jack, sans conversion inutile de format ou de fréquence d'échantillonnage.
De plus, dans le cas où la conversion de fréquence d'échantillonnage est obligatoire, elle sera faite avec une bonne qualité grâce à la configuration de la méthode de resampling !
Inscrivez-vous au blog
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 20 autres membres