Control de audio inteligente en Linux con Ear Candy

YouTube Preview Image

Las distribuciones de Linux más populares se están estandarizando respecto al manejo de audio a través de un componente llamado PulseAudio.  Se trata de la última encarnación de una funcionalidad muy antigua para soportar que múltiples aplicaciones compartieran un único dispositivo de audio, los famosos servidores de audio.

Si bien estos servidores antes se centraban sólo en compartir el dispositivo de audio entre varias aplicaciones, hoy en día existen muchas formas de usar el audio y con la avalancha de dispositivos enchufables como parlantes USB o audífonos bluetooth, estas soluciones se quedaban cortas.

Con Ear Candy se comienzan a ver los primeros frutos de usar como base un servidor de audio moderno como PulseAudio. Su principal característica es manejar en forma inteligente lo que el usuario está escuchando.  Por ejemplo si estás viendo un video y recibes una llamada por Skype, el audio del video se reducirá para que pongas atención en la llamada.  O bien si estás escuchando música y abres un video en Youtube, la música se detendrá automáticamente para darle prioridad al video que quieres ver.

Favoreciendo la usabilidad, Ear Candy no es un programa con millones de opciones para modificar, sino que simplemente lo ejecutas y te olvidas de él.  Sólamente lo recordarás cuando automáticamente aparezca para hacer su trabajo, antes de que por hábito muevas el mouse para detener esa canción de fondo.

En su última versión incluso no es necesario indicarle cómo debe manejar las aplicaciones, gracias a la estandarización que existe en Linux para entregar información acerca de las aplicaciones al entorno de escritorio – qué es la misma que se usa para construir el menú organizado por categorías – EarCandy es capaz de analizar la descripción de cada aplicación para detectar qué hace y actuar en consecuencia.

Si bien ya es usable y estable, EarCandy aún se considera en estado Alpha y no hay paquetes para usuarios finales.  Aquellos con alma de pionero pueden descargarlo directamente desde el repositorio bzr de EarCandy.

Bonus track : Audio en Linux, dejando atrás el caos

El manejo de audio en Linux siempre ha sido un tema bastante conflctivo, el estado actual es notablemente superior a lo que existía hace un par de años atrás, pero aún a veces aparecen pesadillas del pasado.

Existen al menos dos capas de abstracción para exponer el audio a las aplicaciones.  La primera capa corresponde a los drivers, y la segunda es el servidor de audio, un proceso que ayuda a eliminar las restricciones de los dispositivos de audio tradicionales en sistemas operativos multitarea.

Los drivers de audio en Linux se manejan como un componente especial del kernel, con su propio set de drivers y aplicaciones para administrar los dispositivos.  Originalmente se usaba Open Sound System (OSS) y más tarde fue reemplazado por ALSA que era capaz de manejar hardware con nuevas capacidades.

En la década de los noventa, en los tiempos de OSS, los dispositivos de audio eran muy sencillos y salvo destacadas excepciones, todos usaban una arquitectura basada en SoundBlaster.  Básicamente se trataba de un dispositivo con varias entradas, un mezclador, un canal de audio en estéreo y un sintetizador, ya sea un clásico FM (Yamaha OPL3) o en sus versiones más modernas, uno basado en wavetables.

Con esta arquitectura, y considerando que en esos años los sistemas eran monotarea, con un canal de audio era suficiente.  En paralelo aparecían dispositivos como Gravis Ultrasound que permitían hasta 32 canales de audio independiente, pero eran orientados a música, no a compartir canales entre aplicaciones.

La solución que adoptó Linux para poder usar un sólo canal para múltiples aplicaciones en forma simultánea fue agregar un componente central que tenía control sobre ese canal y las aplicaciones le enviaban el sonido a ese componente, se conoció como sound server o servidor de sonido.  No se realizó un esfuerzo de estandarización y aparecieron dos implementaciones, una asociada al gestor de ventanas Enlightenment llamada Enlightenment Sound Daemon o ESD, y otra de KDE llamada Analog Realtime Synthesizer o aRts.

Dadas estas condiciones, las aplicaciones tenían que decidir entre usar el dispositivo en forma directa via OSS (o ALSA), mediante ESD o mediante aRts.  Y para ello comenzaban a depender de bibliotecas específicas de ESD o aRts.

Si eso parece un problema, donde las cosas se ponían complicadas era cuando una aplicación sólo implementaba acceso directo a OSS y se apropiaba del dispositivo de audio, dejando sin audio a todas las aplicaciones que lo quisieran utilizar, incluyendo a los servidores de sonido.   Otro escenario posible era tener una aplicacion que gentilmente compartía el sonido por ESD, pero este dejaría fuera las aplicaciones con aRts.

Estos servidores comenzaron a perder relevancia cuando apareció ALSA, ya que en caso de disponer de hardware con más de un canal de audio se puede entregar a cada aplicación su propio canal, o bien emular esta capacidad por software de una forma transparente a la aplicación, aunque obviamente consumiendo más recursos del procesador.

Las cosas se pusieron más entretenidas aún con la aparición de dispositivos de audio enchufables, desde tarjetas de audio profesionales (Digidesign, M-Audio, etc) a unos simples audífonos bluetooth.  Esto cambia totalmente el modelo que antes se tenía de dispositivos fijos, que siempre estaban disponibles.

PulseAudio surge como una solución diseñada bajo criterios acorde a los requerimientos actuales de audio, es una capa de abstracción que reemplaza a los servidores de audio tradicionales, pero que evita los errores cometidos en el pasado, como es la dependencia de un entorno de escritorio o el deficiente manejo de la latencia que tenían los servidores tradicionales.

PulseAudio es una abstracción completa del sistema de audio subyacente, puede combinar múltiples dispositivos de audio como uno solo, manejar niveles de volumen por aplicación, sincronizar múltiples flujos de audio, etc.

Si bien algunos usuarios aun experimentan problemas con PulseAudio, se trata de una solución que vino para quedarse y sentar las bases de una nueva era del manejo de audio en Linux.

Link : EarCandy is a smart PulseAudio Volume Manager (Web Upd8)

Compartir Compartir
Publicado por Franco Catrin el 22 de May 2009 en la categoría Destacados, Software con los tags , , , . Tiene 57 comentarios.

57 Comentarios

Control de audio inteligente en Linux con Ear Candy

Deja tu Comentario ↓

Ver Todos Páginas: 1 [2]

Franco Catrin

Franco Catrin dijo el 22-5-2009 a las 19:01:

32

@TurboMAC

Sobre los efectos de audio, si se puede, pero no están disponibles para el usuario final. Básicamente lo que hacen es insertar plugins de LADSPA en la cadena de salida de audio.

Por ejemplo:
http://ubuntuforums.org/showthread.php?t=789578

Franco Catrin

Franco Catrin dijo el 22-5-2009 a las 19:06:

33

@KDE-RDNG
Antes no se tenía en cuenta la latencia en estos servidores de audio, pero si en PulseAudio

Además de tratar de reducir la latencia, implementa funciones para que las aplicaciones puedan medir la latencia y compensar respecto a eso.

Siempre habrá un compromiso entre latencia y rendimiento. Si reduces la latencia, el rendimiento se ve afectado. Si quieres mejorar el rendimiento tienes que acumular más datos para enviarlos de a bloques más grandes al dispositivo de sonido, aumentando la latencia.

Dado que siempre al pasar por el computador va a haber latencia, hay tarjetas de audio que tienen monitoreo por hardware para escuchar la señal antes de entrar al computador. Eso en conjunto con la compensación de latencia hace que al menos no afecte tanto como debería.

Stein!

DesaprobarAprobar6Stein! dijo el 22-5-2009 a las 20:36:

34

Hay tipos dedicados, y Franco jajajajajajaja
FayerWayer debería darse con el morro de Arica en el pecho jajajajaja
Grande Francooo!

Bernardo Arancibia

DesaprobarAprobar1Bernardo Arancibia dijo el 22-5-2009 a las 22:17:

35

En Archlinux ya se puede instalar desde AUR … habrá que probarlo, está buena la idea aunque yo prefiero eliminar los sonidos extras de las aplicaciones, como el messenger o de eventos como esos. Interesante artículo Franco.

TurboMAC

DesaprobarAprobar2TurboMAC dijo el 22-5-2009 a las 22:59:

36

YO estuve viendo pero depende de muchas cosas de gnome que no quier instalar por que tengo kde jajaja

juanco

DesaprobarAprobar3juanco dijo el 22-5-2009 a las 23:27:

37

@tarao

De seguro eres gay.

jaajaujuajau.

Peyesein

DesaprobarAprobar1Peyesein dijo el 23-5-2009 a las 00:21:

38

Del 100% de articulos que existen sobre pulseaudio, este hace parte del 50% que lo critica bien. No soy muy entendido del tema, pero supongo que si mucha gente se queja debe ser porque en algo deben tener la razon.

Dickinson_h2k

DesaprobarAprobar1Dickinson_h2k dijo el 23-5-2009 a las 00:34:

39

No necesariamente. En la mayoría de los proyectos open-source y/o libres hay muchas quejas (40% por lo menos, supongo…)

Esto por el simple hecho de haber disputas entre “usuarios finales” y los desarrolladores del software. Muchas quejas, por ejemplo, se han basado en el simple hecho de “completamente personalizable” o de “amigable para el usuario final”… en proyectos como PulseAudio, tal tipo de discusiones, me parece, deben ser pan de cada día… y los no entendidos (o muy entendidos, por el contrario) dejarán sus malas impresiones.

Saludos!

jci

DesaprobarAprobar2jci dijo el 23-5-2009 a las 00:50:

40

@Franco:

la latencia no solo se mide por los ciclos de CPU contra la maquina (ya que pueden haber otros procesos ocupandolo), si es que usas algun sistema “anti latencia” (las comillas son mias). Recordar, por ejemplo, los intentos de UBStudio y los kernels de RealTime (que andaban mejor que los experimentos actuales) donde la latencia no llegaba a los 420 ms en promedio, aunque eso no le importaria al usuario comun.

OSS no fue exclusivo de Linux, pero era lo que se tenia ante una voragine de clones de SB16 en el mercado (en aquellos entonces). Codigo realmente usable, pero no en las situaciones que son comunes actualmente (”oh, quiero que se escuchen los videos de yutub”, entre otros ejemplos). ALSA solo coloco una capa para que el desarrollo de aplicaciones para ISVs no se vieran afectados entre cambios de version de OSS, y la mentira de aplicaciones concurrentes que usaran el mismo dispositivo. Para la gente desarrollando drivers fue un descanso de OSS (aparte, esos wnes cambiaron su licencia). Aun se puede usar ALSA para “que varios programas toquen musiquita en sus notificaciones” pero la implementacion no fue nada simple. Imaginen como usar motosierras para poder cortar las piezas del coliseo romano: rectas, ok. Curvas…ni tanto.

ESD y ARTS fueron exclusivas de cada ambiente de escritorio, solo por que cada implementacion de “sonido” de los escritorios tenia una forma de manejo del audio. Si queria ocupar Kopete en GNOME o GAIM en KDE, serian soluciones incompatibles. Para los fanboys de Windows, existe DirectSound desde que lo conozco (1996) y ese ha sido como un buen manejado (pero culero estandard) desde aquellas epocas.

Ahora Pulseaudio trae mas dolores de cabeza que soluciones. Pero que va! Reportar el problema (y ojala reproducir el por que) es mas beneficioso que seguir alegando. Eso!

Enlaces del 23-05-09 | evelio.info

DesaprobarAprobar-1Enlaces del 23-05-09 | evelio.info dijo el 23-5-2009 a las 03:17:

41

[...] Control de audio inteligente en Linux con Ear Candy por Franco Catrin [...]

Rodrigo

DesaprobarAprobar0Rodrigo dijo el 23-5-2009 a las 16:16:

42

@Franco, es raro, pero en mi notebook (chipset intel 945gm) el volumen de salida se divide en FRONT (que serian los parlantes) y el Master… el problema es, conecto audifonos al equipo, y los parlantes del notebook siguen sonando. Tengo que silenciar manualmente el FRONT para escuchar solo audifonos,.. es incómodo…

Que opinas? problemas de alsa?.. PulseAudio? he visto muchos notebooks con este tipo de chipsets con el mismo drama…

Ayudaría Ear Candy a futuro con mi problema?

Saludos!

Christian

DesaprobarAprobar1Christian dijo el 23-5-2009 a las 20:27:

43

Al principio no estaba muy convencido, pero creo que ahora me gusta que Fayerwayer de soporte online para Linux. Grande!

carlos

DesaprobarAprobar-1carlos dijo el 23-5-2009 a las 23:02:

44

hay algun programa que haga eso en windows xp ??? gracias!! , saludos excelente articulo

F3lip3

DesaprobarAprobar1F3lip3 dijo el 24-5-2009 a las 04:10:

45

@jci
Pero entonces que pasa con soluciones como Phonon? se supone que se preocupa de “hacer la tarea” para q el sonido funcione bien en distintas plataformas… de hecho Qt lo adopto (es original de KDE) y le sumo backends para DS9 y Quicktime (ademas soporta Xine, Gstreamer y VLC)

Leonardo

DesaprobarAprobar1Leonardo dijo el 24-5-2009 a las 15:31:

46

Trivia OffTopic: lol.. el opening de naruto.. “Closer de Inoue Joe”

Franco Catrin

Franco Catrin dijo el 24-5-2009 a las 18:40:

47

@Rodrigo
Recuerdo haber tenido ese problema y se solucionaba al activar el conmutador “Phone jack sense” o algo asi. No estaba disponible en el control de volumen por omisión, sino que había que activarlo a través de sus propiedades.

Hay que tener en cuenta que cada laptop es diferente y esos extras son específicos de cada laptop. A medida que se van conociendo más modelos (y extras), vienen esas cosas pre-activadas.

No es un problema de ALSA ni PulseAudio, solo de (pre)configuración.

jorge

DesaprobarAprobar1jorge dijo el 24-5-2009 a las 23:33:

48

espectacular el post ,nunca habia entendido bien porque habian tantos sistemas de audio ni porque algunos programas funcionaban bien o mal dependiendo del que elegia

Muno

DesaprobarAprobar0Muno dijo el 25-5-2009 a las 00:35:

49

@Rodrigo
Tu problema es comun en notebooks, debes modificar el archivo alsa-base

Código:
sudo gedit /etc/modprobe.d/alsa-base

Al final del archivo añade la siguiente linea:
Código:
options snd-hda-intel model=sony-assamd (en el caso de los vaio, mi caso)

Luego graba los cambios, cierra el archivo, reinicia y prueba nuevamente.

Si no fuera vaio el metodo es el mismo solo cambiaria el termino sony-assamd averigua por ahi…

Los cambios fueron probados tanto en intrepid como en jaunty y en ambos se soluciono el problema.
http://foros.ubuntu-cl.org/viewtopic.php?t=8152&start=0&postdays=0&postorder=asc&highlight=

david.cs

DesaprobarAprobar0david.cs dijo el 25-5-2009 a las 02:35:

50

Todavía no entiendo cuál es la diferencia fundamental entre Phonon (KDE4) y PulseAudio.

tarado

DesaprobarAprobar-2tarado dijo el 25-5-2009 a las 03:13:

51

como chucha instalo esto? xD

jci

DesaprobarAprobar0jci dijo el 25-5-2009 a las 12:22:

52

@F3lip3:

Phonon no es “solo sonido”, sino un gran gran backend-frontend para aplicaciones que aprovechen multimedios. Imaginalo como un monton de engines (con codecs incluidos) para reproduccion de archivos de multimedios (peliculas/musica). Es bastante similar a gstreamer en su concepto (pero con diferencias sustanciales, como el uso de Solid que es bastante mas inteligente que Ear Candy). Es exclusivo de KDE4, y ademas fue para dar una estabilidad a la gran cantidad de APIs que viven cambiando *cof*gstreamer*cof* a lo largo del tiempo.

Pulseaudio es un SOUND SERVER, similar a ESD (que tambien tiene la gracia de poder usar la red para transmitir audio). Pulseaudio se comunica casi a bajo nivel al kernel (via HAL) o via ALSA (sinks/pipes). A diferencia de Phonon, estas llamadas pueden ser ocupando la misma API de ALSA para programar aplicaciones de audio (ALSA/OSS) o bien ocupando bibliotecas de un poco mas alto nivel, como libgnome o libao. Phonon es el API de multimedios de KDE4.

Franco Catrin

Franco Catrin dijo el 25-5-2009 a las 12:30:

53

@jci

Nice! Gracias por el aporte

tuxcayc

DesaprobarAprobar0tuxcayc dijo el 26-5-2009 a las 18:50:

54

Excelente artículo Franco, muy aclaratorio!

F3lip3

DesaprobarAprobar0F3lip3 dijo el 26-5-2009 a las 20:32:

55

@jci
Gracias por la explicación me queda mucho más claro. Eso si hay un error Phonon no es solo de KDE4 es tambien de Qt, Nokia lo adopto y lo hizo parte de su toolkit

Nevil

DesaprobarAprobar0Nevil dijo el 2-6-2009 a las 08:17:

57

Alguno me puede decir si hay algun programa bueno para DJs con simulador de mesa de mezclas en linux similar al virtual dj y de creación similar al FruityLoops?

Ver Todos Páginas: 1 [2]

Deja tu Comentario

XHTML: Puedes usar: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Previsualizar comentario?