Chargement...
 
Skip to main content

5 - Les serveurs son : JACK, PipeWire, PulseAudio et autres...


DSP saturé avec une faible latence [CONTOURNÉ]

Bonjour à tous.

J'ai toujours résolue mes problèmes de MAO en lisant les forums, mais là je ne trouve pas de solution. Alors je fais mon premier post. 😬

Je suis sur Ubuntu Studio 18.04 depuis moins d'un mois, noyau 4.15.0-20-lowlatency x86_64.
Sur un Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz, avec 16 GiB de RAM et un SSD.

Et lorsque je connecte jack sur mes différentes cartes son en USB, avec une faible latence (réglage ci-dessous), il se lance ,mais en lecture avec Ardour5 (surtout avec des reverbs à convolution), il y a des craquements aléatoires très fréquents et le DSP oscille entre 60 et 97%. Mixer avec du réamping est difficilement envisageable.

Voici mes réglages pour lancer Qjackctl.

Réglage Qjackctl

Réglage Qjackctl Avancé

Et voici ce que me renvoie qjackctl quand je le lance:

Copy to clipboard
15:24:56.026 Journalisation démarrée --- sam. janv. 12 15:24:56 2019 --- 15:24:56.064 Réinitialisation des statistiques. 15:24:56.066 Changement des connexions ALSA. 15:24:56.068 DBUS : le service est disponible (org.jackaudio.service soit jackdbus). Cannot connect to server socket err = Aucun fichier ou dossier de ce type Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock 15:24:56.089 Changement du graphique des connexions ALSA. 15:24:58.451 DBUS : le serveur JACK démarre… 15:24:58.461 DBUS : le serveur JACK a été démarré (org.jackaudio.service soit jackdbus). Cannot connect to server socket err = Aucun fichier ou dossier de ce type Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock Sat Jan 12 15:24:58 2019: Starting jack server... Sat Jan 12 15:24:58 2019: JACK server starting in realtime mode with priority 70 Sat Jan 12 15:24:58 2019: self-connect-mode is "Don't restrict self connect requests" Sat Jan 12 15:24:58 2019: Acquired audio card Audio1 Sat Jan 12 15:24:58 2019: creating alsa driver ... hw:CODEC|hw:CODEC|64|3|48000|0|0|nomon|swmeter|-|32bit Sat Jan 12 15:24:58 2019: configuring for 48000Hz, period = 64 frames (1.3 ms), buffer = 3 periods Sat Jan 12 15:24:58 2019: ALSA: final selected sample format for capture: 16bit little-endian Sat Jan 12 15:24:58 2019: ALSA: use 3 periods for capture Sat Jan 12 15:24:58 2019: ALSA: final selected sample format for playback: 16bit little-endian Sat Jan 12 15:24:58 2019: ALSA: use 3 periods for playback Sat Jan 12 15:24:58 2019: graph reorder: new port 'system:capture_1' Sat Jan 12 15:24:58 2019: New client 'system' with PID 0 Sat Jan 12 15:24:58 2019: graph reorder: new port 'system:capture_2' Sat Jan 12 15:24:58 2019: graph reorder: new port 'system:playback_1' Sat Jan 12 15:24:58 2019: graph reorder: new port 'system:playback_2' Sat Jan 12 15:24:58 2019: New client 'PulseAudio JACK Sink' with PID 1237 Sat Jan 12 15:24:58 2019: Connecting 'PulseAudio JACK Sink:front-left' to 'system:playback_1' Sat Jan 12 15:24:58 2019: Connecting 'PulseAudio JACK Sink:front-right' to 'system:playback_2' Sat Jan 12 15:24:58 2019: New client 'PulseAudio JACK Source' with PID 1237 Sat Jan 12 15:24:58 2019: Connecting 'system:capture_1' to 'PulseAudio JACK Source:front-left' Sat Jan 12 15:24:58 2019: Connecting 'system:capture_2' to 'PulseAudio JACK Source:front-right' Sat Jan 12 15:24:59 2019: Saving settings to "/home/alleck/.config/jack/conf.xml" ... 15:25:00.509 Changement des connexions JACK. 15:25:00.510 Configuration du serveur enregistrée dans « /home/alleck/.jackdrc ». 15:25:00.511 Réinitialisation des statistiques. 15:25:00.514 Client activé. 15:25:00.514 Baie de brassage désactivée. 15:25:00.526 Changement du graphique des connexions JACK. Sat Jan 12 15:25:00 2019: New client 'qjackctl' with PID 6766 15:25:25.262 Récupération désynchronisation (XRUN) (1). 15:26:25.421 Récupération désynchronisation (XRUN) (2). Sat Jan 12 15:26:25 2019: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Triggered Sat Jan 12 15:26:25 2019: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error


Si quelqu'un à une idée. merci
Juste deux petites questions/précisions pour essayer de mieux comprendre le contexte :

1. Je vois que tu veux utiliser Jack ET Pulseaudio, si c'est pour regarder des vidéos utoob ou écouter du dezcloud ou ce genre de choses je dirais "bon pourquoi pas" mais pour travailler sur de la prise audio ou du mixage je serais pplus catégoriquement horrifié 😀👻

2. Tu dis que c'est pour du mixage (avec réamping) auquel cas pourquoi voiloir utiliser une latence d'enregistrement aussi basse ?
(pour du mixage suivant le nombre de pistes et de plugs gourmands comme des reverbs ou des simus d'amplis ou pire des VST windows (quel que soit le "bridge" utilisé) j'utiliserais plutôt une latence confortable et sécurisante, comme 1024 (ou autre entre 512 et 4096)

Et quand c'est pour enregistrer des guitares en vue de "réamping" en général je me contente de 256 ou 128 (sauf s'il faut aussi enregistrer un clavier+MIDI auquel cas le plus bas possible sera le mieux) mais je ne mets comme "simulation d'amplis" que des trucs très légers (comme le wolfshaper ou certains plugins de Airwindows (ex: 'Drive' 'HardVacuum')

Je sais bien que ces questions et remarques ne répondent pas directement à ta question mais ça pourra peut-être aider tout de même 😕
France
Pas sûr que cela soit la cause, mais 64 échantillons/période pour du mixage avec des réverbes à convolution,
ça me paraît risqué.
Et lorsque je connecte jack sur mes différentes cartes son en USB

Tu veux dire que tu as essayé avec plusieurs cartes USB ou que tu les utilises en même temps,
parce que ça peut être un début d'explication ....
Merci beaucoup pour ces réponses rapide.

Et pour préciser:

1. J'ai pu comprendre que utiliser Jack et Pulseaudio ne soit pas terrible, seulement quand j'ai installer ubuntu studio 18.04 , les deux était déjà intégré, et que je ne sais pas du tout comment faire pour supprimer pulseaudio. (sachant que j'ai beaucoup de lacune sur linux)


2. J'utilise ardour pour faire du mix mais aussi créer des maquettes. J'ai besoin de n'avoir aucune latence pour enregistrer car j'enregistre sur des enregistrements, et que 128 échantillons/périodes a une latence trop perceptible.
Et j'ai besoin d'avoir les EQ, Comp ,reverb , ... déjà réglé pour rechercher plus précisément les mélodies où autre que j'enregistrerai.

Je parle de reamp, où le son d'une piste passe par une autre sortie de ma carte son, pour passer dans un effet externe puis et réenregistrer et est audible avec l'ensemble du mix sans latence afin de correctement réglé l'effet externe .

Excusez l’imprécision, mais je n'ai pas essayé les cartes son en même temps.

Sachant qu'il y a quelque semaine, j'étais sur ubuntu 14.04 avec une m-audio profire 2626 et que je n'avais aucun problème à faire tourner sans latence un mix de 20 piste ou plus dont 4 reverb à convolution et 3 ou 4 "réamp" en même temps et en enregistrant.

Merci pour vos réponses,
Comment pourrais-je faire pour enlever pulseaudio, c'est peut-être lui le fautif ?
France
J'ai pu comprendre que utiliser Jack et Pulseaudio ne soit pas terrible

Perso, avec un pont pulseaudio-jack, je n'ai aucun problème de cohabitation, la guerre pulseaudio-jack semble appartenir au passé pour moi maintenant.

J'ai besoin de n'avoir aucune latence pour enregistrer car j'enregistre sur des enregistrements, et que 128 échantillons/périodes a une latence trop perceptible.

Perso, à 48k/128, je ne perçois aucune latence, ou alors pas gênante.

Et j'ai besoin d'avoir les EQ, Comp ,reverb , ... déjà réglé pour rechercher plus précisément les mélodies où autre que j'enregistrerai.

Si tu travailles comme cela (à savoir créer/enregistrer et mixer en même temps, tu as intérêt à avoir un pc de malade car ça va demander des ressources énormes très rapidement.
En général, on enregistre d'abord et on mixe ensuite (avec une latence plus élevée pour avoir une marge de manoeuvre plus importante avant l'apparition des xruns.
J'ai supprimer pulseaudio, mais cela n'a rien changé, les craquement persistent.

Qjackctl me renvoie constamment ,quand je suis en lecture avec une faible latence (64 échantillons/périodes) :
Copy to clipboard
Sun Jan 13 06:52:01 2019: ERROR: JackEngine::XRun: client = ardour was not finished, state = Running Sun Jan 13 06:52:01 2019: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error


Perso, à 48k/128, je ne perçois aucune latence, ou alors pas gênante.


A 48K/128 Je perçois une latence qui fait effet pré-délai bizarre, sur des nappes ce n'est effectivement pas gênant mais sur du débit cela m'est impossible d'être précis rythmiquement.

tu as intérêt à avoir un pc de malade car ça va demander des ressources énormes très rapidement.


Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz, avec 16 GiB de RAM et un SSD. Je crois que ma config est suffisante pour écarter l’éventualité d'une faiblesse matériel et c'est pour ça que je l'avais acheté.

J'avais installé une version de Ubuntu 14.04 en avril 2017, et tout fonctionner correctement, puis j'ai fais il y a quelque semaine une mise à jour de la 14.04, et c'est à ce moment que tout à planté. C'est pour cette raison que je suis passé sur Ubuntu studio 18.04, mais ça change pas le problème.

Que faire ? ❓
France
Dans ta dernière capture d'écran ('Paramètres', 'Avancé'), essayes de mettre la priorité à 80,et 'nombre de port' à 2048, on ne sait jamais.

Sinon, tu pourrais aussi essayer LibraZiK, qui fournit des noyaux (basse latence et temps-réel) avec toutes les optimisations pour la MAO (j'ignore si Ubuntu Studio fait la même chose), et qui propose un environnement de bureau léger.
La priorité à 80 ne change rien et le nombre de port à 2048 non plus.

J'avais, avant d'installer ubuntustudio, essayé LibraZik, mais en vrai j'ai rien compris. C'est un niveau informatique qui me dépasse. Je retenterai l'approche plus tard et avec plus d'expériences.

J'ai installer Fluxbox, cela à réduit légèrement les craquements, mais pas suffisamment.

Je suis entrain de tester l'instalation d'une version antérieur de Jack, je ne sais pas si c'est une solution très logique.
Mais quand j'étais sur Ubuntu 14.04 avant de faire la mise à jour,sa version et son interface était différente et ça fonctionné. J'essaye !😉
Peux-tu vérifier une partie de la config avec ce petit outil ?
https://github.com/raboof/realtimeconfigquickscan

(comme tu as précisé ne pas être très "informatique" j'indique ici quoi en faire comment 😉 )

Copy to clipboard
git clone git://github.com/raboof/realtimeconfigquickscan.git cd realtimeconfigquickscan perl ./realTimeConfigQuickScan.pl


Et, tant qu'on y est deux petites vérifs de base :

Copy to clipboard
zcat /proc/config.gz | egrep '(_HZ_|PREEMPT)'


Copy to clipboard
ulimit -a

Merci😀, voilà :

Copy to clipboard
alleck@hector:~$ git clone git://github.com/raboof/realtimeconfigquickscan.git Clonage dans 'realtimeconfigquickscan'... remote: Enumerating objects: 131, done. remote: Total 131 (delta 0), reused 0 (delta 0), pack-reused 131 Réception d'objets: 100% (131/131), 40.62 KiB | 205.00 KiB/s, fait. Résolution des deltas: 100% (85/85), fait. alleck@hector:~$ cd realtimeconfigquickscan alleck@hector:~/realtimeconfigquickscan$ perl ./realTimeConfigQuickScan.pl == GUI-enabled checks == Checking if you are root... no - good Checking filesystem 'noatime' parameter... 4.15.0 kernel - good (relatime is default since 2.6.30) Checking CPU Governors... CPU 0: 'powersave' CPU 1: 'powersave' CPU 2: 'powersave' CPU 3: 'powersave' CPU 4: 'powersave' CPU 5: 'powersave' CPU 6: 'powersave' CPU 7: 'powersave' - not good Set CPU Governors to 'performance' with 'cpupower frequency-set -g performance' or 'cpufreq-set -c <cpunr> -g performance' (Debian/Ubuntu) See also: http://linuxmusicians.com/viewtopic.php?f=27&t=844 Checking swappiness... 10 - good Checking for resource-intensive background processes... none found - good Checking checking sysctl inotify max_user_watches... < 524288 - not good increase max_user_watches by adding 'fs.inotify.max_user_watches = 524288' to /etc/sysctl.conf and rebooting For more information, see http://wiki.linuxaudio.org/wiki/system_configuration#sysctlconf Checking access to the high precision event timer... readable - good Checking access to the real-time clock... readable - good Checking whether you're in the 'audio' group... yes - good Checking for multiple 'audio' groups... no - good Checking the ability to prioritize processes with chrt... yes - good Checking kernel support for high resolution timers... found - good Kernel with Real-Time Preemption... not found - not good Kernel without real-time capabilities found For more information, see http://wiki.linuxaudio.org/wiki/system_configuration#installing_a_real-time_kernel Checking if kernel system timer is high-resolution... found - good Checking kernel support for tickless timer... found - good == Other checks == Checking filesystem types... ok. ** Set $SOUND_CARD_IRQ to the IRQ of your soundcard to enable more checks. Find your sound card's IRQ by looking at '/proc/interrupts' and lspci.


Copy to clipboard
alleck@hector:~$ zcat /proc/config.gz | egrep '(_HZ_|PREEMPT)' gzip: /proc/config.gz: No such file or directory


Copy to clipboard
alleck@hector:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 63648 max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 95 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 63648 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

perso, je trouve que ce typede souci juste pares une mise à jour du systeme me rappelle vraiment des galeres que j'aieues parceque le noyau qui avait ete mis a jour n'etait par real time ni meme basse latence

tu peux nous assurer quel noyau tu utilises ? avec un petit
Copy to clipboard
uname -a


sinon, les CPU governors dont il est question dans la premiere fenetre sont à verifier.

et enfin, j'ai fait comme toi, je me suis dit que ubuntu etait plus simple pour un debutant linux que debian, et j'en suis revenu. peut etre as tu essayé librazik 1 ? (moi j'etais resté sur ma faim en terme de clarté en effet par rapport à ubuntu) là c'est librazik 2 et avec l'expérience acquise, honnetement, rien de plus compliqué que sous ubuntu, tu pourrais facilement tester a partir d'une cle usb...
Copy to clipboard
~$ uname -a Linux hector 4.15.0-20-lowlatency #21-Ubuntu SMP PREEMPT Tue Apr 24 07:52:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


Quand j'étais sur Ubuntu 14.04 et que tout fonctionné, mon noyau était un 3.13.0-163-generic

C'était bien Librazik 2 que j'avais testé et dés l’installation je comprenais pas vraiment, mais tu as sans doute raison et je vais sûrement réessayer.

Tu pense qu'avec une clé live je peux voir si ma carte son firewire marche aussi ?
France
Tu pense qu'avec une clé live je peux voir si ma carte son firewire marche aussi ?

Oui tu pourras vérifier que ta carte soit reconnue.
Par contre, toutes les optimisations systèmes ne seront pas effectives sur le live, seulement certaines.
Par contre elles le seront une fois LibraZiK installée en dur.

Il y a une documentation très conséquente sur le site, il est fortement recommandée de la lire et la suivre pas à pas pour l'installation.
Merci pour tes réponses, je viens de voir la documentation sur l'installation, effectivement ça me parait moins sorcier avec un manuel.

Je suis déçu de ne pas trouver de solutions avec Ubuntu Studio 18.04 qui est censé être pour la MAO. D'autant plus que la version Ubuntu 14.04 avec noyau generic sans la mise à jour était plus performante, en tout cas pour mon matériel.

Si quelqu'un a quand même une idée? Je ne suis pas encore sûr que Librazik2 fonctionnera mieux, encore une fois, pour mon matériel et pour ce que je veux en faire.
Tu peux essayer de voir si le programme de test de latence/xruns fait par "tramp" sur un autre forum signale quelque chose de flagrant :
https://linuxmusicians.com/viewtopic.php?f=27&t=19268&start=15

copie dans un fichier 'xruncounter.c' le code source cité dans le post de "tramp", de :

Copy to clipboard
#include <stdio.h>
à
Copy to clipboard
jack_client_close (client); exit (0); }


puis compile le :
Copy to clipboard
gcc -Wall xruncounter.c -lm `pkg-config --cflags --libs jack` -o xruncounter


Ensuite, lance un jack, en adaptant " -d ta_carte_son " pour la carte à tester l'exemple ci dessous :
Copy to clipboard
jackd -R -P 95 -d alsa -d hw:2 -p512 -n2 &


Puis, effectue le test :
Copy to clipboard
./xruncounter


Essaie avec divers paramétrages de buffer ( -p256, -p128, et nombre de segments: -n2 ou -n3 )
Alors, j'ai créer le fichier xruncounter.c, copié le code source en entier.
Puis quand je compile :

Copy to clipboard
~$ gcc -Wall xruncounter.c -lm `pkg-config --cflags --libs jack` -o xruncounter Package jack was not found in the pkg-config search path. Perhaps you should add the directory containing `jack.pc' to the PKG_CONFIG_PATH environment variable No package 'jack' found xruncounter.c:8:10: fatal error: jack/jack.h: Aucun fichier ou dossier de ce type #include <jack/jack.h> ^~~~~~~~~~~~~ compilation terminated.


Je lance Jack mais xruncounter me renvoie :

Copy to clipboard
:~$ ./xruncounter bash: ./xruncounter: Aucun fichier ou dossier de ce type

Argh, il doit te manquer un package jack-dev, cherche dans ton gestionnaire de paquets s'il y a un paquet jack-dev ou quelque chose dans le genre et après l'avoir installé réessaie la compilation.
(dans ma distro le jack.h est inclus dans le paquet de base jack2 mais j'imagine bien que c'est variable suivant les distros)

Sinon tu peux essayer de voir si cette version fonctionne chez toi :
http://thedarkdesign.free.fr/zak/_atw/xruncounter
j'ai installer tous les paquets de jack des dépendances d'Ubuntu Studio.
Relancé la compilation, mais il me renvoie le même message .

J'ai ensuite essayé avec le nouveaux script, la compilation m'affiche plein de error et de warning, suffisamment pour que le terminale ne soit pas assez grand pour voir le début de la compilation.

j'ai tout de même lancé jack et ./xruncounter
il me renvoie:

Copy to clipboard
$ ./xruncounter bash: ./xruncounter: Permission non accordée $ sudo ./xruncounter sudo: ./xruncounter : commande introuvable

Essaie à nouveau en donnant au programme le droit d'être "exécutable" :

Copy to clipboard
chmod +x xruncounter


PS: quand tu dis "J'ai ensuite essayé avec le nouveaux script, la compilation m'affiche plein de error et de warning" est-ce que tu veux dire que tu as essayé de compiler le programme DL sur 'thedarkdesign' ?
Si c'est le cas je comprendrais pourquoi sa compilation ne "marche" pas, c'est déjà un programme exécutable, il ne faut pas le compiler 😊
Ok, 😀 je commence à comprendre ce qu'est un exécutable, excuse-moi.

Du coup, je lance:

Copy to clipboard
~$ jackd -R -P 95 -d alsa -d hw:1 -p512 -n2 & [1] 14912 ~$ jackdmp 1.9.12 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. Copyright 2016-2017 Filipe Coelho. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details no message buffer overruns no message buffer overruns no message buffer overruns `default' server already active Failed to open server


J'ai la vague impression que ça marche pas vraiment.

et ensuite:

Copy to clipboard
~$ sudo ./xruncounter Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jackdmp 1.9.12 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. Copyright 2016-2017 Filipe Coelho. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details Home directory not accessible: Permission denied no message buffer overruns no message buffer overruns no message buffer overruns JACK server starting in realtime mode with priority 95 self-connect-mode is "Don't restrict self connect requests" audio_reservation_init Acquire audio card Audio1 creating alsa driver ... hw:CODEC|hw:CODEC|64|3|48000|0|0|nomon|swmeter|-|32bit lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. ATTENTION: The playback device "hw:CODEC" is already in use. Please stop the application using it and run JACK again JackTemporaryException : now quits... Released audio card Audio1 audio_reservation_finish Cannot initialize driver JackServer::Open failed with -1 Failed to open server Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock jack server not running?


Et là aussi j'ai l'impression que ya un blême.

Merci pour ta patience.
Argh 😀

L'erreur au lancement de jack est due à ce qu'apparemment jack est déjà lancé, tu dois pouvoir le stopper avec :

Copy to clipboard
killall jackd



ou si tu l'avais lancé à partir d'un outil général comme par exemple cadence ou qjackctl l'arrêter à partir de l'appli en question.


Pour la seconde erreur je suis plutôt étonné de lire que la carte son s'appellerait "hw:CODEC" ?
(le reste de la ligne "creating alsa driver" implique qu'effectivement un daemon jack est lancé avec un buffer de 64 bits et 3 periodes.

histoire d'avoir une idée du matériel audio tel que vu par le système peux-tu dire ce que rendent :

Copy to clipboard
cat /proc/asound/cards

et
Copy to clipboard
arecord -l


(Et note bien que le résultat de 'xruncounter' ne résoudra pas le problème mais pourrait au moins donner une idée des performances que tu peux espérer avec l'installation+distro+noyau actuels ce qui pourrait aider à orienter les recherches suivantes)
Page: 1/2  [Suivant]
1  2