Permitir que varios programas reproduzcan sonido a la vez (Español)
From ArchWiki
i18n |
---|
English |
Español |
Slovensky |
En Linux, sólo puede reproducir sonido un programa en cada momento a menos que tenga una tarjeta de sonido que pueda mezclar por hardware (todas o al menos la mayoría de la tarjetea integradas en la placa no pueden.) o que se utilice uno de los métodos que se describen a continuación. Todos estos métodos utilizan alguna forma de mezclado por software.
dmix - sistema de mezclado por software de Alsa.
Nota: Para versiones de ALSA tales como la 1.0.9rc2 o más recientes no necesita configurar. Dmix es habilitado por defecto para aquellas tarjetas que no proporcionan mezclado por hardware (sacado de la wiki de alsa).
Nota: dmix reduce la calidad del sonido durante el mezclado de una manera más o menos perceptible. Si ésto no es aceptable para usted o necesita TeamSpeak (dado que ésta es la única aplicación importante que no funciona bien todavía con alsa).
Normalmente ni siquiera es necesario tener un archivo asound.conf ya que dmix se pone en marcha automáticamente pero en el 1% de los casos podría ser necesario, asi que aquí lo tiene:
#/etc/asound.conf start: 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 8192 rate 44100 #many new cards are 48000 only } bindings { 0 0 1 1 } } ctl.dmixer { type hw card 0 } #end.
Y así mágicamente, la próxima vez que un programa trate de utilizar el sonido, dmix se pondrá en marcha.
Podría usted darse cuenta que sólo un usuario puede utilizar el dmixer a la vez. Esto le puede ir bien a la mayoría de usuarios pero para aquellos que como yo corren mpd como un usuario diferente ésto representa un problema. Cuando mpd está reproduciendo mi usuario normal no puede reproducir por el dmixer. Aunque sería perfectamente posible correr mpd haciendolo con mi usuario normal encontré otra solución. Añadiendo la siguiente línea ipc_key_add_uid 0
al bloque pcm.dmixer
se resuelve el problema. Lo siguiente es un fragmento de mi asound.conf
, el resto es lo mismo que arriba.
... pcm.dmixer { type dmix ipc_key 1024 ipc_key_add_uid 0 slave { ...
Para hacer que la mayoría de programas utilicen Alsa, asegúrese de que /etc/libao.conf
sólo contiene lo siguiente.
default_driver=alsa10
Para aquellos otros programas que insisten en su propia configuración de audio, p. ej., XMMS o Mplayer, deberá establecer sus opciones específicas.
Para mplayer, abra con un editor ~/.mplayer/config
(o /etc/mplayer/mplayer.conf
para una configuración global) e introduzca la siguiente línea en:
ao=alsa
Para XMMS/Beep Media Player, vaya a sus opciones y asegúrese de que sea Alsa, no OSS, el controlador de sonido.
Para hacer ésto en XMMS:
- Open XMMS
- Options -> preferences.
- Choose the Alsa output plugin.
Para aquellas aplicaciones que no proveen una salida ALSA, puede utilizar aoss del paquete alsa-oss. Para utilizar aoss, cuando ejecute el programa, use el prefijo aoss
, p. ej.:
aoss realplay
pcm.!default{ ... } ya no me funciona. pero ésto sí:
pcm.default pcm.dmixer
PD: WINE sonará defectuoso con algunos juegos a menos que seleccione oss 'por ahora' (08-12-06) pero con los módulos del núcleo para la emulación de OSS de ALSA debería funcionar bien. Usted podría establecer sin embargo winecfg -> Sound -> HW acceleration a 'emulation' para que funcione la música/sonido en algunos juegos. O podría utilizar este parche:
http://kcat.strangesoft.net/wine_thread_prio.diff mirror: http://pastebin.archlinux.org/341
Que hace que alsa no falle. Usted tendra que establecer tal vez o tal vez no (puede que la entrada que ya exista para el audio sea suficiente)
username - rtprio 1
en /etc/security/limits.conf (o podría también sustituir el grupo por el usuario). Entonces, salga y vuelva a entrar :)
vmix - sistema de mezclado por software de OSS.
OSS v4.0 es un controlador de sonido open-source (o comercial: está disponble bajo 3 licencias) y alternativo a ALSA que proporciona un mezclador por software en el espacio del kernel. Mire OSS para más información.
PulseAudio
PulseAudio (anteriormente Polypaudio) es un servidor de sonido en red, similar en teoría al Enlightened Sound Daemon (EsounD). PulseAudio es sin embargo mucho más avanzado y tiene numerosas características. Tanto las utilidades como el demonio de PulseAudio están todavía bajo intenso dearrollo. Aunque se consideran generalmente estables, no han sido lo suficientemente probadas como para garantizar una versión completamente estable.
Mas informacion: PulseAudio
Mezclado por Hardware
Utilice una tarjeta de sonido que proporcione mezclado por hardware: se sabe que las antiguas series de tarjetas SoundBlaster Live (emu10k1 chip) y las nuevas de Audigy (emu10k2 chip) funcionan.
La tarjeta SoundBlaster Live 5.1 es fácilde encontrar y es barata.
Nota: las nuevas y baratas Audigy SE, Audigy 2 NX, SoundBlaster Live 24bit y SoundBlaster Live 7.1 no proporcionan mezclado por hardware (usan otros chips).
El 99% de las placas con sonido integrado no proporcionan mezclado por hardware.
El chip integrado en placa VIA8237 chip proporciona mezclado por hardware de 4 entradas. Sin embargo da sólo tres para algunas placas (la cuarta no produce sonido), o simplemente no funciona. Incluso cuando lo hace, la calidad no esbuena comparada con otras soluciones.
Métodos antiguos, no recomendados o menos populares
aRTS - sistema de mezclado por software del proyecto KDE
pacman -S arts
Si utiliza KDE, aRTS arrancará automáticamente. Si no usa KDE pero quiere que corra arts cuando arranca la computadora, añada esta línea a un archivo de configuración del arranque del sistema tal como /etc/rc.local
:
/opt/kde/bin/artsd -a oss &
Para escuchar la música, establezca la salida de audio de su programa a arts.
Para aquellas aplicaciones que no proveen de una salida para aRTS, puede utilizar el prefijo artsdsp
, p.ej:
/opt/kde/bin/artsdsp -m xmms
o
/opt/kde/bin/artsdsp -m EnemyTerritory <-- aunque el sonido se quedará atrás.
Si se encuentra con problemas, intente con oros parámetros, los cuales puede descubrir ejecutanto las siguientes órdenes.
artsd --help artsdsp --help
EsounD (ESD) - también el sistema de mezclado por software del proyecto GNOME
EsounD es una solución ya añeja que no ha sido actualizada en muchos años. Tiene sin embargo un excelente soporte de aplicaciones y funciona bien para un uso de escritorio básico.
añadiendo 'esd' a la sección de daemons en rc.conf fue sufiente en mi caso.
vea también ESD para más información sobre como deshabilitarlo, si satura sus dispositivos de sonido, etc.
Info: http://www.tux.org/~ricdude/EsounD.html
ALSA + oss2jack
(ACTUALIZACION: Flash utiliza ahora alsa haciendo menos intereante incluso la solución oss. Existen incluso "convertidores alsa -> oss pero no lo he probado)
"oss2jack - Una aproximación para utilizar aplicaciones OSS con el Jack Audio Connection Kit basada en el kernel de Linux.
Usted podria también quitar esd, artsd, polypaudio, etc. ya que no los necesitará a menos que tenga una aplicación que sólo tenga salida a artsd por ejemplo.
Para utilizar oss2jack, necesitará dos paquetes, oss2jack y fusd-kor.
Tendrá que bajarse los tarballs de cada paquete y ejecutar makepkg
para crear el paquete. 1.
Después de haber instalado ambos paquetes, ponga el oss2jack
después de jack-audio-connection-kit
en el array de DAEMONS
en /etc/rc.conf
si quiere que oss2jack se inicie automágicamente al arrancar.
Edite /etc/conf.d/jack-audio-connection-kit
y cambie el SERVER_PARAMS
y DRIVER_PARAMS
según necesite. Yo dejo las entradasI así:
SERVER_PARAMS="-R -s -d alsa" DRIVER_PARAMS="hw:0 -p 64 -r 44100"
- la razón por la se escribe "hw:0" es porque el parámetro"-d" ya está especificado en /etc/rc.d/jack-audio-connection-kit haciendo así que jackd se ejecute como "jackd -R -s -d alsa -d hw:0 -p 64 -r 44100" :) entendido? bien.
Si tiene una máquina lenta, puede que le interese aumentar el periodo de 64 a 128 o 256.1 (Nota por AqD: 512 o 1024 está bien, no malgaste su CPU)
Esto puede ser usado como una solución al "TEAMSPEAK y micrófono + sonido/música del juego mientras se está usando XMMS" o cualquier otro problema que pueda ver por la red. Si necesita más información vea el sitio oss2jack (enlace más abajo).
Notas
- Wine requiere que el audio sea 'Emulated' (cambielo en la pestaña de audio de
winecfg
)
- Si tiene MOD_AUTOLOAD="yes" en su rc.conf podría necesitar tener también !snd_pcm_oss !snd_seq_oss en su array MODULES para deshabilitar la carga automática de estos módulos por parte de udev.
- Si necesita arrancar oss2jack como usuario (con capacidades en tiempo real), tendrá que compilar e instalar el módulo realtime-lsm.
- Algunas aplicaciones/juegos requieren que está cargado el módulo del kernel snd-mixer-oss (UT2004 por ejemplo). Esto podría ser (aunque probablemente no) causa de inestabilidad para el demonio oss2jack. Tenga en cuenta que alsamixer le seguirá permitiendo establecer el volumen PCM, MASTER, etc. tanto si tiene cargado snd-mixer-oss como si no.
- Si tiene problemas al establecer los volúmenes OSS, pruebe a utilizar audacity para establecerlos. Audacity está disponible en el repositorio Extra y es un editor de sonido que trabaja con OSS. Tiene controles tanto para el volumen de entrada (mic) como para el de salida. Los volúmenes fijados por Audacity son niveles de volumen OSS, no niveles de volumen ALSA. Debería usar esta solución únicamente cuando un mezclador ALSA no funcione cualquiera sea la razón, ya que debido a la emulación de oss2jack el hecho de establecer los volumenes OSS podría suponer el cambio no intencionado de los niveles de volumen ALSA.
- Si esta ejecutando otros controladores OSS en su kernel, tendrá que ligar oss2jack a un dispositivo distinto. Para ligar oss2jack a /dev/dsp2, edite
/etc/rc.d/os2jack
y cambie la línea:
/usr/bin/oss2jack &
a esto:
/usr/bin/oss2jack -n 2 &
Más información
oss2jack
Instrucciones de instalación de oss2jack
JACK Audio Connection Kit
Errores que yo me encontré - Lea esto si tiene algun otro problema no mencionado aquí
joss (anteriormente conocido como q3jack...)
Recientemente ha aparecido una solución similar a la anterior y que no requiere de ningún módulo del kernel aunque tiene otras limitaciones. Tenga en cuenta que no proporciona capacidad de captura a día de hoy (04-12-2006) y que el desarrollo ha estado parado durante un cierto tiempo. :/.
Para instalarlo, utilice el paquete de AUR: joss
Sólo tien que lanzar su aplicación con
joss <appname>
Podría configurar algunos parámetros mediante las opciones en línea de órdenes.
-n, --name=NAME utilice 'name' para que jack identifique la aplicación (por defecto: joss-PID) -o, --outputs=out_1,out_2 conexión a salidas específicas (por defecto: las primeras 2 salidas físicas) -b, --blocks=N etablece la cuenta de bloques de DMA (esto afecta a la latencia (min: 4, max/default: 16)
Aquí tiene algunos ejemplos extraídos del README.
Esto simplemte arranca quake3 con joss, obteniéndo para jack un nombre por defecto y se conecta a las dos primeras salidas físicas.
joss quake3
Esto arranca et con el nombre específico para jack de "enemy-territory". Enlaza además la salida a los dispositivos 3 y 4 de reproducción pcm de alsa.
joss -n enemy-territory -o alsa_pcm:playback_3,alsa_pcm:playback_4 et
Con "-b" este ejemplo reduce la cuenta de bloques DMA a 4 para reducir la latencia.
joss -b 4 lugaru
De esta manera podría ajustar con "-b" la latencia, cambiar el nombre para jack con "-n" para delegar la identificación al controlador cliente de jack. Cuando quiera grabar la salida de una aplicación iniciada con joss puede enlazar con "-o" la salida hacia una aplicación grabadora amplificada por jack.
sitio: http://www.konstruktiv.org/q3jack mirror: http://www.craknet.net/joss
NAS http://radscan.com/nas.html
Características únicas. Lea el readme. Tiene mezclado propio. Puede hacerlo trabajar con libaudioss, casi todas las aplicaciones de audio que tengan salida OSS trabajarán por tanto con esto, y será "lag-free". No trabaja con mmap sin embargo, y esto hace que no funcione con muchos juegos.
USound - http://mattcamp.paunix.org/usound/
USound es algo similar al Enlightened Sound Daemon (EsounD), pero como sugiere el nombre, USound trata de ser más util, particularmente para las aplicaciones multimedia y de escritorio. En el momento de escribir esto (0.2) trabaja con libao, mplayer, madplay y Speak Freely.
Resolución de problemas
Cambio persistente de la prioridad de los demonios
Eche un vistazo a "schedtoold" [1]
Skype
Siga este enlace para ver un Skype dmix how-to.
Otras fuentes
- http://www.linuxdj.com/audio/quality/
- http://ck.kolivas.org/faqs/audio_hints
- Vea Gentoo-Wiki referring to dmix si busca información acerca de cómo configurar diversos programas (firefox, mpd, etc.) para que utilicen dmix.