MagicMirror² · Lyrion Media Server · Radio Paradise

Lyrion Universe

Your mirror that listens.

29 MagicMirror² modules. One LMS connection. A complete music ecosystem for your smart mirror — genre clock, vinyl display, scrolling lyrics, 3D artist globe, top tracks and artists, listening-history timeline, concert events, fullscreen artwork, and more. Optimized for Radio Paradise.


One hub. Countless possibilities.

Lyrion Universe is built around a single principle: MMM-LyrionProvider polls your Lyrion Media Server exactly once. Every other module listens to its notifications — no duplicate network calls, no competing polls, no race conditions. All modules are user friendly and highly configurable via config.js.

Start your journey now and create your own unique Lyrion Universe.

Single LMS poll

One connection feeds all 29 modules. Cover art, genre tags, playback state — centralised.

Shared genre palettes

7 palettes, 8 main genres, 5 intensity levels. Color up your listening experience.

Multi-mirror via Arch

Run any module on multiple mirrors with no local LMS connection — bridged over WebSocket.


Built for Radio Paradise 🎧

Lyrion Universe didn't start as a generic LMS frontend — it grew around one listening habit: Radio Paradise, 24/7. The whole ecosystem is tuned for continuous, hand-curated, genre-hopping FLAC streams.

Why RP fits perfectly

A never ending stream deserves a mirror that keeps on track.

Radio Paradise jumps from classic rock to electronica to world to jazz within a single hour, with clean live track-change metadata on every song. That is exactly the kind of input the genre engine, palettes and history modules were designed to feast on — variety is the feature, not the edge case.

Live metadata, no gaps

Every track change is captured the moment it happens — cover art, artist, genre enrichment, lyrics lookup, all driven off the same single poll.

Genre variety = colour

The Genre Clock, Bubbles and Timeline thrive on RP's eclectic mix. A week of listening paints all seven rings instead of one flat colour.

Self-healing playback

MMM-LyrionRevive watches for silence and falls back to a radioparadise:// FLAC stream — the mirror is never quiet for long.


7 palettes. 280 colors.

Every visual module reads genre colour from the same shared palette file. Switch palette on the Clock — everything follows smoothly.

balanced

Neutral, readable on any background

stainedGlass

Rich jewel tones

dream

Pastel, low contrast

neon

High-saturation, dark

aurora

Cool blues & greens

ember

Warm reds & oranges

vintage

Muted, desaturated

stainedGlass palette preview

stainedGlass


One host. Multiple mirrors.

Run your full Lyrion Universe on multiple mirrors — no LMS connection, no Provider installation needed. MMM-LyrionArch connects to the host over WebSocket, receives a complete sync dump of all data files, and re-broadcasts every playback event locally. Most modules work on the client as if they were running next to the Provider.

Host mirror — Provider installed

  • Polls LMS
  • Serves cover art over HTTP :8767
  • Streams LYRION_* events over WS :8766
  • Syncs clock-state.json, play-history.json, artwork-index.json, legend.json
  • Shows connected clients and active ports in debug panel

Client mirror — Arch installed

  • Zero LMS access required
  • Auto-detects installed modules → sends capabilities
  • Only receives data it actually needs
  • Cover art URLs rewritten to master HTTP automatically

Explore the modules

20 stable + 9 beta. Always start your discovery with Provider.

🎧 marks Radio-Paradise-tuned modules. These behave correctly with a continuous radio stream — no fixed track duration, live metadata, graceful handling of station/edit changes. Verified bridge streams: MotherEarthRadio-Channels and Radio-Calico. Not listening to radio streams? Everything still works with any LMS source — RP is simply where it shines brightest.

Stable

Infrastructure

MMM-LyrionProvider 🎧 Stable

The hub. Single LMS poll, cover art indexing, genre & MusicBrainz metadata enrichment, Last.fm config propagation. On-screen debug-panel optional.

⭐ Required

v1.4.0

MMM-LyrionArch Stable

WebSocket bridge. Syncs all Provider events and data files to a client mirror. On-screen debug-panel optional.

⭐ Required on client mirrors

v1.1.2

MMM-LyrionPages Stable

Lyrion-aware page manager. Coordinates fade transitions and module suspend/resume. Per-page hidden modules and fade-free module swaps.

v1.2.1

MMM-LyrionPagesExt Stable

Compatibility layer for the popular MMM-Pages module — lets Lyrion modules suspend/resume cleanly under an external page rotation.

v1.0.0

MMM-LyrionWatchdog Stable

Network health monitor. Latency, jitter, packet loss, freeze detection per LMS player. On-screen debug-panel optional.

⭐ Polls LMS directly

v1.0.4

MMM-LyrionRevive 🎧 Stable

Headless auto-restart watcher. On prolonged silence it falls back to a radioparadise:// FLAC stream, with a per-hour revive cap.

v1.0.4

Clock-state family

MMM-LyrionClock 🎧 🕒 Stable

Circular genre clock. Seven rings, one per weekday. 280 colors. The clock-state engine the whole family reads from. Optional canvas build in statistics order.

⭐ Required for the clock-state family

v1.1.3

MMM-LyrionBubbles 🎧 🕒 Stable

Floating genre bubbles. Size = listening time. Subgenre dot legend around each bubble optional.

v1.1.1

MMM-LyrionTimeline 🎧 🕒 Stable

Vertical bar chart of listening time by release year. Two-layer genre colouring.

v1.1.0

MMM-LyrionLyrics 🎧 🕒 Stable

Synchronised scrolling lyrics in a circular frame. Artist legend ring, genre-coloured.

v1.0.4

MMM-LyrionChronicles 🎧 🕒 Stable

Album art from your play history as cross-fading circular bubbles. Legend with metadata optional.

v1.0.6

MMM-LyrionVinyl 🎧 🕒 Stable

Rotating vinyl record with cover art, tonearm, platter, groove & led overlay and metadata.

v1.3.0

Now playing & history

MMM-LyrionNowPlaying 🎧 Stable

Little bro of Vinyl. Shows cover art, time remaining and metadata.

v1.0.3

MMM-LyrionChroniclesClassic 🎧 Stable

Chronicles data with a clean NowPlaying-style look — no palette, no genre colouring. Panel built on MODULE_DOM_CREATED.

v1.0.4 · parked

MMM-LyrionTopTracks 🎧 Stable

Rotating top tracks by week / month / year / all time, from your own Lyrion play history.

v1.4.0

MMM-LyrionTopArtists 🎧 Stable

Top artists with genre, country, top album. TheAudioDB images, cached locally. From your own Lyrion play history.

v1.4.0

Standalone

MMM-LyrionArtwork Stable

Fullscreen artwork from the Art Institute of Chicago matched to the playing track. Fully-Kiosk mode optional.

v1.0.3

MMM-LyrionEventTickets Stable

Persistent ticket tracker with cache + diff-refresh. Smart tribute-band filtering so cover acts don't drown out the real artist.

v1.2.3

MMM-LyrionWOM 🎧 Stable

Interactive 3D globe. Artist home cities/countries plotted in real time with day/night shader, realtime sun, clouds and seasonal changes.

v1.1.1

MMM-LyrionOnAir Stable

Animated ON AIR sign. Fades on when a track plays and off when playback stops, with an optional glow. Works on host (Provider) and client (Arch) mirrors.

v1.0.3

Beta 🧪

MMM-LyrionVisualizer 🎧 🕒 Beta

Canvas spectrum visualizer. Palette-synced, genre-weighted mosaic; PipeWire audio tap or metadata-driven animation.

v0.11.4 🧪

MMM-LyrionVU Beta

Analog-style VU meter. RMS / Peak / channel correlation read live from a PipeWire tap via parecord.

v0.11.4 🧪

MMM-LyrionHA Beta

Sets Home Assistant lights to a per-lamp, per-palette colour and brightness — fixed, or by genre rank (rank:N, last 14 days, like Bubbles). Invisible module.

v0.12.2 🧪

MMM-LyrionSkip Beta

Skips unwanted artists and tracks in the Radio Paradise interactive stream. Blacklist via config entries or one click in the frontend (writes blacklist.js); mouse and touch. Optional control bar under the Vinyl.

v0.6.0 🧪

MMM-LyrionClockStatistics 🕒 Beta

Re-draws the Clock face and spotlights one genre at a time (rank 1 = most listened, last 14 days). Rotating ranks, info menus with subgenres and top artists, optional intro/outro and smooth palette fades.

⭐ Requires MMM-LyrionClock

v0.9.0 🧪

MMM-LyrionReleases Beta

New and announced releases of the artists you listen to — paged view, “just released” then “upcoming”. Data from ListenBrainz Fresh Releases, fetched once a week by the Provider.

⭐ Needs Provider ≥ 1.2.0 with releasesEnabled

v1.3.0 🧪

MMM-LyrionLyricsV2 Beta

Lyrics panel at the screen edge: time-synced window or smoothly scrolling plain text. Scored lrclib matching for a better hit rate than Lyrics V1. Don’t run V1 and V2 on the same page.

v0.2.0 🧪

MMM-LyrionPlotter Beta

Draws artist-specific SVGs for the playing track like a pen plotter, with a fallback folder. Bring your own SVGs.

v1.0.1 🧪

MMM-LyrionTags Beta

Word cloud of the most frequent nouns, verbs and adjectives in the titles you listened to (week / month / year / overall), coloured by palette. English only.

v0.5.5 🧪

🎧 Radio-Paradise-tuned · 🕒 reads clock-state · 🧪 Beta — audio pipeline, API may still change


Gravity

One poll to rule them all.

Lyrion Media Server
       ▲
       │  JSON-RPC (polling)
       ▼
MMM-LyrionProvider (host)          → provides cover art index, genre + MusicBrainz enrichment, play history and APIs
       │                           → distributes MM notifications (LYRION_*)
       │
       ├──▶  MMM-LyrionPages       → controls visibility and synchronization
       ├──▶  MMM-LyrionPagesExt    → MMM-Pages compatibility layer
       │
       │  ─ clock-state family ─
       ├──▶  MMM-LyrionClock       → writes clock-state.json
       ├──▶  MMM-LyrionBubbles     ← reads clock-state.json
       ├──▶  MMM-LyrionTimeline    ← reads clock-state.json
       ├──▶  MMM-LyrionLyrics      ← clock-state.json + legend.json
       ├──▶  MMM-LyrionChronicles  ← clock-state.json + artwork-index.json
       ├──▶  MMM-LyrionVinyl       ← reads clock-state.json
       ├──▶  MMM-LyrionClockStatistics 🧪 ← reads clock-state.json
       │
       ├──▶  MMM-LyrionNowPlaying
       ├──▶  MMM-LyrionChroniclesClassic ← artwork-index.json 
       ├──▶  MMM-LyrionTopTracks   ← reads play-history.json
       ├──▶  MMM-LyrionTopArtists  ← play-history.json + artwork-index.json
       ├──▶  MMM-LyrionArtwork
       ├──▶  MMM-LyrionEventTickets ← tickets-cache.json
       ├──▶  MMM-LyrionOnAir
       └──▶  MMM-LyrionWOM
       │
       │  ─ audio tap: squeezelite-vis → Dummy sink → parecord ─
       ├──▶  MMM-LyrionVisualizer 🧪 ← clock-state.json 
       ├──▶  MMM-LyrionVU 🧪        
       │
       │  ─ beta ─
       ├──▶  MMM-LyrionHA 🧪        ← clock-state.json → Home Assistant lights
       ├──▶  MMM-LyrionSkip 🧪
       ├──▶  MMM-LyrionReleases 🧪    ← Provider releases (ListenBrainz)
       ├──▶  MMM-LyrionLyricsV2 🧪
       ├──▶  MMM-LyrionPlotter 🧪
       ├──▶  MMM-LyrionTags 🧪        ← play-history.json
       ▼
       └──▶  MMM-LyrionArch (client)
              re-broadcasts LYRION_* locally to all modules on client mirror

             MMM-LyrionWatchdog       → independent LMS health monitor
             MMM-LyrionRevive         → headless silence-watch, radioparadise:// fallback

Current versions

Module Version Status Download SHA‑256
MMM-LyrionProvider1.4.0Stable.zip
MMM-LyrionArch1.1.2Stable.zip
MMM-LyrionPages1.2.1Stable.zip
MMM-LyrionPagesExt1.0.0Stable.zip
MMM-LyrionWatchdog1.0.4Stable.zip
MMM-LyrionRevive1.0.4Stable.zip
MMM-LyrionClock1.1.3Stable.zip
MMM-LyrionBubbles1.1.1Stable.zip
MMM-LyrionTimeline1.1.0Stable.zip
MMM-LyrionVinyl1.3.0Stable.zip
MMM-LyrionNowPlaying1.0.3Stable.zip
MMM-LyrionLyrics1.0.4Stable.zip
MMM-LyrionChronicles1.0.6Stable.zip
MMM-LyrionChroniclesClassic1.0.4Stable.zip
MMM-LyrionTopTracks1.4.0Stable.zip
MMM-LyrionTopArtists1.4.0Stable.zip
MMM-LyrionArtwork1.0.3Stable.zip
MMM-LyrionEventTickets1.2.3Stable.zip
MMM-LyrionWOM1.1.1Stable.zip
MMM-LyrionOnAir1.0.3Stable.zip–
MMM-LyrionVisualizer0.11.4Beta.zip
MMM-LyrionVU0.11.4Beta.zip
MMM-LyrionHA0.12.2Beta.zip–
MMM-LyrionSkip0.6.0Beta.zip–
MMM-LyrionClockStatistics0.9.0Beta.zip–
MMM-LyrionReleases1.3.0Beta.zip–
MMM-LyrionLyricsV20.2.0Beta.zip–
MMM-LyrionPlotter1.0.1Beta.zip–
MMM-LyrionTags0.5.5Beta.zip–

Get started

No git needed — download the zips, verify, unzip, done. Start with the Provider, then add modules one at a time.

Download & verify

# grab the .zip files and their .sha256 checksums from the download page cd ~/Downloads sha256sum -c MMM-LyrionProvider-v1.4.0.sha256 # → MMM-LyrionProvider-v1.4.0.zip: OK

Unzip into the modules folder

cd ~/MagicMirror/modules unzip ~/Downloads/MMM-LyrionProvider-v1.4.0.zip # the folder MUST be exactly "MMM-LyrionProvider" # — no -main suffix, no extra nesting cd MMM-LyrionProvider && npm install && cd ..

Add to config.js

{ module : "MMM-LyrionProvider", position: "bottom_bar", config : { lyrionServer : "http://192.168.1.50:9000", playerName : "Living Room", lastfmApiKey : "", mbUserAgent : "MyMirror/1.0 (me@example.com)", } }, { module : "MMM-LyrionClock", position: "middle_center", config : { palette: "stainedGlass" } },

Add more modules, then restart

# same pattern per module: verify → unzip → (npm install if needed) sha256sum -c MMM-LyrionVinyl-v1.3.0.sha256 && unzip MMM-LyrionVinyl-v1.3.0.zip -d ~/MagicMirror/modules # npm install only for Provider and Arch — every other module is plug-and-play pm2 restart mm # or restart MagicMirror however you run it

What YOU need.

Requirements

API keys with registration

API keys without registration


Frequently asked questions

The short answers.

Do I need all 29 modules?

No. Start with the Provider — it's the only required piece — and add the rest one at a time. Every other module is plug-and-play.

Is Lyrion Universe free?

Yes — completely. MIT-licensed, no paywalls, no premium tiers, no ads. If it brings you joy and you'd like to give something back, skip the tip jar and donate to a charity for people in need instead. The best things in life are free — let's keep it that way.

Does every module need npm install?

No. Only Provider and Arch pull npm dependencies. Every other module runs as-is once unzipped into the modules folder.

I don't listen to Radio Paradise — does it still work?

Yes. Everything works with any LMS source, as log as metadata is provided via your LMS-Server. Radio Paradise is simply where it shines brightest, thanks to its endless, genre-hopping live stream.

Can I run it across more than one mirror?

Yes. The Arch bridge syncs all Provider data and events to a client mirror, so most modules work on the client as if they were running next to the Provider.

Which API keys do I need?

A Last.fm key is highly recommended for the Provider (genre enrichment) and also needed by EventTickets unless you set its top-artist source to lyrion; TopTracks and TopArtists use only your own play history and need no key. A Ticketmaster key is required for EventTickets. MusicBrainz and Nominatim need no registration — just a valid contact email in the User-Agent string.

Why are Visualizer and VU still beta?

They sit on the audio pipeline and need a PipeWire tap — a dedicated squeezelite-vis instance into a Dummy sink, read via parecord — so their API may still change.

I'm stuck installing — is there support?

Not directly — this is a one-person passion project, so there's no helpdesk. But you're far from alone: the MagicMirror community is excellent. Head to the MagicMirror forum — it's the best place to get unstuck.

Are the modules updated — and how do I find out, with no Git?

Yes. There are ongoing updates and, now and then, new modules. Since there's no Git repo to watch, either drop by this page every once in a while, or head to the MagicMirror forum.

I'm a racist and a f***ing asshole — am I allowed to use these modules?

Absolutely not. Get yourself some professional help and become a better human being.


How it all began

The (short) story behind the Lyrion Universe.

My journey began in May 2025. Someone (sorry, I can't find the post in the MM-forum) posted a Lyrion Now Playing module which I liked a lot. I started to develop my own modules based on LMS. With the rise and the constant improvement of AI-coding-tools the amount of modules was growing quickly.

I realised, that the multiple LMS polls caused by those modules crashed my docker based LMS-Server (it's not the newest hardware). I started from scretch, MMM-Lyrion-Provider was the result, and here we are.


About me

Bug Phunk

The cornerstone of my love for music was laid early in life. Growing up in a musical family, I studied church organ for five years before moving on to the piano. Music was everywhere in the home I grew up in, where three generations lived together under one roof. There was no celebration, no anniversary, no gathering without playing, singing and dancing.

After the Second World War, in times of great desperation, my grandfather and his brother founded a brass band that played far beyond our region. They brought joy and happiness to all those who had suffered during those terrible times. My parents followed in those footsteps — both of them multi-instrumentalists — and played in an entertainment band with friends, covering an enormously wide range of music. I played their mostly hand-written arrangements on organ and piano with boundless enthusiasm: pieces from every genre, from Schlager to hard rock.

My father's stereo systems left a particularly deep mark on me. From vinyl through the tape deck to the CD, I lived through the whole evolution of hi-fi — always paired with beautiful-sounding speakers. The first mixtapes were born, recordings were traded with friends, a teenage band was formed. At the same time, electronic music was on the rise. Using my parents' retired synthesizers and their old mixing desk, I built a little home studio of my own around an Atari 1040ST. Inspired by André — friend and mentor — my first production took shape.

The years that followed, shaped by my studies, were musically quieter. Beyond a few smaller projects, what mattered most were the concerts and festivals across Europe with friends. They opened my musical horizons once again, and the love of (live) music they kindled has stayed with me ever since.

So it comes as no surprise that I'm married to a wonderful music teacher and singer, and that our daughter shares the same joy in music and in playing the piano. I love you both with all my heart ❤


Thank YOU

My deepest gratitude goes to my whole family and my friends, who take me and love me exactly as I am (and that isn't easy all the time). A further thank-you goes, of course, to all the MM & LMS developers and supporters. And a heartfelt thank-you, too, to all the free services woven into this project, especially to Radio Paradise. You inspire me each and every single day! Everybody please remember: The best things in life are free! Let's keep it that way.

Do you have something nice to say?

Get in touch: bugphunk@web.de

☕ Buy me a coffee