Cet article reprend les informations fournies par khz, pour utiliser les noyaux temps réel que makke compile régulièrement pour la distribution SIDUX. [1]
Cette solution est une alternative à l’installation des distributions spécifiquement dédiées à la MAO, telle qu’on peut les voir décrites sur le site Linux-mao, souvent issues d’Ubuntu.
Par défaut GNU/linux est un système qui plutôt que conçu pour exécuter les tâches immédiatement, l’est pour les réaliser avec un maximum de fiabilité même lorsqu’on lui en demande des centaines (ordonnancement multi-tâches). Dans ces conditions il est décevant de tenter de faire la musique avec un noyau linux ordinaire. La latence de réponse du système est souvent telle qu’elle décourage à faire de la Mao avec son pingouin.
Mais c’est juste par manque d’information qu’il faudrait y renoncer car les développeurs ont bien entendu prévu qu’on puisse utiliser GNU/linux pour ce genre de travail. La preuve en est le recours à ce système depuis des années par l’IRCAM [2]. Donc non seulement installer un noyau temps réél vous permetta-t-il d’utiliser les nombreux séquenceurs, mixeurs et synthétiseurs libres existant pour cette plateforme, mais celà vous permettra aussi d’accéder à des outils et langages de très haut niveau pour composer et explorer l’univers sonore.
Sidux vous le permet. Nous expliquons ici rapidement comment y installer un noyau temps réel, précisant tout de même qu’il faille pour l’exploiter pleinement, connaître aussi la manipulation pour éventuellement remplacer un logiciel sid par sa version testing, car dans le domaine musical, il est très fréquent que des applications en développement sid, ne fonctionnent pas de manière suffisamment stable pour être garanties sans bug, notamment lors de mises-à-jour. Ce document sera donc conçu en trois parties :
installer le noyau temps réel et effectuer quelques réglages liminaires (informations extraites du document "linux audiostation" du wiki sidux)
quelques suggestions de paquets logiciels pour le son
rétrograder un logiciel récalcitrant dans sidux
1. Installation du temps réel (rt)
1.1 Le noyau proprement dit
La source anglophone de ce document est accessible sur le wiki de sidux
Ingo Molnar est la personne qui actuellement travaille au patch temps réel. Beaucoup de son travail est déjà intégré dans le noyau officiel de sidux. Mais tout ça n’en fait pas un bon noyau temps-réel, donc patcher est toujours nécessaire.
Plus d’info ici (en) : http://kernel.org/pub/linux/kernel/projects/rt/
Vous pouvez directement télécharger les noyaux temps-réel ici : http://w3you.com/makke/kernel/
Sur ce site Internet vous trouverez les derniers noyaux et patches temps-réel basés sur la version actuelle de slh-kernel. (Un grand merci à makke)
Pour plus de convivialité vous pouvez également installer votre noyau via APT en ajoutant le miroir de makke à vos sources. Dans une console administrateur, entrez :
echo > deb http://w3you.com/makke/kernel/experimental/ ./ /etc/apt/sources.list.d/makke-rt.listEnsuite, toujours dans une console root ajoutez les clés de makke pour ne pas voir de message de non-authentification lors de vos mises-à-jour et installations de paquets via apt-get :
apt-get update && apt-get install makke-keyringDès lors via la commande utilisateur apt-cache search vous devriez pouvoir afficher une information dans ce style, répertoriant les noyaux temps réels de makke disponibles :
$ apt-cache search linux.*makke-rt
linux-headers-2.6.26-6.makke-rt11.1-common - Common header files for Linux 2.6.26-6.makke-rt11.1
linux-support-2.6.26-6.makke-rt11.1 - Support files for Linux 2.6.26
linux-headers-2.6.26-6.makke-rt11.1-all-i386 - All header files for Linux 2.6.26
linux-headers-2.6.26-6.makke-rt11.1-sidux-686 - Header files for Linux 2.6.26-6.makke-rt11.1-sidux-686
linux-image-2.6.26-6.makke-rt11.1-sidux-686 - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
linux-headers-2.6.26-6.makke-rt11.1-all - All header files for Linux 2.6.26
Choisissez alors l’image de noyau et les entêtes correspondant au plus proche du noyau que vous utilisez dans votre installation actuelle de sidux (la commande console infobash vous fournit directement cette info). Il s’installera automatiquement avec apt-get :
L’entrée qui va bien sera créée pour vous dans GRUB mais notez qu’elle y sera devenue la première. Donc si vous ne voulez pas systématiquement démarrer avec un noyau temps réel, vous aurez intérêt à éditer vos préférences de démarrage par défaut dans GRUB en conséquence.
Dans son article du wiki sidux, khz propose en complément des modifications de configuration substantielles pour exploiter vraiment le noyau temps réel, celles-ci suggérant implicitement que si vous voudriez utiliser l’ordinateur de manière vraiment polyvalente avec sidux, une installation strictement strictement dédiée à la MAO, et non le partage d’une unique installation serait le plus sage du fait des modifications qui suivent.
1.2. Paramétrages des limites de tolérance système
Pour vraiment exploiter le noyaux temps réel en tant qu’utilisateur il faut paramétrer en tant qu’administrateur le fichier /etc/security/limits.conf en y ajoutant a minima les lignes qui suivent :
@audio - rtprio 90
@audio - nice -5
@audio - memlock 750000Ces lignes offriront aux utilisateurs du groupe "audio" (les utilisateurs de sidux en font partie par défaut, normalement) le droit de lancer leurs applications avec des priorités temps-réel.
Le plus haut niveau de priorité est 99 et ne devrait être assigné qu’aux cartes son ou aux ordonnanceurs de signaux d’irq. Le niveau de tolérance ’nice’ sera poussé à 5 et 750 Mo de RAM pourront être réservés aux applications.
Vous devrez adapter ces valeurs aux caractéristiques spécifiques à votre matériel. Vous trouverez sûrement de précieuses informations complémentaires sur les caractéristiques de vos matériels sur le site dédié aux pilotes de son ALSA ainsi que sur le site francophone LINUX-MAO.
Le réglage en cours des limites de priorité des processus lancés par l’utilisateur peut vous être affiché en entrant la commande :
ulimit -lRappelez-vous qu’il vous faut être membre du groupe "audio". Vous pouvez le vérifier dans une console utilisateur en y entrant id.
Il est également possible de de conférer à un utilisateur spécifique les droits associés aux priorités temps réel. Il suffit pour ce faire de remplacer la chaine audio dans le fichier concerné par l’identifiant du-dit utilisateur. Pour que ce changement devienne effectif, il faudra relancer le service PAM (Pluggable Authentication Module), ce qui ne peut s’effectuer qu’au moyen d’un redémarrage (reboot).
Notez par ailleurs qu’un des plus connus bloqueurs de Studio Audio Temps Réel soit un démon actif comme powersaved ou kpowersave. Assurez-vous de les désactiver (avec bum, par exemple) pour exploiter votre sidux temps réél sans vous voir retournées des erreurs de type ’xrun’.
On a la pleine puissance avec les réglages suivants :
@audio - rtprio 99
@audio - nice -10
@audio - memlock unlimited2. Quelques logiciels son et les ressources qui vous aideront
Déjà signalé dans cet article, les site Internet LINUX-MAO regorge d’informations et notamment de tutoriaux qui pourront vous aider que vous soyez curieux, débutant ou déjà pratiquant en MAO sous GNU/linux.
Le logiciel incontournable est Jack, le serveur sonore professionnel, hautement paramétrable et configurable. Il devrait a priori être le premier outil sur lequel il vous soit indispensable de vous documenter et de procéder à l’installation.
apt-get install jackd qjackctlKhz fournit des conseils de paramétrages déjà assez spécialisés auxquels en tant qu’auteur de cet article, je ne comprend pas grand chose. Il affirme parvenir à une latence de 5,33 millisecondes sur sa station avec ceux-ci, que je reproduis ici pour celles et ceux à qui ils pourront servir :
driver (alsa)
real time (x)
priority (89)
Frames/Period (128) default is 1024, the smaller the number the better
SampleRate (48000)
Periods/Buffer (2)
Port Maximum (128)
Timeout(msec) (1000)
Interface (default)
Dither (None)
Audio (Duplex)
Input Device (default)
Output Device (default)
Input Chanels (2)
Output Chanels (2)
Input Latency (1)Voici ce qu’il y ajoute comme commentaires :
Les réglages du champs Frames/Period et Period/Buffer dépendent de votre matériel et ce sont ceux-ci qui conditionneront la latence. Vous devrez tester et essayer afin de terminer ce qui ira au mieux. Vous devrez aussi choisir "lancer jack au démarrage des applications" (start jackd audio server on application startup) dans les paramètres "Divers" (Misc), ceci afin que jack puisse être contrôlé par qjackctl. Si le serveur jack ne commence pas par fixer une plus haute priorité de frame/period ceci conduira à de plus lents délais de réaction, en fonction des performances propres à vos matériels. Vous pouvez obtenir des information utiles en consultant les messages que jackd affiche lorsqu’il démarre.
Ardour, Rosegarden et Hydrogen peuvent ne pas réagir au contrôle de ports via qjackctl du fait qu’ils disposent eux-même en interne d’un système propre de contrôle sur ce niveau. Donc il faudra les paramétrer en conséquence. Néanmoins ces logiciels intègrent jack_transport et donc leur lancement et fermeture seront synchronisées si nécessaires ( par exemple si vous appyez sur play dans Rosegarden et que vous y exploitez Ardour et Hydrogen, ces derniers se lanceront).
Afin d’éviter toute mauvaise interprêtation (! n-d-a) jackd va fonctionner en exploitant alsa, et donc le module alsasequencer snd_seq se doit d’être chargé afin d’être en mesure de lancer jackd.
Si vous voulez vite-fait installer quelques applications sonores pour vous amuser (voire évidement plus si affinités) :
apt-get install hydrogen ardour sweep lmms audacity rosegarden muse zynaddsubfx vkeybdLes deux derniers, zynaddsubfx et vkeybd vous permettent par exemple de jouer du synthé numérique polyphonique en temps réel en jouant les notes et accords directement avec le clavier de PC.
Pour la suite, encore une fois, consultez LINUX-MAO
3. Rétrograder en version testing des logiciels récalcitrants
Cette méthode est tout simplement empruntée au manuel de sidux et consiste à momentannément substituer à ses sources apt de type debian sid des sources de type debian testing :
En tant qu’administrateur, on dédouble sa ligne de miroirs debian dans le fichier /etc/apt/sources.list.d/debian.list
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
deb http://ftp.fr.debian.org/debian/ sid main contrib non-freeensuite on commente une des deux ligne pour pouvoir aisément par la suite inverser le processus
#deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
deb http://ftp.fr.debian.org/debian/ sid main contrib non-freeEt pour finir, on remplace ’sid’ par ’testing’ dans ligne qui va être active pour utiliser momentannément les sources testing :
#deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
deb http://ftp.fr.debian.org/debian/ testing main contrib non-freeOn sauvegarde le fichier, puis on met les paquets à jour :
apt-get updateEnsuite on installe en version testing le logiciel qui nous intéresse ; ici par exemple rosegarden
apt-get install rosegardenOn peut au besoin demander à ce que le logiciel reste installé dans cette version et ne soit pas pris en compte lors des mises-niveau qui suivraient ; pour le faire on entre ce genre de commande :
echo rosegarden hold|dpkg --set-selectionsQuoiqu’il en soit, après ces manipulations n’oubliez surtout pas de remettre votre système de gestion de paquets en bon ordre en allant inverser à nouveau la ligne active et celle commentée dans /etc/apt/sources.list.d/debian.list :
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb http://ftp.fr.debian.org/debian/ testing main contrib non-freeOn sauvegarde et surtout on remet à nouveau sa liste de paquets en ordre :
apt-get updateQuand vous voudrez à nouveau obtenir la dernière version disponible du paquet, vous ferez :
echo rosegarden install|dpkg --set-selections
apt-get update
apt-get install rosegardenConclusion Cette information vous est fournie sous réserve d’éventuelles erreurs, omissions ou autres, sans garantie aucune que tout ça fonctionne. Vous êtes vivement invités à apporter des corrections, critiques, suggestions et nuances à son égard, afin qu’elle puisse être améliorée pour servir à d’autres utilisateurs. Merci.
[1] Attention ! Si votre carte son se résume à une puce sur votre carte mère ou à un produit basique fournit avec votre ordinateur, cette manipulation de vous sera absolument d’aucune utilité. Elle ne présente d’intérêt que si votre ordinateur est équipé a minima d’une carte son de type ’soundblaster live’ et encore, plutôt d’un modèle de niveau professionnel ou semi-professionnel (Emu, M-audio, etc.) ET si cette carte son est supportée sous linux, ce que vous pouvez déterminer en consultant le site d’ALSA
[2] Institut de Recherche et Coordination Accoustique/Musique