Tune by Mozaiklabs

OAAT — 비트 퍼펙트 멀티룸 오디오를 대중화하는 오픈소스 프로토콜

문제: 하이파이 오디오는 잠겨 있다

20년 전부터 하이파이 네트워크 오디오 스트리밍은 독점 프로토콜에 갇혀 있었습니다. RAAT(Roon)는 나무랄 데 없는 품질을 제공하지만 — 그 대가는? 유료 인증, 폐쇄된 코드, 종속적인 생태계입니다. DLNA는 개방적이지만 기술적으로 제한적입니다: 멀티룸 동기화 없음, 들쭉날쭉한 gapless, 높은 레이턴시.

OAAT(Open Advanced Audio Transport)는 이 딜레마를 해결합니다. 제가 직접 설계하고 Rust로 구현한 네트워크 오디오 전송 프로토콜입니다. Apache 2.0 라이선스로 완전히 오픈소스이며, 두 세계의 장점을 결합합니다.

OAAT가 제공하는 것

  • 비트 퍼펙트 오디오 — PCM 최대 768 kHz / 32비트, DSD512까지 네이티브 DSD. 리샘플링 제로, 타협 제로.
  • 서브 밀리초 멀티룸 — 엔드포인트 간 PTP 동기화, 편차 1 ms 미만. RAAT에 견줄 만하지만 라이선스는 없습니다.
  • 지능형 협상 — 프로토콜이 DAC의 성능에 맞춰 포맷을 자동으로 조정합니다. 수동 설정 불필요.
  • 진입 장벽 제로 — 인증도, 라이선스도, DRM도 없습니다. 제조사는 약 1,500줄의 Rust 코드로 규격을 준수하는 엔드포인트를 구현할 수 있습니다.

3개 채널 아키텍처

DLNA(HTTP pull, XML/SOAP)와 달리 OAAT는 관심사를 분리합니다:

  • 제어 (TCP 포트 9740) — 가벼운 JSON 메시지: 핸드셰이크, 포맷 협상, play/pause, 메타데이터
  • 오디오 (UDP 포트 9741) — 프레젠테이션 타임스탬프가 포함된 바이너리 패킷, server-push, head-of-line blocking 제로
  • 클럭 (UDP 포트 9742) — 멀티룸 동기화를 위한 PTP 교환

디스커버리는 mDNS/DNS-SD를 통해 자동으로 이루어집니다. 엔드포인트를 네트워크에 연결하면 나타납니다. 끝.

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

프로토콜 비교

  • OAAT : 오픈소스(Apache 2.0), 비트 퍼펙트, 네이티브 DSD, 멀티룸 동기화 < 1 ms, 엔드포인트 약 1,500줄
  • RAAT (Roon) : 비트 퍼펙트, DSD, 멀티룸 — 그러나 독점적이고 유료 인증에 폐쇄된 코드
  • DLNA/UPnP : 개방적 — 그러나 멀티룸 동기화 없음, 신뢰하기 어려운 gapless, DSD는 DoP만 지원
  • AirPlay 2 : Apple 멀티룸 — 그러나 48 kHz/24비트로 제한, DSD 없음, 폐쇄 생태계
  • Chromecast : Google 전용, 손실 리샘플링, 최대 48 kHz

프로토콜에서 제품으로: 10만 원짜리 Raspberry Pi

OAAT가 이론적 명세에 그치지 않는다는 것을 증명하기 위해, Raspberry Pi 4와 Audiophonics ESS 9038Q2M DAC를 하이엔드 오디오 엔드포인트로 변신시켰습니다:

  • DAC의 I2C 레지스터를 통한 하드웨어 볼륨
  • 설정 가능한 7가지 FIR 필터(minimum phase, linear phase, apodizing 등)
  • 키오스크 모드로 Tune 인터페이스를 표시하는 7인치 터치스크린
  • systemd 서비스, 자동 부팅, 매끄러운 재연결

총 비용: 약 100 €. Roon Ready 인증 엔드포인트는 500 €부터 시작합니다.

👉 전체 설치 가이드를 확인하세요: Raspberry Pi를 OAAT 오디오 엔드포인트로 만들기.

제조사와 개발자를 위해

HAL(Hardware Abstraction Layer) 트레이트는 5개 메서드로 끝납니다. 자동화된 규격 준수 도구가 20개 테스트로 여러분의 구현을 검증합니다.

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>;
}

여러분의 뮤직 서버에 oaat-controller 크레이트를 임베드하면 비트 퍼펙트 멀티룸을 얻을 수 있습니다. 네이티브 통합을 위한 C 바인딩(FFI)도 제공됩니다.

수치로 보면

  • 9개 Rust 크레이트, 약 8,000줄의 코드
  • 20개의 자동화된 규격 준수 테스트
  • 멀티룸 동기화 1 ms 미만(실측)
  • 동작 시 약 50 MB RAM
  • PCM 768/32, DSD512, 압축 FLAC 지원
  • Apache 2.0 라이선스

Tune에의 통합

OAAT는 MozAIk Labs가 개발한 소스 공개(BSL 1.1) 뮤직 서버 Tune에 이미 통합되어 있습니다. OAAT 엔드포인트는 자동으로 발견되어 재생 존으로 표시됩니다 — DLNA, AirPlay, Chromecast와 동일하게, 다만 더 뛰어난 음질로.

링크