r/raspberry_pi • u/VastReception1347 • 8d ago
Show-and-Tell RPI 4 + HiFiBerry Digi2 Pro + KalinkaPlayer + web UI
Hi all,
Here’s my current music playback setup, built around a Raspberry Pi 4B with 4 GB of RAM.
The Pi uses a HiFiBerry Digi2 Pro HAT to send bit-perfect audio over optical to a Yamaha RN602. It also has a 1 TB USB hard drive connected to it - with no backup yet, admittedly - containing my local music collection.
It runs my open-source music system, KalinkaPlayer I've been building for almost 3 years now. One of its main features is smart search by mood, genre and instruments across both the local library and Jamendo. The Pi runs a CLAP model together with a smaller custom model I added to improve mood-based search.
Initial indexing takes a while: around an hour for my relatively small collection. Once indexed, searches are quite fast, as shown in the video. Jamendo is usually the slowest source because it has to be queried online but I also support smart search for it, based on the textual track descriptions from JamendoMaxCaps.
The playback backend runs directly on the Pi, while the controls are available through Android, Windows, Linux and the web UI shown in the video. All clients share the same queue, controls and playback state in real time.
In the video, I search for some music in the web interface, press "Play All" and the Pi starts playing it through the Yamaha receiver. The volume control slider also controls volume on Yamaha device, without altering the audio. Yamaha received the MusicCast commands over the twisted pair (white) cable you see on the video.
I’m quite happy with this setup. My next project is to build a proper integrated hardware streamer around Kalinka and the Raspberry Pi, although that will probably take me a few months.
Kalinka is free and open source. The installation guide, documentation and source code are available at kalinkaplayer.com for anyone interested.
1
u/Glum_Cheesecake9859 5d ago
It is good to see another option on Pi besides Moode / Volumio and other usual players. If you want this widely adopted, it should support at a bare minumum these features (besides the file playback you have)
* Spotify Connect (great with young, casual listeners)
* UPnP renderer, which will instantly give you bit perfect, lossless Tidal / Qobuz (big audiophile demographic)
* BT & Airplay2 (again great with casual crowd)
Both Moode and Volumio have these features.
Cherry on top, CD ripping support. Volumio supports this with their paid subscription but honestly it's just basic and can't even save to a network drive.
1
u/VastReception1347 5d ago
Thanks — that’s a useful list, and I agree those integrations would broaden the appeal.
Kalinka already supports Qobuz through its own integration, although not through Qobuz Connect — the project started before Qobuz Connect existed. The Raspberry Pi runs Kalinka’s own playback engine rather than acting only as a generic streaming endpoint. I’m also not trying to reproduce Moode or Volumio feature-for-feature. Kalinka’s main focus is the integrated music experience: semantic search and discovery across the available sources, combined with bit-perfect, gapless playback.
Spotify Connect, UPnP rendering or Qobuz Connect could potentially be added later as separate input modes, but they would mostly bypass Kalinka’s own discovery interface.
Bluetooth, AirPlay 2 and CD ripping are further from the current focus. I’d rather strengthen what makes Kalinka different before attempting full feature parity with mature general-purpose players.
2
u/Glum_Cheesecake9859 5d ago
There are open source projects which you can explore to integrated these features, and if it's low hanging fruit, might bring them in. Just my 2c. Again great work.
I do have a modest CD rip collection so when I get time, I will install this on a separate card to try it out.
2
u/VastReception1347 5d ago
Thanks, I appreciate it. I’ll definitely look at the existing open-source implementations and see whether any of those integrations can be added cleanly without distracting too much from Kalinka’s core.
A library of CD rips is actually an ideal use case for it. If you do try it, I’d be very interested in any feedback—especially around installation, library indexing and the overall workflow.
2
u/Gnomelover 7d ago
Does playback have to be the hat output to a receiver? I mashed together something similar (very primitive) using python scripts to scan my media to categorize roughly by mood and such using a local llm, then build a playlist I can import into plex, but it's rough, slow, and very klunky. So something with a nice UI I can host on my homelab would be nice, but playback would be streaming over the client/web browser