Acoustic passion

Acoustic passion

II- Qjackctl

Qjackctl est l'interface graphique permettant de configurer facilement le serveur jack audio (ayant pour nom de processus "jackd"). Qjackctl est accessible via le nom de processus "qjackctl" depuis un terminal.  

 

Qjackctl permet de configurer le serveur jack audio : fréquence de sampling, fonctionnement temps réel ou non, priorité, taille du buffer audio, quelle carte audio utiliser et le nombre de canaux audio à utiliser, la limite du nombre de ports virtuels audio, les connections entre application, etc. etc. Je vais essayer de traiter les multiples points de l'interface Qjackctl.

 

Son interface est la suivante :

 

 

https://static.blog4ever.com/2010/01/378765/qjackctl-main_window.png

 

 

Globalement, la configuration de QjackCtl, accessible via le bouton "Setup", se divise en 4 onglets :

 

- Settings : ici vous réglez tout les paramètres de lancement de jackd (processus jack audio)

- Options : ici vous pouvez régler le lancement de script avant/après démarrage ou arrêt du serveur jack, les options de "logging" (en francais, l'enregistrement des messages d'informations de qjackctl), et la configuration du "patchbay" a utiliser par défaut (le patchbay est un système permettant d'établir de façon automatiser les connections des flux audio entre les applications, j'y reviendrai plus tard)

- Display : les diverses options d'affichage graphique

- Misc : des réglages divers plus ou moins variés qui ne rentrent pas dans les 3 catégories précédentes.

 

1- Setup -> Settings

 https://static.blog4ever.com/2010/01/378765/qjackctl-setup-settings.png

 

C'est dans cet onglet que la configuration la plus cruciale est effectuée. Je vais expliquer les points qui me semblent essentiels et passer les détails, que vous serez libre si vous le souhaitez d'approfondir avec les ressources que l'on peut trouver ici et là sur le net.

 

Ce qui nous intéresse en pratique est principalement :

 

- La carte audio utilisée. Sur linux, j'utilise jackd avec l'interface ALSA (équivalent ASIO) pour communiquer avec les buffers de la carte audio. ALSA, via un fichier de configuration, permet de créer un pilote virtuel si l'on souhaite fusionner par exemple 2 cartes audio en 1 seul périphérique virtuel (ce qui permettra d'utiliser les canaux des 2 cartes simultanément, ce qui n'est pas possible autrement car jackd ne peut communiquer qu'avec un seul périphérique à la fois). Le champ permettant de choisir la carte audio est le champ "Interface".

 

- Le sampling rate, évidemment, dont le champ se nomme "Sample Rate".

 

- La mémoire tampon utilisée, qui aura une conséquence sur la latence minimale du signal. Cette mémoire tampon se configure à l'aide de 2 paramètres : "Frames/Period" (je noterai la valeur de ce paramètre N) et "Periods/Buffer" (je noterai la valeur de ce paramètre M). La latence du signal dépendra de N, M, et de la fréquence de sampling (que je noterai FS).

 

La valeur de la latence sera au minimum de : N * M / FS. Autrement dit, dans mon cas :

 

N = 512, M = 2, FS = 48000 ==> latence mini = 512 * 2 / 48000 (en secondes) = 512 * 2 / 48 (en ms) = 21,33 ms.

 

Je conseille d'utiliser M = 2, et d'agir uniquement sur N. Plus N sera faible, plus la latence sera faible. Cette valeur détermine la fréquence à laquelle le serveur va traiter les données. Plus la valeur sera faible, plus le serveur va traiter les données avec des petits "morceaux" de signal, c'est pourquoi la latence sera faible. L'inconvénient, c'est que si il apparait une interruption sur votre ordinateur (l'ordinateur doit traiter les informations de la carte vidéo, de la carte ethernet, les autres applications etc.) plus longue que l'intervalle de temps durant lequel doit être traité une frame de signal audio, alors le serveur subira un "x sync" (= buffer underflow) et devra se resynchroniser a la prochaine frame. Ceci équivaut à une perte des données audio, et un artefact sonore apparaîtra.

 

Il faudra donc trouver un compromis pour la taille de N, de sorte que l'ordinateur puisse dans un fonctionnement normal traiter toujours dans le temps qui lui est imparti les données audio qui circulent dans votre flux, et ce malgré les différentes interruptions du système engendrées par les autres composants, processus, etc.

 

Lancer une application engendrera un pic de charge sur votre processeur donc une susceptibilité de subir une désynchronisation audio plus importante qu'en temps normal.

 

Chacun sera libre de juger le niveau de suceptibilité de subir un xsync : certains souhaiteront conserver un taux de xsync nul, au sacrifice d'une latence beaucoup plus importante, d'autres souhaiteront avoir un taux de xsync nul lorsqu'ils travaillent sur certains logiciels mais sans avoir à lancer de nouveau processus (et donc des xsyncs probables lorsqu'ils lanceront certaines applications). J'ai pour ma part choisi la seconde solution : peu de xsyncs lorsque je lance des applications lourdes, pas de xsyncs le reste du temps.

 

2- Options

https://static.blog4ever.com/2010/01/378765/qjackctl-setup-options.png

 

Cet onglet est plutôt explicite : les 4 premiers champs permettent de configurer un script bash a exécuter respectivement :

 

- on startup : pendant le lancement (dès que l'on appui sur le bouton "start"),

- after startup : après le lancement (lorsque le delai réglé dans le champ "start delay (secs)" de la setion précédente est écoulé après l'appui sur le bouton "start", par défaut ce délai est réglé sur 2 sec., ce qui signifie qu'on laisse 2 secondes au processus jackd pour démarrer avant d'exécuter ce script

- on shutdown : pendant la fermeture (dès que l'on appui sur le bouton "stop")

- after shutdown : après que le serveur jackd soit fermé.

 

J'utilise pour ma part un script dénommé "jack_on.sh" qui me permet de lancer mes applications de DSP après le lancement du serveur, et un script "jack_off.sh" qui me permet de tuer les applications de DSP après fermeture du serveur. Ainsi, je n'ai pas a lancer/fermer les applications à la main : tout se fait automatiquement.

 

Statistics permet d'enregistrer ou non les désynchronisations audio en analysant le flux standard de sortie des messages de jackd

 

"Activate patchbay persistance" permet de choisir si l'on souhaite activer par défaut une configuration de patchbay, qui permettra de réaliser les connections des flux audio des différents applications automatiquement. Vous aurez compris que ce patchbay est la partie "essentielle" dont on ne pourra pas se passer à moins que vous ayez la volonté de tout reconnecter manuellement à chaque fois ;)

 

Enfin "Message log file" permet d'enregistrer les messages d'informations de qjackctl dans un fichier texte.

 

3- Display

https://static.blog4ever.com/2010/01/378765/qjackctl-setup-display.png

 

Dans cet onglet vous pouvez customiser l'affichage de qjackctl : police, taille de police, limite de messages, etc. etc. Pour ma part je pense qu'un seul paramètre est intéressant : "Draw connection and patchbay lines as Bezier curves" permet de choisir si les connections des flux audio s'affichent avec des courbes de bézier ou des traits droits. L'affichage en courbe de bézier peut vous permettre d'améliorer la visibilité dans le cas ou votre graphe patchbay/connections est dense.



04/02/2014
0 Poster un commentaire

Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 20 autres membres