Chargement...
 
Skip to main content

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


Problème d'entrées micro

France
J'ai un souci un peu bizarre l'entrée micro de mon unité centrale.
Je suis sous Xubuntu 24.04 avec pipewire sans configuration spéciale.

Tout d'abord le contexte :

Dans une utilisation normale, avec mon casque-micro par exemple sous Discord, je n'ai aucun souci. J'ai un script bash pour passer du micro webcam/haut-parleurs au micro casque/écouteurs qui fonctionne parfaitement.

Le problème est apparu en simulation aérienne avec Xplane12 lancé.
Xplane initialise dans Pavucontrol :
- en Lecture un "Pipewire Alsa playback" et un "Playback stream"
- en Enregistrement un "Record Stream"

Voici ce que je constate au niveau du micro:

- dans Pavucontrol, le baregraph bouge beaucoup plus lentement et est moins réactif que la normale

- dans Audacity, quand j'enregistre, ça avance très lentement et à l'écoute j'ai un enregistrement 10 fois plus rapide.
si je ralenti à 0,10 la voix est correcte.

- dans Discord, quand je mets la fonction d'écoute du micro en direct, je n'entends que des petits cliquetis.

Cela fait la même chose sur l'entrée micro arrière.
Par contre quand j'active un micro usb, comme celui de la webcam, tout est normal et le son est nickel dans Audacity ou Discord.

Je ne pense pas que ce soit un problème d'échantillonage car cela ne devrait pas jouer sur la vitesse.
Je pressens plutôt un problème sytème, de noyau ou de Pipewire.

Je suis en noyau 6.8.0 mais je ne peux monter guère plus haut. Le 6.9 et tout nouveau 6.11 que j'ai essayé ne sont pas encore compatible.
Je n'ai pas envie de jouer avec ça sur ma machine de production.

J'ai fait aussi pas mal de recherches mais sans succès.

Donc toute idée sera bonne à prendre.
Merci d'avance à tous.
ça peut étre un pb d'échantillonage, j'en ai déja eu (avec Ardour).
Pipewire est par défaut en 48 kHz.
J'ai souvent des problèmes avec des logiciels qui proposent une option pipewire dans les contrôles audio.
Si ils le proposent je prends l'option Jack, sinon je passe par pulseaudio (émulé par pipewire).
France
Merci mais comme je l'ai expliqué plus haut, le micro ne fonctionne pas non plus dans Discord. Je ne pense pas que l'échantillonage ait un rapport.
Déjà dans Pavucontrol on voit que le barregraph ne réagit pas normalement, il est beaucoup trop lent.
France
Bonjour,

Ici on ne traite normalement que des sujets en rapport avec la MAO. Pour ce qui est des autres problèmes avec le son, on n'est pas vraiment bien placés pour en parler.

Cela dit, il nous manque des informations pour tenter de te sortir de l'ornière.

Quel casque/micro ? Marque modèle ? Branché comment Jack, usb ? Dans quelle carte sur ton unité centrale ? Marque modèle ?

Tu nous parles aussi d'un script bash. Lequel ? Il y a quoi dedans ? Est ce qu'il est adapté a PipeWire ?

Merci.
France
Bonsoir,

Oui j'ai posté ici car c'est le même ordinateur que j'utilise pour la MAO.
J'ai aussi une carte son mais je fais certains mixages Ardour ou des enregistrements audio Audacity avec la carte son du pc.

Le problème est le même quel que soit le micro, à partir du moment où il est en branché sur l'unité centrale, donc en mini-jack, aussi bien devant que derrière.

Le scrit bash sert juste à switcher entre le micro jack et le micro de la webcam et entre les HP et le casque.
Il ne fait que changer le favori dans pavucontrol et je ne pense pas qu'il soit en cause.

Depuis mon premier post j'ai mis à jour Xubuntu en 24.10 sans problème particulier, à part mon script ci-dessus qui ne fonctionne plus. Il y a encore du y avoir des changements dans pipewere ou le nom des cartes. Je regarderai.
Il y a du mieux car les prises micros fonctionnent bien, après redémarrage, dans Pavucontrol ou avec le simulateur.
Je peux aussi enregistrer avec pw-record.
Par contre si j'ouvre Audacity ou Ardour pour enregistrer, je retrouve le problème et il subsiste quand je ferme ces logiciels.
Je n'ai carrément plus rien qui rentre par le micro et si je le débranche il est toujours indiqué comme branché.

Je dois redémarrer Pipewire avec "systemctl --user restart pipewire" pour que le micro fonctionne à nouveau.
Par contre, si je ne redémarre que pipewire et non l'ordi, l'enregistrement avec pw-record fait à nouveau planter le micro.

Je soupçonne donc un vrai problème avec pipewire ou entre pipewire et le système.
France
Pour le script j'ai trouvé, bizarrement après passage en 24.10 la commande pactl ne fonctionnait plus.
Il fallait réinstaller pulseaudio-utils.
Si ça intéresse quelqu'un.

Pour le passage sur les enceintes et le micro webcam :

Copy to clipboard
#!/bin/sh # Paramétrage de l'audio # Sortie enceintes pactl set-sink-port alsa_output.pci-0000_2a_00.3.analog-stereo analog-output-lineout pactl set-default-sink alsa_output.pci-0000_2a_00.3.analog-stereo pactl set-sink-mute alsa_output.pci-0000_2a_00.3.analog-stereo 0 pactl set-sink-volume alsa_output.pci-0000_2a_00.3.analog-stereo 80% # Entrée micro webcam pactl set-default-source alsa_input.usb-046d_C922_Pro_Stream_Webcam_B72DBE9F-02.analog-stereo pactl set-source-port alsa_input.usb-046d_C922_Pro_Stream_Webcam_B72DBE9F-02.analog-stereo analog-input-mic pactl set-source-volume alsa_input.usb-046d_C922_Pro_Stream_Webcam_B72DBE9F-02.analog-stereo 50% exit 0


Pour le passage sur le casque et le micro casque :

Copy to clipboard
#!/bin/sh # Paramétrage de l'audio # Sortie sur casque pactl set-sink-port alsa_output.pci-0000_2a_00.3.analog-stereo analog-output-headphones pactl set-default-sink alsa_output.pci-0000_2a_00.3.analog-stereo pactl set-sink-mute alsa_output.pci-0000_2a_00.3.analog-stereo 0 pactl set-sink-volume alsa_output.pci-0000_2a_00.3.analog-stereo 80% # Entrée par micro casque pactl set-default-source alsa_input.pci-0000_2a_00.3.analog-stereo pactl set-source-port alsa_input.pci-0000_2a_00.3.analog-stereo analog-input-front-mic pactl set-source-volume alsa_input.pci-0000_2a_00.3.analog-stereo 40% exit 0


Deux petits raccourcis clavier sur les scripts pour passer d'une config à l'autre.
France
Toujours concernant les tests, les enregistrements avec Audacity et Ardour fonctionnent très bien quand on lance ces logiciels avec "pw-jack".
Ensuite il suffit d'utiliser qpwgraph pour câbler ce qu'on veut.

L'étau se ressere donc sur la gestion, ou plutôt la simulation de pulse par pipewire.
bravo pour avoir cerner et commencer à résoudre le problème et de le faire partager... respect pour cette contribution.
et cool les scripts.
France
Si tu veux faire du son un peu avancé et utiliser XUbuntu, je te conseille de regarder ce qu'ils ont fait sur Ubuntu Studio car il n'est plus nécessaire d'utiliser pwjack pour lancer des logiciels avec les dernières versions de WirePlumber et PipeWire.

Je pense que le fait de passer à PipeWire doit te faire changer tes manières de faire les choses. Par exemple, mettre à jour tes commandes script avec les commandes PipeWire vu que PulseAudio n'est plus là
France
Merci @Raoul86

@Jujudusud tu as raison. J'ai été un des premier à défendre pipewire et à l'utiliser. Le souci c'est d'y voir clair entre ce qui a été fait, ce qui est en cours avec tous les compromis et ce qui se dessine pour plus tard.
Sachant que ça évolue en permanence.

Je ne savais pas pour Ubuntu Studio. Je suis depuis au moins 25 ans exclusivement sous GNU/Linux et Xubuntu au moins depuis 10 ans.
J'ai déjà testé Ubuntu Studio mais je préfère gérer moi-même le moindre package que j'installe et n'installer ce qui m'est utile.

Je ne fais pas que de la simulation aéro.
Je suis musicien professionnel et pédagogue (Carl Bouchaux sur Google).
Je ne sais pas si tu considère ça comme du son "avancé" mais je fais par exemple des Jam avec Jamulus que j'ai développé au sein de Jazz en Provence en aidant les musiciens à s'y mettre, quel que soit leur système.
J'ai des scripts qui lancent tous les logiciels nécessaires selon les instruments (hydrogen, Ardour, etc.), les utilitaires comme jack_record, établissent les connexions, repositionnent les fenêtres, etc.

Avant évidemment tout était sous Jack avec des profils Raysession.
Maintenant tout est sous pipewire (avec effectivement pw-jack) et des profils qpwgraph qui me satisfait complètement.

Il faut beaucoup de temps pour comprendre tout ça et la dernière fois que je m'étais penché dessus il y avait toujours l'obligation de conserver les émulations de pulse et jack.
Ce serait bien qu'on puisse s'en passer.
Je vais me repencher sur la doc de pipewire mais je crains qu'elle ne détaille pas les contraintes de chaque distributions.
Si tu as des liens qui pourraient me faire gagner du temps, je suis preneur, dans le but d'assainir ou de simplifier mon système.

J'utilise pavucontrol pour la gestion courante des périphérique mais je ne sais même pas comment il communique avec pipewire. Je pense que c'est via pw-pulse.
Quand on ouvre qpwgraph et pavucontrol en même temps, c'est un bordel sans nom dans qpwgraph et ça le rend inutilisable.

Je viens de voir effectivement qu'avec wpctl on peut faire les opérations courantes et je vais modifier mes scripts.
Mais avoir une interface comme pavucontrol est quand même bien pratique pour changer de micro ou monter le volume, sans avoir à prendre la console à chaque fois.
France
Top ! Merci pour toutes ces infos qui me donne du grain à moudre ! 😊

Alors, dans l'ordre, tu peux aller lire la première partie de la page que j'ai écrite ici sur PipeWire. Celle-ci explique que tu peux utiliser PipeWire en remplacement de PulseAudio seulement et garder le "vrai" serveur JACK. Par contre je ne sais pas si c'est possible sur les dernières versions d'Ubuntu (Xubuntu et Ubuntu Studio étant identiques à Ubuntu sur ce point là d'après ce que je sais).

A ce moment là, tu continues à te servir de ce que tu utilisais jusque là sauf les commandes PulseAudio que tu changeras certainement pour celles de PipeWire.

Le wiki de PipeWire est pour le seul endroit ou les infos sont exhaustives et tournées vers l'utilisateur final. il est ici : https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Image

Je ne sais pas trop quoi écrire de plus... mais tu peux relancer la discussion et je pense qu'on sera là pour te répondre et tenter de te guider, moi ou une autre personne.
Tu peux tester pwvucontrol.
La doc de Arch est assez complète https://wiki.archlinux.org/title/PipeWire
Comme tu l'as découvert, je te conseille de lancer tes applications utilisant jack avec par exemple
Copy to clipboard
PIPEWIRE_LATENCY="128/48000" application
afin de t'assurer que tout le monde à la même fréquence d’échantillonnage.
Tu peux aussi essayer helvum, parfois plus pratique que qpwgraph pour voir ou transite le son.
Regarde aussi pipewire-control (je ne suis plus certain du nom exact)
France
Il vaut mieux bloquer les paramètres lors de l'utilisation en MAO comme expliqué dans la page wiki PipeWire et dans le wiki officiel de PipeWire lorsqu'on utilise une version égale ou supérieure à 1.0 de PipeWire.
France
Merci pour tous ces conseils. Je regarde tout ça asap.
Le système son sous linux n'est pas compliqué, mais souvent mal expliqué. Il reste assez fidèle au concept unix: chaque brique ne fait qu'une seule chose, mais le fait bien.
- ALSA est la couche la plus proche du matériel, c'est celle que gère la carte son
- au dessus, il faut un serveur de son qui va répartir le son sortant des applications utilisateurs vers les sorties audio (idem pour les entrées).
Et c'est là que la confusion commence, car linux propose plusieurs serveur de son selon les usages, et ils peuvent mêmes étre utilisés simultanément!
Jusqu'en 2023, c'était assez simple:
- pulseaudio pour un usage généraliste. L'utilisateur ne s'occupe de rien, pulse-audio fait au mieux pour gérer le routage du son. Les machines concernées ayant généralement une simple sortie stéréo intégrée à la carte mère, le routage reste simple. C'est en gros un sommateur qui prends la sortie de chaque logiciel et l'envoi vers ALSA.
- Jack pour les utilisateurs plus exigeant qui ont besoin de connecter la sortie d'un logiciel sur l'entrée d'un autre, de gérer la fréquence d’échantillonnage, la latence ..... Par contre gérer plusieurs cartes son avec Jack devient compliqué.

Tout un écosystème s'est développé autour de ces serveurs de son pour que l'utilisateur interagisse avec eux (pavucontrol, cadence, ...)

Puis pipewire est arrivé. Son objectif est de répondre à la fois aux utilisateurs généralistes, et aux exigeants. Mais les logiciels étant existant, il leur propose une interface identique à Jack et pulseaudio. Pour le routage "intelligent" du son, il y a wireplumber qui va faire de son mieux pour relier les entrées et les sorties. Les utlisateurs exigeant ont toujours la possibilité de faire le routage eux même.

Ce qui à péché lors de la mise en place de pipewire, ce sont les logiciels pour interagir avec lui. Rien d'équivalent à qjackctl ou pavucontrol. Ca commence seulement à arriver, il faut apprendre à les apprivoiser.
France
Merci @piratebab pour ces précisions.
Le problème est effectivement la persistance de Pulse.

Concernant helvum, il est agréable graphiquement mais ce qui m'intéresse dans qpwgraph c'est la possibilité d'enregistrer des configurations selon les différents contextes et de les appeler par exemple via un script.
Les notions "actif" et "exclusif" sont aussi très utiles.
Je n'ai pas trouvé comment faire ça avec helvum. Il n'y a pas non plus de man.
France
J'essaye d'avancer quand j'ai un peu de temps en suivant les conseils ci-dessus et mon intuition 😊

J'ai essayé de remplacer pactl par wpctl.
Mais je n'ai pas trouvé comment accéder aux différentes sorties des périphériques.

Par exemple, pour passer des enceintes au casque je faisais :
Copy to clipboard
pactl set-sink-port alsa_output.pci-0000_2a_00.3.analog-stereo analog-output-lineout

ou
Copy to clipboard
pactl set-sink-port alsa_output.pci-0000_2a_00.3.analog-stereo analog-output-headphones


Quand on fait
Copy to clipboard
wpctl status
on a la liste des périphériques mais pas ce détail. La commande
Copy to clipboard
wp inspect [ID]
donne beaucoup de détails sur un périphérique mais pas çà non plus.

Rien trouvé sur le net à ce sujet.
J'ai donc demandé à ChatGpt. Son explication est très claire.
Je vous ai mis la discussion ici :
Utiliser wpctl avec PipeWire
j'avais mis sur le wiki une liste de commande
PipeWire

Si ça peux t'aider
France
Merci @piratebab pour le rappel du lien.

Au final, car je n'ai pas beaucoup plus de temps pour le moment à consacrer, voici la situation fixée.

J'ai remplacé pavucontrol par pwucontrol qui fonctione tout aussi bien.
C'est vrai que tant que possible autant utiliser un outil pipewire.

J'ai fait deux raccourcis claviers pour lancer pwcontrol et qpwgraph.
Quand je veux juste changer une entrée, une sortie ou un volume, pwcontrol suffit et pour la mao je préfère prendre qpwgraph qui, contrairement à helvum, permet d'enregistrer des configurations.

Par contre, pour les scripts, trop compliqué de remplacer pactl par wpctl. Comme de toute façon je pense que l'emulation pw-pulse est là encore pour un bon moment compte-tenu de la nécessité de le fournir aux logiciels qui ne fonctionnent qu'avec pulse, ce n'est pas génant. Et toutes les commandes pactl que j'utilise dans mes scripts fonctionnent très bien.

Concernant le problème de départ, la prise micro continue de ne pas fonctionner de temps en temps mais je la retrouve en redémarrant pipewire ou en reconnectant avec qpwgraph.
France
Il me semble me souvenir d'un automatisme qui avait été mis en place pour mettre en sourdine le son des autres engin connectés quand un casque était branché dans la carte son du PC.
Je sais que ça fonctionne comme ça sur d'autres systèmes (OS de téléphone protable, ordinateur Windows).

Je vais chercher si j'ai un moment.
France
Où est ce qu'on en est ici ?

Est ce que tout à été dit et est ce que le dépannage est abouti ?
Page: 1/2  [Suivant]
1  2