Advanced Linux Sound Architecture (Español)

From ArchWiki
Revision as of 05:16, 15 September 2011 by Emiralle (Talk | contribs) (format. remove comos category.)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

ALSA es el acrónimo de "Advanced Linux Sound Architecture" (que significa Arquitectura de Sonido Avanzada para Linux en español). Es un componente del kernel Linux que proporciona controladores para las tarjetas de sonido.

Mire OSS si busca alternativas.

Este documento muestra cómo hacer funcionar ALSA con núcleos de la rama 2.6. Vea también cómo permitir que varios programas reproduzcan sonido a la vez.

Instalación

Drivers del kernel

ALSA ha sido incluido en los kernels 2.6 y en todos los paquetes kernel26* de Archlinux. Si quiere compilar un kernel propio no olvide habilitar el driver ALSA adecuado.

Todos los módulos necesarios deberían ser detectados y cargados automáticamente por udev. No se necesita de ningúna configuración especial a menos que su tarjeta de sonido sea ISA. No use NUNCA alsaconf si tiene una tarjeta PCI o ISAPNP, ya que el programa añade líneas a modprobe.conf que pueden romper la autodetección de udev. Si ya ha ejecutado el programa borre todo el contenido de /etc/modprobe.d/modprobe.conf (si usted ya ha agregado alguna línea no es necesario que la borre). Necesitará privilegios de root para esto.

Utilidades de area de usuario

  • Necesarios para los programas nativos de ALSA y su administración
# pacman -S alsa-lib alsa-utils
  • Recomendado si quiere usar aplicaciones con soporte de OSS en combinación con dmix:
# pacman -S alsa-oss

Todos los programas ALSA dependerán de la librería alsa-lib.

Configuración

Asegurándose de que los módulos estén cargados

Puede suponer que udev autodetectó su tarjeta de sonido correctamente, y que incluso cargó los módulos de compatibilidad OSS. Si quiere comprobarlo, puede hacerlo con lsmod:

$ lsmod | grep '^snd'
snd_usb_audio          69696  0 
snd_usb_lib            13504  1 snd_usb_audio
snd_rawmidi            20064  1 snd_usb_lib
snd_hwdep               7044  1 snd_usb_audio
snd_seq_oss            29412  0 
snd_seq_midi_event      6080  1 snd_seq_oss
snd_seq                46220  4 snd_seq_oss,snd_seq_midi_event
snd_seq_device          6796  3 snd_rawmidi,snd_seq_oss,snd_seq
snd_pcm_oss            45216  0 
snd_mixer_oss          15232  1 snd_pcm_oss
snd_intel8x0           27932  0 
snd_ac97_codec         87648  1 snd_intel8x0
snd_ac97_bus            1792  1 snd_ac97_codec
snd_pcm                76296  4 snd_usb_audio,snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer              19780  2 snd_seq,snd_pcm
snd                    43776  12 snd_usb_audio,snd_rawmidi,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc          7944  2 snd_intel8x0,snd_pcm

Si la salida es similar, los controladores de su tarjeta de sonido fueron autodetectados correctamente (en este caso, snd_intel8x0 y snd_usb_audio son los drivers de los dispositivos de hardware). También puede verificar que en el directorio /dev/snd se encuentren los ficheros de dispositivo correctos:

$ ls -l /dev/snd/
total 0
crw-rw----  1 root audio 116,  0 Apr  8 14:17 controlC0
crw-rw----  1 root audio 116, 32 Apr  8 14:17 controlC1
crw-rw----  1 root audio 116, 24 Apr  8 14:17 pcmC0D0c
crw-rw----  1 root audio 116, 16 Apr  8 14:17 pcmC0D0p
crw-rw----  1 root audio 116, 25 Apr  8 14:17 pcmC0D1c
crw-rw----  1 root audio 116, 56 Apr  8 14:17 pcmC1D0c
crw-rw----  1 root audio 116, 48 Apr  8 14:17 pcmC1D0p
crw-rw----  1 root audio 116,  1 Apr  8 14:17 seq
crw-rw----  1 root audio 116, 33 Apr  8 14:17 timer

Si al menos tiene el dispositivo controlC0 y pcmC0D0p (o similar) entonces los módulos de sonido han sido cargados sin problemas.

Si no es el caso, sus módulos de sonido no fueron detectados o algo impide que se carguen. Si quiere ayuda en IRC o en los foros, por favor, incluya la salida de los programas mencionados en su mensaje. Para solucionar ésto, puede intentar cargar los módulos manualmente:

 # modprobe snd-NAME-OF-MODULE
 # modprobe snd-pcm-oss
  • Busque los ficheros del dispositivo en /dev/snd (mire más arriba) y/o pruebe si alsamixer o amixer pueden producir alguna salida de audio.
  • Añada snd-NOMBRE-DEL-MÓDULO y snd-pcm-oss a la lista de "MODULES" en /etc/rc.conf para que carguen al arrancar el ordenador (asegúrese de que snd-NOMBRE-DEL-MÓDULO está antes de snd-pcm-oss).

Probando la tarjeta de sonido

En esta sección damos poe supuesto que es root. Si quiere realizar los pasos en un usuario sin privilegios, debe saltar a la parte Dando Permisos primero.

  • Revirtiendo el silencio por defecto de la tarjeta.

La versión actual de ALSA deja a todas las tarjetas mudas por defecto, así que aunque la instalación haya resultado exitosa y tenga todos los módulos cargados, no escuchará ningún sonido. Deberá revertir el estado de silencio de los canales manualmente. Se recomienda usar 'alsamixer' para hacerlo. Desde la interfaz de alsamixer (basada en texto), la etiqueta "MM" bajo un canal significa que el mismo esta mudo, y "00" indica que está abierto. Presione la tecla 'm' para pasar de MM/00. Use las flechas de dirección derecha/izquierda para navegar por los canales y arriba/abajo para cambiar el volúmen.

NOTA: Cuando use amixer, no solo debe asegurarse de revertir el silencio sino también de dejar un buen nivel de volúmen. El programa entiende los valores por porcentaje, no por números. Si usa un número (digamos, 90) entonces amixer lo tomará como un 100%, lo que puede dañar sus altavoces.

 # amixer set Master 90% unmute
 # amixer set PCM 85% unmute
  • Trate de reproducir un archivo WAV
 # aplay mywav.wav

NOTA: Algunas tarjetas (hasta ahora sólo se vió en una Soundblaster Audigy LS) necesitan la salida digital apagada o muda para poder escuchar sonido analógico.


Dando Permisos

Para poder usar el sonido siendo un usuario común, siga estos pasos:

  • Añada su usuario al grupo audio:
# gpasswd -a NOMBRE_DE_USUARIO audio
  • Salga de su sesión y vuelva a entrar para que los cambios tengan efecto.

Cargar la configuración de ALSAMIXER al arranque

  • Ejecute 'alsactl' una vez para crear '/etc/asound.state':
alsactl store
  • Edite '/etc/rc.conf' y añada 'alsa' a la lista de "DAEMONS". Ésto guardará la configuración de ALSA al apagado y la volverá a cargar al bootear.

Consiguiéndo la salida de SPDIF

(de gralves de los foros de Gentoo)

  • En el control de volúmen de GNOME, bajo la pestaña "Opciones", cambie de IEC958 a PCM. Esta opción puede ser habilitada en "Preferencias".
  • Si no tiene instalado el control de volúmen de Gnome,
    • Edite /etc/asound.state. Este fichero es donde alsasound guarda las preferencias.
    • Encuentre la línea que dice: 'IEC958 Playback Switch'. Cerca de ella encontrará una línea diciendo "value:false". Cámbielo a "value:true".
    • Ahora encuentre esta línea: 'IEC958 Playback AC97-SPSA'. Cambie su valor a 0.
    • Reinicie ALSA (para hacerlo: # /etc/rc.d/alsa restart).

Forma alternativa de habilitar la salida de SPDIF automáticamente en el login (probado en una SoundBlaster Audigy):

  • añada las siguientes líneas a /etc/rc.local:
 # Usar salida COAX-digital
 amixer set 'IEC958 Optical' 100 unmute
 amixer set 'Audigy Analog/Digital Output Jack' on

Puede ver el nombre de la salida digital de tu tarjeta con:

 amixer scontrols

Configuración en KDE

  • Inicia KDE:
$ startx
  • Configure los niveles de volumen para este usuario (cada usuario tiene sus propios niveles):
$ alsamixer
  • Salga de la sesión e ingrese de nuevo para que funcione el sonido.
  • KDE 3.3 Dirígase al menu K > Multimedia > KMix
    • Seleccione Opciones > Configurar KMix...
    • Deseleccione la opción "Restablecer volumen al logearse"
    • Presione OK, y todo debería estar terminado. Ahora el volumen será el mismo que con alsamixer o sin KDE.

Ecualizador del sistema

Nota: Este método requiere del uso de un plugin ladspa que podría suponer un elevado uso de CPU al reproducir sonido. Además, ésto se hizo con vistas a sonido estereofónico (p. ej. auriculares).

  • necesitará, además de las utilidades del área de usuario ya comentadas, el paquete alsa-plugins
pacman -S alsa-plugins
  • instale también los paquetes ladspa y swh-plugins si no los tiene ya

pacman -S ladspa swh-plugins

  • si no tiene ya creados los archivos ~/.asoundrc o /etc/asound.conf, crée uno de ellos
vim ~/.asoundrc
  • inserte lo siguiente en su archivo de configuración de alsa (~/.asoundrc o /etc/asound.conf)
pcm.eq {
 type ladspa
# La salida del EQ puede ir bien directamente a un dispositivo de hardware # (si dispone de un mezclador por hardware, p.ej. SBLive/Audigy) o bien puede ir # al mezclador por software visto aquí. #slave.pcm "plughw:0,0" slave.pcm "plug:dmix"
# A veces tendrá que especificar la ruta a los plugins, especialmente si acaba de # instalarlos. Una vez haya abandonado la sesión y rearrancado esto no # debería ser necesario, pero si recibe mensajes de error acerca de la # imposibilidad de encontrar los plugins, pruebe a descomentar ésto. #path "/usr/lib/ladspa"
plugins [ { label mbeq id 1197 input { #este valor está aquí como ejemplo, edítelo a su gusto #bandas: 50hz, 100hz, 156hz, 220hz, 311hz, 440hz, 622hz, 880hz, 1250hz, 1750hz, 25000hz, #50000hz, 10000hz, 20000hz controls [ -5 -5 -5 -5 -5 -10 -20 -15 -10 -10 -10 -10 -10 -3 -2 ] } } ] }
# Redirija el dispositivo por defecto via el EQ - usted querrá hacer ésto # lo último, una vez esté seguro de que todo funciona. De otro modo todos # sus programas de audio dejarán de funcionar si algo ha ido mal.
pcm.!default { type plug slave.pcm "eq" }
# Redirija también la emulación OSS por el EQ (cuando los programas corren por "aoss")
pcm.dsp0 { type plug slave.pcm "eq" }
  • Reinicie alsa para cargar la nueva configuración (como root)
/etc/rc.d/alsa restart
  • ya debería funcionar (si no es así, pregunte en el foro)

Problemas

¿Todavía sin sonido?

Si está seguro de que ningún canal esta enmudecido, de que sus drivers están instalados correctamente, y de que el volumen está bien, pero todavía no puede escuchar nada, entonces la siguiente línea debería solucionar el problema: añádala a /etc/modprobe.d/modprobe.conf

options snd-NOMBRE-DEL-MÓDULO ac97_quirk=0

Sin sonido en una tarjeta de sonido Intel Onboard

Puede que haya un inconveniente con dos módulos conflictivos, snd_intel8x0 y snd_intel8x0m. En este caso, edite rc.conf y en el array "MODULES" añada el último a la lista negra de manera que finalmenete quede como !snd_intel8x0m.

¿Mala calidad en el sonido?

Si experimenta baja calidad de sonido, intente ajustar el volumen PCM (con alsamixer) a un nivel en el que el sonido sea bueno.

¿Ruidos cuando inicia y detiene la reproducción?

Algunos módulos pueden apagar la tarjeta cuando no está en uso. Esto puede producir un sonido audible cuando se enciende. Si le ocurre esto intente "modinfo snd-NOMBRE-DEL-MÓDULO", y busque una opción que ajuste o deshabilite esta opción.

Por ejemplo: para deshabilitar la función de ahorro de energía en una snd-hda-intel añada "options snd-hda-intel power_save=0" en /etc/modprobe.d/modprobe.conf, o pruebe con "modprobe snd-hda-intel power_save=0".

Alsamixer no puede iniciar

Si obtiene el siguiente error al intentar abrir Alsamixer:

alsamixer: function snd_ctl_open failed for default: No such device

Deberá reinstalar el kernel. Ejecute 'pacman -S kernel26'.

Sin sonido PCM por SPDIF

Se han encontrado algunos problemas con el sonido PCM saliendo por SPDIF, si es nuestro caso, y el switch de gnome o kde no funciona como debería la solución es crear el archivo /etc/asound.conf y añadir las siguientes lineas:

 pcm.!default {
 type plug
 slave {
 pcm "spdif"
 rate 48000
 format S16_LE
 }
 }

Recursos Externos

Más información: