Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

Jackdmp était une version expérimentale de JACK.
Ses fonctionnalités ont été intégrées dans JACK2, cette page n'a qu'un intérêt historique.

Jack2 (ou Jackdmp) est un serveur son/framework multimédia temps-réel pour processeurs multi-cœur.



Informations

Site web officiel : http://jackaudio.org/ Image .
Version actuelle : 1.9.22 du 2023 02 02.
Support : ALSA, FFADO.
Développeur principal / mainteneur : Stéphane LETZ
Liste des Développeurs : Dmitry Baikov, Steven Chamberlain, Thom Johansen, Thibault LeMeur, Pieter Palmers, Tom Szilagyi, Andrzej Szombierski, Kjetil S.Matheussen, Pieter Palmers, Tim Blechmann, Marc-Olivier Barre, Nedko Arnaudov, Fernando Lopez-Lezcano, Romain Moret, Florian Faber, Michael Voigt, Torben Hohn, Paul Davis.

Présentation


Jack2 est une nouvelle implémentation, en langage C++, du serveur Jack.
Il est fait pour les machines multi-processeurs et est disponible pour GNU/Linux, OSX, Windows et Solaris.
Jack2 est issu d'une branche de développement anciennement nommée JackdMP (Jack Daemon Multi Processeur), et il est maintenant dans la branche officielle de Jack.


Avec l'arrivée des machines multi-processeurs se pose la question de l'utilisation optimale des ressources de la machine, en particulier lorsque plusieurs applications audio fonctionnent simultanément.
Les dépendances de données entre les applications, liées à la topologie de leur connections, imposent un ordre dans l'activation des clients pour un cycle audio donné.
La version actuelle du serveur Jack effectue systématiquement une exécution séquentielle de tous les clients jack, ceci même si du parallélisme existe potentiellement dans le graphe des applications jack.

Par exemple si deux applications A et B sont connectées aux entrées audio, et envoient leurs flux de sortie sur une 3° application C, le serveur Jack effectuera la séquence d'activation "A,B,C" (ou peut être "B,A,C" en fonction de l'algorithme de tri interne). Ce graphe est un cas typique de modèle "parallélisable" sur une machine multiprocesseur: puisque A et B dépendent des mêmes entrées, ils peuvent être activés simultanément sur 2 processeurs dès que les entrées sont disponibles.

Le serveur Jack2 propose un modèle d'activation différent dit "flot-de données" qui garantit une activation au plus tôt des clients :
en gros un client est activé dès que l'ensemble de ses sources a été produit par les clients antérieurs dans le graphe.
Ce modèle étant une généralisation du modèle d'activation précédent, il fonctionne donc aussi sur une machine mono-processeur.

Jack2 est par ailleurs une nouvelle implémentation C++ du serveur Jack.
Elle corrige ou améliore plusieurs limitations de la version précédente :

  • par l'utilisation d'un modèle d'accès "lock-free" du graphe des applications, celui-ci peut être modifié (par exemple lorsque des nouveaux clients sont lancés, ou des nouvelles connections réalisées) sans interrompre le calcul du flux audio. Ceci évite les "clics" audio.

  • par la mise en place de deux modèles de synchronisation pour le calcul d'un cycle complet du graphe: le mode "synchrone", similaire au modèle précédent de Jack ou le serveur "attend" le fin de l'activation de tous les clients pour produire les buffers de sorties, et le mode "asynchrone" ou le serveur utilise les buffers de sortie produits au cycle précédent sans avoir besoin de se synchroniser sur la fin de l'activation du graphe au cycle courant. Le mode synchrone est plus sensible en cas de déficience d'un client (en gros la non-activation d'un client bloque l'ensemble du calcul du graphe) alors que le mode asynchrone est plus robuste (une partie du graphe peut continuer à fonctionner) mais a le désavantage d'ajouter un buffer de latence supplémentaire.

Utiliser Jack2 au lieu de Jack1 est particulièrement intéressant lorsque la configuration des clients permet une activation en parallèle et peut amener une diminution de moitié de l'occupation CPU sur un machine avec 2 processeurs dans les cas les plus favorables (et plus sur des machines multi-coeurs en fonction de la topologie du graphe des applications). D'autre part, l'activation des clients et les connections ne provoquent plus de clics.

En résumé
Pour résumer cette explication un peu technique, jack2 n'utilise pas et ne peux pas utiliser plus d'un processeur quand le flux de données audio est sérialisé. ce qui est le cas le plus courant. De multiples processeurs sont utilisés seulement quand il y a des flux parallèles entre les clients comme dans le cas de deux synthétiseurs logiciels qui rentrent dans un enregistreur comme ardour.

Il ne faut pas croire que jack2 est plus stable parce qu'il ne zombifie pas les clients dans son mode d'opération par défaut (asynchrone). Il autorise les clients à être "en retard" d'une certaine quantité de temps, ce qui peut résulter dans des clics et des pops dans leurs flux audio "apparents" (mais pas forcément audibles), mais ce qui ne va pas faire que le serveur va les éjecter comme le fait jack1. Une façon de regarder cela est de considérer que jack2 est plus tolérant vis-à-vis des erreurs de programmation et de la latence du système que jack1.

Notes importantes :
  • L'utilisation de jack2 est donc intéressante y compris sur les machines mono-processeur, il est d'ailleurs utilisé par défaut dans certaines distributions audio (Studio To Go 2.0 par exemple). En effet, Jack2' supprime par exemple les clics audio lors des connections ou lancement d'applications.

  • À partir de la version 0.62, le driver freebob a été ajouté.

Utilisation


Lancement via QJackCtl


jack2 se lance également avec la commande jackd.
Il y a des options supplémentaires (notamment l'option -S si l'on souhaite travailler en mode "synchrone"), mais les options spécifiées dans QJackCtl fonctionnent.

Et voila, ça devrait marcher !
Et même courir wink

Lancement en mode console


Les options de jackd sont disponibles, par défaut le serveur est lancé en mode asynchrone:
jackd -d alsa -d hw:1


Pour lancer le serveur en mode synchrone, il faut utiliser le paramètre -S :
jackd -S -d alsa -d hw:1



Conclusion

Jack2 est aujourd'hui absolument à essayer, dans l'expérience de plusieurs membres LinuxMAO, la stabilité et la performance sont sensiblement meilleures que celles de jack1.

Changelog

[+]

Installation

[+]

Commentaires et liens


il existe un patch pour rendre Jack2 compatible D-Bus, voir la page jackdbus.


[+]

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool
calixtus06, 11:17, mar. 05 mars 2024: Bonjour et bienvenue à D752 :-)
calixtus06, 18:59, lun. 04 mars 2024: Bonjour et bienvenue à Hborsa et Adjudandouille :-)
olinuxx, 18:34, jeu. 29 Feb 2024: Bonjour et bienvenue à anto45500 cool
jujudusud, 23:38, mar. 27 Feb 2024: Venez participer à la joute numéro 17 : [Lien]
calixtus06, 18:36, jeu. 22 Feb 2024: Bonjour et bienvenue à nikartri et rckloar :-)
calixtus06, 10:15, mer. 14 Feb 2024: Bonjour et bienvenue à smonff, Alphascorpii, tadumtss et letoII :-)