domingo, 15 de noviembre de 2015

Configurar Foobar en Linux para reproducción bitperfect

Desde que he adoptado Linux / Mint como mi SO de uso habitual en casa, no he dejado de explorar distintas alternativas a la hora de reproducir musiquita mientras estoy delante del ordenador, como podréis comprobar si leéis las última entradas de este blog dedicadas a Spotify en Linux o al tinglado que he montado usando Logitech Media Server, Squeezelite, Orange Squeeze y ARC Welder.

No obstante tenía pendiente ver hasta qué punto era posible conseguir que Foobar, el extraordinario reproductor disponible únicamente para Windows, funcionara correctamente en Linux a través de la capa de compatibilidad que proporciona Wine.



En su momento ya hice mis pinitos con la ejecución cruzada de Foobar en OS X, consiguiendo un resultado fantástico que incluso permitía reproducir DSD codificado como DoP, a pesar de las capas de emulación y de los diversos subsistemas de audio implicados:


La única pega que no fui capaz de solventar entonces fue la relativa al hecho de que fuera necesario prefijar una frecuencia de salida en las propiedades de Core Audio para que la emisión en DoP pudiera tener lugar, ajuste que supone, en cualquier caso, un remuestreo incondicional de todo el audio reproducido.

El objetivo de este artículo, por tanto, es ver hasta dónde se puede llegar en un entorno Linux por lo que hace al uso de Foobar como reproductor. Ya os adelanto que bastante lejos, como quizás intuyáis viendo esta captura:


1. Instalar WineHQ y PlayOnLinux

Para comenzar, necesitaremos instalar el paquete WineHQ y un front-end para él denominado PlayOnLinux (POL, en adelante) que facilita enormemente la instalación, configuración y uso de Wine. Estrictamente hablando podemos prescindir de POL, pero en mi opinión aporta lo suficiente como para que contemos con él, así que con vuestro permiso voy a utilizarlo sin contemplaciones. Más adelante hablaremos de estas aportaciones.

Podemos instalar POL desde la página de descarga del proyecto, en la que encontraremos instrucciones detalladas para distintos sabores de Linux.

Alternativamente, podemos utilizar el gestor de paquetes de nuestra distribución (Mint en mi caso) para hacernos tanto con POL como con Wine, que es un paquete requerido por el primero.


2. Instalar Foobar

Ahora procederemos a instalar Foobar empleando POL. Para ello, abriremos la aplicación desde el correspondiente acceso directo que se habrá creado en el menú de aplicaciones.


Y procederemos a instalar un nuevo programa:


POL dispone de una galería de aplicaciones, organizadas en categorías, que podemos explorar casi casi como si de una tienda de aplicaciones se tratara y que se instalarán en un solo click. Foobar es una de ellas, así que bastará con escribir su nombre en el cuadro de búsqueda, hacer clic en la lista de resultados y, a continuación, en el botón correspondiente para iniciar la instalación.


Se iniciará un sencillo asistente paso a paso cuyas instrucciones seguiremos. En un momento del proceso, POL nos pedirá que descarguemos manualmente Foobar2000 desde la página del proyecto, cosa que haremos, para a continuación indicarle al asistente dónde lo hemos descargado para que dé comienzo la instalación propiamente dicha.



Yo he utilizado la última versión disponible de Foobar, la 1.3.9.

A partir de aquí se iniciará el instalador de Foobar, que tendrá exactamente el mismo aspecto que el que mostraría de haberlse ejecutado en su plataforma nativa, Windows. Seleccionaremos la ruta de instalación, el modo (yo he optado por la instalación estándar), los componentes a incluir, etc. etc. Lo seguiremos sin pestañear hasta completar el proceso.




Al finalizar, nos encontraremos con un bonito icono de Foobar en el escritorio de nuestra distribución, icono que también aparecerá en la ventana de POL. Al hacer clic sobre este último se activarán una serie de opciones y comandos en el panel lateral.


3. Un poco más sobre WineHQ y POL

Antes de seguir, hablemos un poquito de Wine y POL.

Wine (Wine is not an emulator) es una capa de software que proporciona compatibilidad con numerosas aplicaciones Windows, incluso con algunos juegos, y que encima lo hace sin necesidad de instalar este sistema operativo sobre una máquina virtual (obviando por tanto la necesidad de disponer de una licencia de Windows).

La estrategia que sigue Wine, como apunta su nombre, no está basada en la virtualización, sino en ofrecer a las aplicaciones Windows un entorno de ejecución anfitrión que trata de parecerse todo lo posible a Windows, esto es, una API (interfaz de programación de aplicaciones) compatible con WinAPI32  y una unidad de disco (C:) que en realidad es una carpeta dentro del sistema de archivos de nuestra distribución Linux. Todo para que nuestros programas Windows favoritos se sientan como en casa.

Esta estrategia tiene, en mi opinión, 2 ventajas:
  • Facilita la el uso integrado de las aplicaciones Windows con las nativas del sistema operativo.
  • No es necesario cargar un sistema operativo completo emulado, como sería el caso de emplear Virtualbox o cualquier otra herramienta de virtualización.
Como contrapartida, no todas las aplicaciones funcionan con Wine o, cuando sí lo hacen, pueden aparecer fallos de mayor o menor gravedad.

Por su parte,  POL no es otra cosa que una interfaz de usuario que facilita el uso de Wine ¿De qué manera? De varias, aunque si tengo que destacar algunas, más allá de la obvia que supone el uso de su interfaz para la instalación y administración de aplicaciones, serían estas:
  • Permite crear unidades C: independientes para cada aplicación instalada, lo que facilita el uso de configuraciones específicas para cada aplicación que ejecutemos a través de Wine. De este modo, cada una de estas aplicaciones funcionará dentro de algo así como su propia instalación de Windows, lo que incluye ajustes independientes dentro del registro de Windows.
  • Dispone de un gestor de versiones de Wine, de modo que podemos elegir con qué versión deseamos ejecutar cada una de las aplicaciones instaladas y probar varias de ellas para determinar con cuál funciona mejor.
Tras este preámbulo, vamos al lío.

4. Configurar POL / Wine para ejecutar Foobar en modo bitperfect

Por defecto, Wine utiliza Pulse como sistema de audio predeterminado. Pulse es, por definición, concurrente, es decir, admite flujos de audio simultáneos procedentes de varias aplicaciones, flujos que mezcla y remuestrea a una frecuencia de salida específica. Esto no es lo que queremos si pretendemos conseguir que Foobar funcione en modo bitperfect (transparente), es decir, respetando las naturaleza y manteniendo la integridad del archivo de audio reproducido. Por tanto, lo primero que tendremos que hacer es pedirle a Wine que ejecute Foobar utilizando ALSA, que sí admite un funcionamiento en modo exclusivo (si queréis saber algo más acerca de la arquitectura de audio de Linux podéis leer esto).

Para configurar Wine / POL / Foobar en modo ALSA tendremos que utilizar el comando Configurar disponible en POL.


Para seleccionar, a continuación, la pestaña Wine y la opción Editor del Registro:


Lo que queremos es, como podéis suponer, acceder al registro del entorno Windows dentro del cual se ejecuta Foobar para introducir una clave que le indique a Wine que debe utilizar el subsistema de audio ALSA en lugar de Pulse.

Una vez se abra el editor del registro, nos dirigiremos a la carpeta:

HKEY_CURRENT_USER :: Software :: Wine :: Drivers

Aquí crearemos una nueva clave dentro de la carpeta Drivers del siguiente modo:


La clave debe llamarse Audio y le asignaremos el valor alsa.


Cerraremos ahora el Editor del registro y haremos clic en la opción Configurar Wine para comprobar que efectivamente el cambio ha surtido efecto.


En el panel de configuración nos dirigiremos a la pestaña Audio para comprobar que, efectivamente, la instancia de Wine que ejecutará Foobar utilizará ALSA (controlador seleccionado: winealsa.drv)


5. Configurar Foobar en modo bitperfect

Ya casi estamos.

Ahora arrancaremos Foobar, bien utilizando el icono que habrá aparecido en el escritorio, bien utilizando el comando Lanzar en POL.


Si todo va como debe, tendremos al viejo Foobar corriendo en nuestro escritorio Linux. Ya podemos reproducir cualquier archivo de audio que tengamos a mano. Al hacerlo apreciaremos que el resto de sonidos del sistema quedan enmudecidos, como era de esperar.

No obstante esto no es suficiente. A pesar de que el audio se reproduce en modo exclusivo, se está produciendo un remuestreo a la frecuencia de salida y resolución (bits / muestra) prefijados por nuestro anfitrión Linux (típicamente 44Khz y 16 bits). Para comprobarlo, bastará con que reproduzcáis archivos con diferentes frecuencias de muestro y, simultáneamente, escribáis en una terminal algo parecido a esto:

more /proc/asound/STX/pcm0p/sub0/hw_params

Tendréis que sustituir STX/pcm0p/sub0 por los correspondientes a vuestro dispositivo de audio. En mi caso, lo que aparece en pantalla es algo como esto otro:

access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 440
buffer_size: 1764

Fijaos en las líneas en rojo. Permanecerán invariantes con independencia de las características del archivo reproducido. Malo.

¿Y cómo lo solucionamos? Muy fácil: con el complemento WASAPI para Foobar.

Bastará con descargarlo desde la página de complementos de Foobar e instalarlo del modo habitual:

File :: Preferences :: Components :: Install...

Ya que estamos, podemos instalar también algún que otro complemento adicional. Yo he añadido los siguientes:
  • APT-x100 Decoder.
  • DTS-HD decoder.
  • DVD-Audio Decoder and Watermark Detector
  • Lyrics Show Panel 3
  • Super Audio CD Decoder
Algunos de ellos son de tipo -component y se agregan de este modo. Otros deben instalarse manualmente copiando los archivos .dll correspondientes a la carpeta...

\Program Files\foobar2000\components

...dentro de la unidad C emulada para nuestra instancia de Foobar. Para acceder a ella usaremos el comando Abrir un directorio de POL, que abrirá el gestor de archivos de nuestra distribución y lo apuntará a la carpeta en la que se encuentra instalado Foobar.



De modo análogo, nos dirigiremos a...

\users\nombre_de_usuario\Application Data\foobar2000

Para copiar las carpetas dvda_metabase y sacd_metabase necesarias para un funcionamiento óptimo de los complementos de reproducción de DVD-Audio y SACD.


Por último, ya solo queda configurar las propiedades de salida de audio en Foobar para seleccionar el dispositivo que deseemos utilizar  en su modo de uso WASAPI (push) y su formato de salida (no, WASAPI event no funciona, o al menos no lo hace en mi sistema):

File :: Preferences :: Playback :: Output


Si ahora repetimos la prueba anterior veremos como la salida del comando...

more /proc/asound/STX/pcm0p/sub0/hw_params

...refleja correctamente la naturaleza del audio reproducido.


5. Comentarios finales

Tras seguir el procedimiento descrito en este artículo, nos encontramos con Foobar ejecutándose en Linux de un modo estable y ofreciendo una reproducción íntegra y de calidad, sin artefactos en el sonido tales como microcortes, ruídos, etc. De hecho, personalmente lo prefiero a cualquiera de los reproductores / gestores de audio nativos que he probado hasta el momento.

Lógicamente podemos seguir configurando Foobar a nuestro gusto: otros complementos como Sox, remezcla a estéreo a través del DSP Manager, aspecto de la interfaz de usuario, etc. etc. En mi caso la cosa ha quedado así:


Lamentablemente no he podido comprobar si Foobar, instalado y configurado de este modo, es capaz de reproducir audio DSD en formato nativo (naturalmente, la transcodificación a PCM de alta resolución funciona perfectamente), bien a través de DoP, bien por medio de ASIO Proxy, aunque probablemente en este caso el tinglado se complique un poquito.

Como en este momento no dispongo de ningún DAC DSD al que meter mano, cualquier comentario al respecto de esta posibilidad por parte de alguien que sí tenga uno y pierda un ratito en seguir estas instrucciones será bienvenido. No obstante, mi apuesta es que funcionará.

No me gustaría concluir sin mencionar un par de cosas más.

Primero: El tándem ALSA / WASAPI es tan, tan exclusivo, que si accedéis a las opciones de salida de audio de Foobar mientras se está reproduciendo algún archivo, probablemente el dispositivo empleado no aparezca en el selector y se muestre un mensaje de error. Simplemente ignoradlo y cerrad la ventana de ajustes.


Segundo: Recordad que POL dispone de un gestor de versiones de Wine. Resulta muy sencillo por tanto probar con otra versión de esta capa de emulación si la empleada inicialmente no acaba de funcionar totalmente bien. Para gestionar las versiones instaladas en POL nos dirigiremos a:

Herramientas :: Gestiona versiones de Wine



Para ejecutar Foobar con otra versión de Wine, utilizaremos el comando Configurar en POL.


Personalmente he obtenido resultados magníficos con la versión 1.6.2.

Nada más, hasta aquí llegamos. Confío en que hayáis encontrado este minitutorial interesante. Podéis hacer comentarios aquí mismo, en el blog, o en el hilo que he abierto en AudioPlanet para intercambiar experiencias con otros intrépidos probadores de cosas ;-):

4 comentarios :

Anónimo dijo...

Excelente tutorial, utilizando foobar sobre calculate linux x64.

aldeas eco-logicas para soñar despiertos dijo...

Buenas tardes. ..estoy empeñado en conexión reproducir un sonido de calidad ....
Me compre allá por el año 92 un home cinema Sony que por casualidad sonaba sacd ....y ahí empezó mi carrera de fondo me quede alucinado de ese sonido y desde entonces voy siguiendo por conseguir un buen equipo
Ahora dispongo de un equipo piooner vsx d512 y un reproductor DVD denon 1920 ...y no puedo gastar más en compras que son muy escasas y también mis recursos lo quiero es poder reproducir mi equipo cambiando firmware etc un sonido de calidad sacd ...5.1...flac ...envolvente osea sin codificación

aldeas eco-logicas para soñar despiertos dijo...

Ya me cuentas por aquí o por mi email cómo lo puedo conseguir esto es un laberinto y tiempo que llevo consumido. ..ya tengo en casa tres home cinema tres reproductores DVD's
Etc ...yo no me da el sonido que busco

Pablo Felip dijo...

Resulta un poco complicado dar una solución específica a un problema general, como es el tuyo, máxime sin poder sugerir la sustitución de componentes.

En mi opinión (y en la de muchos), inicialmente los factores más determinantes son los altavoces y la propia sala en la que los has instalado. No mencionas qué altavoces conectas a tu receptor multicanal. Por otro lado, no es realista esperar que un cambio de firmware (o similar) vaya a transformar tu equipo en otra cosa. Un cambio de tu reproductor de DVD tampoco lo hará.

Tu receptor Pioneer no dispone de ajuste de sala, por lo que podrías plantearte utilizar un PC como fuente, con un reproductor como Foobar o JRiver Media Center, conectado a tu receptor a través de SPDIF, e instalar además en el ordenador un componente de EQ. Seguramente ahí sí apreciarías diferencias muy notables sin realizar cambios en tu equipamiento.

Te animo a que te pases por audioplanet.biz, un foro especializado en audio. Seguro que allí encuentras información de tu interés.