Avant de commencer à utiliser JACK, il est important de comprendre ce qu'est le temps réel et son impact sur la latence.
Pour améliorer la latence, il y a deux moyens d'action indépendants :
- Le mode temps-réel pour JACK et les applications audio : étape quasi-obligatoire dès qu'on s'attaque à la MAO avec JACK.
- Le noyau temps-réel : un noyau Linux spécifique pour l'industrie aéronautique (et autres) et certains d'entre nous, nerds-musiciens.
Table des matières
Mode temps-réel pour JACK
Pour fonctionner de manière optimale, Jack et les autres applications audio/MIDI temps-réel que vous utilisez ont besoin d'accéder de façon prioritaire à des ressources du système qui vous sont normalement "interdites" en tant que simple utilisateur.
La première étape pour avoir un système de MAO fonctionnel est donc de configurer le mécanisme intégré qui gère les attributions de bytes et autres méga-hertz.
Ceci fait l'objet d'un tuto, commencez par là et revenez ensuite :
T' as pas configuré P.A.M. ?
T' as pas la prio temps-réel !
>>>> accès temps réel pour les applications <<<<
Configuration de JACK avec QjackCtl
Le plus facile ensuite, c'est d'utiliser une interface graphique pour démarrer et bidouiller jack, c'est quand même plus sympa que le terminal !
Il existe une interface par défaut, c'est QJackCtl, il ressemble à ceci :
cliquez sur le (gros) bouton "réglages" ("setup"), et vérifiez que vos réglages correspondent à peu près exactement à l'image ci-dessous (vous les personnaliserez plus tard)
L'important, de haut en bas et de gauche à droite :
serveur :
- Chemin du serveur = jackd
- Pilote : alsa (ou "firewire" avec ffado)
- Temps-réel = coché
- Pas de verrouillage mémoire = dé-coché
- Pilote MIDI = aucun
- Priorité = 70
- Échantillons par période = 512
- Fréquence d'échantillonnage = 48000 (Hz)
- Périodes par tampon = 2 ou 3 (selon la carte son et autre, faites des essais pour voir lequel des 2 fonctionne le mieux)
- Retard du démarrage = 2 (secondes, certaines cartes son ont besoin d'un peu de temps à s'initialiser)
- Interface = hw:X
Le X est à remplacer par le numéro correspondant à la carte son que vous voulez utiliser. hw:0 est la première carte son, souvent celle intégrée à la carte mère, hw:1 est la deuxième etc.
Les numéros associés aux différentes cartes peuvent être trouvés grâce à la commande cat /proc/asound/cards (dans un terminal)
Il est aussi possible d'utiliser le nom de la carte, trouvé par la même commande (entre []), sous la forme: hw:xxx. C'est utile si vous avez plusieurs interfaces, dans quel cas le système change souvent l'ordre des cartes. - Audio = duplex
- Périphériques/canaux d'entrée/sortie = par defaut (sélection automatique efficace)
Ensuite cliquez sur "OK" puis dans la fenêtre principale, "Démarrer".
Si tout ce passe bien, vous verrez apparaître le symbole "RT" clignoter en jaune pâle dans la fenêtre de qJackCtl, entre "Démarré" (ou "Started" en anglais) et le taux d'utilisation du processeur.
Si à ce moment vous avez un problème, vous devriez :
- vérifier que vous n'avez pas sauté le paragraphe qui dit que les réglages RT du système c'est obligatoire hein, et que c'est par ici (mais que c'est pas forcément évident alors mieux vaut une relecture ),
- fermer toute application qui peut occuper la carte son : lecteur audio, navigateur internet, "préférence son" de Gnome, serveur son inopiné... avant de relancer jack
Si vous ne trouvez pas le coupable, essayez la commande suivante :lsof | grep /snd/
- enfin, ouvrir la fenêtre messages pour savoir d'où exactement vient ce problème, puis comparer les messages aux erreurs répertoriées car oui, jack te parle !
Le cas échéant, aller voir la description détaillée des réglages pour savoir quoi modifier sans danger.
Les réglages proposés plus hauts fonctionnent pour la plupart des couples cartes-son/ordinateur modernes (et compatibles), pour de plus vieux coucou il faudra peut être augmenter la latence (en jouant sur le nombre d'échantillons, périodes et la fréquence d'échantillonnage)
À l'inverse, une fois jack fonctionnel, vous pouvez vous amuser à abaisser la latence (30ms c'est déjà bien mieux qu'avec certains autres systèmes proprio connus, à partir de 10ms on ne sent plus la moindre différence).
Configuration de Jack avec Cadence
Cadence affiche dans son écran de démarrage les éléments importants pour le fonctionnement de Jack dans la rubrique System Checks.
Dans l'exemple ci-dessous, il indique que le noyau Linux n'est pas prévu pour travailler en temps réel (c'est celui de base) et l'utilisateur actuel n'est pas de groupe audio.
Pour régler les paramètres utilisateur, voir cette page.
Pour aller plus loin
Connecter les applications entre elles
Voir le tutoriel dédié : QJackCtl : connecter des applications
Description détaillée des réglages
Voir la page dédiée description détaillée des réglages.
Sans qjackctl
L'interface QJackCtl est vraiment pratique car dans sa fenêtre "messages", on peut apercevoir la ligne de commande à utiliser dans terminal pour arriver au même résultat sans toutes ces boites.
Jack se démarre avec la commande jackd, assortie des arguments à vérifier dans le manuel (man jackd, certains arguments changent en fonction de la version). Avec les réglages proposés plus haut, ça donne :
jackd -P70 -dalsa -dhw:1 -r48000 -p512 -n3
Noyau temps-réel
Dans un premier temps, vous pouvez rester avec le noyau que vous avez.
Mais faire fonctionner Jack en mode RT ne signifie pas pour autant que vous ayez un noyau "basse latence" : Jack fonctionne très bien en mode temps réel, sans que le noyau du système d'exploitation soit un noyau basse latence.
Pour une utilisation plus professionnelle et pour obtenir une latence encore plus basse, il vous faudra alors utiliser un noyau doté du module "realtime preemption".
Ces noyaux portent la particule 'rt' dans leur nom et sont aujourd'hui souvent inclus dans Distributions. Vous obtiendrez ainsi un vrai système temps réel. Sachez cependant que cela devrait être réservé aux utilisations plus poussées, car un système de ce type n'est pas forcément adapté à une utilisation bureautique classique (ce n'est pas un hasard si ce n'est pas le noyau installé par défaut !). Voir la page dédiée : Le noyau Temps-Réel.
[+]