Permitir que varios programas reproduzcan sonido a la vez (Español)

From ArchWiki

Jump to: navigation, search


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.

Contents

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"
  1. 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

Personal tools