Show HN: Radiccio – Mac music player – local files, Apple Music, Plex, Jellyfin
--
Lately I’ve been unsatisfied with available options for music players on the Mac. Everyone focuses on mobile (I know, that’s where the money is) and it feels like there’s not as much good stuff for Mac as there used to be. Well, I’ve been using the Mac for a long time and I still like it, and I wanted a good music player, so I made my own.
I started with SwiftUI, since that’s what I’ve used most recently at my iOS jobs, and I like it well enough. I soon found that SwiftUI is quite a bit rougher on macOS, so I ended up rewriting a few components in AppKit, although it remains mostly SwiftUI.
I know it’s risky to build on someone else’s service, so my first and main priority was to support local files on a disk, the simplest possible way of playing music. I layered on top of that an optional SQLite db (which I call “Librarian”) for indexing and search. I used AVPlayer (part of AVFoundation) which meant I didn’t have to worry about any audio playback details, I just let the system play whatever it can play (MP3, AAC, FLAC, etc. - but not Ogg Vorbis, sorry).
But I also still use Apple Music for discovering new music, so I integrated that too. That API (MusicKit) was a bit of a mixed bag. The upside was easy onboarding (no need to sign in, just a single permission prompt) and few restrictions on what I could do with it. The downsides are a lot of missing functionality (compared to what the first-party app can do), functionality that is present often tends to be under-documented and/or broken, and the API provider has shown little interest in fixes or improvements lately, especially on the macOS platform. The most absurd point was when I realized there is (apparently?) no way to make a volume control (!).
I briefly looked into Spotify, but they don’t have a macOS SDK, and their terms prohibit commercial and multi-source use. So it seems like that possibility is going to remain closed to me.
Finally, I added Plex and Jellyfin integrations, because once I had a system that could support multiple sources, I figured why not add some more that people might be interested in.
Since I got laid off last year, I’ve been working on this full time, just by myself. I think it’s in pretty good shape for release, but I really need some more eyes on it, since we all know that devs aren’t good at testing their own code (as much as I try).
I’d also love to get some more general feedback from others; I made this all to my own taste, but people’s music listening habits vary widely. I’m sure I’ll never be able to make everyone happy, but I’m open to considering just about anything. So, let me know! And thanks for taking a look.
-dmd
No comments yet