Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
jackd [Le 21/03/2012, 22:39]
aurelien88 [Sur Feisty]
jackd [Le 21/03/2024, 10:58] (Version actuelle)
krodelabestiole [JACK] fix lien session
Ligne 1: Ligne 1:
-{{tag>​audio jack}}+{{tag>​audio jack multimedia}}
  
----- +====== ​JACK - Jack Audio Connection Kit ======
-====== ​Jack - Jack Audio Connection Kit ======+
  
-<​note ​warning>FIXME Besoin de faire un gros ménage ​sur cette page, qui ne mentionne aucune version d'Ubuntu supportéeElle devrait aussi être réécrite pour se conformer aux normes de la doc.</​note>​+<​note ​tip>Vous trouverez une autre documentation francophone ​sur le même sujet sur l'excellent [[http://​linuxmao.org/​Jack|LinuxMAO.org]]</​note>​
  
-<note info>​Jack (en ligne de commande) est un peu compliqué ​à installer/​paramétrer. **Allez voir [[http://​linuxmao.org/​tikiwiki/​tiki-index.php?​page=Qjackctl|cette page]]** pour **qjackctl**,​ une interface graphique à jackd(/!\ le plugin jack pour XMMS ne semble pas fonctionner sur Feisty Fawn, utilisez plutôt [[:​audacious]] mais n'oubliez pas de sélectionner jack comme sortie !</​note>​+Il existe sur Ubuntu ​de nombreuses applications dédiées ​à la [[:MAO|création musicale]] et au traitement audio en temps réelC'​est ​le serveur de son JACK qui permet d'utiliser tous ces logiciels ensemble et de manière optimale.
  
-Il existe dans Ubuntu de nombreuses applications dédiées ​à la création musicaleIl est ainsi possible de faire de l'enregistrement audio multipiste et du MIDI simultanément,​ le tout avec quelques effets temps réel (réverbération,​ chorus, flanger, etc.) et des instruments virtuels comme une boîte ​à rythmes ou un piano dans un lecteur d'échantillons SoundFonts. On trouve aussi des choses plus marginales telles accordeur d'instrumentracks d'​effets temps réel (type rack d'​effets de guitare) ​ou clavier MIDI virtuel. Tout ceci est à quelques clics de l'​utilisateur,​ encore faut-il configurer son système de manière à pouvoir profiter pleinement de toutes ces belles choses...+<note tip>JACK peut être un peu compliqué ​à installer et à paramétrerD'autre distributions GNU/Linux viennent ​avec un serveur JACK prêt à l'emploi comme l'excellent **[[:​KXStudio]]**, ou le projet francophone **[[http://​librazik.tuxfamily.org/​|LibraZik]]**.</​note>​
  
-Attention : on suppose dans cette page que vous avez correctement configuré ​votre (vos) carte(s) son avec l'ALSA (voir la page [[:son]]).+<​note>​On ​suppose dans cette page que votre carte son est correctement reconnue par le driver ​ALSA (voir la page [[:audio]]).</​note>​
  
-<note tip>​Jetez un œil sur **[[:Ubuntu Studio]]**, une variante d'​Ubuntu qui intègre tous les outils nécessaires à la MAO, dont jackd.</​note>​+===== Présentation =====
  
-===== Jackd =====+<note important>​ 
 +JACK est rendu obsolète par [[:​PipeWire]],​ un nouveau serveur de son, qui se paie le luxe de remplacer également [[:​PulseAudio]] et se trouve donc installé par défaut sur Ubuntu à partir de la version [[:​kinetic|Kinetic 22.10]].
  
-==== Présentation ==== +Il n'est donc plus nécessaire d'installer ​JACK depuis cette version et pour les versions précédentes il est possible d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​pipewire ]]** depuis les dépôts officiels à partir ​de [[:focal|Focal 20.04]] ([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour cette version précise). 
-Impossible actuellement de prétendre faire de la MAO (musique assistée par ordinateur) sans installer ​//jackd// au préalable. Jackd est un des serveurs ​de sons disponibles dans Linux, il y a de brèves explications sur cette page du wiki : [[:son#les_serveurs_de_sons|Les serveurs de sons]]. Jackd a l'​avantage sur ses concurrents d'​être taillé ​pour l'​audio en temps réel et, surtout, d'​être utilisé par presque toutes les applications plus ou moins orientées MAO.+Dans ce cas référez-vous plutôt à la [[:​pipewire|documentation de PipeWire]]. 
 +</​note>​ 
 +==== JACK ====
  
-Ah oui, //​jack**d**//,​ c'est le serveur ​Jack, le //daemon// en anglaisEt //jack//, c'est le //jack audio connection kit//, la prise jack qui connecte ​l'​audio temps réel de Linux !+Impossible actuellement de prétendre faire de la [[:MAO]] sous GNU/Linux sans installer JACK au préalable. JACK est un [[:​audio#​les_serveurs_de_sons|serveur ​de sons]]Il a l'avantage sur ses concurrents d'​être taillé pour l'​audio ​en temps réel, de permettre ​de router l'​audio de toutes les applications et matériels compatibles avec une grande souplesse et de proposer quelques fonctionnalités propres à la MAO.
  
-==== Installer Jackd ====+JACK permet de lier virtuellement les différents programmes manipulant le son entre eux, exactement comme on pourrait se servir de câbles audio avec des machines dédiées (séquenceurs,​ instruments,​ effets). \\ Cela permet d'​envisager des interactions poussées entre les différents programmes, et incite les développeurs à concevoir des applications simples, dédiées à une tâche en particulier. C'est donc un univers assez différent de ce qu'on trouve sur Mac OS ou Windows : de gros studios (DAWs) à tout faire qui ne supportent pas la cohabitation. \\ 
 +Pour plus d'​informations à ce sujet, voir le chapitre sur [[:​mao#​gestionnaires_de_session|les gestionnaires de session]].
  
-Installer jackd, c'est facile : il suffit d'​[[:​tutoriel:​comment_installer_un_paquet#​paquet_present_dans_les_depots|installer le paquet]] **[[apt://​jackd|jackd]]**.+==== Temps de latence ====
  
-**Notez bien** que le paquet porte le **d** à la fin car il existe aussi un paquet //​jack// ​sans rapport avec notre serveur //jackd//...+En [[:MAO]], on a souvent besoin de jouer le son //en temps réel//. Malheureusement ​le matériel électronique et les ordinateurs en particulier introduisent un problème qu'on appelle le //**temps de latence**// : il s'agit du délai qui apparaît entre le moment où on demande ​à la machine de reproduire ​un son (en appuyant sur une touche d'un clavier par exemple), et celui où le son sort effectivement des haut-parleurs.\\ 
 +Il est souvent court (on l'​exprime en millisecondes),​ mais si on peut négliger ce délai lorsqu'​on appuie sur une touche play, le problème devient beaucoup plus épineux pour jouer de la batterie électronique ou pour appliquer un effet sur sa voix sans s'​entendre en double.\\ 
 +Diverses [[#​optimisation|optimisations]] permettent de le réduire au maximum.
  
-Parfait, sauf que ceci ne permet pas de faire de l'​audio temps réel car, par défaut, sur un ordinateur de bureau, aucune application n'a besoin du temps réel. Or si on n'​active pas le temps réel, on aura inévitablement de brèves coupures de flux audio, et c'est moche dans une chanson !+===== Installation =====
  
 +==== jackd ====
  
 +<note important>​
 +Depuis [[:​kinetic|Kinetic 22.10]], il n'est plus nécessaire d'​installer ni de configurer JACK.
  
 +[[:​PipeWire]] fournit une couche de rétro-compatibilité. Il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​pipewire-jack ]]**.
 +</​note>​
  
 +Pour installer JACK il suffit d'​[[:​tutoriel:​comment_installer_un_paquet#​paquet_present_dans_les_depots|installer le paquet]] **[[apt>​jackd]]**.
  
 +<​note>​Le paquet porte le **d** de //daemon// à la fin, il existe aussi un paquet //jack// sans rapport avec notre serveur de son.</​note>​
  
 +==== JACK sink ====
  
 +Sur Ubuntu cependant le serveur de son installé par défaut est [[:​PulseAudio]],​ et par défaut il accapare les ressources ALSA (la carte son), ce qui empêche le démarrage de JACK. Par ailleurs il est compliqué à arrêter (il redémarre automatiquement),​ et mieux vaut ne pas le supprimer parce que les applications audio du bureau sont généralement incapables d'​utiliser JACK.\\
 +À moins d'​utiliser 2 cartes sons différentes (une pour le bureau et une pour JACK), la solution est d'​[[:​tutoriel:​comment_installer_un_paquet#​paquet_present_dans_les_depots|installer le paquet]] ​ **[[apt>​pulseaudio-module-jack|pulseaudio-module-jack]]**. Ce logiciel permet d'​utiliser PulseAudio et JACK en même temps, en créant une sortie virtuelle de PulseAudio vers JACK (au lieu d'​ALSA) lorsque JACK est lancé, ce qui permet de conserver le son du bureau en toute circonstance.\\
 +Il faut pour cela choisir la sortie //JACK sink// dans les paramètres de [[:​Pavucontrol]].
  
 +Il semblerait que pour charger automatiquement les modules jack2 (dans mon cas, non testé pour jack1) et rediriger les logiciels en cours vers jack, il faille en plus passer par qjackctl. Pour cela [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt>​jack2,​pavucontrol,​qjackctl,​pulseaudio-module-jack|jack2 pavucontrol qjackctl pulseaudio-module-jack]]**.
  
 +Cliquez sur "​Règlages"​ > Onglet "​Paramètres"​. Vérifiez que la bonne carte son de sortie est cochée dans "​Interface"​ (J'ai également mis dans l'​onglet "​Avancé"​ la valeur "​pasuspender -- jackd" dans le préfixe, mais pas sur que ça soit nécessaire). Ensuite allez dans l'​onglet "​Options",​ cochez la case "​Exécuter un script après le démarrage",​ que vous mettez à la valeur
  
-===== Activer la priorité temps réel =====+    pactl load-module module-jack-sink && pactl load-module module-jack-source && pactl set-default-sink jack_out && pacmd set-default-source jack_in && pacmd list-sink-inputs | grep index | sed 's/ *index: *//g' | xargs -I{} pacmd move-sink-input "​{}"​ jack_out
  
-Le matériel sonore utilisé en MAO possède une faible latenced'​ailleurs exploitée ​par Jack. Cette faible latence laisse moins de temps à votre processeur pour traiter des instructions quid'​habitude,​ sont effectuées sans contraintes temporelles. Jack signale ces retards de traitement par des XRUN qui se traduisent par des micro-coupures du son fort dérangeantes. +(cette ligne charge les moduleschange la carte par défautet ça redirige tous les logiciels actuellements ouverts vers la "fausse" ​carte graphique.
-Pour éviter cela, il y a la solution ​"temps réel"+
-Le noyau temps-réel a pour principe d'​assurer que les instructions effectuées par votre machine se feront en un temps bien déterminé. +
-Lorsque vous lancez Jack en priorité temps réel, vous lui garantissez que le traitement qu'il demande sera effectué dans le temps qu'il demande ;-) +
-A noter qu'un noyau temps réel ne réduit ni n'​accroît la latence, celle ci reste dépendante de votre matériel, de la couche sonore que vous utilisez, et de vos paramètres.+
  
-==== Sur les vieux systèmes (jusqu'à Edgy) ====+Ajoutez aussi "un script après l'extinction"​ en mettant dans la zone de texte :
  
-C'est un peu compliqué mais on peut ajouter un module au noyau qui permet d'​avoir une faible latence.+    pacmd suspend false
  
-Tuto pour l'​utilisation du paquet "​realtime-lsm"​ : [[:​tutoriel/​realtime]]+(ceci permet de relancer pulseaudio quand on quitte jack)
  
-==== Sur Feisty ====+Et voila ! Il ne reste plus qu'à valider les changements avec "​OK",​ et à cliquer sur "​Démarrer"​ pour que toutes les applications pulseaudio soient redirigées vers Jack. Quand vous voulez quitter jack, il vous suffit de cliquer sur "​Arrêter",​ et pulseaudio reprend la main. Magique non ! ;)
  
-La faible latence peut être donné très simplement en installant ​le noyau faible latence. Le nom du paquet est : **linux-lowlatency**.+NB: dans pavucontrol les logiciels devraient maintenant ​être passés sur le périphérique Jack sink !
  
-Attention : le [[:​depots|dépôt]] [[:​depots#​universe_et_multiverse|multiverse]] doit être activé.+==== Priorité temps réel ====
  
-<note important>​Depuis ​Lucid (10.04 LTS), le noyau temps réel linux-lowlatency n'est plus développé ​en officiel, même s'il est disponible sur des ppa personnels. Il semble que les fonctionnalités ​temps réel soient peu à peu implémentées dans le noyau génériqueFIXME</​note>​ +Depuis ​Ubuntu ​10.04, le noyau Linux générique implémente des fonctionnalité permettant d'optimiser le calcul ​en temps réel (//​realtime//​),​ ce qui permet de traiter l'​audio en outrepassant certaines règles (généralement liées ​à la sécurité) auxquelles sont soumis les autres processusCela permet ​de réduire la consommation du processeur pour un même temps de latence.
-==== A partir ​de Gutsy ====+
  
-Le temps réel peut-être donné très simplement ​en [[:​tutoriel:​comment_installer_un_paquet#​paquet_present_dans_les_depots|installant]] ​le noyau temps réel **[[apt://linux-rt|linux-rt]]**.+On peut activer cette option ​en choisissant de donner la priorité //​realtime//​ et le privilège //memlock// au groupe //audio// lors de l'​installation de JACK. La contrepartie est qu'on risque un gel complet du système si 100% de la mémoire RAM est occupé.
  
-Attention ​le [[:​depots|dépôt]] [[:​depots#​universe_et_multiverse|multiverse]] doit être activé.+Pour en profiter il faut ajouter l'​utilisateur courant au groupe //​audio// ​: 
 +<​code>​sudo gpasswd -a $USER audio</​code>​ 
 +Redémarrez ensuite votre session pour prendre en compte les changements. 
 +On pourra alors activer l'​option temps réel dans la configuration de JACK.
  
 +Certaines versions du noyau linux se proposent d'​optimiser encore les calculs en temps réel. Il faut pour cela installer et démarrer sur un [[linux-lowlatency|noyau low-latency]]. Cela se fait encore au détriment de la sécurité et de la fiabilité générale du système, mais reste une bonne idée pour une machine dédiée spécifiquement à la [[:MAO]]. ((//(en)// [[https://​www.phoronix.com/​scan.php?​page=article&​item=linux414-lowlatency-liquorix|voir ici]] pour les différences entre le noyau generic et le noyau low-latency))
  
-==== Autoriser les applications audio a utiliser le temps réel====+===== Démarrage et configuration =====
  
-Il faut modifier ​en tant qu'administrateur le fichier qui donne aux applications ​audio le droit d'​accéder au temps réel.+Il y a plusieurs moyens de gérer JACK : en ligne de commande ou via une interface graphique. L'interface graphique est généralement préférable,​ puisqu'​elle permet de visualiser les liens entre chaque ressource ​audio (matérielle ou logicielle). La ligne de commande est surtout pratique pour débugger ​le serveur.
  
-[[:​tutoriel:​comment_editer_un_fichier|Ouvrez le fichier]] **/​etc/​security/​limits.conf**.+==== Ligne de commande ====
  
-Puis ajoutez à la fin du fichier ​les lignes suivantes ​+Tout d'​abord il faut repérer ​la carte son qu'on souhaite utiliser par son identifiant,​ pour cela on liste les cartes sons disponibles ​
-<​code>​# Support Temps réel pour le groupe audio +<​code>​aplay -l</​code>​
-@audio ​ -  rtprio ​  99 +
-@audio ​ -  nice     -10 +
-@audio  ​ ​memlock ​ 250000</​code>​+
  
-Attention ​: il vous faudra redémarrer (avec le noyau temps réel) ​pour que ces changements prennent effet.+Ensuite pour lancer JACK en ligne de commande, on entre par exemple : 
 +<​code>​jackd -Rd alsa -d hw:0 -r 48000 -p 1024 -n 2</​code>​ 
 +  * L'​option //-R// indique qu'il faut utiliser les fonctionnalités ​temps réel du processeur.\\ 
 +  * La première option //-d// indique le driver à utiliser (on utilisera à peu près toujours //alsa//).\\ 
 +Les options suivantes sont des options propres à ALSA :\\ 
 +  * //-d// est le numéro de la carte à utiliser, tel que retourné par //aplay -l// : //hw:0//, //​hw:​1// ​...\\ 
 +  * //-r// est la fréquence d'​échantillonnage (//sample rate//) à utiliser, en hertz.\\ 
 +  * //-p// est la période, le nombre d'​échantillons que le processeur doit traiter à chaque calcul (//​period//​)\\ 
 +  * //-n// est le nombre de périodes à stocker dans le tampon de donnée (//​buffer//​)\\
  
-Vous pourrez trouver plus d'​informations sur la configuration de PAM sur le site de [[http://​www.linuxmao.org/​tikiwiki/​tiki-index.php?​page=acc%C3%A8s+temps+r%C3%A9el+pour+les+applications#Configuration_de_PAM|linuxmao]]+Pour le réglage ​de ces 3 derniers paramètres,​ consultez la section ​[[#optimisation]].
  
-===== Lancer le serveur Jack =====+==== Interface graphique ​====
  
 +Il existe plusieurs interfaces graphiques qui peuvent être d'une grande utilité que ce soit pour la configuration ou l'​utilisation de JACK : **[[:​QjackCtl]]** est la plus courante, on trouve aussi **Cadence**,​ **Catia** ou **Claudia** (qui sont des logiciels de la distribution **[[:​KXStudio]]**).
  
 +Pour [[:​QjackCtl]],​ une fois lancé, il faut cliquer sur le bouton //​Réglages//​ pour accéder à l'​interface qui règle les paramètres de démarrage du serveur jack (onglets //​Paramètres//​ et //​Avancé//​). Dans l'​onglet //Divers//, on a la possibilité de demander à QjackCtl de lancer le serveur automatiquement quand il démarre. On peut ensuite cliquer le bouton //​Démarrer//​ et apprécier d'​éventuels messages d'​erreur dans la fenêtre **Messages** (bouton du même nom).
  
-==== Poussez-vousj'​arrive ! ==== +En plus de configurer JACKces interfaces permettent ​en général ​de tirer des câbles audio virtuels entre les différentes applications ​(et avec le matériel), et parfois aussi de gérer des [[:mao#​jack_et_les_gestionnaires_de_session|sessions]], ce qui est une autre fonctionnalité importante ​de JACK.
-Tout est en place pour lancer le serveur jack. Sauf qu'il faut une carte son disponible, ce qui n'est pas forcément le cas si vous êtes dans Gnome ou KDE. En effet, le serveur ​de son respectif de chaque environnement ​(//esd//, //arts// ou //​pulseaudio//​a tendance à accaparer la carte son, de sorte qu'on ne peut plus l'​utiliser pour Jack... Quatre solutions s'​offrent alors : +
-  - tuer le serveur son de l'​environnement,​ à l'aide d'un **killall esd** ou d'un **killall arts** ou encore d'un **killall pulseaudio** +
-  - configurer le serveur Jack afin qu'il tue le processus esdarts ou pulseaudio au démarrage ​et qu'il tue Jackd à la sortie {{  :​reglages_jack_audio_connection_kit.png?​350x200|2. script ​de démarrage: killall pulseaudio / script après extinction: killall jackd}} +
-  - utiliser un environnement sans serveur de son ! ([[:bureau_xfce|XFCE]] semble être le plus adapté) +
-  - Lancer KControl si on est sous KDE (ou Système > Préférences > Son sur GNOME) pour y "​éteindre"​ son sytème ​de sons (solution adaptée a ceux qui utiliseront modérément les applications pour lesquelles jackd est nécessaireIl faudra juste penser à le remettre en fonctionnement à la fin). +
-  +
-<​note>​(Lord BlackFox:) Sous Gnome, avec Karmic Koala, il semble qu'il faille aussi tuer l'​applet gnome-volume-manager avec **killall gnome-volume-manager-applet** (celui-ci semble en effet vouloir régulièrement relancer pulseaudio)+
  
-(Amarokk) : Pulseaudio n'est plus relancé via gnome-volume-manager-applet (au moins avec Lucid et Natty). Pour empêcher son redémarrage intempestif,​ éditez le fichier /​etc/​pulse/​client.conf et ajoutez-y "​autospawn ​no"</​note>​+==== Optimisation ====
  
-Chaque solution a ses avantages et ses inconvénients. Bien sûrsi vous avez deux cartes son, vous pouvez presque oublier ​le problème : chaque serveur ​de son sa carte ! +Pour diminuer le temps de latenceil faut modifier certains paramètres de JACK : le //nombre d'​échantillons par période// et le //​nombre ​de périodes par tampon//.\\ 
-Dans le premier casl'​environnement n'​émet ​plus de sondonc les applications multimédia non plus ! Cependant ​il existe un grand nombre de lecteurs audio et vidéo qui peuvent rediriger leur sortie vers jack une fois les bons paquets installés (chercher les paquets en "​-jack"​ dans Synaptic), il ne faut juste pas passer son temps à changer ​de serveur de son... Dans le deuxième cas, tout marche, à tel point que si on change de bureau virtuel, ça émet un son en plein milieu du morceau qu'on enregistre !!! Dans le troisième casil faut prévoir de lancer automatiquement jack à l'ouverture ​de session afin que les applications multimédia (lecteurs audio par exemple) puissent encore servir à quelque chose !+Plus ces nombres sont petits, plus faible est la latencemais plus le processeur est sollicité. Si il est sollicité à 100% le son décroche ​et on entend des sortes ​de crépitementsC'est ce qu'on appelle des //​[[http://​linuxmao.org/​tiki-index.php?​page=FAQ%20xrun&​structure=Accueil%20Systeme&​redirectpage=FAQ%20xrun|XRuns]]//​.\\ 
 +On peut également diminuer la latence ​en augmentant la //​fréquence d'échantillonnage//​. Cela influe aussi (théoriquement) sur la qualité audio, mais 44100Hz ou 48000Hz sont généralement suffisants, l'oreille n'​entend pas la différence avec 96000Hz. Ça peut être utile de monter au dessus pour un travail de mastering ​par ex.
  
-Vous l'avez comprisj'ai une carte audio haut de gamme en plus de celle intégrée à la carte mère : l'environnement joue sur la carte mère, jack sur la carte audio digne de ce nom !+Pour diminuer la consommation du processeur on peut aussi activer ​l'[[#​priorite_temps_reel|option temps réel]] ou évidemment réduire la consommation processeur générale de son système, en limitant ​l'execution d'​éventuels processus inutiles en arrière-plan.
  
-Pour être exhaustifsignalons que l'on peut configurer le système audio plus finement comme expliqué à la page [[http://wiki.ubuntu-fr.org/installation/son?​s=esd#​en_pratique_optimiser_le_son|Installation du son]]. Cependant l'​objectif de cet article est d'​aller le plus directement au but afin de vite découvrir les nombreuses possibilités de Linux en matière de création musicale, on se contentera donc ici des solutions simples évoquées.+<note important>​Pour obtenir les meilleures performances avec une carte son connectée **en USB**utilisez toujours une fréquence de 48000Hz, 3 périodes par tampon, et un nombre d'​échantillons par période qui soit une puissance de 2 (16, 32, 64, 128 etc.) ou l'une des combinaisons en gras dans [[https://wiki.linuxaudio.org/wiki/list_of_jack_frame_period_settings_ideal_for_usb_interface|cette liste]].</​note>​
  
-Remarque : les deux commandes suivantes permettent de savoir quels processus utilisent la (les) carte(s) son +===== Utilisation =====
-<​code>​lsof +D /dev/dsp  +
-lsof +D /​dev/​snd</​code>​ +
-respectivement pour les applications OSS et pour les applications ALSA. Dans le cas de plusieurs cartes son, il y aura aussi un /dev/dsp1, un /dev/dsp2 etc.+
  
 +Bienvenue dans la [[:MAO]] sous Linux !
  
 +Par défaut lorsqu'​on ouvre une application qui utilise JACK, JACK connecte automatiquement sa sortie audio principale en direction de la sortie de la carte son, ce qui permet de l'​entendre.\\
 +Mais lorsqu'​on a lancé plusieurs applications audio, on peut connecter leurs flux audio et [[:MIDI]] dans n'​importe quel sens : machin enregistre truc, ressort dans bidule etc. On dit alors qu'on //route// le signal ou qu'on créé un //patch//. Une [[#​interface graphique]] s'​avère alors bien utile.\\
 +Avec QjackCtl par ex. en cliquant sur le bouton //​Connecter//,​ on affiche l'​interface qui permet de tirer des câbles audio ou [[:MIDI]] entre les différents ports des applications ou des périphériques audio ou MIDI.
  
-==== Lancement ==== +JACK permet en plus de gérer [[:​mao#​jack_et_les_gestionnaires_de_session|des sessions]], ce qui simplifie la gestion ​et le chargement d'​un ​environnement créé (un patch) ​et de tous ses logiciels ​(et leurs sessions respectives).
-A nouveau il y a plusieurs possibilités. La classique ligne de commande ​et l'interface graphique. En ligne de commande, ça donne un truc du genre : +
-<​code>​jackd -sRp 70 -d alsa -d hw:1 -r 44100 -H -z s &</​code>​ +
-Ce qui lance le serveur jack en temp réel priorité 70, sur le pilote ALSA et la **deuxième** carte son, en 44.1kHz avec un //​dithering// ​de type //​shaped// ​(sert à diminuer le bruit de quantification). Consulter l'aide de jack pour savoir quelles options utiliser. Notez bien qu'il n'y a pas de //sudo// maintenant.+
  
-Toute la question, lorsqu'​on a plusieurs cartes son, est de savoir quel est le bon numéro de carte. Pour cela, un petit : +===== Problèmes courants ​ =====
-<​code>​aplay -l</​code>​ +
-dit tout sur les cartes son disponibles. Pour info //aplaymidi -l// fait la même chose avec les périphériques MIDI.+
  
-**En mode graphique**,​ on peut par exemple utiliser //​qjackctl//​ du paquet du même nom dans l'​archive //​universe//​. Une fois lancé, il faut cliquer sur le bouton "​Setup"​ pour accéder à l'​interface qui règle les paramètres de démarrage du serveur ​jack (onglet "​Settings"​). Dans l'​onglet "​Misc",​ on a la possibilité de demander à Qjackctl de lancer le serveur automatiquement quand il démarre. On peut ensuite cliquer le bouton "​Start"​ et apprécier d'​éventuels messages d'​erreur dans la fenêtre "​Messages"​ (bouton du même nom).+==== le serveur ​JACK ne démarre ​pas ====
  
-Pour vérifier que ça sort du sonun petit LA 440 +=== Ressources (carte ​son) indisponibles === 
-<​code>​ecasound -f:​32,​1,​44100 -i null -o jack_alsa,<​myport>​ -b:1024 -el:​sine_fcac,​440,​1</​code>​ +Il est possible qu'un processus utilise déjà votre carte son. Cette commande permet de voir de quel processus il pourrait s'​agir ​
-On n'​oubliera pas de remplacer <​myport>​ par le numéro d'une sortie audio ! (par exemple hw:0)Bien sûr il faut au préalable installer le paquet //​ecasound//​.+<​code>​lsof +D /dev/snd</​code>​
  
- +=== Temps réel indisponible ​=== 
- +Le temps réel n'​est ​peut-être ​pas correctement configuré. ​Testez JACK sans priorité temps réel avec une commande ​de ce type 
- +<​code>​jackd -d alsa -d hw:0 -r 44100</​code>​ 
-==== Ça marche pas ! ==== +Si c'est bon, c'est que le temps réel n'est pas disponible. ​Vérifiez que vous appartenez bien au groupe ​//​audi//​o ​:
-Aïe, jack vous insulte en disant que le pilote ALSA n'a pas pu être chargé... Certainement que le temps réel n'est pas correctement configuré. ​Tester jack sans priorité temps réel pour voir, avec cette commande : +
-<​code>​jackd ​-s -d alsa -d hw:0 -r 44100 -H -z s &</​code>​ +
-Si c'est bon, c'est que le temps réel n'est pas disponible. ​Il faut alors vérifier les points suivants : +
-==Le module realtime-lsm est-il chargé ?== +
-Pour le savoir : +
-<​code>​lsmod | grep realtime</​code>​ +
-doit retourner les modules "​realtime"​ et "​commoncap"​. +
-== Appartiens-je ​au groupe ​audio ? == +
-Pour le savoir ​:+
 <​code>​groups</​code>​ <​code>​groups</​code>​
-doit retourner une liste contenant "​audio"​. 
-== Le module realtime-lsm est-il correctement configuré ? == 
-Pour le savoir : 
-<​code>​cat /​etc/​default/​realtime | grep 29</​code>​ 
-doit retourner //​PARAMETERS="​gid=29"//​ + éventuellement d'​autres paramètres. S'il y a "​any",​ il faut qu'il valle 1, sinon ça complique inutilement la configuration (il faut définir une à une les applications qui ont droit au temps réel...). 
-== Même sans le temps réel, ça marche pas ! == 
-N'y aurait-il pas encore un //esd// ou un //arts// qui occuperait la carte ? Pour le savoir : 
-<​code>​ps -A | grep esd 
-ps -A | grep artsd</​code>​ 
-doivent toutes les deux retourner une chaîne vide. Si ce n'est pas le cas et que vous n'avez qu'une carte son, ne cherchez pas plus loin ! 
-== Je n'ai pas de ports MIDI ! == 
-Il faut alors vérifier que les modules MIDI du noyau sont chargés : 
-<​code>​lsmod | grep midi</​code>​ 
-S'il n'y a pas //​snd_seq_midi//,​ ça va effectivement être dur de faire tourner un séquenceur MIDI... Dans ce cas, il faut forcer le noyau à charger les modules au démarrage en éditant le fichier /​etc/​modules et en ajoutant la ligne suivante : 
-<​code>​snd_seq_midi</​code>​ 
-Et pour éviter de redémarrer la machine tout de suite (après tout on n'est pas sous Windows !), il suffit d'​entrer la commande suivante : 
-<​code>​sudo modprobe snd_seq_midi</​code>​ 
- 
- 
-===== Et après ? ===== 
-Bienvenue dans la MAO sous Linux ! 
- 
-Lorsqu'​on a lancé plusieurs applications audio, il faut ensuite connecter leurs flux audio et MIDI : machin enregistre truc, ressort dans bidule etc. Là encore qjackctl s'​avère de bon secours, bien qu'il ne soit pas parfait pour cette opération. En cliquant sur son bouton "​Connect",​ on affiche l'​interface qui permet de tirer des câbles audio ou MIDI entre les différents ports des applications ou des périphériques audio ou MIDI. 
- 
-==== Quelles applications utiliser ? ==== 
-Fouillez dans la section Multimedia de Synaptic, il y a de quoi faire. Aller, une petite sélection de logiciels. 
-  * l'​incontournable séquenceur audio / MIDI : Rosegarden 
-  * le multipiste numérique (forcément !) : Ardour 
-  * un joueur de SoundFonts : Qsynth 
-  * la boîte à rythmes : Hydrogen 
-  * un synthé virtuel : Zynaddsubfx 
-  * un effet de guitare (ou autre) temps réel : Creox, rakarrack, Guitarix. 
-  * l'​outil de mastering : Jamin 
-  * le rack d'​effets pour jack : Jack-rack 
-  * le vu-mètre : Meterbridge 
-  * l'​enregistreur de jack qui ne rate jamais le début : TimeMachine 
-Citons enfin le séquenceur LMMS qui arrive fraîchement de Debian par les //​backports//​ Ubuntu Breezy et le séquenceur Wired basé sur //​portaudio//​. Il paraît que la concurrence stimule l'​innovation,​ ça promet... 
-Enfin nombreux sont les éditeurs de sons disponibles et qui permettront par exemple de convertir un fichier 32 bits stéréo en "​wav"​ 16 bits / 44.1 kHz puis en "​mp3"​ ou en "​ogg",​ plus pratiques pour la diffusion. 
- 
-==== Pour aller plus loin... ==== 
-== Optimiser le système == 
-On peut chercher à optimiser son système afin de libérer un maximum de ressources et donc faire tourner un maximum d'​applications audio en même temps. Il faut bien dire que les effets du type réverbération ou encore les lecteurs d'​échantillons sont particulièrement gourmands en ressources. Les pistes à suivre : 
-  * désactiver voire désinstaller les services inutiles, il y a pas mal de littérature sur le sujet sur le net (chez [[http://​www.lea-linux.org/​|Léa]] par exemple) 
-  * désactiver le chargement des modules OSS car on va plutôt utiliser le système ALSA (voir plus bas) 
-  * utiliser un environnement graphique plus léger : abandonner Gnome ou KDE pour Fluxbox, Enlightenment,​ etc., voire XFce 
-  * accélérer les accès au disque dur 
-  * n'​oubliez pas que la mémoire RAM ne coûte plus grand chose et méfiez-vous des tâches de maintenance du système qui démarrent environ 10 minutes après l'​allumage du PC ! 
-Pour le deuxième point, la méthode consiste à éliminer les paquets en "​-oss"​ dans Synaptic, installer ceux en "​-alsa"​ et éventuellement en "​-jack"​ si ce n'est déjà fait, puis à éditer les fichiers /​etc/​modprobe.d/​alsa-base et /​etc/​modutils/​alsa-base afin d'​éliminer le chargement des modules OSS (dont le nom est en "​-oss"​ !). Il ne faut pas ensuite oublier d'​exécuter la commande "​update-modules"​. 
- 
-Pour régler son système au poil, on trouvera pas mal d'​informations sur les sites de Jack et de Planet CCRMA listés au chapitre suivant - bien que le second soit focalisé sur Fedora ;-) . 
- 
-== Utiliser DSSI, le VSTi de Linux == 
-[[http://​dssi.souceforge.net/​|DSSI]] est une architecture qui permet de créer des plugins de synthétiseurs virtuels exactement comme les VSTi de Steinberg. Il existe d'​ailleurs un plugin qui permet d'​utiliser un VSTi dans [[http://​www.winehq.com/​|Wine]] par DSSI... Comble de bonheur, le séquenceur Rosegarden supporte DSSI. 
-On accède dans Rosegarden à la liste des plugins disponible dans le menu Composition -> Studio -> Gérer les plugins. Le malheur, c'est que DSSI n'est pas supporté par Ubuntu, ni par Debian d'​ailleurs (seule Demudi semble s'y être atelée). Donc on ne voit rien dans la liste des plugins disponibles... 
-Il y a deux raisons à cela : 
-  - il n'y a pas de plugin DSSI installé ni installable ! 
-  - Rosegarden ne compile le support DSSI que si DSSI est installé ! 
-Ainsi pour profiter de DSSI, il faut tout compiler, à la main... Pour les courageux voici donc ce que j'ai réussi à compiler sur Breezy AMD64 et les bibliothèques requises : 
-  * DSSI-0.9.1 -> ladspa-sdk, libasound2-dev 
-  * fluidsynth-dssi-0.9.1 -> liblo-dev, libfluidsynth-dev,​ ladcca-dev 
-  * sineshaper-0.4.2 -> ligtkmm-2.4-dev,​ libglademm-2.4-dev 
-  * whysynth-20051005 
-  * xsynth-dssi-0.9.0 
-Par contre hexter-0.5.8 a échoué. Pour Rosegarden, le mieux puisqu'​il existe un paquet Ubuntu est de demander à //apt-get// de le recompiler. Pour cela il faut activer les dépôts de paquets source dans /​etc/​apt/​source.list (donc enlever le # devant chaque ligne débuttant par //​deb-src//​). Ensuite, il faut installer quelques paquets manquant : automake-1.7,​ liblrdf0-dev et dpatch. Enfin la recompilation de Rosegarden se fait en 2 commandes et pas mal de patience (la compilation est longue). Pour résumer : 
-<​code>​sudo nano /​etc/​apt/​source.list 
-  <​décommenter les lignes qu'il faut et sauver le fichier !> 
-sudo apt-get install automake-1.7 liblrdf0-dev dpatch 
-sudo apt-get -b source rosegarden4 
-sudo dpkg -i rosegarden4_1.0-1ubuntu3_<​arch>​.deb</​code>​ 
-Bon je dois avouer que mon Rosegarden ainsi recompilé plante (Ubuntu/​Breezy AMD64) alors que ça marche sous Debian Sarge x86... Peut-être que d'​autres seront plus doués ? 
- 
  
 +=== Mauvaise carte son ===
 +Il arrive couramment qu'on se trompe lors de la configuration de JACK, ou qu'on change la configuration matérielle par ex. en branchant un écran HDMI (ce qui créé une nouvelle sortie audio).\\
 +Vérifiez le numéro de votre carte son avec :
 +<​code>​aplay -l</​code>​
  
 +==== Coupures du son et crépitements ====
  
 +Le processeur sature probablement. Augmentez les valeurs échantillons et périodes, voir [[#​optimisation]].
  
 ===== Liens utiles ===== ===== Liens utiles =====
-  * [[:Ubuntu Studio]] pour transformer son Ubuntu en station de travail musicale avec un vrai noyau temps réel. 
-  * [[http://​gnuzik.tuxfamily.org/​index.php/​cms/​39/​Bienvenue|StudioLibre.org]] - la première communauté MAO-iste francophone sous GNU ( Linux & autres ) 
-  * [[http://​www.linuxmao.org/​|MAO Libre]], le wiki des MAO-istes enfin libres ! 
-  * http://​jackit.sourceforge.net/​ 
-  * http://​www.alsa-project.org/​ 
-  * http://​qjackctl.sourceforge.net/​ 
-  * http://​www.linux-sound.org/​ 
-  * http://​www.linuxmusician.com/​ 
-  * [[http://​www.geocities.com/​dn_liitto/​english/​VST-on-FC3-Planet-CCRMA-HOWTO.html?​200515?​200526|VST on FC3 Planet CCRMA HOWTO]] : utiliser des plugins VST (Cubase/​Windows) dans Linux Fedora Core 3 - ne soyons pas sectaires ! 
-  * [[http://​ccrma.stanford.edu/​planetccrma/​software/​tunesystem.html|Tuning the system]] sur PlanetCCRMA pour connaître toutes les subtilités et libérer toute la puissance de sa machine... 
-  * http://​willem.engen.nl/​debian/​ Dépôt de paquets Debian pour la MAO (DSSI et quelques synthés) 
-  * http://​mdesigner.free.fr Les logiciels libres audio et visuels 
  
 +  * http://​linuxmao.org/​Jack
 +  * //en// https://​jackaudio.org/​
 +  * //en// https://​kx.studio/​Documentation:​Manual:​jack_configuration
 +  * //en// http://​qjackctl.sourceforge.net/​
  
 ---- ----
  
-//Contributeur ​: [[utilisateurs:​jmp]] [[utilisateurs:​omega02]] [[utilisateurs:​sonal]].// ​+//Contributeurs ​: [[:​utilisateurs:​krodelabestiole]],​ [[:utilisateurs:​jmp]][[:utilisateurs:​omega02]][[:utilisateurs:​sonal]], [[:​utilisateurs:​aurelien88]].//
  • jackd.1332365961.txt.gz
  • Dernière modification: Le 21/03/2012, 22:39
  • par aurelien88