Imprimir

Reproductor de audio en Linux

El problema del sonido en Linux

Tradicionalmente el sonido ha sido complicado en Linux debido a la coexistencia de varios sistemas.

El sistema de sonido de Linux para los kernel 2.6 es ALSA, que ha reemplazado al que fuera el primer sistema de sonido para GNU Linux, OSS. El problema de OSS es que creaba una capa de lectura/escritura directa en el dispositivo de audio que permitía a los programas escribir en /dev/dsp pero que no permitía compartir el dispositivo de sonido a varias fuentes de audio. Por ejemplo, el editor de sonido Audacity se adueña de /dev/dsp e impide que otro escriba en él y si otro programa ha bloqueado ya el dispositivo da error.

Para los kernel 2.6 no instalaremos los módulos OSS sino los módulos ALSA (con emulación OSS ya que algunos programas esperan que OSS esté instalado).

Por encima de la capa de lectura/escritura de los dispositivos se ejecutan diversos servidores de sonido: esound (de Enlightenment y GNOME), artsd (de KDE), JACK (que utiliza ALSA como back-end) y PulseAudio.

Tantos servidores de sonido muchas veces dan problemas, ya que si tenemos ejecutables compilados para diferentes bibliotecas tendremos varios demonios compitiendo por la salida de audio.

Veamos el procedimiento a seguir para tener sonido en Linux:

  1. Soporte en el kernel
  2. Cargar los módulos
  3. Comprobar el dispositivo /dev/dsp
  4. Reproductor de audio

Soporte en el kernel

El kernel tiene que tener soporte para:

  1. el dispositivo que usa la tarjeta de sonido (PCI, ISAPnP, Puente PCI-ISA...).

    Si la tarjeta es ISAPnP (por ejemplo, Avance Logic ALS100), se tiene que activar at boot time, antes de cargar el módulo ALSA.

    En la BIOS, ¿El sistema operativo es PnP? No.

    Instalar el paquete isapnptools. Esto creará el script /etc/init.d/isapnp y el enlace /etc/rcS.d/S15isapnp, que se encargarán de configurar la tarjeta ISAPnP al iniciar.

    Con pnpdump sabremos los datos de la tarjeta y del puerto en que está conectada. Ejecutar:

    # pnpdump > /etc/isapnp.conf

    Editar /etc/isapnp.conf y descomentar las líneas adecuadas:

    io=0x03e8
    irq=5
    dma0=1
    dma1=0

    Activar la tarjeta ISAPnP ejecutando el comando:

    # /etc/init.d/isapnp start

    Recursos

  2. sonido genérico, soporte ALSA y compatibilidad ALSA-OSS (no instalar los módulos OSS).
  3. el módulo ALSA (Advanced Linux Sound Architecture) de nuestra tarjeta de sonido. Averiguaremos cuál es el módulo ALSA que necesitamos, así como la sintaxis de los parámetros necesarios para cargarlo, en la página alsa-project.org/alsa-doc/, por ejemplo:
    • Avance Logic ALS100 (ISAPnP): snd-als100
    • Yamaha OPL3-SA2 (Puente PCI-ISA): snd-opl3sa2

Cargar los módulos

Cargaremos los módulos con modconf para que se actualice el archivo /etc/modules y se carguen al iniciar, pasándole los parámetros necesarios, por ejemplo:

  • Avance Logic ALS100 (ISAPnP):

    port=0x0220 irq=5 dma8=1 dma16=0

  • Yamaha OPL3-SA2 (Puente PCI-ISA): consultar los parámetros en la BIOS:

    sb_port=0x220 irq=5 dma1=1 dma2=0 fm_port=0x388 midi_port=0x330 port=0x538 wss_port=0x530 isapnp=0

Comprobar el dispositivo /dev/dsp

Instalaremos las Herramientas ALSA (paquete alsa-utils) y se creará /etc/init.d/alsa y el enlace /etc/rc2.d/S12alsa, por lo que al iniciar se cargará la configuración ALSA (entre otras cosas, restaurará los valores del volumen). Por defecto el sonido suele estar mute, por lo que ejecutaremos alsamixer para hacer unmute:

# alsamixer

alsamixer mute

MM significa que el canal está silenciado: quitaremos la MM con la tecla <m> y subiremos el volumen de la tarjeta a un nivel audible:

alsamixer unmute

Existen numerosos mezcladores gráficos (todos son frontales de alsamixer):

  • alsamixergui (paquete alsamixergui): es una de las herramientas ALSA.
  • GNOME-alsamixer (paquete gnome-alsamixer): mezclador de GNOME.
  • Kmix (paquete kmix): mezclador de KDE.

    Kmix

En este punto, ya deberíamos tener sonido. Para comprobarlo:

  • la forma irritante de comprobar la tarjeta de sonido es ver si se puede escuchar estática en los altavoces. Esto nos confirmará si está configurada y funcionando. Haremos:
    # cat /dev/urandom > /dev/dsp

    Si todo está correcto se escuchará estática. Detenerlo con <Ctrl+C>.

  • información sobre la tarjeta de sonido:
    # cat /proc/asound/cards
    0 [Live]: EMU10K1 - Sound Blaster Live!
              Sound Blaster Live! (rev.6) at 0xb800, irq 11
  • versión de ALSA que se usa:
    # cat /proc/asound/version
    Advanced Linux Sound Architecture Driver Version 1.0.8
  • el usuario debe pertenecer al grupo audio para utilizar el sonido, ya que los permisos del dispositivo de sonido /dev/dsp suelen ser:
    • Propietario (root): leer y escribir.
    • Grupo (audio): leer y escribir.
    • Otros: prohibido.

Reproductor de audio

Soporte de formatos de audio propietarios en Linux

Todos los reproductores linuxeros de audio y vídeo incluyen el decoder y reproducen MP3 pero ninguna distro trae el encoder ya que las patentes impiden distribuir binarios. El encoder para Linux es Lame (lame.sourceforge.net, paquete lame), pero en su web sólo encontraremos el código fuente, que sí es legal distribuirlo, por lo tendremos que compilarlo o buscar un repositorio que lo distribuya compilado.

Si al instalarlo no se instala libmp3lame.so, la librería que buscan algunos programas (como Audacity), sino libmp3lame.so.0, lo solucionaremos creando el enlace:

# ln -s /usr/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so

El encoder para Linux para AAC es FAAD (Freeware Advanced Audio Decoder, sourceforge.net/projects/faac/, paquete faad).

Equivalencias en Windows: Winamp.

  • Amarok (paquete amarok): reproductor de música de KDE.

    Amarok

  • Xmms (X MultiMedia System, paquete xmms): similar a WinAmp. Dispone de un plugin para JACK (paquete xmms-jackasyn). Tiene varios forks, como audacious (paquete audacious) o Beep Media Player (paquete beep-media-player).

    Xmms

  • Rhythmbox (paquete rhythmbox): reproductor de música de GNOME.

    Rhythmbox

  • Listen (paquete listen): reproductor de música para GNOME.

    Listen

  • Banshee (paquete banshee): reproductor de música para GNOME.

    Banshee

  • Exaile (exaile.org, paquete exaile): reproductor de música similar a Amarok en prestaciones, escrito en GTK.

    Exaile

  • GQmpeg (paquete gqmpeg): frontal para mpg321 y ogg123 para archivos .mpg y .ogg.

    GQmpeg

  • Quod Libet (sacredchao.net/quodlibet/, paquete quodlibet): reproductor de música basado en GTK+2 y escrito en Python.

    Quod Libet

  • mp3blaster (paquete mp3blaster): reproductor de música en modo texto.

    mp3blaster

  • Open Cubic Player (stian.lunafish.org/coding-ocp.php, paquete opencubicplayer): reproductor de música en modo texto.

    Open Cubic Player

5 Comentarios en “Reproductor de audio en Linux”

  • Primitivo dice:

    Una pregunta ya estoy instalando el sonido en mi laptop, las caracteristicas son:
    Toshiba A215-s7414 con amd 62X2 ati radeon graphics y realtek
    Toda la semana estuve tratando de levantar el audio y nada, lo que hice fue instalar este paquete: realtek-linux-audiopack-4.07a.tar.bz2
    Tambien instale todos los paquetes mas actuales de ALSA, y aun no tngo audio.
    Al ejecutar los comandos que sugieres me aparece esto:
    root @ primitivo-laptop:~# cat /proc/asound/card0/codec#* | grep Codec
    Codec: Generic 11c1 Si3054
    Codec: Realtek ALC268
    root @ primitivo-laptop:~# cat /proc/asound/cards
    0 [SB]: HDA-Intel – HDA ATI SB
    HDA ATI SB at 0xf8600000 irq 16
    root @ primitivo-laptop:~# cat /proc/asound/version
    Advanced Linux Sound Architecture Driver Version 1.0.15 (Tue Oct 16 14:57:44 2007 UTC).
    Queria ver si me podrias orientar, espero que este cerca de conseguir levantar el audio, o si estoy muy mal tal ves me puedas decir cuales fueron mis errores.

  • crash-n-burn dice:

    Primi, si tradicionalmente en Linux el sonido ha sido complicado, en algunos portátiles puede ser una odisea. Por suerte tenemos http://www.linux-laptop.net, donde está todo sobre portátiles en Linux. Concretamente veo que figura tu Toshiba A215-s4747 y funciona bien con Ubuntu, aunque parece que les costó activar el sonido. También te puede ayudar nuestro artículo sobre hardware en Linux.
    Ánimo.

  • Primitivo dice:

    Muchas gracias, ya encontre la solucion, te paso el link por si alguien mas se interesa en instalarle un mejor sistema operativo a su lap:
    lddubeau.com/avaktavyam/linux-on-a-compal-ifl90/
    De todos modos voy a postear en mi blog: trixmontero.blogspot.com
    Gracias por tu respuesta rapida y me da gusto que alla gente como tu que comparte sus conocimientos.
    Ahora si voy a disfrutar programando en mi Ubuntu escuchando mi musica favorita.

  • gaul paspor dice:

    bueno, yo tengo un problemilla no tan grave pero que me pone idiota al momento de trabajar en el
    laptop, cuando conecto en jack a el input se escuha por los audifonos pero los parlantes
    del laptop no se mutean

    estoy trabajando con debian eth 4.0

    ayuda!

  • Sánchez Jiménez José Gabriel dice:

    Saludos desde Costa Rica.

    Tengo una consulta, por favor, si me pueden sugerir cómo obtener sonido en UBUNTU 9.04, que me dejó de sonar, a pesar de que tengo una partición y otro SO sí suena.

Deja un comentario