Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
applications:jackd [Le 24/12/2006, 22:57] 82.67.204.12 |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Jack - Jack Audio Connection Kit ====== | ||
- | Rédigé par [[utilisateurs:jmp]] | ||
- | |||
- | Il existe dans Ubuntu de nombreuses applications dédiées à la création musicale. Il 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'instrument, racks 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... | ||
- | |||
- | Ceux qui pensaient encore avoir besoin de leur Windows (ou de leur Mac ?) vont peut-être réviser leur position : on peut faire l'équivalent d'une bonne partie de Cubase sous Linux, certes avec un niveau d'intégration des divers composant moins bon, mais ce n'est qu'une question de temps. | ||
- | |||
- | Attention : on suppose dans cette page que vous avez correctement configuré votre (vos) carte(s) son avec l'ALSA (voir la page [[installation:son]]). | ||
- | |||
- | Pour la culture, il faut savoir que la distribution Linux [[http://www.agnula.org/|Agnula Demudi]] est spécialisée dans le domaine de la création audio / vidéo et que cette distribution, comme (K)Ubuntu, est issue de la distribution [[http://www.fr.debian.org/|Debian]]. Ainsi, les paquets de facture professionnelle que l'on trouve dans Demudi (on peut télécharger Demudi sur le serveur de [[http://www.agnula.org/project/agnula_who/ircam/|l'IRCAM]]...) sont aussi dans Ubuntu. Reste que dans Demudi, le système est configuré d'origine pour l'audio temps réel, alors que Ubuntu est configurée pour le bureau par défaut. Mais Ubuntu étant très polyvalente - tout comme son géniteur Debian, il "suffit" d'installer les paquets nécessaires et de configurer ce qu'il faut : nous y voilà ! | ||
- | |||
- | ===== Jackd ===== | ||
- | |||
- | ==== Présentation ==== | ||
- | Impossible actuellement de prétendre faire de la MAO (musique assistée par ordinateur) sans installer //jackd// au préalable. Jackd est un des (trop nombreux) serveurs de sons disponibles dans Linux, il y a de brèves explications sur cette page du wiki : [[http://wiki.ubuntu-fr.org/installation/son?s=jackd#les_serveurs_de_sons_esd_esound_arts_jackd|Les serveurs de sons]]. Néanmoins jackd a l'avantage sur ses concurrents d'être taillé pour l'audio temps réel et, surtout, d'être utilisé par presque toutes les applications plus ou moins orientées MAO. | ||
- | |||
- | Ah oui, //jack**d**//, c'est le serveur Jack, le //daemon// en anglais. Et //jack//, c'est le //jack audio connection kit//, la prise jack qui connecte l'audio temps réel de Linux ! | ||
- | |||
- | ==== Installer Jackd ==== | ||
- | |||
- | Installer jackd, c'est facile : le paquet fait partie de l'archive Ubuntu //universe//, donc quasiment la base Ubuntu. Ceux qui utilisent Synaptic savent comment faire, pour les autres, en ligne de commande ça donne : | ||
- | <code>sudo apt-get install jackd</code> | ||
- | (qui a dit que Linux c'était compliqué ? - euh attendez quand même la suite avant de vous réjouir...) | ||
- | |||
- | **Notez bien** que le paquet porte le **d** à la fin car il existe aussi un paquet //jack// sans rapport avec notre serveur //jackd//... | ||
- | |||
- | 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 ! | ||
- | ===== Activer la priorité temps réel ===== | ||
- | ==== Installation des paquets ==== | ||
- | C'est là qu'intervient le module du noyau appelé //realtime-lsm//, lui aussi dans l'archive //universe//. Celui-ci permet de donner la priorité temps réel à certaines applications. Rassurez-vous tout de suite, ce n'est pas si difficile de donner cette priorité à la MAO, c'est totalement transparent une fois le module compilé ;-) et le système configuré. Pour installer les sources du module en ligne de commande : | ||
- | <code>sudo apt-get install realtime-lsm realtime-lsm-source</code> | ||
- | Ceci nécessite quelques explications : | ||
- | * //realtime-lsm-source// est le paquet qui contient le code source du module en question, il faudra bien sûr compiler ce module (voir plus bas) | ||
- | * //realtime-lsm// est un paquet qui contient des scripts chargeant le module au démarrage, par exemple en attribuant les droits temps réel aux utilisateurs du groupe //audio// | ||
- | Lorsque //realtime-lsm// est configuré pour la première fois, il demande s'il faut attribuer les droits temps réel aux utilisateurs du groupe //audio//. Il faut surtout activer cette fonctionnalité car c'est le seul moyen pratique d'utiliser la priorité temps réel sans être //root// ou assimilé. On n'oubliera pas ensuite de se mettre dans ce groupe ! | ||
- | |||
- | __Pour info__ le module temps réel n'est généralement pas disponible par défaut dans les Linux car il pose des problèmes de sécurité de la machine. En effet, si une application malveillante obtenait la priorité temps réel, elle pourrait par exemple empêcher les autres de fonctionner en s'emparant de la puissance de calcul de la machine. D'ailleurs LSM dans //realtime-lsm// signifie Linux Security Module. On est donc maintenant tous convaincus du bien-fondé du groupe audio... | ||
- | |||
- | ==== Compilation du module ==== | ||
- | Debian étant pensé pour être pratique à administrer, Ubuntu hérite de son fabuleux outil de compilation de modules du noyau : le //module-assistant// issu du paquet éponyme et installé automatiquement avec le paquet //realtime-lsm//. Ceux qui pensaient aligner les lignes de commande vont être déçus, ça se résume à : | ||
- | <code>sudo module-assistant</code> | ||
- | Apparaît alors une interface en mode console. Il faut en gros exécuter les entrées du menu dans l'ordre où elles apparaissent (comme c'est bien conçu !) : | ||
- | - **Update** pour être sûr d'être à jour, ça ne mange pas de pain... | ||
- | - **Prepare** qui prépare la compilation d'un module, par exemple en téléchargeant les entêtes du noyau - ah oui on n'y avait pas pensé à ceux-là ! | ||
- | - **Select** pour choisir le module à compiler dans la liste des modules compilables (il doit y avoir //realtime-lsm// !!!), une fois un module choisi, on entre dans un sous-menu dans lequel on choisit à nouveau dans l'ordre affiché... | ||
- | - **Get** va vérifier qu'on a bien les sources du module à compiler | ||
- | - **Build** compile le module, il faut répondre //yes// à son message disant que peut-être qu'on n'a pas les sources installés et qu'il faut confirmer | ||
- | - **Install** si on n'a pas déjà cliqué //yes// lorsqu'il demande s'il faut installer le module à la fin de la compilation | ||
- | - **Back**, **Cancel** et **Exit** pour quitter le //module-assistant// | ||
- | Et voilà ! On doit maintenant pouvoir charger le module par la commande suivante : | ||
- | <code>sudo /etc/init.d/realtime start</code> | ||
- | Pour être précis, cette commande lance le service installé par le paquet //realtime-lsm//, lequel charge le module du même nom avec la configuration qui va bien. Le service sera par la suite lancé automatiquement au démarrage de la machine, il s'agit donc juste d'éviter de redémarrer dans ce cas. | ||
- | |||
- | **Remarque** : il faut recompiler le module à chaque mise à jour du noyau. | ||
- | |||
- | **remarque** : le système peut vous demander d'installer des paquets d'en-têtes du noyau (linux-headers). Dans ce cas, vérifiez que tous vos dépôts sont actifs, recharchez-les au besoin et entrez la commande : | ||
- | <code>sudo apt-get install linux-headers-`uname -r`</code> | ||
- | |||
- | ===== Lancer le serveur Jack ===== | ||
- | ==== Poussez-vous, j'arrive ! ==== | ||
- | 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// et //arts//) a tendance à s'accaparer la carte son, de sorte qu'on ne peut plus l'utiliser pour jack... Quatre solutions s'offrent alors : | ||
- | - tuer le serveur de l'environnement, à l'aide d'un **killall esd** ou d'un **killall arts** | ||
- | - configurer le serveur de l'environnement pour qu'il passe par jack (possible au moins dans KDE) | ||
- | - utiliser un environnement sans serveur de son ! (XFce ?) | ||
- | - Lancer KControl si on est sous KDE pour y "éteindre" son sytème de sons (solutions adaptée a ceux qui utiliserons modérément les applications pour lesquelles jackd est nécessaire. Il faudra juste penser à le remettre en fonctionnement à la fin). | ||
- | |||
- | Chaque solution a ses avantages et ses incovénients. Bien sûr, si vous avez deux cartes sons, vous pouvez presque oublier le problème : chaque serveur de son sa carte ! | ||
- | Dans le premier cas, l'environnement n'émet plus de son, donc les applications multimedia 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 cas, il faut prévoir de lancer automatiquement jack à l'ouverture de session afin que les applications multimedia (lecteurs audio par exemple) puissent encore servir à quelque chose ! | ||
- | |||
- | Vous l'avez compris, j'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 être exhaustif, signalons 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. | ||
- | |||
- | Remarque : les deux commandes suivantes permettent de savoir quels processus utilisent la (les) carte(s) son | ||
- | <code>sudo lsof /dev/dsp | ||
- | sudo lsof /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. | ||
- | |||
- | ==== Lancement ==== | ||
- | 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 driver 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 : | ||
- | <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). | ||
- | |||
- | Pour vérifier que ça sort du son, un petit LA 440 : | ||
- | <code>ecasound -f:32,1,44100 -i null -o jack_alsa,<myport> -b:1024 -el:sine_fcac,440,1</code> | ||
- | On n'oubliera pas de remplacer <myport> par le numéro d'une sortie audio ! Bien sûr il faut au préalable installer le paquet //ecasound//. | ||
- | |||
- | ==== Ça marche pas ! ==== | ||
- | Aïe, jack vous insulte en disant que le driver 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> | ||
- | 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 Qjackctrl 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 | ||
- | * 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 ? | ||
- | |||
- | |||
- | ===== Liens utiles ===== | ||
- | * [[http://ubuntustudio.com/wiki/index.php/Welcome%2C_Musicians%21|Ubuntu Studio]] pour transformer son Ubuntu en station de travail musicale avec un vrai noyau temp réel. | ||
- | * [[http://www.studiolibre.org]] - la premiere 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/ Depot de paquets Debian pour la MAO (DSSI et quelques synthés) | ||
- | * http://mdesigner.free.fr Les logiciels libres audio et visuels |