Je vois un tas d'affirmations selon lesquelles Jack est plus rapide que Pulse et a moins de latence. Comment en est-il ainsi? Pourquoi Pulse se dit-il léger et les gars de Jack l'appellent-ils gros? Quelqu'un pourrait-il décomposer les éléments internes de ces deux démons en un profane?
pulseaudio
jack
Evan Carroll
la source
la source
Réponses:
Jack vous oblige - l'utilisateur averti - à configurer le serveur pour déterminer la latence de traitement la plus faible possible pour votre machine. (La latence de traitement est le temps nécessaire au serveur pour déplacer des données vers / depuis les applications clientes, puis envoyer / recevoir le prochain "morceau" d'échantillons audio en dehors du système.) Jack fournira ces morceaux de données audio à temps, ou il échouera et vous donnera un tampon de sous-exécution (parfois appelé "abandon", ou pops et clics). Si Jack subit systématiquement des sous-exécutions, il vous appartient soit de redémarrer le serveur avec des paramètres différents, soit de modifier quelque chose dans les applications clientes pour les rendre plus efficaces afin que vous puissiez respecter vos délais audio. Étant donné que vos paramètres de serveur s'appliquent uniformément à tous les clients, Jack est très utile pour acheminer l'audio entre plusieurs applications audio et obtenir des résultats prévisibles . (C'est-à-dire, c'est comme brancher des "jacks" dans divers composants audio.)
Pulse est conçu pour minimiser le nombre de fois où l'audio est interrompu car le serveur ne respecte pas la date limite d'envoi / réception audio en dehors du système. Il essaie apparemment de le faire en choisissant un grand tampon pour les applications clientes qui ne demandent pas une faible latence de traitement , puis en "injectant" des échantillons dans ce tampon pour les applications clientes qui ont un délai plus tôt. S'il essaie d'injecter des échantillons si tôt qu'il manque une échéance et provoque un sous-dépassement, Pulse augmentera automatiquement le temps le plus court qu'il permettra à un client d'envoyer une mise à jour audio au serveur. Pulse docs état explicitement que ultra faible latency-- disent, moins de 10 ms de latence de traitement- n'est pas un objectif de conception. Étant donné que Linux lui-même (et probablement votre matériel) n'a pas été conçu pour la planification audio en temps réel, je serais enclin à les croire.
En termes de configuration utilisateur, Pulse est "léger". (On pourrait dire que Pulse a une faible latence de configuration , ce que malheureusement de nombreuses applications Linux Audio semblent ignorer.) En termes de complexité sous-jacente par rapport à Jack, Pulse est "gras".
Pour obtenir une réponse définitive sur ce qui est le plus rapide, il vous suffit d'obtenir un périphérique de bouclage et de mesurer la latence aller-retour sur votre propre système pour connaître la vérité. La latence aller-retour est le temps nécessaire à votre système pour traiter l'audio et recevoir ce qu'il a traité dans le système. Il existe des didacticiels en ligne qui expliquent comment procéder sous Linux. Cela vous donnera une idée de ce que vous recherchez réellement, c'est-à-dire la latence perçue - le temps qu'il faut entre le moment où vous déclenchez un événement (par exemple, le grattage des cordes d'une guitare) jusqu'au moment où vous entendez le son pour la première fois. qui en résulte (par exemple, entendre l'accord de guitare).
Enfin, gardez à l'esprit que Pulse et Jack se trouvent tous les deux au-dessus d'ALSA sur la plupart des distributions GNU / Linux. Je sais que tu ne demandes que Jack contre Pulse. Mais si vous utilisez une seule application audio pouvant se connecter directement à ALSA, il n'y a aucun moyen concevable que l'ajout de Pulse ou Jack vous obtienne une latence perçue inférieure à celle d'ALSA seul. En ce sens, Pulse et Jack sont tous deux "gros".
tldr; ALSA seul est le plus rapide, Jack est utile pour chaîner plusieurs applications audio et Pulse est probablement plus facile à utiliser lorsque vous ne vous souciez pas de la latence ultra faible. Ignorez toute documentation ou discussion qui utilise le terme latence sans expliquer de quel type de latence il s'agit. (Malheureusement, les documents officiels de Jack et les articles de blog de Lennart sur Pulse entrent dans cette catégorie.)
Remarque : Il peut y avoir des cas extrêmes où vous souhaitez utiliser une seule application audio et elle a une interface ALSA minable et une interface Jack décente. Dans ce cas, l'utilisation de Jack peut réduire la latence. Mais si nous parlons d'applications conçues pour minimiser la latence, ces cas devraient être rares. Mais connectez un périphérique de bouclage et testez mon hypothèse!
la source
Ils sont en fait similaires en tant que serveurs sonores . JACK est conçu pour une réponse en temps réel / à faible latence, qui est requise par les solutions audio de niveau professionnel. PulseAudio cible davantage le bureau général (où des besoins moins stricts s'appliquent). PA semble être plus lourd que JACK - être plus complexe induit plus de surcharge. Sous Linux, les deux utilisent finalement ALSA pour une sortie réelle. Avec PA, les données sont souvent acheminées d'ALSA (sortie d'application) vers PA (traitement) vers ALSA (sortie), ce qui est bien sûr plus lent que la route JACK-ALSA. En revanche, il est transparent pour les applications qui ne peuvent pas l'utiliser nativement, car il leur présente une carte son virtuelle avec une interface ALSA.
Dans tous les cas, à moins que vous n'ayez l'intention de produire de la musique ou que vous ne puissiez pas vivre sans le contrôle du volume par application (ou le transfert de son vers une autre machine via le réseau), ALSA ordinaire fonctionnera très bien, avec moins de surcharge. Certains pilotes peuvent faire du mixage matériel et même si ce n'est pas le cas, ALSA peut mixer via un plugin (sans doute pas aussi accrocheur que JACK, mais une utilisation "normale" devrait être correcte).
la source
Jack est destiné aux applications nécessitant une faible latence, par exemple: ingénierie / création audio pour les musiciens, les vidéastes, etc.
Pulse est destiné aux applications de bureau standard (ne vous attendez pas à une faible latence)
alsa
queoss
sortieLa couche d'espace utilisateur Alsa (pas un pilote) fait le minimum (latence entre [*])
Dans la plupart des cas, Pulse est le meilleur choix pour les utilisateurs de bureau réguliers. Jack est le meilleur choix pour les musiciens, etc.
la source
Ce n'est pas vraiment une question de "vs". À première vue, nous pouvons voir qu'ils sont tous les deux des "serveurs de son". Ainsi, peut-être, conclure qu'il suffit de choisir entre eux. Ce n'est pas le cas. Comparez, par exemple, une caméra vidéo et une caméra FLIR, les deux sont des caméras. Mais, on ne fait pas que "choisir" entre eux. Ils jouent des rôles très différents, ces rôles peuvent être complémentaires, mais ils ne sont en aucune façon compétitifs. On a besoin d'une prise jack, ou d'une impulsion, ou on peut avoir besoin des deux. Le choix est déterminé par le domaine problématique, et non par des fonctionnalités comme la latence spécifique.
Quant à «FAT» ou non, le terme est utilisé de trop de façons pour être vraiment significatif. Mais, généralement, le terme FAT utilisé lorsque l'application "fait tout pour vous", plus ou moins. «Léger» a tendance à vous charger de charger la fonctionnalité que vous voulez, en choisissant éventuellement parmi une palette d'options et en jetant le reste. Pulse est un programme "big blob" auquel vous donnez quelques paramètres et, à peu près, il disparaît. Si vous en avez besoin ou non, une grande quantité de fonctionnalités est chargée lorsque vous démarrez le pouls. Jack est un tout petit programme, inutile en soi, auquel vous collez un nombre illimité de plugins, de programmes, etc. pour construire ce que vous voulez. Les programmeurs ont tendance à voir le monde du côté des ressources de la machine.
Donc, pulse est un serveur à latence variable et jack est à latence fixe. Ce sont leurs domaines de problèmes spécifiques. Si vous regardez la télévision ou écoutez de la musique sur un réseau, vous voulez sûrement du pouls. Si vous essayez de jouer de la musique électronique en direct, vous avez sûrement besoin d'une prise jack. Si vous regardez la télévision et effectuez un traitement lourd sur le ou les flux sonores, vous aurez certainement besoin des deux.
la source