Puedes configurar el dmix
de ALSA complemento para permitir que varias aplicaciones compartan dispositivos de entrada/salida.
A continuación se muestra una configuración de ejemplo para hacer esto:
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
}
Esto hace lo siguiente:
- crea un nuevo dispositivo usando el
dmix
complemento, que permite que varias aplicaciones compartan el flujo de salida - crea otro usando
dsnoop
que hace lo mismo para el flujo de entrada - los fusiona en un nuevo
duplex
dispositivo que admitirá entrada y salida usando elasym
complemento - dile a ALSA que use el nuevo
duplex
dispositivo como dispositivo predeterminado - dile a ALSA que use
hw:0
para controlar el dispositivo predeterminado (alsamixer, etc.)
Pega esto en ~/.asoundrc
o /etc/asound.conf
y deberías estar listo para irte.
Para obtener más información, consulte http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing.
ALSA no proporciona batidora. Si necesita reproducir varias secuencias de audio al mismo tiempo, debe mezclarlas por su cuenta.
La forma más fácil de lograr esto es decodificando los archivos WAV a float
muestras, agréguelas y recórtelas al convertirlas de nuevo en muestras enteras.
Alternativamente, puede intentar abrir el predeterminado dispositivo de audio (y no un dispositivo de hardware como "hw:0") varias veces, una vez por cada transmisión que desee reproducir, y espere que el complemento dmix ALSA esté cargado y proporcione la funcionalidad de mezcla.