domingo, 10 de julio de 2016

Integrando LMS con otros bichos (AirPlay, UPnP, Chromecast)

Me gustaría haceros una pregunta ¿Sabéis qué tienen en común todos estos cacharros?


Que todos ellos forman parte, en estos momentos, de mi tinglado doméstico de reproducción musical (TDRP) y obedecen a un único amo: el servidor de medios de Logitech (LMS) instalado en el NAS que podéis ver en el centro de este collage diogénico digital (o CDD, por seguir con los acrónimos).

Que sendos Squeezeboxes (Touch y Classic) o incluso Squeezelite, el fantástico emulador de Squeezebox, o una Raspberry Pi con piCorePlayer participen de este montaje no tiene ningún misterio. Es su obligación, claro está. Para eso han sido diseñados. Como os podéis imaginar, todos estos dispositivos se encuentran obscenamente repartidos por distintas habitaciones de mi (muy saturado de cacharros) domicilio habitual.

Si os fijáis en la imagen anterior, apreciaréis, sin embargo, otros bichos de diferente pelaje poco frecuentes en un entorno Logitech Media Server, a saber:
  • Un Airport Express, que actualmente reside en mi cocina, conectado a una preciosa radio Tivoli One. Habitualmente lo empleo para escuchar Spotify, emitido desde un iPad, cuando me veo obligado a fregar las montañas de vajilla que mi familia apila para mi, amorosamente, día tras día, en el fregadero para recordarme que no todo es pasarse el día pensando en pajaritos digitales. De este modo al menos la experiencia se dulcifica. Como quizás sepáis, pocas cosas hay tan gratificantes como disfrutar de Dorian con el estropajo en una mano y el Fairy en la otra.
  • Un Apple TV de 3ª generación, que actualmente utilizo casi exclusivamente para lanzar contenidos a la tele del salón desde un iPad y para acceder al catálogo americano de Netflix. Qué demonios, la verdad es que lo compré en un impulso y no lo uso para nada. Debería venderlo. Pero bueno, pensaré en eso después de terminar de escribir este artículo.
  • OSMC (un reproductor multimedia chulo, chulo basado en Kodi) corriendo en una Raspberry 2, también en el salón y como reproductor de pelis, series y música multicanal. La niña de mis ojos de mi tinglado audiovisual, aunque tengo que decir que mi familia no lo aprecia del mismo modo.
A esta lista podríamos añadir la televisión del salón, puesto que en estos momentos también se encuentra esclavizada por el LMS, aunque solo haya sido de rebote.

Y todo esto para qué, seguramente os estaréis preguntando. Muy fácil: para poder reproducir el archivo más recóndito de mi colección musical, la emisora de radio más extraña de Internet o el disco más gafapasta de todo Spotify en cualquier lugar, o en varios de ellos simultaneamente, de forma sincronizada, controlando todo el cotarro desde cualquier navegador, móvil o tableta con una aplicación decente en lugar de las birrias que suelen llevar los reproductores dedicados (tanto más birriosas cuanto más caros y esotéricos, claro).

Muy conveniente, sin duda, para esas fiestas privadas (me refiero a lo de sincronizar reproductores). Lástima que ni me acuerde de la última que montamos en casa. Pero bueno, que no sea por no tener un reproductor (o más de uno) en cada habitación y que todos estén amaestrados para cantar a la vez.

Pero pongámonos serios que vamos a tratar cosas importantes.

Creo haber hablado de Logitech Media Server (la otra niña de mis ojos) en más de una ocasión en este blog (y las que quedan). Adoro ese aroma a beta permanente que desprende, esa incertidumbre que me hace sentir cada vez que le aplico una actualización o trato de instalar, en su infinita tolerancia, un complemento, parido en la guarida de quién sabe qué anónimo programador, que le dote de los superpoderes necesarios para osadamente ir donde ningún otro servidor de medios haya ido antes. Quizás por estas razones, además de por su flexibilidad, rendimiento, compatibilidad y carácter abierto y gratuito, LMS está a punto de hacerse mayor. Son ya más de 15 años los que tiene de vida, dedicado infatigablemente a hacernos felices. Musicalmente hablando, claro.

El caso es que esta mañana, mientras me preparaba el cortado en la Nespresso, he pensado ¡Cómo molaría estar ahora mismo escuchando un disco de los almacenados en mi NAS! ¿Cuál? Pues da igual. Uno cualquiera. Lo importante es la motivación, ¿no? Por eso mismo he recordado la existencia de 3 plugins (complementos) para LMS que en una de tantas idas y venidas al foro de slimdevices.com capté por el rabillo del ojo. Se trata de 3 componentes de tipo bridge (puente) que permiten integrar dispositivos AirPlay, UPnP y Chromecast en nuestro servidor de medios preferido: AirPlay Bridge, UPnPBridge y CastBridge.

Todos tres se encuentran en la sección de plugins de terceros del panel de configuración del LMS:


Si vuestro LMS es un poco viejuno es posible que no aparezcan. Por otra parte, Sourceforge, el lugar donde residen muchos de estos complementos para LMS y desde donde el servidor realiza las descargas pertinentes cuando los activamos, parece estar en modo "voy a elevar tus niveles de estrés", cambiando archivos de URL y esas cosas. Por ello no es mala idea que desconfiemos de los plugins (aparentemente) disponibles en LMS y optemos por agregar el repositorio donde se encuentran, siguiendo para ello las indicaciones del propio padre de las crituras (un tal philippe_44). Los repositorios son estos:

Versión estable:
http://tenet.dl.sourceforge.net/project/lms-plugins-philippe44/repo-sf.xml

Versión de desarrollo:
http://tenet.dl.sourceforge.net/project/lms-to-upnp/dev/repo-sf.xml

Yo he usado la estable (evitemos los chistes fáciles, por favor).


A pesar de ello, me he encontrado con problemas a la hora de instalar el puente para AirPlay. Puede que esto haya sido así porque mi LMS está ya muy acostumbrado a que le hurgue las tripas y cuando intento hacer las cosas siguiendo los procedimientos, digamos, normales demuestra extrañeza e irritación. No obstante, siempre podéis recurrir a realizar la descarga del archivo zip del plugin desde la página del proyecto en sourceforge.net (AirPlay, UPnP y Chromecast), descomprimirlo y colocarlo en su sitio en las entrañas de vuestro LMS con vuestras propias manitas utilizando un cliente SFTP como Filezilla (por ejemplo). En el caso de mi ReadyNas las entrañas en cuestión están aquí:

/c/.squeezeboxserver/Plugins

Si os veis obligados a realizar una instalación manual no os olvidéis (Linux y OS X) de ajustar los permisos de ejecución de los binarios, con el consabido chmod +x o desde el propio Filezilla, situados en:

nombredelplugin/Bin/

Como no tengo un Chromecast (¿cómo es posible?) solo he podido probar los puentes AirPlay y UPnP. Inicialmente he probado con el primero, que despliega este panel de control en la pestaña Avanzada del LMS:

Panel de configuración del puente AirPlay (clic para ampliar).

En el caso del LMS ejecutándose en el ReadyNas Ultra 4, hay que optar por el binario de 32 bits compilado estáticamente, esto es, squeeze2raop-x86-static (1). Para que aparezca el panel de opciones inferior deberemos generar una configuración nueva utilizando el botón Generate (2), proceso que puede demorarse hasta unos 30 segundos (paciencia). También es posible modificar el nombre descriptivo con que cada reproductor aparecerá en el ecosistema LMS (3). Además, podremos decidir si deseamos que LMS empuje la información (4) del tema que se está reproduciendo (metadatos e incluso carátula), de modo que estos se muestren en pantalla del receptor AirPlay de tener este la capacidad de hacerlo (Apple TV o bien OSMC con AirPlay activado, por ejemplo). Por último, en la parte inferior del panel se enumerarán (5) los dispositivos AirPlay detectados, que pueden ser deseleccionados individualmente para dejar algunos de ellos fuera de este montaje. Como veis tengo unos cuantos.

A continuación, instalé y activé (desde el repositorio, recordad), el puente UPnP:

Panel de configuración del puente UPnP (clic para ampliar).

Ahora, lo esperable: Binario estático (1), generación de ajustes de partida (2), envío de metadatos (3) y lista (4) de reproductores detectados (técnicamente, dispositivos UPnP compatibles con el perfil renderer).

No obstante este puente UPnP alberga mayores complejidades. Lo bueno de UPnP es que es un estándar. Y lo que pasa con los estándares es que hay muchos. Y cada fabricante se adhiere a ellos en la medida en que le da la real gana. Dicho de otro modo: es probable que tengáis que trastear con los ajustes desplegados en panel para conseguir que vuestro reproductor UPnP funcione correctamente. O al menos lo más correctamente posible. Fijaos en la captura de pantalla anterior. Los ajustes mostrados (default parameters) se aplicarán, inicialmente, a todos los reproductores UPnP detectados por el complemento (5).

Mirad ahora la captura justo bajo este párrafo. De entrada, disponemos de un menú de ajustes predefinidos, que además pueden descargarse / actualizarse desde la página del proyecto. Como veis, tenemos clásicos irrenunciables como Foobar, JRMC o incluso el correspondiente al conocido Pioneer N30. Simplemente debemos seleccionar (1) el nombre del reproductor detectado cuyos ajustes deseamos modificar y localizar el perfil que le deseamos asignar en la lista (2).

Perfiles predefinidos en el puente UPnP.

Si nuestro dispositivo no aparece en ella no tendremos más remedio que ir probando un perfil tras otro hasta dar con el más adecuado o, alternativamente, modificar directamente los parámetros de funcionamiento que aparecen en el panel de control. Los que dejemos en blanco asumirán los establecidos en el perfil general.

Ajuste fino del perfil UPnP para OSMC.

En el caso de mi OSMC (1), recordad, una variante de Kodi que funciona en Raspberry, he modificado el nombre (2) para diferenciarlo de su identidad AirPlay (sí, amigos, OSMC también puede aparecer como un punto de reproducción AirPlay en la red, a pesar de no tener nada que ver con Apple) y he activado el envío de todos los metadatos posibles (4).

Del mismo modo, he establecido la frecuencia máxima admitida (192 Khz) y me he visto obligado a eliminar pcm de la lista de codecs soportados (3), porque de lo contrario ciertos archivos de alta resolución no se reproducían correctamente por razones inescrutables. También he activado la reproducción sin pausas (gapless), que en OSMC funciona bien (5), y he desactivado el control digital de volumen (6) para respetar todo lo posible la integridad de la señal de audio. En este caso ajusto el nivel desde el mando a distancia del amplificador multicanal al que tengo conectada la Raspberry Pi 2 sobre la que se ejecuta OSMC.

Se me ocurre que un candidato de lo más idóneo para ser sometido a este proceso de transformismo digital es el Oppo 103 / 105. Integrarlo en un entorno LMS podría elevar su usabilidad enormemente. Si tuviera uno (el que se entrevé en alguna de las fotos que acompañan al artículo es un 93, carente del perfil UPnP requerido), no me lo pensaría ni un instante.

¿Y qué conseguiremos tras completar todo este proceso? Algo tan hermosote como que en el selector de reproductores de LMS nos aparezca esta lista de cacharros, cada uno de su padre y de su madre. Los complementos - puente aportarán una capa de compatibilidad para que los dispositivos AirPlay, UPnP y, aunque no lo hemos demostrado, Chromecast se integren con los Squeezeboxes nativos (reales o simulados) encargándose, además, de transcodificar el audio al formato (codec, resolución y frecuencia de muestreo) requerido por cada reproductor.


Lista que, lógicamente, es idéntica cuando nos vamos a cualquiera de las apps de control del tinglado, Por ejemplo Orange Squeeze...


...o el campeón de los controladores Squeezebox, el mismísimo iPeng:


Como cabría esperar, podemos controlar nuestro ejército de reproductores cómodamente, ajustar su volumen, emitir distintos flujos de audio a cada uno de ellos, e incluso establecer varias agrupaciones independientes que funcionarán de un modo sincronizado, como un solo hombre.

Control de volumen y sincronización de reproductores usando Orange Squeeze.

Me gustaría resaltar que la mejor integración se consigue en estos momentos con los dispositivos AirPlay. Tanto la reproducción sin pausas como la sincronización con otros reproductores Squeezebox funcionan estupendamente, lo que no es extensible a los cacharros UPnP y Chromecast, al menos por ahora. En ellos la sincronización entre dispositivos solo es parcial y la reproducción sin pausas depende, en gran medida, de la implementación del perfil renderer soportada por el reproductor UPnP, que suele ser relativamente desigual, y directamente no es posible en los Chromecast.

El caso de OSMC controlado a través de UPnP es un tanto especial, para bien. No solo admite la reproducción sin pausas sino que también soporta las extensiones de descarga de listas de reproducción, del mismo modo que otros streamers pijales como los Linn.

Este excelente comportamiento de OSMC como reproductor UPnP lo hace, a mis ojos, simplemente fantástico. Con este puente UPnP que hemos configurado, ahora puedo unificar en un solo dispositivo tanto las funciones nativas de reproducción de vídeo (y audio multicanal) como las asociadas a la reproducción estéreo de modo integrado con mi ecosistema Squeezebox, que por si no os habéis dado cuenta a estas alturas es mi entorno audiofriki preferido. El Squeezebox Touch del salón cada vez es menos necesario, aunque se ha ganado permanecer en su lugar indefinidamente simplemente por su aspecto indómito, con su pantalla táctil en color y esos atractivos vúmetros animados al ritmo de la música (sí, en castellano se llaman así).


Pero vamos terminando...

En mi opinión es toda una gozada disponer de una red de reproductores tan variopinta (y económica) distribuida por toda la casa, reproductores capaces de hacer sonar lo que sea: desde un mp3 chusquero a 192 Kbps a un archivo DFF o DSF (audio en DSD), que LMS y sus agentes convertirán a PCM de la máxima frecuencia soportada por el reproductor seleccionado y empaquetarán en el formato adecuado.

Y como ejemplo y colofón final, algunas imágenes de OSMC reproduciendo DSD, pcm de alta resolución e incluso ¡DTS! a través del puente UPnP al tiempo que muestra en pantalla información, carátulas y una visualización espacial al ritmo de la música. Una chulada. Aunque tampoco seáis de los que dan fiestas en casa.

OSMC integrado en LMS en acción (clic para ampliar).

No hay comentarios :