Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

Traduction : Exemple de configuration de 2 cartes son Delta 1010 (chip ICE1712) pour fonctionner avec JACK

Ceci est une traduction de l'article Multiple Sound Cards (ICE1712/Delta 1010) du site en langue anglaise Sound Recording with GNU/Linux , avec l'autorisation de son auteur John Rigg. Mes connaissances (Flanker) en électronique et en son étant encore moindre que celles sur la susdite langue, il se peut que quelques erreurs ou incompréhensions se soient glissées ici ou là. Merci de bien vouloir les corriger ou me les signaler.



Utiliser plusieurs cartes son (ICE1712/Delta 1010)

Les cartes sons basées sur la puce ICE1712, comme la M-Audio Delta 1010, sont populaires chez ceux qui veulent enregistrer du son sous GNU/Linux. Cependant le paramétrage de plusieurs d'entre elles, de telle sorte qu'ALSA et jackd fonctionnent correctement, est un peu délicat.

Ce tutoriel suppose un certain niveau de familiarité avec la configuration audio de GNU/Linux. Comme je l'ai déjà dit, utiliser plusieurs cartes son sous GNU/Linux et ALSA est délicat, et même officiellement « non recommandé » par les développeurs de JACK et d'Ardour 3. SVP lisez entièrement cette page avant d'essayer. Il est surprenant de voir combien de personnes me contactent (ou contactent la mailing list Linux audio) avec un problème lié à une lecture incomplète de cette page.

ALSA .asoundrc

Le plugin ALSA pcm_multi est utilisé pour fusionner plusieurs cartes en une grande carte virtuelle. Cela permet à des programmes comme jackd, qui ne peuvent pré-empter qu'une carte à la fois, de fonctionner avec elles. Ce n'est pas particulièrement simple avec la puce ICE1712, qui comprend 12 entrées et 10 sorties (nonobstant le nombre d'entrées/sorties matérielles dont dispose votre carte). Ci-dessous un exemple de fichier .asoundrc (note du traducteur : fichier particulier de configuration ALSA à mettre à la racine de votre répertoire personnel) pour 2 cartes Delta 1010 pour un total de 16 canaux entrée/sortie :

../..
voir le fichier de configuration sur la page d'origine
../..

Voici un autre exemple de fichier .asoundrc pour 3 cartes Delta 1010. Il permet l'utilisation des deux premières seulement ou des trois ensemble, en fonction du nom donné au périphérique au démarrage de JACK.

Les .asound ci-dessus nécessitent le support de MMAP_COMPLEX dans JACK. Il est possible d'utiliser le plugin de route d'ALSA pour relier les blocs ou canaux, de telle sorte que MMAP_COMPLEX ne soit pas nécessaire, mais les ressources supplémentaires nécessitées par ce plugin augmenteraient le temps de latence (en fait cela comprimerait complètement toute opération de basse latence). Si cela ne vous pose pas de problème voici un exemple correspondant de .asoundrc.


Jack

Pour utiliser JACK dans une version plus vieille que 0.102.20 avec la configuration ci-dessus, il faut qu'elle soit compilée avec le support de MMAP_COMPLEX, sous la forme du patch de Frank van de Pol . (C'est une version corrigée du patch original. Elle a été testée avec JACK 0.100.7 et 0.101.1.)
Ce patch n'est plus nécessaire à partir de la version 0.102.20 dans laquelle il est déjà inclus.
Après compilation vous pourriez avoir besoin de faire le lien symbolique ci-dessous afin qu'Ardour 3 et autres puisse trouver libjack :
$ ln -s /usr/local/lib/libjack.so.0 /usr/lib/libjack.so.0

Pour les versions 64 bit:
$ ln -s /usr/local/lib64/libjack.so.0 /usr/lib/libjack.so.0

Vous pouvez aussi, en configurant JACK avant compilation, spécifier –prefix=/usr pour installer JACK dans /usr plutôt que dans /usr/local. Vous pouvez avoir à essayer différents liens et –prefix.

jackd peut être démarré en utilisant la ligne de commande ci-dessous :
$ jackd -d alsa -C multi_capture -P multi_playback

Ou, avec les privilèges 'temps réel' :
$ jackd -R -d alsa -C multi_capture -P multi_playback

Naturellement, vous utiliserez d'autres options si nécessaire.

L'utilisation de ce patch sera également nécessaire pour les versions entre 0.99.37 et 0.102.x pour corriger une exception de virgule flottante qui tue jackd d'une manière apparemment aléatoire (apparaît alors dans le syslog comme une erreur de division). Ceci est nécessaire pour les architectures x86 et x86_64, quelque soit la carte son utilisée. Ce patch s'applique à la version 0.102.20 mais peut facilement être appliqué manuellement à toutes versions le nécessitant (par exemple 0.100.7 et 0.101.1). Il n'est plus nécessaire à partir de la version 0.103.0.

jackdmp

Une alternative à JACK est JACKdmp (appelé aussi : Jack 2), destiné à l'utilisation de multi-processeurs, mais qui fonctionne parfaitement avec un seul. La version 0.61 ou ultérieure est requise, les versions antérieures ne fonctionnant pas avec pcm_multi. Il ne nécessite pas de patch. Il est plus sensible aux écarts d'horloge que jackd (appelé aussi Jack 1) donc, si vous fonctionnez à 88.2 ou 96 kHz, il peut être nécessaire de synchroniser toutes les cartes à partir d'une source S/PDIF externe. Le chainage successif de plusieurs cartes peut ne pas fonctionner correctement (vous vous en sortirez probablement avec 2 mais 3 peut être déjà trop).

Problèmes avec pcm_multi

Un changement est apparu avec alsa-lib-1.0.9rc1 qui a eu comme effet inattendu d'empêcher le plugin pcm_multi de fonctionner avec Jack (Jack 1 et 2) en mode duplex. Ce qui veut dire que les canaux d'entrée / sortie doivent être démarrés séparément et ne fonctionneront pas en même temps. Ce problème apparaissait encore avec la version alsa-lib-1.0.13 mais a été corrigé avec la 1.0.14 Voici un patch pour les versions 1.0.10 à 1.0.13 (plus nécessaire à partir de la 1.0.14).

On peut aussi avoir un problème avec les noyaux rt. Pendant l'écriture le noyau rt (2.6.17-rt8) cause un nombre important de xruns avec pcm_multi (ceci sur un AMD64 SMP – au dessus, il bloque complètement. Tout fonctionne parfaitement avec une seule carte).

Mise à jour – Certains ont rapporté que les noyaux rt fonctionnent avec jackd et pcm_multi sur un AMD64x2 dual core, mais jusqu'à présent je n'ai pas pu le confirmer sur ma propre machine.

Synchronisation des word clocks

(note du traducteur : pour une définition de word clock voir ici ou  .)

Pour faire fonctionner plusieurs cartes les word clocks doivent être synchronisées. Avec deux cartes Delta 1010 cela peut être fait en connectant la sortie word clock du premier boîtier sur l'entrée du second. Alternativement, elles peuvent aussi être reliées par S/PDIF (connecter la sortie S/PDIF de la première sur l'entrée de la seconde).

Utilisez ensuite envy24control du paquet alsa-tools pour affecter à la première carte l'utilisation de son horloge interne et à la seconde celle le l'entrée word clock ou S/PDIF. Les cartes sans E/S word clock peuvent être synchronisées par les E/S S/PDIF.

Problèmes avec la synchronisation de la Word Clock de la Delta 1010

L'édition anglaise du manuel de la Delta 1010 indique que la fréquence maximum de l'entrée word clock est de 50kHz. Cela ressemble à une erreur de typographie mais malheureusement cela ne l'est pas. La boucle à phase asservie (PLL) qui est utilisée pour verrouiller le signal d'entrée du word clock ne peux pas atteindre une fréquence suffisante pour le faire à 96kHz. Si vous êtes chanceux, votre carte fonctionnera au-delà de cette spécification mais ne comptez pas trop la-dessus.

D'un autre coté le récepteur S/PDIF utilise son propre PLL interne qui fonctionne avec une fréquence d'échantillonnage à 96kHz.

Une autre chose dont il faut être conscient au moment de synchroniser les cartes est que le word clock utilise un circuit intégré PLL 74HC4046, ce qui constitue un quasi parfait générateur de gigue .
En d'autres termes vous pourriez utiliser le meilleur word clock disponible et continuer à avoir des gigues d'horloge. L'entrée S/PDIF n'est pas parfaite non plus, mais quand même meilleure. La carte qui utilisera son horloge interne aura un meilleur son que les cartes esclaves, donc utilisez ses canaux pour les sons les plus critiques.

Si vous voulez minimiser réellement ces gigues, il vaut mieux remplacer les câbles de raccordement de 3m avec d'autres plus courts afin de réduire la distance entre les horloges sur les cartes PCI et les convertisseurs sur les racks. Il est possible d'utiliser un câble d'imprimante IEEE 1284 25 broches mâle-mâle de 1m avec un inverseur de genre à l'extrémité du rack. Ne confondez pas avec le câble RS232 25 broches qui ne fonctionnera pas. L'amélioration est subtile mais assez notable (en fonction de la qualité de vos hauts-parleurs et de celle de vos oreilles).

Voici une solution plus externes aux problèmes d'horloge.

Problèmes avec envy24control

Si quelque chose ne fonctionne pas avec envy24control, vérifier que votre version d'ALSA dans votre noyau correspond avec celle de alsa-tools/envy24control. Si c'est le cas mais que le problème perdure, c'est un bogue que vous pouvez rapporter sur la liste de discussion alsa-devel.

Mise à jour du 21 Avril 2008 : certains utilisateurs ont été troublés par le comportement de envy24control alors que jackd était démarré. Dans la version 0.6.0 de envy24contro' dans alsa-tools 1.0.12 à 1.0.16, les boutons de fréquence d'échantillonnage dans la section `Master Clock' (horloge principale) n'indiquent pas nécessairement la bonne fréquence quand jackd fonctionne, mais la fenêtre 'Actual Rate' (fréquence actuelle) est correcte. Toujours dans ce cas les boutons fréquence d 'échantillonnage sont désactivés mais les boutons S/PDIF in' et `Word Clock' fonctionnent. Cependant, si vous sélectionnez l'un de ces 2 derniers pendant que jackd tourne vous ne pourrez pas revenir à l'horloge interne sans arrêter jackd. La solution évidente et de ne pas mettre la pagaille avec ça pendant que jackd est en fonction.

Alternative à envy24control

Tous les paramètres établis par envy24control peuvent l'être en ligne de commande en utilisant alsactl. Cette commande utilise un fichier de configuration ( /etc/asound.state par défaut) au chargement. Voici un exemple de fichier asound.state pour deux M-Audio Delta 1010 avec une fréquence par défaut de 44,1kHz et utilisant S/PDIF pour synchroniser les horloges, la première carte en maitre, la seconde en esclave.
Pour l'utiliser, tapez la commande :
$ alsactl -f asound.state.delta1010x2 restore

Ceci chargera les paramètres depuis le fichier. Pour changer quoique ce soit éditez le fichier et relancer la commande. Si vous configurez vos cartes initialement avec envy24control les paramètres peuvent enregistrés comme ceci:
$ alsactl -f asound.state.delta1010x2 store

Ceci écrase le fichier s'il existe déjà, donc faites d'abord une copie si vous voulez conserver l'original.

Mastériser avec Jamin

Si vous utiliser Jamin avec jackd pour mastériser un enregistrement, vous remarquerez probablement que Jamin indique de nombreux X-runs si pcm_multi est utilisé, même avec des réglages de latences important. Ce sont des X-runs reportés par jackd (et QJackCtl), pas par le pilote ALSA. Je n'ai pas remarqué de clics audibles quand cela arrive, toutefois il peut être plus sûr de redémarrer jackd avec une seule carte pour mastériser.

Une autre solution est d'utiliser Jamin avec jackdmp qui, au moins sur un système SMP, est moins sensible à ce problème.



Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool
calixtus06, 11:17, mar. 05 mars 2024: Bonjour et bienvenue à D752 :-)
calixtus06, 18:59, lun. 04 mars 2024: Bonjour et bienvenue à Hborsa et Adjudandouille :-)
olinuxx, 18:34, jeu. 29 Feb 2024: Bonjour et bienvenue à anto45500 cool
jujudusud, 23:38, mar. 27 Feb 2024: Venez participer à la joute numéro 17 : [Lien]
calixtus06, 18:36, jeu. 22 Feb 2024: Bonjour et bienvenue à nikartri et rckloar :-)
calixtus06, 10:15, mer. 14 Feb 2024: Bonjour et bienvenue à smonff, Alphascorpii, tadumtss et letoII :-)