Tune by Mozaiklabs

OAAT — el protocolo open-source que democratiza el audio bit-perfect multi-room

El problema: el audio de alta fidelidad está bloqueado

Desde hace 20 años, el streaming de audio en red de alta fidelidad es prisionero de protocolos propietarios. RAAT (Roon) ofrece una calidad irreprochable — pero ¿a qué precio? Certificación de pago, código cerrado, ecosistema cautivo. DLNA es abierto pero técnicamente limitado: sin sincronización multi-room, gapless aleatorio, latencia elevada.

OAAT (Open Advanced Audio Transport) resuelve este dilema. Es un protocolo de transporte de audio en red que he diseñado e implementado en Rust. Totalmente open-source bajo licencia Apache 2.0, combina lo mejor de ambos mundos.

Lo que aporta OAAT

  • Audio bit-perfect — PCM hasta 768 kHz / 32 bits, DSD nativo hasta DSD512. Cero resampling, cero compromisos.
  • Multi-room sub-milisegundo — sincronización PTP entre endpoints, menos de 1 ms de desfase. Comparable a RAAT, sin la licencia.
  • Negociación inteligente — el protocolo adapta automáticamente el formato a las capacidades del DAC. Sin configuración manual.
  • Cero barreras — sin certificación, sin licencia, sin DRM. Un fabricante puede implementar un endpoint conforme en ~1 500 líneas de Rust.

Arquitectura en 3 canales

A diferencia de DLNA (HTTP pull, XML/SOAP), OAAT separa las responsabilidades:

  • Control (TCP puerto 9740) — mensajes JSON ligeros: handshake, negociación de formato, play/pause, metadatos
  • Audio (UDP puerto 9741) — paquetes binarios con timestamps de presentación, server-push, cero head-of-line blocking
  • Reloj (UDP puerto 9742) — intercambios PTP para la sincronización multi-room

El descubrimiento es automático mediante mDNS/DNS-SD. Conecta un endpoint a la red y aparece. Punto.

graph LR
    A["Tune Server"] -->|"TCP :9740 — contrôle JSON"| B["Endpoint OAAT"]
    A -->|"UDP :9741 — audio PCM/FLAC"| B
    A <-->|"UDP :9742 — clock sync PTP"| B
    B -->|"I2S / USB"| C["DAC"]

    style A fill:#4a90d9,stroke:#333,color:#fff
    style B fill:#50c878,stroke:#333,color:#fff
    style C fill:#f5a623,stroke:#333,color:#fff

Comparación de protocolos

  • OAAT: open source (Apache 2.0), bit-perfect, DSD nativo, sincronización multi-room < 1 ms, ~1 500 líneas para un endpoint
  • RAAT (Roon): bit-perfect, DSD, multi-room — pero propietario, certificación de pago, código cerrado
  • DLNA/UPnP: abierto — pero sin sincronización multi-room, gapless poco fiable, DSD solo en DoP
  • AirPlay 2: multi-room de Apple — pero limitado a 48 kHz/24 bits, sin DSD, ecosistema cerrado
  • Chromecast: solo Google, resampling lossy, 48 kHz máximo

Del protocolo al producto: una Raspberry Pi de 100 €

Para demostrar que OAAT no es solo una especificación teórica, he convertido una Raspberry Pi 4 con un DAC Audiophonics ESS 9038Q2M en un endpoint de audio de gama alta:

  • Volumen por hardware mediante los registros I2C del DAC
  • 7 filtros FIR configurables (minimum phase, linear phase, apodizing...)
  • Pantalla táctil de 7 pulgadas con la interfaz de Tune en modo kiosco
  • Servicio systemd, arranque automático, reconexión transparente

Coste total: ~100 €. Un endpoint Roon Ready certificado empieza en 500 €.

👉 La guía de instalación completa está disponible: Convertir una Raspberry Pi en endpoint de audio OAAT.

Para fabricantes y desarrolladores

El trait HAL (Hardware Abstraction Layer) se reduce a 5 métodos. La herramienta de conformidad automatizada valida tu implementación con 20 tests.

trait OaatHal {
    fn configure_output(&mut self, format: AudioFormat) -> Result<()>;
    fn write_frames(&mut self, data: &[u8], frames: usize) -> Result<usize>;
    fn buffer_level(&self) -> usize;
    fn set_volume(&mut self, level: u8) -> Result<()>;
    fn actual_sample_rate(&self) -> Option<f64>;
}

Integra el crate oaat-controller en tu servidor musical para obtener multi-room bit-perfect. Bindings C (FFI) disponibles para la integración nativa.

Las cifras

  • 9 crates Rust, ~8 000 líneas de código
  • 20 tests de conformidad automatizados
  • Menos de 1 ms de sincronización multi-room (medido)
  • ~50 MB de RAM en funcionamiento
  • Compatible con PCM 768/32, DSD512, FLAC comprimido
  • Licencia Apache 2.0

Integración en Tune

OAAT ya está integrado en Tune, el servidor musical de código fuente disponible (BSL 1.1) desarrollado por MozAIk Labs. Los endpoints OAAT se descubren automáticamente y aparecen como zonas de reproducción — igual que DLNA, AirPlay o Chromecast, pero con una calidad de audio superior.

Enlaces