*p5.brush
p5.brush.js is a versatile library for the p5.js ecosystem, tailored for artists, designers, and hobbyists who wish to explore natural textures in generative art. This library extends the drawing capa
Documentation for the DLNA Receiver provider for Music Assistant
PluginsPython · ShellGitHub @trudenboyOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
DLNA/UPnP MediaRenderer plugin for Music Assistant — turn MA into a network audio receiver
Taken from the repository README
Loading the full README.
Read the full 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