Pour ce faire, il faut déjà connaître les drivers des cartes sons. On peut pour cela analyser la sortie de lsmod et chercher les modules qui commencent par snd tout en étant seul sur leur ligne, par exemple :

$ lsmod | grep --color snd
snd_seq_dummy           4100  0
snd_seq_oss            28928  0
snd_seq_midi            8416  0
[...]
snd_ice1712            55012  0
[...]
snd_intel8x0           30428  1
[...]
snd_pcm_oss            36768  0
[...]
snd_usb_audio          69472  0
[...]
snd                    48548  19

Avec un peu d'habitude et, surtout, en connaissant un peu le matériel qu'on a (!), on sait dans cet exemple que ce sont snd_intel8x0 pour le chipset de la carte mère, snd_ice1712 pour la carte son, snd_usb_audio pour les interfaces MIDI sur port USB. Dans le doute, il faut consulter la page ALSA Soundcard Matrix sur le site de l'ALSA[1], elle donne la liste complète des cartes supportées par fabricant, avec le module Linux qui correspond.

Définir l'ordre

Définir l'ordre est relativement simple sur les Linux modernes : il suffit d'ajouter un petit fichier de configuration dans le répertoire /etc/modprobe.d/. La méthode exposée fonctionne pour Debian Sarge et Etch ainsi que Ubuntu Breezy ou plus récente (Dapper, Edgy, etc.). Dans mon cas, le fichier /etc/modprobe.d/sound que j'ai ajouté contient simplement :

alias snd-card-0 snd-intel8x0
alias snd-card-1 snd-ice1712
alias snd-card-2 snd-usb-audio

options snd-intel8x0 index=0
options snd-ice1712 index=1
options snd-usb-audio index=2

Les 3 premières lignes définissent des noms plus sympa pour les drivers de mes chipsets. Les 3 dernières disent à l'ALSA dans quel ordre mettre ces chipset. Ici celui de la carte mère est placé en premier afin que les sons de l'environnement atterrissent dans le système audio de la moins bonne facture et les ports MIDI sont placés en dernier. On vérifie l'ordre avec la commande suivante :

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CK8S [NVidia CK8S], device 0: Intel ICH [NVidia CK8S]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CK8S [NVidia CK8S], device 2: Intel ICH - IEC958 [NVidia CK8S - IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: EWX2496 [TerraTec EWX24/96], device 0: ICE1712 multi [ICE1712 multi]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Ici, tout va bien !

Voir aussi :

Notes

[1] Advanced Linux Sound Architecture, le système qui permet à Linux de gérer les chipset audio et MIDI