*p5.brush
p5.js 환경에서 자연스러운 텍스처를 탐구하는 아티스트·디자이너·취미자를 위한 다목적 라이브러리
DLNA/UPnP MediaRenderer plugin for Music Assistant — turn MA into a network audio receiver
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗📖 Documentation · 🔄 Changelog · 🐛 Issues · 💬 Discussions
Expose Music Assistant as a UPnP/DLNA MediaRenderer on the local network.
External apps (Qobuz, BubbleUPnP, foobar2000, mconnect, Kodi, etc.) discover the virtual renderer via SSDP, send audio streams, and MA routes them to any configured player — DLNA devices, AirPlay speakers, Chromecast, Yandex Station, and more.
┌──────────────┐ SSDP discover ┌──────────────────────┐
│ Qobuz / │ ◄──────────────── │ MA DLNA Receiver │
│ BubbleUPnP │ │ (UPnP MediaRenderer)│
│ │ SetAVTransportURI │ │
│ │ ──────────────────►│ renderer.py │
│ │ Play / Pause │ ssdp.py │
│ │ ──────────────────►│ provider.py │
└──────────────┘ └──────────┬───────────┘
│ PluginSource
▼
┌──────────────────────┐
│ MA Streaming Engine │
│ (decode → DSP → │
│ encode → HTTP) │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Target Player │
│ (DLNA / AirPlay / │
│ Cast / Station) │
└──────────────────────┘
By default, the Connected players selection is empty, which dynamically exposes every eligible MA player as a separate DLNA renderer on your network. Use the multi-select setting to expose only specific players. Control points see them individually:
Each renderer has a stable UDN (UUID5 derived from player ID) so bookmarks in BubbleUPnP / mconnect persist across restarts.
docker compose -f docker-compose.dev.yml up
scripts/setup.sh
source .venv/bin/activate
| Key | Description | Default |
|---|---|---|
friendly_name | Prefix for DLNA renderer names | Music Assistant |
connected_players | Player multi-select; empty exposes all eligible players | (empty) |
bind_ip | IP for UPnP HTTP server & SSDP | (auto-detect) |
http_port | Base port for UPnP HTTP servers | 8298 |
Upgrading from 1.2.x: the old
target_playersselection is not migrated. Re-select the players under Connected players once.
In multi-player mode ports auto-increment: 8298, 8299, 8300, …
provider/
__init__.py — setup(), get_config_entries()
provider.py — DLNAReceiverProvider + RendererInstance
renderer.py — UPnP MediaRenderer HTTP server + SOAP + GENA eventing
eventing.py — GENA subscription manager (SUBSCRIBE/NOTIFY)
ssdp.py — SSDP advertisement and M-SEARCH responder
constants.py — UPnP URNs, config keys, defaults
manifest.json — MA provider metadata
scpd/ — Full UPnP service description XMLs
AVTransport.xml
RenderingControl.xml
ConnectionManager.xml
tests/
scripts/
setup.sh — local dev environment setup
docker-init.sh — Docker container init script
🧪 Experimental — under active development.
Apache-2.0