samedi 26 mai 2012

Installer Jack, le faire cohabiter avec pulseaudio et éliminer le message "cannot lock down" (vidéo GRATUITE)





Aujourd'hui, un peu d'informatique ... Ubuntu !

Pour commencer, faire de l'audio sur linux est possible. De nombreuses applications existent soit en ligne de commande soit par interface graphique.

Mais le problème sous linux c'est de trouver une carte audio compatible. De nombreux modèles sont disponibles cependant je vous invite à vérifier le niveau de support de votre carte audio (USB, firewire ou PCI). Pour cela, une liste de toutes les cartes supportées par les drivers ALSA est disponible. Un site référençant les cartes audio pro est également disponible si vous avez besoin d'une faible latence (souhaitable pour le serveur de son jack).  On estime que 10 ms de latence est une limite à ne pas franchir lorsqu'on s'enregistre live (avec un monitoring direct - c-à-d un retour mixé avec les effets).

Le DAW, ardour qui fonctionne principalement sous Linux et OS/X, ne recommande qu'un petit nombre de cartes audio faibles latences selon le nombre d'entrées que vous désirez et donne une idée de la configuration minimale nécessaire pour faire tourner ce logiciel sous Linux (Ardour requirements).

Le serveur de son Jack permet de connecter les flux audio d'une application vers une autre. Jack est un serveur de son dont le but est de fournir de l'audio temps réel.  Son architecture permet de transformer votre ordinateur en véritable table de mixage virtuelle. Avec des logiciels de qualité comme Ardour (DAW - Digital Audio Workstation) et Rosegarden (Séquenceur MIDI), vous pourrez réaliser vos prouesses musicales avec de l'open source !

Vous trouverez à la fin de cet article, une petite playlist de vidéos introduisant à jack et qjackctl.

Jack est un serveur de son utilisé sur Linux, Mac et Windows, voici quelques astuces de configuration pour Ubuntu.

NB: Si vous utilisez une distribution de type Linux Audio Pro (prévu pour la production musicale), jack sera installé et configuré par défaut. Vous n'aurez donc pas à pratiquer les différentes étapes de configuration de jack de cet article. Vous pourrez vous concentrer sur l'apprentissage de l'utilisation de qjackctl détaillé dans cet article et dans les vidéos, ou de cadence.

Configurer ALSA


Avant toutes choses, si vous n'avez pas de son avec ou sans jack, cela peut être un problème lié aux drivers ALSA (carte muette, configuration de la carte audio, problème de compatibilité, ...) . Afin de résoudre ce problème, vous pourrez vous rendre sur ce billet consacré aux problèmes de sons sous Ubuntu. Ce billet vous donne une méthode pour analyser le problème et surtout pour le résoudre !

Si vous avez plusieurs cartes audio, vous pouvez connaître l'index de la carte à initialiser en lançant la ligne de commande suivante qui affiche l'index et le nom de tous les périphériques ALSA (cartes sons) disponibles.:
~$ cat /proc/asound/cards

La ligne de commande suivante affiche pour chaque index de périphérique son le nom du driver utilisé.
~$ cat /proc/asound/modules
Une fois l'index trouvé, le nom du périphérique (donc de l'interface audio) se déduit facilement: hw:0  pour l'index 0, hw:1 pour l'index 1 ... C'est ce périphérique que vous utiliserez dans le paramétrage de qjackctl.

Si une de vos cartes son branchée est manquante ou que vous avez tout d'un coup un soucis avec une carte son en cours d'utilisation sans que vous puissiez le résoudre autrement, essayez la commande suivante:
sudo alsa force-reload
ou moins violent
sudo alsa reload

Installer et configurer Jack

Je considère ici que vous avez déjà installer un noyau à faible latence (type de noyau temps réel nécessaire à l'utilisation optimale de Jack). Si ce n'est pas le cas, je vous conseille de lire cet article.

Installer les paquets Jack

Pour installer jack, procéder de cette façon :
~$ sudo apt-get install jackd qjackctl

Régler les paramètres limites pour le groupe "audio"

Lorsque vous installez Jack, un fichier de configuration audio est créé: /etc/security/limits.d/audio.conf

Si ce fichier n'existe pas sur votre système Ubuntu, vous pouvez soit le créer manuellement en exécutant sudo gedit /etc/security/limits.d/audio.conf et en y écrivant ceci:
@audio - rtprio 95 
@audio - memlock unlimited
soit automatiquement, en exécutant la ligne de commande suivante:
~$ sudo dpkg-reconfigure -p high jackd
petite explication: @audio - memlock unlimited permet au programmes démarrés par des utilisateurs du groupe audio de vérouiller de la mémoire (c-à-d empêcher qu'elle ne soit mise dans le swap disque ceci afin d'optimiser les performances).

Configuration grâce à QJackCtl

Le programme qjackctl est une interface graphique permettant de paramétrer, démarrer, stopper et surveiller le serveur de son jack.



Pour paramétrer le serveur jack cliquer sur le bouton réglages, une fenêtre d'options apparaît.


L'essentiel dans un premier temps est de sélectionner la bonne interface audio (la flèche à côté du champ "interface" vous permet de visualiser toutes les interfaces disponibles), le bon driver (en général ALSA sauf si c'est une carte firewire), Cochez la case temps réels et sélectionnez une période. Le logiciel calcule et affiche automatiquement la latence déduite. Faite plusieurs test en influant sur la période jusqu'à ce que vous obteniez un résultat sans trop de désynchronisation (XRUNS). Pour les cartes audio qui ne sont pas ASIO (faible latence), il ne faut espérer de miracles. Pour les autres, la latence devrait être inférieure à 10ms en général.

Enfin, lorsque vous aurez démarré le serveur jack 
en utilisant l'interface graphique qjackctl (bouton démarrer),  vous pourrez tester le serveur jack en démarrant un lecteur audio comme Audacious ou Clementine (qui se paramétre tout deux facilement vers la sortie audio jack). Il est conseillé d'arrêter vos lecteurs audio lorsque vous voulez arrêter le serveur jack.


Votre compte utilisateur dans le groupe audio

A ce stade, il est probable que vous obteniez le message suivant:
cannot lock down 82241434 byte memory area (Ne peut allouer de la mémoire) 
ou
Cannot lock down memory area (Cannot allocate memory)
Il vous faudra alors ajouter votre nom d'utilisateur au groupe audio :
~$ sudo adduser mon_login audio
après un redémarrage du système, le warning ne devrait plus apparaître.

Réglage ou configuration du RTC (real time clock)/ HPET (High Precision Event Timer) pour le MIDI

Nous allons paramétrer le real time clock et le High Precision Event Timer pour les faire passer en haute résolution (nécessaire pour le MIDI).
Editer /etc/rc.local (exécuter à chaque démarrage):
~$ sudo gedit /etc/rc.local
Pour que le contenu du fichier contiennent ce qui suit:
#!/bin/sh -e
# ...

# Increase the rtc timer granularity
echo 2048 > /sys/class/rtc/rtc0/max_user_freq
# Increase the hpet timer granularity
echo 2048 > /proc/sys/dev/hpet/max-user-freq

exit 0

Afin que les applications MIDI du groupe audio puissent utiliser le rtc (real time clock) et/ou le hpet (high precision event timer), nous allons créer une règle sur les périphériques UDEV. Créez un fichier dans /etc/udev/rules.d/40-timer-permissions.rules à l'aide de la commande:
~$ sudo gedit /etc/udev/rules.d/40-timer-permissions.rules
dans lequel vous metterez les lignes suivantes:
KERNEL=="rtc0", GROUP="audio"
KERNEL=="hpet", GROUP="audio"
Après un redémarrage du système, les paramètres devraient être appliqués:
~$ ls -l /dev/rtc0 /dev/hpet
crw-rw---- 1 root audio  10, 228 mai   28 01:06 /dev/hpet
crw-rw---- 1 root audio 254,   0 mai   28 01:06 /dev/rtc0

 

Faire cohabiter jack avec pulseaudio

Vous pouvez rediriger les entrées et sorties de pulseaudio vers le serveur jack. Sachez qu'il est fort probable que pulseaudio ajoute de la latence à votre serveur jack (plus de XRUNS donc ...).

Pour cela, il faut installer le module jack de pulseaudio :
~$ sudo apt-get install pulseaudio-module-jack
Normalement, des connexions audio Pulseaudio devraient apparaître comme ci-dessous:


Si ce n'est pas le cas, tapez les commandes suivantes pour les initialiser:
~$ pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2
Il vous faudra également sélectionner la sortie Jack Sink Pulseaudio dans les réglages sons de pulseaudio pour que les sons de pulseaudio passe à travers le serveur jack:


Alternative à QJackCtl : Cadence de KXStudio

Alternativement, vous pouvez utiliser le logiciel cadence + catia à la place de qjackctl qui intègre mieux les différents aspects de la station de travail audio numérique dirigé par le serveur de son Jack (gestion des performances CPU, configuration Jack, Pulseaudio bridge, ...).



Pour cela, activer le dépôt KXStudio (voir l'article sur le sujet)
Puis installer le logiciel et ses dépendances:
$ sudo apt-get install indicator-cpufreq cadence catia

Enfin ...

Votre configuration jack devrait être opérationnelle avec plus ou moins de XRUNS (désynchronisation c-à-d retard ponctuel du système à délivrer l'audio dans le temps impartie), Vous pourriez envisager d'abord l'installation d'un noyau à faible latence si ce n'est pas déjà fait et ensuite l'optimisation du système pour éliminer les XRUNS.

Vous pouvez consulter ces vidéos (en anglais) qui présente jack & qjackctl sous Linux:



Vous serez peut-être intéressé(e) par un logiciel libre du nom d'ardour qui est une station de travail numérique (DAW) reconnue et disponible sur Linux et Mac OS/X et utilisée par certains professionnel de l'audio aujourd'hui.

D'autre part, un article sur la compilation du driver générique wineasio est disponible sur ce blog. Il vous permettra d'utiliser des applications audio pro  windows avec jack sous Ubuntu (par exemple: Reaper).

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

Aucun commentaire:

Enregistrer un commentaire