Danielside

informática softwarelibre divagaciones música

Música de alta calidad con Qobuz, BubbleUPNP y Raspberry Pi

Ya he conseguido tener mi streaming en alta calidad con el servicio Qobuz (suscripción Studio Premier sonido FLAC 24 bit, hasta 192Khz) con la Raspberry 4 ¡y todo legal oiga!

La referencia a “todo legal” es que me estaba costando encontrar una forma buena de aprovechar toda la calidad que me da la oferta de Qobuz. Al no ofrecer cliente Linux tenía que conformarme con el cliente web mediante Chromium. Y el sonido no llegaba a ser del todo satisfactorio.

Lo que ya había realizado hace algún tiempo es una instalación del servidor de música MPD (https://www.musicpd.org/), un excelente reproductor de música en segundo plano que se maneja mediante diversos clientes, siendo el que más me ha gustado Cantata (https://github.com/cdrummond/cantata).

En esta configuración cliente-servidor es el servidor MPD el que organiza la biblioteca de música (mis CDs ripeados a vorbis y flac y mis compras) y hasta la reproduce (con un sinfín de opciones de configuración) y el cliente (Cantata) el que dirige la orquesta (play, pausa, siguiente, explorador de la biblioteca, etc). Un efecto muy curioso de este escenario es que si cierras Cantata sin darle a pausa la reproducción sigue, o si te conectas al mismo MPD desde cualquier otro cliente verás lo mismo que veías en Cantata, a nivel de playlist, bibliotecas, etc.

Hace no mucho tiempo MPD traía plugins para reproducir servicios de streaming de manera que Cantata también los podía usar como si fueran archivos locales, pero en algún momento se perdió el soporte de Qobuz porque estos decidieron revocar todas las API keys de las cuales no obtuvieran algún rendimiento comercial (“por motivos de seguridad” dirían ellos). Así que tenía que buscar una manera de usar Qobuz sin Chromium.

El sistema lo tengo montado con una raspberry 4 al que le he acoplado el excelente DAC (gran calidad-precio) Justboom DAC HAT:

Me llama mucho la atención como por el precio de la raspberry y 30 euros más de este DAC (conversor digital-analógico) puedes tener un sistema de sonido con una calidad para la cual hace unos años te tenías que gastar cientos de euros. Con unos buenos archivos digitales (sin comprimir o comprimido con máxima calidad) o un buen servicio de streaming que respete la música (de los que he probado, habría que huir de Deezer) el resultado es excelente. Estos DAC se conectan a los puertos GPIO de la raspberry con lo cual no necesitan alimentación adicional y dan mejor resultado que los DACs USB. La salida RCA la tengo conectada a la entrada de línea de una buena cadena de música como mi Yamaha CRX-040, fiel compañera de batallas con un sonido impresionante para su precio.

Qobuz

La diferencia de sonido era bastante aparente cuando reproducía un archivo local y cuando reproducía Qobuz desde el webplayer. Además, por mucho que tal webplayer te permite cambiar la calidad del sonido con un selector, en la práctica Linux me demostraba que lo que le estaba mandando a la tarjeta de sonido nunca pasaba de 16bit/44KhZ (calidad CD estándar).

Esto se ve de la siguiente manera. Mientras se está reproduciendo algún sonido, introduce el comando:

sudo cat /proc/asound/card0/pcm0p/sub0/hw_params

La salida, independientemente de lo que pusiera en el webplayer, era esta:

Significa que la tarjeta de sonido está reproduciendo muestras de 16bit a una tasa de 48Khz. Calidad un poco por encima de CD.

Sin embargo, montado el sistema BubbleUPNP con MPD y upmpdcli (https://www.lesbonscomptes.com/upmpdcli/) ya conseguía esto:

Que significa que ya está reproduciendo muestras PCM de 24 bit a una tasa de 96Khz, que es la calidad que ofrece Qobuz para esa pieza en concreto.

Para conseguirlo hubo que familiarizarse un poco con el lio de UPnP/Av (https://deviceonline.net/review/technology/item/300-upnp-dlna). En esta arquitectura multimedia distribuida existen tres tipos de componentes: cliente o punto de control (será BubbleUPNP en Android), renderer (el que reproducirá el sonido) y un servidor opcional (indexa contenidos). Seguramente no es la mejor explicación del mundo pero eso es lo básico.

Descubrí que BubbleUPNP para Android (https://play.google.com/store/apps/details?id=com.bubblesoft.android.bubbleupnp&hl=es&gl=US) es un cliente oficial de Qobuz, pero paso de escuchar música en el móvil.

BubbleUPNP tiene la capacidad de enviar la música a distintos renderers detectados en la red. Uno de ellos será el local (el mismo móvil).

La pieza que me faltaba era upmpdcli, que es un renderer UPnP que se conecta con MPD. Lo que conseguí al instalar este componente en la raspberry fue que esto apareciera en mi móvil:

Es la identificación del renderer que habita en la raspberry. Si eliges esa salida, todo lo que reproduzca BubbleUPNP ya no suena por el móvil, suena por la raspberry. Y es en ese momento cuando conseguí que se reprodujera el sonido más nítido y más potente que el webplayer, a la calidad ofrecida por Qobuz.

Es importante recordar que tu red doméstica debe tener habilitado UPnP. La configuración dependerá de cada router.

Para instalarlo lo he compilado desde el código fuente siguiendo estas instrucciones (https://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html#UPMPDCLI-BUILDING).

Moode audio

La historia de compilar e instalar upmpdcli aparte venía dada por el hecho de que en esa raspberry hago otras cosas y no quería dejar de tener Raspbian, pero una alternativa sencilla para hacer lo mismo es instalar una distro especializada como Moode Audio (https://moodeaudio.org/).

Tenía una raspberry 2 B+ desde hace tiempo, para la que he comprado el Justboom DAC Zero por 20 eurillos, que está pensado para la raspberry zero pero que funciona en cualquier otra:

Esta es la lista completa de distribuciones soportadas oficialmente por los productos de Justboom y sus guías de instalación: https://www.justboom.co/software/. Probé Volumio pero está sobrecargada y va muy lenta en la raspberry 2B+. Moode va como un tiro y ofrece un renderer integrado UPnP que solo hay que activar en la configuración. Cuando se activa, volvemos a BubbleUPNP y ya lo ofrece:

Aparte de actuar como renderer, Moode ofrece reproducción de archivos locales, montados desde una NAS y radio por internet. Todo desde una interfaz web. Al estar basado en MPD supongo que todo eso se podrá controlar también desde MPDroid (https://f-droid.org/en/packages/com.namelessdev.mpdroid/) aunque no lo he probado.

¡Y eso es lo bueno de los estándares abiertos y del software libre! Con un poco de trabajo y gracias a la inestimable dedicación de grandes programadores, montas un sistema por el que antes tenías que pedir un crédito bancario.

Por cierto la interfaz web de Moode te ofrece la posibilidad de ver la calidad del audio que se está reproduciendo también, que de nuevo coincide con lo que me da Qobuz:


Archivado en categoría(s) GNU/Linux, Música, Raspberry Pi

Enlace permanente



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.