Vous pouvez configurer le dmix
d'ALSA plugin pour permettre à plusieurs applications de partager des périphériques d'entrée/sortie.
Un exemple de configuration pour ce faire est ci-dessous :
pcm.dmixed {
type dmix
ipc_key 1024
ipc_key_add_uid 0
slave.pcm "hw:0,0"
}
pcm.dsnooped {
type dsnoop
ipc_key 1025
slave.pcm "hw:0,0"
}
pcm.duplex {
type asym
playback.pcm "dmixed"
capture.pcm "dsnooped"
}
# Instruct ALSA to use pcm.duplex as the default device
pcm.!default {
type plug
slave.pcm "duplex"
}
ctl.!default {
type hw
card 0
}
Cela fait ce qui suit :
- crée un nouvel appareil en utilisant le
dmix
plugin, qui permet à plusieurs applications de partager le flux de sortie - en crée un autre en utilisant
dsnoop
qui fait la même chose pour le flux d'entrée - les fusionne dans un nouveau
duplex
périphérique qui prendra en charge l'entrée et la sortie en utilisant leasym
plugin - dites à ALSA d'utiliser le nouveau
duplex
appareil comme appareil par défaut - dites à ALSA d'utiliser
hw:0
pour contrôler le périphérique par défaut (alsamixer, etc.)
Collez ceci dans l'un ou l'autre ~/.asoundrc
ou /etc/asound.conf
et vous devriez être prêt à partir.
Pour plus d'informations, voir http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing.
ALSA ne fournit pas de mélangeur. Si vous devez lire plusieurs flux audio en même temps, vous devez les mélanger vous-même.
La façon la plus simple d'y parvenir est de décoder les fichiers WAV en float
échantillons, ajoutez-les et découpez-les lors de leur conversion en échantillons entiers.
Alternativement, vous pouvez essayer d'ouvrir le fichier par défaut périphérique audio (et pas un périphérique matériel comme "hw:0") plusieurs fois, une fois pour chaque flux que vous souhaitez lire, et espérons que le plugin dmix ALSA est chargé et fournira la fonctionnalité de mixage.