Puoi configurare dmix
di ALSA plug-in per consentire a più applicazioni di condividere dispositivi di input/output.
Di seguito è riportato un esempio di configurazione per eseguire questa operazione:
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
}
Questo fa quanto segue:
- crea un nuovo dispositivo utilizzando il
dmix
plugin, che consente a più app di condividere il flusso di output - ne crea un altro usando
dsnoop
che fa la stessa cosa per il flusso di input - li unisce in un nuovo
duplex
dispositivo che supporterà l'input e l'output utilizzando ilasym
plugin - chiedi ad ALSA di usare il nuovo
duplex
dispositivo come dispositivo predefinito - chiedi ad ALSA di usare
hw:0
per controllare il dispositivo predefinito (alsamixer e così via)
Inseriscilo in uno dei ~/.asoundrc
o /etc/asound.conf
e dovresti essere a posto.
Per ulteriori informazioni, vedere http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing.
ALSA non fornisce un mixer. Se devi riprodurre più flussi audio contemporaneamente, devi mixarli da solo.
Il modo più semplice per farlo è decodificare i file WAV in float
campioni, aggiungerli e ritagliarli durante la riconversione in campioni interi.
In alternativa, puoi provare ad aprire il file predefinito dispositivo audio (e non un dispositivo hardware come "hw:0") più volte, una per ogni stream che desideri riprodurre, e spera che il plugin dmix ALSA sia caricato e fornisca la funzionalità di missaggio.