Problème : dans le cadre d’une configuration 100% ALSA (aucun bidule ignoble genre pulseaudio) j’avais régulièrement des “conflits” entre différents programmes qui émettent du son (Amarok, Flash, Java, …). Dans le meilleur des cas c’était juste un programme qui ne pouvait accéder à la carte son, mais souvent ça plantait carrément tout le son, et j’étais obligé de fermer les programmes concernés + redémarrer alsa-utils (service alsa-utils restart) pour pouvoir avoir du son à nouveau.
Le blocage complet était d’ailleurs particulièrement fréquent avec une combinaison de Java (un jeu de go que j’utilise souvent) et Flash (lecture sur Youtube par exemple).
Solution : il suffit de dire à ALSA de créer un pipeline qui va servir de mixer entre les différentes applications. Pour cela, créez le fichier ~/.asoundrc contenant :
[code]pcm.!default {
type plug
slave.pcm “dmixer”
}
pcm.dsp0 {
type plug
slave.pcm “dmixer”
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 32768
rate 44100
}
bindings {
0 0
1 1
}
}
ctl.dmixer {
type hw
card 0
}[/code]
Depuis, plus aucun problème !
À noter qu’en fonction de votre configuration, il faudra peut-être adapter les deux endroits qui parlent de hw pour que ça pointe sur votre carte son :
- dans la section pcm.dmixer { … slave { ligne pcm “hw:0,0”
- dans la section ctl.dmixer { ligne card 0
Malheureusement je ne pourrai pas vous en dire beaucoup plus, ça fait déjà plusieurs mois que j’ai mis ça en place à partir d’un truc trouvé sur internet donc sans grande réflexion de ma part. Le fait est que mon intuition (conflit entre programmes qui veulent verrouiller la carte son de manière exclusive) était bonne, et que cette solution marche.