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


Vous êtes 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 biggrin.



Pré-requis

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

    Attention : Pour ceux qui souhaitent utiliser la puce-son intégrée sur leur carte mère, certains BIOS la désactivent 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" et les autres pages ALSA.

  • S'assurer que les 2 cartes sont bien reconnues par ALSA, et connaître les modules (drivers) nécessaires à leur bon fonctionnement. La consultation de la page Alsa - dépannage pourra être utile...

Test des cartes

Deux outils permettent de gérer vos cartes avec ALSA en ligne de commande, aplay et arecord.
Pour avoir la liste des cartes et autres périphériques associés :
Liste des périphériques son
aplay -l

Un exemple (plusieurs périphériques peuvent être disponible dans une seule carte son) :
card 0: NVidia [HDA NVidia], device 0: CS4206 Analog [CS4206 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: CS4206 Digital [CS4206 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Ici la carte interne est numérotée 0 et la carte USB (externe) numérotée 1.
Pour jouer un son sur un périphérique donné, il faut indiquer le numéro de carte (card) et son propre numéro pour cette carte (device).
Dans cet exemple, pour jouer sur la carte USB il faut taper :
aplay -Dhw:1,0 son.wav


Vérifiez que vous pouvez jouer un son sur chaque carte. Et pourquoi pas des sons différents sur chaque carte, en même temps ;-).

Le principe

Il est présenté sur cette page : http://alsa.opensrc.org/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 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 GNU/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

Méthode graphique :

Vous pouvez utiliser la commande asoundconf-gtk pour faire choisir votre carte son par défaut dans un environnement graphique.


Méthode ligne de commande :

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

Elle vous donne
Names of available sound cards:
 Intel
 Speaker
 default


Maintenant la commande :
asoundconf set-default-card Speaker

vous permet de paramétrer la carte "Speaker" comme carte par défaut si c'est ce que vous voulez. wink


Note valable pour les 2 méthodes (graphique ou ligne de commande) :
  • si vous effectuer l'une de ces commandes en utilisateur normal, ceci sera valable uniquement pour votre utilisateur,
  • si vous voulez que ce soit actif pour tous les utilisateurs de votre système, faites votre commande en super utilisateur.


Vous pouvez vérifier avec la commande :
aplay /usr/share/sound/exemple.wav
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.

Normalement, la manipulation a fonctionné. Ceci dit, si jamais ça ne fonctionne pas, vous pouvez essayer de relancer les ALSA-utils, ou même ALSA en entier, avec les commandes que vous pouvez trouver dans la page Alsa - dépannage.


Fichier .asoundrc

La commande asoundconf provoquera la création d'un fichier .asoundrc qui contiendra vos périphériques ALSA :
(sous ubuntu et peut être aussi debian, ce seront 2 fichiers .asoundrc et .asoundrc.asoundconf, le 2ème étant un fichier ne devant pas être édité, les éditions se feront dans le premier si vous voulez pouvoir les conserver après des mises à jour par exemple)

 # 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



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 de la puce son intégrée de la carte mère (VIA 8235 pour notre exemple).

Le site d'ALSA (voir la matrice ) nous apprend que les 2 sont bien supportées. Les modules nécessaires sont via82xx (pour la puce intégrée) 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 la puce intégrée via sur le slot 0 et la M-Audio sur le slot 1.

Voici ce que l'on nous demande d'intégrer pour la puce intégrée VIA (en carte unique) :
# 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) :
# 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 (la puce intégrée Via restera sur le slot 0) :
# 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 aRtsd
  • 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", traduction : "L'alias pour snd-seq-oss n'est pas nécessaire pour le deuxième périphérique, car il n'y a qu'un seul /dev/sequencer, sans considération du nombre de périphérique que vous avez").


Remarques

  • Il est aussi possible de choisir l'ordre de cartes utilisant le même module (par exemple snd-usb-audio). Wiki détaillé en anglais sur le site non-officiel d'alsa : http://alsa.opensrc.org/MultipleUSBAudioDevices Image .
    Le secret est d'écrire une ligne pour tes deux cartes son avec les paramètres vid et pid uniques à chaque carte, dans l'ordre désiré. On peut trouver les vid et pid grâce à la commande lsusb.
    Exemple :
    lsusb
    Bus 001 Device 004: ID 0763:1110 E-MU
    Bus 001 Device 003: ID 0582:0005 webcam
    (note : la première série de chiffres sont les vids, la deuxième les pids)
    /etc/modules.conf
    options snd-usb-audio index=1,2 vid=0x0763,0x0582 pid=0x1110,0x0005
    (voir une autre méthode ici)
  • 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 deuxiè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 deuxiè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 ).






[+]

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 :-)