Show HN: Petrichor – a free, open-source, offline music player for macOS (github.com)

202 points by kushalpandya ↗ HN
I have a large collection of music files gathered over the years, so I was sorely missing a decent offline music player that can serve as a frontend for the collection. I tried several Mac apps over the years, but since streaming music is mainstream now, there aren't good offline music players that meet my needs. So I spent the last 3 months building Petrichor! The idea is to solve my problem and learn Swift UI development along the way, while giving back to the community with this open-source project! Here's a list of features it has, with more getting added in future;

- Everything you'd expect from an offline music player!

- Map your music folders and browse your library in an organised view.

- Create playlists and manage the play queue interactively.

- Browse music using folder view when needed.

- Pin anything (almost!) to the sidebar for quick access to your favourite music.

- Navigate easily: right-click a track to go to its album, artist, year, etc.

- Native macOS integration with menubar and dock playback controls, plus dark mode support.

- Search quickly through large libraries containing thousands of songs.

The app is still in alpha, so things may look unpolished, but I've been testing the alpha builds for the past few weeks and fixing issues as I find them for v1 release. I welcome any feedback (and contributions!) on GitHub repo. Please give it a try and let me know what you think!

50 comments

[ 0.24 ms ] story [ 63.4 ms ] thread
Congratulations on the release! This looks really cool!
Without even looking at anything else, I love the name.
Does it have FLAC support (or other high res audio formats)?
Beautiful app, well done. Pleaaaaaaaase make this available on iOS. Bonus points if the desktop version could do syncing with my iPhone. I could finally treat my iPhone like an iPod!
I use and recommend Evermusic for offline listening on iOS. It can fetch music from your cloud storage accounts too.
How's this compare to the native macos music app formerly known as itunes?
> Everything you'd expect from an offline music player!

I'd expect winamp-level UI customization, cross-platform support, iTunes library smart playlist support...

I don’t expect customisation or cross-platform support. I’d love smart playlists, though. And an old-school visualiser.

Anyway, I really like this app. I hope it will stick around, it is a joy to use.

This sounds like a breath of fresh air as a disenchanted Spotify user. My only hesitation is that I’ve lost touch with collecting music. I used to rip CDs and download music and curate a library etc, but I’ve lost my collection and collecting habits since adopting streaming. How do people collect music nowadays? Is there a legit way (fairly compensating artists) to do it?
If you are looking for a “old school iTunes” kind of player there’s also https://swinsian.com/
A friend of mine (sound engineer) has been using VLC player for audio playback since forever. I do the same.

The advantage is that you are forced to organize your music in your file system and that translates incredibly well to all other future systems. Want a special playlist? Just copy the files over and name them with a numeric prefix counting up. You can open that playlist ten years later on a different operating system.

Since I tend to listen to full albums, this has been a good way of doing things.

Swinsian is 100% worth the $24.95. It's really nice to have a good system for offline music purchases.
Any thoughts on syncing against an external music library that uses the Subsonic API (like Navidrome or similar) so an offline/"away from home" laptop could still listen to music?
Congrats for Petrichor, really impressive work! I love the clean, modern UI. I’m currently using Swinsian (still solid in many ways), but Petrichor feels like a breath of fresh air, especially for those of us who still care about local libraries. I truly hope you’ll bring this to iOS. Thanks
Two suggestions, if you have the time to look at the effort and difficulty to implement them:

> P.S. I plan publish it on Homebrew soon.

1. Please consider publishing on MacPorts too.

2. Please consider supporting m4b audiobooks (it’s a different file extension from the common m4a, but also supports chapters).

Yes, the app got enough traction already to warrant for Homebrew and MacPorts distribution, so I'll try to incorporate both!

Audiobooks support looks like a neat idea, I'll see if I can accommodate it in future, for now, I'm keeping it limited to music files only.

For me, the ideal music player UI started and ended with Winamp, and I never liked any of the higher level ones, no need for music libraries etc. Recursive directory scan, delete what is not needed, flat playlist, can save any, the end. Also, the minimalistic window of Winamp is just perfect.
Winamp was annoying to use and the vast majority of the themes were butt ugly. iTunes’ single window streamlined UI was much better. It was perfectly happy with whatever recursive folder structure you wanted and its mini player window was just fine and was not an eye sore.

The big advantage of Winamp was that it ran on Windows, and on ancient PCs at the time.

Get a malware warning when trying to open disk image, Sequoia refuses to open it :(
> macOS 14 or later

That’s a pretty high bar for a Mac app assuming some hardcore offline music lovers might use older OS versions.

Imagine the title being "... a free, open-source, offline music player for <any other OS>"
Will it support playing lossless files in FLAC or ALAC format? Will it be able to change the audio sampling rate per song to match the song's sampling rate?
I use Roon.
Roon is well regarded but it's paid for and not open source.
I've been searching for the perfect "old school iTunes" program for a while. I'm pretty sure it does not exist, maybe I'll try to make one someday unless someone beats me to it? Here's what I want:

* Smartlists, preferably with nested rules

* Proper search, the way iTunes did it: you have a huge excel-like list of songs that filters as you type

* Volume leveling

* Corresponding Windows/Mac/iPhone programs, with the ability to sync my collection like Dropbox

I would gladly pay $100 for this.

Smart playlists will be coming soon as I've done all the infra work to support it, in fact current default playlists that app has (Favourites, Top 25 Most Played, Top 25 Recently Played) use smart playlists behind the scenes, just that I don't have a UI to edit the rules yet.

Search should already be very fast (and filter through matches across any metadata field) as the app uses FTS5 on SQLite db to search tracks. But let me know if you still notice performance issues or bugs around it.

There might be iOS app in future but no plans for Windows app as that's a separate project of its own.

For cloud storage syncing, I did consider it at one point but then scope of this app would be very large, and there are plenty good apps to sync cloud storage data, like I personally use https://maestral.app/ for syncing Dropbox.

I'm not in front of my laptop but I'm gonna download it later, as I've got a 128GB SD card filled with my middle aged white guy hipster music library that I also keep on an actual 5G iPod Classic (which I added SD storage to and keep meaning to also add a Bluetooth module to as well).

A thought, because of all the folks asking for volume limiting: if you're not into DSP, it might be easier to simply add a point in your audio output flow for AudioUnits and let people use one of the existing limiters for it - Apple just straight up includes one on every Mac in the AudioUnits library - or write one specifically and include it.

This would also allow not just limiting but EQ, compression or even simulated tube warmth if people wanted that. (Or, y'know, running everything through autotune and a bit crusher if they're psychopaths. :-D)

I've never coded in Swift but I imagine adding a point to route through AudioUnits is probably not hugely difficult and iirc Apple has example code for doing it, at least they used to.

Keep up the awesome work, either way!