JACK Audio Connection Kit
JACK, acronyme récursif de JACK Audio Connection Kit, est un logiciel d'interconnexion d'applications audio pour système Unix tel que GNU/Linux et macOS et aussi pour Windows. Il a été conçu pour obtenir des connexions temps réel à faibles latences et une exécution synchrone de ses clients audio et MIDI. En dehors du fait d'être multi-plateformes, il est l'un des deux principaux serveurs audio sous Linux, avec PulseAudio qui est plus orienté bureautique et jeu. PipeWire, s'inspirant de Gstreamer à pour but d'unifier ces deux serveurs de son ainsi que les flux vidéo.
Pour les articles homonymes, voir Jack.
Développé par | Paul Davis |
---|---|
Dernière version | 1.9.21 ()[1] |
Dépôt | github.com/jackaudio/jack2 |
Écrit en | C++ et C |
Système d'exploitation | Type Unix |
Environnement | POSIX |
Type | Serveur de sons |
Licence | GNU GPL |
Site web | jackaudio.org |
Il est développé par une communauté de développeurs open source conduite par Paul Davis (qui a gagné un Award Open Source en 2004 pour son travail[2]) et il a été une pièce maîtresse de l'infrastructure et un standard de-facto pour les logiciels audio professionnel sous Linux depuis son inclusion en 2002.
Le serveur est FLOSS, sous licence GNU GPL, tandis que la bibliothèque est sous licence plus permissive GNU LGPL.
Usage
Le serveur de son est exécuté comme démon à l'aide du programme jackd. Il peut être contrôlé grâce à différentes interfaces graphiques dont la plus connue est qjackctl.
JACK permet d'interconnecter les entrées et les sorties de tous ses clients très simplement : la souris est utilisée pour faire les connexions de la même manière qu'on utiliserait des câbles sur une scène ou dans un studio d'enregistrement. Cela permet de réaliser tout montage que l'utilisateur jugerait utile.
Implémentation
JACK peut utiliser les drivers matériels ALSA, PortAudio, CoreAudio, FreeBoB, FFADO et OSS. De plus, sont inclus un driver factice (utile si aucune sortie son n'est désirée, par exemple pour un rendu offline) et un driver Audio-sur-UDP (utile pour le fonctionnement du serveur sur un réseau, lequel doit être de préférence dédié). Il tourne sur Linux, macOS, Solaris, Windows, FreeBSD, OpenBSD et NetBSD. L'API de JACK est standardisé par consensus et il en existe deux implémentations compatibles : jack1, qui est implémenté en C, et jack2 (à l'origine jackdmp), a été implémenté en C++ sous la direction de Stéphane Letz. Cette dernière implémentation est en développement rapide, elle a introduit la gestion multi-processeurs et le support pour d'autres systèmes d'exploitation que Linux[3].
Contrairement aux autres serveurs son où ce sont les applications qui envoient leurs données au serveur, JACK utilise un modèle où le serveur impose quand, et dans quel ordre, les applications doivent lui envoyer les données audio ou MIDI[4].
Ordonnancement à faible latence
Les besoins d'ordonnancement à faible latence de JACK ont été une des forces conductrices derrière l'effort d'optimisation temps réel de la série 2.6 actuelle du kernel Linux[5],[6], alors que les performances initiales de latence avaient été décevantes en comparaison avec l'ancienne série 2.4[7]. Le travail d'introduction du temps réel dans le kernel Linux est en cours. De nombreuses améliorations de l'ordonnancement ont déjà été réalisées et la branche -rt a été créée pour des optimisations plus intrusives avec la version 2.6.24, et plus tard du correctif CONFIG_PREEMPT_RT[8]. À cette date, une des fonctions principales du correctif -rt (le force threaded irq handlers) est en cours d'incorporation dans le kernel Linux[9].
Gestionnaires de session
Il existe trois principaux gestionnaire de sessions JACK, que l'on retrouve sous les différentes distributions Linux ayant un support audio avancé[10] :
- Ladish et son interface utilisateur graphique Gladish permet de la manipuler. C'est une évolution de LASH, qu'il remplace, qui remplace lui même LADCCA[10].
- Jack-session
- Non session manager
Applications qui supportent JACK
Une grande quantité d'applications sont compatibles avec JACK et leur liste s'allonge avec le temps. Ce nombre élevé d'applications et la possibilité de les interconnecter librement font que les seules limites pratiques d'un système informatique audio qui utilise ce serveur son sont la puissance de la machine et l'imagination de l'utilisateur. Les versions récentes de JACK permettent également de distribuer les calculs audio sur plusieurs machines, via le réseau.
Des distributions Linux comme Kxstudio, LibraZiK, Ubuntu Studio, Demudi, le groupe de paquets pro-audio d'Arch Linux en ont fait leur serveur son par défaut.
Références
- « JACK2 v1.9.21 release »
- (en) « Open Source Awards 2004: Paul Davis for JACK », techrepublic.com.com (consulté le )
- (en) « What's new in JACK2? - Linux Audio Conference 2009 paper by primary JACK2 author Stephane Letz »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?), linuxaudio.org (consulté le )
- « Paul Davis [LAD] jack routing vs pulse routing »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?)
- (en) « Original announcement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004 », lkml.org (consulté le )
- (en) « Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009 » (consulté le )
- (en) « Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell » (consulté le )
- (en) « Real-Time Linux Wiki », Linux Kernel Organization (consulté le )
- (en) « linux-2.6.39 with force threaded irq-handlers: our new rt-kernel », Torben Hohn LAD Linux Audio Development mailing list (consulté le )
- « LASH, gestionnaire de session audio », sur LinuxMAO.org
Voir aussi
Articles connexes
Liens externes
- (en) Jack Audio Connection Kit
- (en) Qjackctl : interface graphique basé sur QT pour JACK
- (fr) Jack : Documentations du serveur JACK sur le site Linux MAO
- Portail des logiciels libres
- Portail de la musique