Skip to main content

Historique: Alsa - gérer plusieurs cartes

Aperçu de cette version: 31



Présentation


Vous être nombreux à vous interroger dans le forum sur la possibilité d'utiliser plusieurs cartes son sur votre machine.
La réponse est : Oui, ALSA permet d'utiliser plusieurs cartes sons et cette page vous expose les grandes lignes à suivre 😀.



Prérequis


Il faut :
  • 2 cartes son (au minimum), ou une carte son + une carte mère disposant d'un chipset son intégré.

Attention : Pour ceux qui souhaitent utiliser le chipset son intégré sur leur carte mère, certains BIOS désactivent le chipset son intégré si une autre carte son PCI est détectée ! Référez-vous à la documentation de votre carte mère pour voir si c'est le cas et choisir les bonnes options dans votre BIOS.

  • Savoir installer une carte son sur votre distribution ! Dans l'idéal, la première carte son sera déjà installée et fonctionnelle. Le cas échéant, consultez la documentation de votre distribution, section "configuration de la carte son".

  • S'assurer que les 2 cartes sont bien reconnues par ALSA, et connaître les modules (drivers) nécessaires à leur bon fonctionnement. La consultation des autres pages ALSA n'est peut-être pas inutile ...

  • Les modules (drivers) nécessaires devront être compilés dans votre noyau (sous forme de ... modules ❗. Pour tester leur existence, essayez de les charger avec la commande :
    Copy to clipboard
    modprobe



Le principe

Il est présenté sur cette page : http://alsa.opensrc.org/index.php/MultipleCards
Si certaines infos sont un poil obsolètes, le principe reste valable, mais selon les distributions, vous devrez adapter certaines commandes.

  • Il est possible que l'utilitaire de configuration des cartes sons de votre distribution (alsaconf, sndconfig ...) vous installe automatiquement tout le nécessaire ... ne vous en privez pas !

  • Sinon, il faudra modifier le fichier /etc/modules.conf, soit directement, soit via /etc/modutils/alsa + commande update-modules (Debian - kernel 2.4) soit via /etc/modules.d/alsa + commande update-modules (Gentoo), soit ... autrement selon les distributions (fichier /etc/modprobe.d/alsa pour Debian-kernel 2.6 ou fichier /etc/modprobe.conf ou /etc/modprobe.d/sound...)

  • Chaque carte sera placée sur un "slot" différent. Ensuite, l'ordre de chargement des modules (drivers) vous permettra de choisir le numéro de chaque carte (option "index")


Choix de la carte son ALSA par défaut


Présentation du problème

La commande alsaconf vous permet de choisir la carte son par défaut au niveau ALSA. Cela vous évite de paramétrer dans chacun des logiciels que vous utilisez, le nom hw:0,0 ou hw:1,0. C'est assez pratique sur un portable par exemple, si vous utilisez un système d'enceinte nomade USB qui ne nécessite pas d'alimentation mais qui se comporte comme une carte son (mon système Logitech USB fonctionne à merveille sous Linux). Il est dans ce cas là, mal commode de changer de périphérique dans tous les logiciels, à chaque fois que vous utilisez ou n'utilisez pas le système.

La commande asoundconf


La commande asoundconf vous permet de connaître la liste de vos cartes :
Copy to clipboard
asoundconf list

Vous donne
Copy to clipboard
Names of available sound cards: Intel Speaker default


Maintenant la commande :
Copy to clipboard
asoundconf set-default-card Speaker

vous permet de paramétrer la carte speaker comme carte par défaut. Ensuite il faut redémarrer les bibliothèques ALSA par une commande (en super utilisateur) du genre :
Copy to clipboard
/sbin/alsa-utils restart


Vous pouvez vérifier avec la commande
Copy to clipboard
aplay /usr/share/sound/exemple.wav
qu'en fonction de la carte que vous définissez par défaut, vous entendrez le son sur une carte ou l'autre sans avoir besoin de définir la carte par le paramètre -D hw:0,0 par exemple.



Fichier .asoundrc

La commande asoundconf provoquera la création d'un fichier .asoundrc qui contiendra vos périphériques ALSA :

Copy to clipboard
# ALSA library configuration file managed by asoundconf(1). # # MANUAL CHANGES TO THIS FILE WILL BE OVERWRITTEN! # # Manual changes to the ALSA library configuration should be implemented # by editing the ~/.asoundrc file, not by editing this file. !defaults.pcm.card Speaker defaults.ctl.card Speaker defaults.pcm.device 0 defaults.pcm.subdevice -1 defaults.pcm.nonblock 1 defaults.pcm.ipc_key 5678293 defaults.pcm.ipc_gid audio defaults.pcm.ipc_perm 0660 defaults.pcm.dmix_max_periods 0 defaults.rawmidi.card 0 defaults.rawmidi.device 0 defaults.rawmidi.subdevice -1 defaults.hwdep.card 0 defaults.hwdep.device 0 defaults.timer.class 2 defaults.timer.sclass 0 defaults.timer.card 0 defaults.timer.device 0 defaults.timer.subdevice 0


Vous pouvez copier ce fichier dans /etc/alsa.conf si vous voulez que votre action soit globale pour tous les utilisateurs.


Portée de la définition

Cette méthode vous permettra de changer votre carte son pour des programmes qui ne savent pas spécifier la carte son comme :


Exemple

Un exemple sera plus parlant ... l'objectif n'est pas de vous donner les étapes pour toutes les cartes existantes mais de vous donner la marche à suivre que vous adapterez à votre configuration.

Prenons le cas d'une carte M-Audio Delta44 que nous installerons en plus du chipset son intégré de la carte mère (VIA 8235 pour notre exemple).

Le site d'ALSA nous apprend que les 2 sont bien supportées. Les modules nécessaires sont via82xx (pour le chipset) et ice1712 pour la M-Audio (les liens pointent vers les instructions d'installations des modules).

Nous avons tous les éléments pour modifier le fichier /etc/modules.conf (ou /etc/modutils/alsa, ou /etc/modules.d/alsa, selon votre distribution, cf remarque plus haut). Les lignes ci-dessous sont directement reprises des instructions du site ALSA pour les modules considérés, les seules modifications viseront à placer le chipset via sur le slot 0 et la M-Audio sur le slot 1.

Voici ce que l'on nous demande d'intégrer pour le chipset via (en carte unique) :
Copy to clipboard
# ALSA portion alias char-major-116 snd alias snd-card-0 snd-via82xx # module options should go here # OSS/Free portion alias char-major-14 soundcore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss


Et pour la M-Audio (toujours en carte unique) :
Copy to clipboard
# ALSA portion alias char-major-116 snd alias snd-card-0 snd-ice1712 # module options should go here # OSS/Free portion alias char-major-14 soundcore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss


Il nous faut mixer tout ça, et modifier les options de la M-Audio pour la placer sur le slot 1 (le chipset Via restera sur le slot 0) :
Copy to clipboard
# Options générales communes alias char-major-14 soundcore alias char-major-116 snd options snd major=116 cards_limit=2 # Circuit son intégré VIA # ALSA portion (chargement du module/driver) alias snd-card-0 snd-via82xx # Options du module options snd-card-via82xx index=0 # OSS/Free portion alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss #Carte M-Audio # ALSA portion (chargement du module/driver) alias snd-card-1 snd-ice1712 # Options du module options snd-card-ice1712 index=1 # OSS/Free portion alias sound-slot-1 snd-card-1 alias sound-service-1-0 snd-mixer-oss #alias sound-service-1-1 snd-seq-oss alias sound-service-1-3 snd-pcm-oss #alias sound-service-1-8 snd-seq-oss alias sound-service-1-12 snd-pcm-oss


Pour les utiliser, vous devrez indiquer à vos programmes la carte à utiliser :
  • Kmix vous permet de faire ce choix pour Arts
  • qJackCtl vous permettra d'indiquer à JACK la carte souhaitée
  • Pour les autres, utilisez l'option "hw" (exemple : mplayer -ao alsa:device=hw=0 titre.wav)
  • Les lignes :
    • alias sound-service-1-1 snd-seq-oss et
    • "alias sound-service-1-8 snd-seq-oss"

    sont inutiles et donc commentées (cf site d'ALSA : "The alias for snd-seq-oss is not necessary on the second device, because there is only one /dev/sequencer, regardless how many devices you have").


Remarques :
  • L'option "+-cards_limit+-" permet de choisir le nombre de cartes. D'autres options peuvent être rajoutées. Par exemple : device_mode=0666 pour définir les droits d'accès, device_gid=18 pour définir le groupe propriétaire du périphérique (18 = groupe audio sous Gentoo), etc. Une liste d'options plus complète donnerait ainsi : options snd major=116 cards_limit=2 device_mode=0660 device_gid=18
  • L'option "index" permet de choisir l'ordre de chargement des modules.
  • Notez bien les modifications apportées pour la 2ème carte, section "Carte M-Audio". Ces modifications sont finalement minimes : seuls certains numéros changent (0->1). Mais elles sont essentielles : ce sont elles qui placeront cette carte sur le 2ème slot et permettront au système de "retrouver ses petits".
  • Selon votre distribution n'oubliez pas de lancer l'outil de mise à jour (update-modules pour Debian et Gentoo, etc.).
  • Certaines cartes semblent fonctionner tout en n'étant pas indiquées sur le site ALSA (exemple M-Audio Fasttrack USB qui fonctionne avec le module usb-audio).



Utiliser 2 cartes comme une seule carte

Les informations présentées ci-dessus ne vous permettent pas d'utiliser simultanément les 2 cartes avec JACK. Il est néanmoins possible de regrouper 2 cartes comme une seule interface audio, afin de bénéficier par exemple de plus d'entrées. La technique utilise simplement un fichier asoundrc qui définit un périphérique constituté des 2 interfaces. Cela peut être pratique pour faire apparaître toutes les entrées/sorties de 2 cartes simultanément dans Qjackctl par exemple ...

Attention : pour que les 2 cartes soient synchronisées, elles doivent être équipées et reliées par un dispositif spécifique -WordClock- permettant cette synchronisation. Sans synchronisation, l'opération présente en effet peu d'intêret : les horloges de chaque carte son n'étant 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. Pour les cartes non prévues à cet effet, et surtout si vous aimez le risque et la bidouille au fer à souder, vous pouvez jeter un oeil à la page : http://quicktoots.linuxaudio.org/toots/el-cheapo/. Est-il utile de préciser que le site LinuxMAO.org décline toute responsabilité pour tout ce qui pourrait découler de ce type de bricolage qui vous fera de plus, perdre la garantie constructeur ? 😁

Pour les cartes prévues à cet effet, vous trouverez sur le Net des exemples de fichiers asoundrc. Consultez par exemple :

Historique

Information Version
Mon 17 Oct 2022 00:10 jujudusud Flashplayer n'existe plus en 2022. 77
Afficher
Tue 20 Mar 2018 21:30 olinuxx 76
Afficher
Thu 14 Sep 2017 14:01 olinuxx regroupement des alias 75
Afficher
Thu 14 Sep 2017 08:50 allany alias+1 74
Afficher
Sun 22 Jan 2017 15:09 olinuxx 73
Afficher
Sun 22 Jan 2017 14:50 olof 72
Afficher
Sun 22 Jan 2017 14:49 olof 71
Afficher
Tue 11 Oct 2016 00:31 olinuxx 70
Afficher
Mon 04 Jan 2016 10:57 olinuxx 69
Afficher
Fri 06 Nov 2015 14:16 olinuxx Recherche et remplacement en masse 68
Afficher
Mon 10 Feb 2014 22:25 romain_bar Test des cartes 67
Afficher
Mon 10 Feb 2014 21:23 romain_bar Déplacement d'un texte vers la page ALSA Dépannage 66
Afficher
Thu 06 Feb 2014 20:48 romain_bar Correction du lien 65
Afficher
Tue 16 Jul 2013 23:47 utilisateur_anonyme2 +alias 64
Afficher
Fri 01 Mar 2013 19:32 pianolivier nouvelle boite de navigation 63
Afficher
Wed 10 Oct 2012 17:46 pianolivier correction d'un lien 62
Afficher
Thu 17 mai 2012 17:14 pianolivier modif lien(s) interne(s) 61
Afficher
Fri 17 Feb 2012 18:58 pianolivier +ordre des cartes utilisant le meme module 60
Afficher
Sun 26 Dec 2010 20:00 olinuxx BOX 59
Afficher
Sun 26 Dec 2010 18:43 olinuxx BOX + tuto 58
Afficher
Sun 26 Dec 2010 18:32 olinuxx BOX + tuto 57
Afficher
Sun 26 Dec 2010 17:13 olinuxx BOX 56
Afficher
Sun 26 Dec 2010 16:57 olinuxx ajout tuto BOX 55
Afficher
Sun 26 Dec 2010 15:33 olinuxx BOX 54
Afficher
Sun 26 Dec 2010 15:29 olinuxx BOX-ification 53
Afficher
Sun 26 Dec 2010 01:47 olinuxx ptit truc 52
Afficher
Sun 26 Dec 2010 00:49 olinuxx lien interne 51
Afficher
Sun 26 Dec 2010 00:33 olinuxx déplacement info en page dédiée 50
Afficher
Sun 26 Dec 2010 00:29 olinuxx 49
Afficher
Sun 26 Dec 2010 00:25 olinuxx (mode stylo rouge) 48
Afficher
Sun 26 Dec 2010 00:19 olinuxx rédaction 47
Afficher
Sun 26 Dec 2010 00:16 olinuxx 46
Afficher
Mon 13 Dec 2010 00:28 olinuxx 45
Afficher
Mon 13 Dec 2010 00:11 olinuxx 44
Afficher
Mon 13 Dec 2010 00:10 olinuxx 43
Afficher
Mon 13 Dec 2010 00:09 olinuxx 42
Afficher
Mon 13 Dec 2010 00:09 olinuxx 41
Afficher
Mon 13 Dec 2010 00:08 olinuxx 40
Afficher
Mon 13 Dec 2010 00:07 olinuxx rédaction 39
Afficher
Sun 12 Dec 2010 23:05 olinuxx rédaction 38
Afficher
Sun 12 Dec 2010 06:08 olinuxx (mode stylo rouge) 37
Afficher
Sun 12 Dec 2010 06:07 olinuxx mise à jour 36
Afficher
Sun 12 Dec 2010 05:50 olinuxx 35
Afficher
Sun 12 Dec 2010 05:46 olinuxx 34
Afficher
Sun 12 Dec 2010 05:42 olinuxx rédaction 33
Afficher
Sun 12 Dec 2010 05:17 olinuxx mise en page 32
Afficher
Sun 12 Dec 2010 05:16 olinuxx ptite correction 31
Afficher
Sun 12 Dec 2010 04:05 olinuxx 30
Afficher
Wed 24 Nov 2010 01:24 olinuxx 29
Afficher
Wed 24 Nov 2010 01:23 olinuxx 28
Afficher
  • «
  • 1 (en cours)
  • 2