JACK Audio Connection Kit

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Jack.
JACK
Image illustrative de l'article JACK Audio Connection Kit
Logo

Dernière version 1.9.5 () [+/-]
Environnement POSIX
Type Serveur de sons
Licence GNU GPL
Site web jackaudio.org

JACK, acronyme récursif de JACK Audio Connection Kit, est un logiciel de diffusion de son professionnel pour système Unix tel que GNU/Linux et Mac OS X. 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. Il est en développement constant par une communauté de développeurs open source conduite par Paul Davis (qui a gagné un Award Open Source en 2004 pour son travail[1]) et il a été une pièce maitresse 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 la licence plus permissive GNU LGPL.

Usage[modifier | modifier le code]

Ce serveur son est lancé comme un "démon" à l'aide du programme jackd. Il peut être contrôlé grâce à des 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 n'importe quelle connexion que l'utilisateur jugerait utile.

Implémentation[modifier | modifier le code]

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, Mac OS X, 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[2].

Contrairement aux autres serveurs son où ce sont les applications qui envoient de façon aléatoire 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[3].

Ordonnancement à faible latence[modifier | modifier le code]

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[4],[5], alors que les performances initiales de latence avaient été décevantes en comparaison avec l'ancienne série 2.4[6]. 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 patch CONFIG_PREEMPT_RT[7]. À cette date, une des fonctions principales du patch -rt (le force threaded irq handlers) est en cours d'incorporation dans le kernel Linux[8].

Applications qui supportent JACK[modifier | modifier le code]

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 même d'utiliser JACK sur plusieurs machines à travers un réseau.

Des distributions linux comme Demudi ou encore Kxstudio en ont fait leur serveur son par défaut.

Références[modifier | modifier le code]

  1. (en) « Open Source Awards 2004: Paul Davis for JACK », techrepublic.com.com (consulté le 16 February 2010)
  2. (en) « What's new in JACK2? - Linux Audio Conference 2009 paper by primary JACK2 author Stephane Letz » (ArchiveWikiwixArchive.isGoogleQue faire ?), linuxaudio.org. Consulté le 17 February 2010
  3. « Paul Davis [LAD jack routing vs pulse routing »] (ArchiveWikiwixArchive.isGoogleQue faire ?)
  4. (en) « Original announcement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004 », lkml.org (consulté le 17 February 2010)
  5. (en) « Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009 » (consulté le 17 February 2010)
  6. (en) « Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell » (consulté le 17 February 2010)
  7. (en) « Real-Time Linux Wiki », Linux Kernel Organization (consulté le 8 June 2010)
  8. (en) « linux-2.6.39 with force threaded irq-handlers: our new rt-kernel », Torben Hohn LAD Linux Audio Development mailing list (consulté le 23 avril 2011)

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]