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


Cette manipulation vise à lier deux cartes son (ou plus) supportées par ALSA pour qu'elles apparaissent comme une carte unique (carte virtuelle).
Ceci peut être bien pratique, en particulier avec un logiciel comme Jack, qui n'utilise (en duplex) qu'une carte son à la fois.
Il faut cependant bien comprendre que cela ne synchronisera PAS l'horloge des cartes, et que le son se décallera d'une carte à l'autre avec le temps. Ceci est problématique en particulier pour l'enregistrement, mais est moins grave pour l'écoute. Certaines cartes son plus haut de gamme proposent une connectique spéciale pour relier l'horloge interne, comme wordclock, ADAT...



Carte son multicanal virtuelle

Recopié et traduit de ?Virtual multi channel devices.

Copiez et collez le code suivant dans votre fichier asoundrc.


# Créé une carte son virtuelle de quatre canaux avec deux
# cartes son réelles.
# Il s'agit en fait de deux flux stéréo entrelaçés dans
# différentes adresses mémoire, donc Jack devrai se plaindre
# qu'il n'a pas un accès mmap. Voir plus bas.

pcm.multi {
        type multi;
        slaves.a.pcm "hw:0,0";
        slaves.a.channels 2;
        slaves.b.pcm "hw:1,0";
        slaves.b.channels 2;
        bindings.0.slave a;
        bindings.0.channel 0;
        bindings.1.slave a;
        bindings.1.channel 1;
        bindings.2.slave b;
        bindings.2.channel 0;
        bindings.3.slave b;
        bindings.3.channel 1;
}

# Jack ne sera pas content s'il n'a pas de mixeur logiciel à
# qui parler, donc nous utiliserons celui de la carte son
# numéro 0. Il pourrai s'agir de n'importe quelle carte.

ctl.multi {
        type hw;
        card 0;
}

# Ceci créé un flux pcm entrelacé de 4 canaux basé sur
# la carte 'multi'. Jack fonctionnera avec celui-ci.

pcm.ttable {
        type route;
        slave.pcm "multi";
        slave.channels 4;
        ttable.0.0 1;
        ttable.1.1 1;
        ttable.2.2 1;
        ttable.3.3 1;
}

# Voir plus haut

ctl.ttable {
        type hw;
        card 0;
}


Ceci produira des xruns, mais ça convient pour des essais. Pour tester on peut enregistrer puis lire un signal audio :

arecord -f S16_LE -r 44100 -c 4 -D multi | aplay -f S16_LE -r 44100 -c 4 -D multi


Pour démarrer Jack avec la nouvelle carte son virtuelle :

jackd -d alsa -d ttable


pcm_multi, ttable, mmap

pianolivier : j'écris ce paragraphe d'après ce que j'ai pu comprendre sur cette page, mais n'ayant pas essayé ces manipulations moi-même il se peut qu'il soit biaisé. Dans ce cas merci de corriger (et d'effacer cette phrase).

Comme on peut le voir dans le fichier de configuration, le programme qui permet de lier/fusionner plusieurs cartes son est donc pcm_multi, il fait partie d'ALSA.

Le programme de routage pcm_ttable permet de relier les blocs ou canaux pour faire fonctionner Jack sans qu'il soit nécessaire que celui-ci ai le support MMAP_COMPLEX. Cependant 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) et les versions de Jack actuelles supportent maintenant MMAP_COMPLEX par défaut.

Le fichier de configuration pourrai donc être simplifié ainsi, à tester :

# Créé une carte son virtuelle de quatre canaux avec deux
# cartes son réelles.

pcm.multi {
        type multi;
        slaves.a.pcm "hw:0,0";
        slaves.a.channels 2;
        slaves.b.pcm "hw:1,0";
        slaves.b.channels 2;
        bindings.0.slave a;
        bindings.0.channel 0;
        bindings.1.slave a;
        bindings.1.channel 1;
        bindings.2.slave b;
        bindings.2.channel 0;
        bindings.3.slave b;
        bindings.3.channel 1;
}

# Jack ne sera pas content s'il n'a pas de mixeur logiciel à
# qui parler, donc nous utiliserons celui de la carte son
# numéro 0. Il pourrai s'agir de n'importe quelle carte.

ctl.multi {
        type hw;
        card 0;
}


Puis démarrer Jack avec :

jackd -d alsa -d multi


Synchronisation de l'horloge interne

Comme expliqué dans l'intro, si les horloges des cartes son ne sont pas synchronisées, des erreurs apparaîtront fatalement, surtout lors de l'enregistrement, avec des messages du type :
  • snd_pcm_mmap_commit: Assertion `frames <= snd_pcm_mmap_avail(pcm)' failed,
  • des Xruns,
  • etc...
Vous trouverez dans ?le paragraphe ci-dessous des exemples de configuration avec des cartes son synchronisables : RME Hammerfall, m-audio delta 1010. Merci de signaler si vous avez pu le faire avec votre modèle !

Liens

Le document ayant servi de base à cette page + exemple de configuration avec deux RME Hammerfall + des explications sur la syntaxe :
Virtual multi channel devices sur alsa-project.org (anglais)

Le document ayant servit de base au document précedent (je pense) :
http://alsa.opensrc.org/TwoCardsAsOne (anglais)

Description technique de la bibliothèque de programmation derrière pcm_multi :
http://alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html (anglais, si on peut dire ça)

Un tuto d'un type dingue pour synchroniser ses deux cartes son à coup de fer à souder dans le cas ou ça n'est pas prévu :
http://quicktoots.linux-audio.com/toots/el-cheapo/ (anglais)

Un tuto sur linuxmao pour fusionner et synchroniser les cartes son pro basées sur la puce ICE1712, en particulier deux m-audio delta 1010 :
exemple de configuration avec deux m-audio delta 1010

Une méthode alternative plus récente et qui agit directement au niveau de Jack :
Jack_alsa_io


[+]

Collaborateur(s) de cette page : olinuxx , romain_bar et pianolivier .
Page dernièrement modifiée le Vendredi 06 novembre 2015 14:29:03 par olinuxx.
Le contenu de cette page est licencié sous les termes licence.

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

calixtus06, 18:51, lun. 28 Oct 2024: Bonjour et bienvenue à dawaninja :-)
olinuxx, 08:39, dim. 27 Oct 2024: Bonjour et bienvenue à dangoodboy cool
olinuxx, 13:50, sam. 26 Oct 2024: Bonjour et bienvenue à ladipon cool
allany, 18:33, lun. 07 Oct 2024: Phénoménal, c'est l'éditorial ! [Lien]
calixtus06, 13:16, ven. 27 Sep 2024: Bonjour et bienvenue à tigny :-)
olinuxx, 13:05, dim. 22 Sep 2024: [ANNONCE] Les nouvelles des 7 derniers mois de LibraZiK : [Lien]
olinuxx, 18:46, ven. 20 Sep 2024: Bonjour et bienvenue à manaoxygen cool
calixtus06, 11:24, mar. 17 Sep 2024: Bonjour et bienvenue à PAuf :-)
olinuxx, 21:36, ven. 13 Sep 2024: Bonjour et bienvenue à jearos cool
calixtus06, 18:28, mer. 11 Sep 2024: Bonjour et bienvenue à Fred2024 :-)
allany, 18:33, jeu. 05 Sep 2024: Semi-automnal, cet éditorial ! [Lien]
olinuxx, 22:00, dim. 01 Sep 2024: Bonjour et bienvenue à bo cool