ProAudio

Un article de Wiki de la communauté Mandriva.

Jump to: navigation, search


À noter !
Il est primordial d'avoir une bonne adéquation entre les capacités de son matériel, la configuration de son système et la configuration de Jack.


Sommaire

[modifier] Le Kernel

[modifier] Kernel Temps-Réel

Temps Réel : le terme plus exact serait peut être "Temps Déterminé". Un système permettant de soumettre des tâches à des notions de temps précises et choisies. Le temps nécessaire pour obtenir les résultats d' opérations effectuées par les tâches choisies, est déterminé d' avance, ce temps est donc prédictible et peut être garantie.

Installez un tel noyau pour une machine avec processeurs multi-coeurs et/ou multi-processeurs :

Image:Konsole.png
[root@ordi ~]# urpmi kernel-rt-smp-latest kernel-rt-smp-devel-latest

Pour une machine avec un seul processeur :

Image:Konsole.png
[root@ordi ~]# urpmi kernel-rt-latest kernel-rt-devel-latest

À l' identique pour une machine x86_64 au lieu de x86-32. (après installation, redémarrez la machine sur ce nouveau noyau)

Ce kernel vient "nu" : il s' agit du kernel vanilla avec un seul patch, le -rt. Il ne propose donc pas les saveurs d' un kernel Mandriva, comme les correctifs Alsa et ajouts de prise en charge de matériel, pour le moment (pas non plus les ajustements tels que AppArmor). Prenez soin de vérifier le bon fonctionnement de votre matériel avec ce kernel, et préférez toujours utiliser ce kernel en rpm Mandriva. Vous bénéficierez ainsi d' une recompilation automatique de vos pilotes tiers par le mécanisme DKMS, pour ce kernel-rt et ses mises à jour.


Rappel : les rpm "-latest" permettent de s'affranchir de la connaissance de la version du noyau le plus récent, à tout instant : celui ci sera automatiquement résolu et installé.

[modifier] Les Espaces de Stockages

[modifier] Le Disque Dur et les systèmes de fichiers

Il peut être important d' avoir des disques durs performants dans de nombreux cas d' utilisation d' un système "ProAudio". Il peut être vérifié à l' aide de divers outils système. Notamment, HDPARM permet divers tests, par exemple :

Image:Konsole.png
[root@ordi ~]# hdparm -Tt /dev/sdc1 > /tmp/sdc1.txt

Donnera certaines indications concernant les capacités de vos disques durs, en terme de transfert. Veuillez vous reporter à la documentation concernant HDPARM si vous souhaitez modifier certaines valeurs.

Certains systèmes de fichiers ont des différences de comportement sur différents types de fichiers. Par exemple ReiserFS à une meilleure performance globale sur les petits fichiers. Un système HPFS a été taillé pour, mais est délaissé et n' est pas journalisé. Préférez leurs un système type EXT(2-3). La journalisation du système de fichiers est source théorique de ralentissement, par rapport aux systèmes de fichiers non journalisés. Mais préférez quant même un journalisé. Mandriva utilise le système EXT3. Ce qui convient parfaitement à toute utilisation. Faites un cat sur mtab de etc afin de connaître l' utilisation par Mandriva Linux de vos systèmes de fichiers.

Les options de chaque partition peuvent également influer sur le comportement de vos disques. Ainsi vous pouvez choisir une option comme NOATIME pour la partition contenant vos créations musicales. Par défaut Mandriva Linux monte les $HOME avec l' option RELATIME. Exemple d' option sur une partition créée spécifiquement pour recevoir à la fois les données issues de tout 'travail' avec du son ; qui peuvent être temporaires ou définitives ; de petites ou grandes tailles : UUID=blabla /mnt/ma_partition_a_musique ext3 nosuid,nodev,noexec,noatime Veuillez vous reporter aux diverses documentations sur le système de fichiers, par exemple wikipedia : http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_fichiers Et par exemple sur cette discussion : http://kerneltrap.org/node/14148

Vous pouvez aussi créer une partition spéciale pour /tmp, en ext2 ou 3. Et y déplacer /var/tmp ainsi que ~/tmp dedans, en laissant des liens symboliques depuis leur emplacement initiaux vers /tmp (et en prenant soin des droits utilisateur). Si vous souhaitez rendre définitif la valeur de $HOME/tmp, éditez le fichier profile, ou créer des fichiers skel (prétez attention au niveau de sécurité choisi : Mandriva Linux inclue directement un système permettant de pointer $HOME/tmp vers /tmp. Veuillez vous reporter aux documentations concernant msec si vous souhaitez utiliser ce mécanisme).

Quant à la SWAP, si vous l' utiliser encore (pour un suspend to disk par exemple), il convient d' ajuster la valeur "swapiness" en l' abaissant à son plus bas niveau :

Image:Konsole.png
[root@ordi ~]# echo 0 > /proc/sys/vm/swappiness
. Pour ne plus l' utiliser du tout : swapoff . Néanmoins, avec les ordinateurs d' aujourdhui, vous pouvez paradoxalement la conserver : car si elle est utilisée, c' est qu' il y en avait vraiment besoin d' une part et qu' elle ne prend plus de place sur nos disques durs d' autre part.

[modifier] La Mémoire Vive

Jack préfère utiliser le système SHM. Le paquet RPM disponible dans le dépôt MAIN de Mandriva Linux - et installé par défaut - utilisera SHM. Nous pouvons le constater en observant l' existence de sockets dans le répertoire /dev/shm/ (socket : principe du "First In, First Out" : premier arrivé, premier servi + principe de "write in, read out" : une action est bloquée en entrée en l' absence de lecture en sortie).

SHM / TMPFS permet d' utiliser la mémoire vive tel un disque dur. C' est un peu l' inverse de la swap : un peu un 'super-ramdisk' (super car l' espace est ici alloué au besoin). Votre système utilise déjà par défaut TMPFS pour la partition /proc. Montez /dev/shm en TMPFS pour utiliser cette fonction pour les sockets JACK également :

Image:Konsole.png
[root@ordi ~]# mount -t tmpfs tmpfs /dev/shm

(relancez JACK après ce montage)

Image:Konsole.png
[root@ordi ~]# echo "tmpfs /dev/shm tmpfs defaults 0 0" >> /etc/fstab

Notez que l' on peux réattribuer des valeurs pour ces partitions, "à chaud", avec mount --remount. Veuillez vous reporter à la documentation concernant mount, SHM et TMPFS si vous souhaitez en savoir plus sur son fonctionnement et son utilisation par le système Mandriva Linux.



Vous pouvez additionnellement placer les partitions et répertoires /tmp en mémoire vive également (attention alors à ne pas placer /var/tmp. N' y placer que $HOME/tmp et /tmp), dans la mesure où la quantité de ram disponible est en adéquation avec l' usage que vous faites de ce répertoire. Gardez à l' esprit qu' il ne pourra être considéré comme un répertoire de stockage : évoluant en ram, il sera vidé à chaque boot.
 echo "none /tmp/ tmpfs noexec,nodev,nosuid,noatime 0 0" >> /etc/fstab 

[modifier] Le Système

[modifier] Utilisateurs, Groupes et Droits

[modifier] Groupes Unix

Prenez soin d' ajouter un seul, ou chacun de utilisateurs existants et futurs, au groupe AUDIO. Les capacités allouées se configurent principalement grâce à PAM. Sur Mandriva Linux, le groupe AUDIO existe par défaut (dont le GID est ici de 81). Faite le au travers de l' interface Drakuser ou classiquement : gpasswd -a [votre_utilisateur] audio ou encore en éditant le fichier /etc/group

Une autre possibilité est de créer un groupe REALTIME spécifiquement configuré pour les accès RT. groupadd realtime ou encore groupadd -o -g 81 realtime pour un groupe partageant le gid du groupe audio. Assurez vous d' ajouter votre/vos utilisateur(s) à ce groupe et d' adapter ce qui suit sur PAM pour ce groupe.

[modifier] PAM

PAM est pré-configuré pour accorder à ce groupe des droits "privilégiés" sur le système. Vous pouvez avec le seul fichier limits.conf, par exemple :

  • cet utilisateur à le droit de se réserver (tant) de mémoire vive.
  • ce groupe d'utilisateur voit tout ses process obtenir (telle) priorité.


Une priorité se définit dans l' ensemble des processus actifs : chaque processus en fonction des autres. Éditez ce fichier limits.conf, et modifiez-la, par exemple :

@audio            -       rtprio          99
@audio            -       nice            -15
musicien          -       memlock         unlimited 

(Redémarrez votre session utilisateur après une modification de limits.conf.)

Memlock positionné à "sans limite" fait qu' il est possible pour toute application lancée par l' utilisateur "musicien" de s' attribuer autant de mémoire vive que possible physiquement. (attention à cette valeur : elle doit être ajustée pour votre système physiquement. À 2 Go de mémoire vive, vous pouvez peut-être attribuer 1 Go et plus à un utilisateur de station de travail de son. En dessous, pensez à toujours laisser environ 300 Mo pour le système, et bloquez le reste pour l' utilisateur audio. Au-delà de 2 Go, le "unlimited" ne devrait jamais poser de problème.) Sur l' exemple pris depuis le début, un système avec 2 processeurs de 3 GHz et 3 Go de mémoire vive, un /tmp de 1 Go et un /dev/shm de 500 Mo en TMPFS sont montés, la valeur de memlock est sur "unlimited" et tout semble ok.

La valeur nice définit cette priorité dans l' ensemble des processus actifs. Cette valeur à -15 fait que seules les applications ayant de -15 à -20 (aucune par défaut, puisque * tous positionnés à égalité à 0) seront prioritaires sur celles lancées par tout membre du groupe AUDIO. À noter qu' une page MAN est spécifique pour le fichier limits.conf. Veuillez vous reportez à la documentation sur PAM et ses divers fichiers pour en apprendre davantage.

[modifier] Cgroup

À noter que depuis l' intégration de la gestion de groupe (vue de l' ordonnanceur) d' applications dans CFS (completly fair scheduler), il est possible également de définir des droits fins quant à l' accès aux ressources matérielles. Il est possible de réserver, par exemple, 75% du temps CPU à un groupe "audio" alors qu' un groupe "bureautique" n' en aura que 25%. Toute application appartenant à l' un de ces groupes sera impactée. Nommés CGROUP, ils sont personnalisables librement. Si vous avez la patience d' utiliser cette merveilleuse fonctionnalité, il vous faut activer sa prise en charge dans le kernel-rt (au moins sur le kernel-rt-source-2.6.24.7-1.rt13.1mdvsmp), puis recompiler votre noyau. Puis, vous pourrez manipuler la notion de "groupe d' applications" de CFS au travers de PROC, système de fichiers virtuels, /proc/cgroup étant désormais accessible.

[modifier] Installation d' un choix de Logiciels Libres supplémentaires

  • La famille jack  :

urpmi libalsa-plugins-jack jackit ac3-jack qjackctl jackeq jack-synth jack-rack vlc-plugin-jack xine-jack gstreamer0.10-jack laddca libjackasyn0 libfreebob0 libjack0 libjackmix0

  • Les greffons audio  :

urpmi lv2core ladspa ladspa-quitte-dsp dssi ams blop caps tap-plugins pvoc exef bse-alsa pvc rev-plugins uade upse freqtweak timidity-patch-freepats timidity-patch-gravis hexter wsynth-dssi fluidsynth-dssi nekobee

  • Les décodeurs, encodeurs et ajusteurs (dépôts MAIN et Contrib. Mais aussi PLF-libre pour certains, et d' autres PLF-non-libre)  :

urpmi flac vorbis-tools mpe1 twolame libffmpeg51 libvorbisenc2 ffmpeg2theora transcode mencoder ffmpeg dirac libavformat51 libavformat52 libavutil49 lame lame-mp3x libqicktime libqicktime0 libquicktime-faac libquicktime-faad libquicktime-x264 libaviplayavcodec x264 vorbisgain faac faad2 xanim-codecs win32-codecs real-codecs

  • L' apprentissage  :

urpmi gcompris sweep rosegarden

  • La création :

urpmi zynaddsubfx lmms hydrogen linuxsampler rosegarden

  • Le solfège  :

urpmi mscore lilypond kguitar noteedit ktabedit songwrite rosegarden

  • L' enregistrement, le traitement et la diffusion  :

urpmi ardour jamin audacity traverso voipong rezound mixxx lmms terminatorx jokosher VLC rosegarden

Bien d' autres existent. Veuillez vous référer aux documentations respectives de ces logiciels, surtout pour Ardour, RoseGarden, Jamin, Mscore, Kguitar et LMMS. Les résumés sont disponibles avec urpmi et drakrpm si vous souhaitez en savoir plus sur chacun d' eux avant même leur installation.

[modifier] Jack Audio Connection Kit

Exemple de la configuration d' un serveur JACK :

Image:Konsole.png
[utilisateur@ordi ~]$ /usr/bin/jackd -R -p128 -t200 -dalsa -dhw:0 -r48000 -p64 -n2 -s

Jack est lancé en "daemon" : avec accès temps réel + un maximum de 128 ports + timeout de 200 millisecondes + sur Alsa + device hw:0 + fréquence de 48000hz + frame/period de 64 + 2 périodes dans le bufffer matériel + softmode

Reprenant la note de début " adéquation entre les capacités de son matériel, la configuration de son système et la configuration de Jack." : préférez toujours un bon compromis de configuration sans xrun, plutôt que la recherche de la plus "basse ms". Une valeur standard pour une utilisation intensive d' ajustements en direct de nombreuses pistes, et d' enregistrements, est : au-delà de 10 millisecondes, le décalage n' est plus acceptable. Plus que 10 ms est bien-sûr acceptable pour toute autre utilisation (enregistrements de pistes pour travail et diffusion différés, travail sur le signal avec audacity et jamin, éditions de fichiers MIDI, diffuser des films et musiques...). N' hésitez pas à choisir 1024. C' est le point à ajuster à la fois selon votre usage, sur le moment, et selon les capacités de l' ordinateur.

Méfiez-vous de la valeur annoncé par l' interface graphique QjackCTL pour le réglage des frame/period. Par exemple, sur une machine de test, 64 est annoncé à 2.67 ms par l' interface QjackCTL, mais le serveur JACKD, pour le même réglage, annonce period = 64 frames (1.3 ms).

À noter !
  • Il n' ajoute aucune latence.
  • Il traite chaque flux en canal séparé : un instrument ou une chanson stéréo est donc vue comme 2 flux monos distincts.
  • Il interconnecte ces flux à toutes les applications d' entrées, de traitements et de sorties.
  • Il permet donc d' enregistrer et de diffuser ces flux.
  • Il synchronise des fonctions comme la pause/lecture pour toutes les applications.
  • Il permet aussi un contrôle total et indépendant, pour chacun des flux : provenances, directions mais aussi volumes, gains et effets.

Veuillez vous référer à la page JACK de ce wiki et à la documentation officielle disponible sur http://jackaudio.org pour en savoir plus sur Jack Audio Connection Kit

[modifier] Pages Wiki Suivantes

MIDI La norme MIDI et son utilisation avec Mandriva