Betazeta Networks:BelelúBólidoCHWFayerWayerFW BrasilFerpleiLUPANiubieSaborizanteVeoVerdeWayerless MCUZimio Versión Movil

Temas Calientes

Control de audio inteligente en Linux con Ear Candy

44

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)

44 Comentarios

Control de audio inteligente en Linux con Ear Candy

Páginas: 1 2
Ver Todos
Thumb up 0 Thumb down 0 avatar_jci jci dijo hace 3 años

@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!

Responder
Thumb up 0 Thumb down 0 avatar_Rodrigo Rodrigo dijo hace 3 años

@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!

Responder
Thumb up 0 Thumb down 0 avatar_Christian Christian dijo hace 3 años

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

Responder
Thumb up 0 Thumb down 0 avatar_carlos carlos dijo hace 3 años

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

Responder
Thumb up 0 Thumb down 0 avatar_F3lip3 F3lip3 dijo hace 3 años

@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)

Responder
Thumb up 0 Thumb down 0 avatar_Leonardo Leonardo dijo hace 3 años

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

Responder
Thumb up 0 Thumb down 0 avatar_jorge jorge dijo hace 3 años

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

Responder
Thumb up 0 Thumb down 0 avatar_Muno Muno dijo hace 3 años

@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=

Responder
Thumb up 0 Thumb down 0 avatar_david.cs david.cs dijo hace 3 años

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

Responder
Thumb up 0 Thumb down 0 avatar_tarado tarado dijo hace 3 años

como chucha instalo esto? xD

Responder
Thumb up 0 Thumb down 0 avatar_jci jci dijo hace 3 años

@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.

Responder
Thumb up 0 Thumb down 0 avatar_tuxcayc tuxcayc dijo hace 3 años

Excelente artículo Franco, muy aclaratorio!

Responder
Thumb up 0 Thumb down 0 avatar_F3lip3 F3lip3 dijo hace 3 años

@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

Responder
Thumb up 0 Thumb down 0 avatar_Nevil Nevil dijo hace 3 años

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?

Responder
Páginas: 1 2
Ver Todos

Deja tu Comentario

La opción de comentar está abierta a todos los usuarios, pero te pedimos por favor mantenerte dentro del tema del artículo y no publicar comentarios ofensivos o publicidad basura. Nos reservamos el derecho de eliminar cualquier comentario que no cumpla estas reglas.

Para que aparezca tu foto en vez del icono genérico en tu comentario, el email con el que comentas debe estar inscrito en Gravatar.