• # J'ai besoin d'un plan à l'échelle et en couleurs

    Posté par  . Évalué à 4.

    Question sérieuse, mais trollesque, mais sérieuse quand même.
    J'ai raté le train OSS, celui d'ALSA, de GStreamer, de PulseAudio, et Jack. Et maintenant de PipeWire.
    On dirait que les API et systèmes/drivers/modules/etc audio sous Linux changent plus vite qu'un dév Full Stack ne change d'outil ou de langage de prog (il est là, et seulement là, le troll du vendredi).
    Est-ce qu'il existe un plan qui expliquerait qui fait quoi, et surtout, que choisir lorsqu'on a un besoin en tant qu'utilisateur et dév dans le domaine audio ? Sérieux, sans troll cette fois, pour ceux qui sont largués comme moi. Un guide Michelin, un guide du routard, un que sais-je …

    Anecdotes :

    • ne serait-ce que pour éviter des surprises du genre son venu de nulle part et qui sort tout à coup du produit que je développe. C'est du vécu : présentation d'un proto connecté au Wi-Fi du Grand Stand de Lille/VdA lors d'un salon privé. Annonce aux visiteurs du salon sur le système de P.A. du stade. Mais aussi à travers les HP de mon proto …
    • j'ai expérimenté vite fait Jamulus. Mais il nécessite Jack. Et j'ai galéré comme un diable pour réussir à faire tourner ce truc sans piger comment j'y suis parvenu.
    • [^] # Re: J'ai besoin d'un plan à l'échelle et en couleurs

      Posté par  (Mastodon) . Évalué à 10. Dernière modification le 06 octobre 2023 à 14:51.

      J'ai raté le train OSS, celui d'ALSA, de GStreamer, de PulseAudio, et Jack. Et maintenant de PipeWire.

      Tu mentionnes des technologies qui ne se remplacent pas vraiment, la comparaison avec l'outillage d'un dev ne marche pas.

      Au niveau de qui fait quoi:

      • PulseAudio, Jack et PipeWire sont au dessus des couches Alsa/OSS qui sont plus bas niveau.
      • Pulseaudio était orienté audio "normal", où on préfère bufferiser à mort pour avoir un flux stable parfois au prix de la latence
      • Jack Audio Connection Kit est orienté audio professionnel, avec faible latences des flux audios et midi. Il entendait ajouter de la flexibilité au dessus de ce que proposait Alsa.
      • Pipewire c'est un serveur de flux audio et vidéo (c'est ce qui permet le partage d'écran sous wayland par exemple). Il entend répondre à la fois aux problématiques résolues par PulseAudio et Jack.
      • GStreamer est un framework multimedia, c'est une couche encore au dessus.
      • Même si je parles de "couches" il y a à chaque cas des fonctionnalités redondantes.

      Autre remarques:

      • La migration de OSS a Alsa remonte a plus de 20ans. Et Alsa apportait un support amélioré des cartes usb par exemple tandis que les developpeurs de OSS avaient passé leur version majeur 4 sous une license proprio. Ça avait du sens de migrer et je n'ai pas eu le souvenir que ça c'était fait dans la douleur.
      • l'arrivée de Pulsaudio avait été plutôt douloureuse pour ceux qui l'ont utilisé à ses début, et ceux qui voulaient utiliser Jack mais ce n'était pas un composant indispensable non plus (du moins au début). Cependant avec la généralisation des périphériques audio on a été bien content qu'il soit là.
      • En compariason l'arrivée de Pipewire s'est fait plus dans la douceur et l'auteur principal a su discuter avec les devs pulseaudio et Jack pour avoir des clients alsa, pulseaudio et jack fonctionnels très rapidement.
      • Pipewire est un remplacement relativement transparent, un utilisateur ne se rend même pas compte du changement quand sa distrib migre de pulseaudio à pipewire.
      • Ça rend la vie des musiciens plus simple et l'intégration avec Jack est bien meilleur qu'à l'époque Pulseaudio.
      • Ça facilite la vie quand t'es sous wayland (cf partage vidéo).
      • Ça permet de faire pleins de trucs gruicks comme utiliser des outils de suppression de bruit, des equalizers ou compresseurs (oui on pouvait déjà faire ça avec pulseaudio). [1][2][3]

      [1] https://github.com/wwmm/easyeffects
      [2] https://github.com/noisetorch/NoiseTorch
      [3] https://github.com/werman/noise-suppression-for-voice#pipewire
      [4] https://github.com/Audio4Linux/JDSP4Linux#readme

    • [^] # Re: J'ai besoin d'un plan à l'échelle et en couleurs

      Posté par  (site web personnel) . Évalué à 6.

      Très succinctement :
      ALSA : pilotes noyaux pour le matériel et une bibliothèque (libalsa) bas niveau pour y accéder
      OSS : pilotes noyaux pour le matériel, obsolète aujourd'hui dans linux

      pulseaudio : serveur de son et bibliothèque en espace utilisateur, gère le mixage des sources, l'envoi vers la bonne sortie son (haut parleur, casque, bluetooth, réseau, etc.), les effets (ex : suppression d'écho, réverbération.
      jack : serveur de son et bibliothèque en espace utilisateur, plus orienté usage professionnel avec latence le plus bas possible, un peu moins automagique dans son utilisation que pulseaudio.

      pipewire : candidat au remplacement de pulseaudio et jack. gère également la vidéo en plus de l'audio et est plus adapté aux environnements avec droits limités (type wayland, flatpak)

      gstreamer : cadriciel de décodage/encodage vidéo/audio qui s'appuie sur les briques décrites au dessus.

    • [^] # Re: J'ai besoin d'un plan à l'échelle et en couleurs

      Posté par  . Évalué à 7. Dernière modification le 06 octobre 2023 à 14:59.

      (edit: grillé par Mjules)

      Ce qui est bien avec PipeWire, c'est qu'il est compatible avec les clients PulseAudio, Jack et ALSA (il doit aussi y avoir une compatibilité pour OSS mais je n'ai pas eu le besoin de vérifier. Il est censé couvrir tous les cas d'usage, là où PulseAudio était concentré sur l'utilisation grand public et JACK sur l'audio avancée.

      Pas de changement nécessaire pour les applications, le remplacement de PulseAudio par PipeWire est totalement transparent. Et complet : je ne vois pas de cas d'usage qui n'est pas couvert par PipeWire, même la lecture en réseau. C'est une implémentation de PulseAudio, tout simplement.

      Pour les applications Jack, un LD_PRELOAD permet d'avoir une bonne compatibilité. Peut-être que ça peut se faire sans ? Je ne saurais pas dire si PipeWire est un bon remplaçant pour les utilisations audio avancées / "temps réelles" couvertes par JACK, mais en tout cas ça a l'air de marcher et de vouloir couvrir le cas d'utilisation (si ça n'est pas encore totalement le cas).

      Mettre en place Jack est un peu compliqué et demande des jongleries un peu pénible sur une machine utilisée de manière généraliste, PipeWire n'a pas ce problème et "juste marche" normalement.

      Donc le guide est simple : utilise PipeWire. Il n'y a plus à choisir entre PulseAudio et Jack.

      Donc avec un peu de chance, Jamulus marche bien avec PipeWire et si celui-ci est déjà installé parce que ça vient par défaut avec ta distrib (si ce n'est pas encore le cas, ça devrait bientôt), il n'y a probablement pas grand chose à faire.

      Et ALSA… je crois que c'est deux choses :

      • le sous système son de Linux - les pilotes sons de linux sont des pilotes ALSA
      • une bibliothèque (assez limitée) pour leur parler et là aussi, Pipewire est compatible avec ça. D'ailleurs j'ai un bug avec Clémentine qui le fait sauter d'une sortie son un peu aléatoirement d'une piste à l'autre, alors je lui dit d'utiliser ALSA et c'est réglé, il ne s'occupe plus de gérer ce genre de chose, PipeWire s'en charge.

      GStreamer pour moi c'est autre chose, ça sert aux applications pour coder et décoder du son (codecs), appliquer des filtres et transformations. Une fois traités, ces flux audios peuvent être envoyés au système son pour lecture (une autre utilisation serait d'enregistrer sur le disque par exemple).

      Je finirais en ajoutant que PipeWire apporte aussi à la vidéo ce que PulseAudio et ses collègues d'antant apportaient : multiplexage, etc. On peut maintenant utiliser la caméra dans plusieurs applications en même temps par exemple. Et sous Wayland, ça permet aussi de capturer l'écran ou des fenêtres, pour les partages vidéos par exemple.

      Pour l'utilisateur / l'utilisatrice finale, il n'y a plus à se préoccuper de tout ça. Tout juste marche, même les applications pro, plus besoin de se préoccuper de comment marche l'architecture audio d'un système Linux ni de l'installation de JACK. En tout cas, en théorie.

      À noter que c'est une version RC de PipeWire qui sort, pas une version finale (mai ça fait 1 ou 2 ans que je l'utilise à la place de PulseAudio).

  • # C'est très prometteur

    Posté par  . Évalué à 1.

    Alsa c'est déjà compliqué (*). Faire cohabiter un système multimédia style Kodi ou juste un bureau de base avec des applications orientées audio (via jack), c'est difficile.

    Alors du coup j'attends beaucoup de Pipewire ;-)

    (*) Cette présentation m'a bien aidé à y voir plus clair:
    https://bootlin.com/pub/conferences/2020/lee/belloni-alsa-asoc/belloni-alsa-asoc.pdf

    "Si tous les cons volaient, il ferait nuit" F. Dard

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.