Skip to main content

Sorting through my music with Navidrome and Symfonium

For a while now, I’ve been trying to balance life with a couple of steady jobs, a small business, and a family. Listening to music is part of that. Since my commute between work and home takes quite a while (a little over an hour, though city traffic sometimes makes it even longer), I basically want two things from my music listening: as little interaction as possible (meaning I don’t want to have to unlock my phone at all), and the ability to choose what I listen to.

I currently have a fairly large music collection. My tastes change: I might like a song by a particular artist today, but tomorrow I might start liking another one (even if I already knew it). I’m not quite sure why that happens, but it does. And that’s why I keep the discographies of artists I’m interested in. Storage is cheap, and I often go back to songs that aren’t among my favorites to rediscover them, so it seems reasonable to me. The problem was that, when I set up Navidrome as my music server, I realized I had to rebuild my entire list of favorite songs.

I’d been looking for software that would let me listen to the music I own the way I like. At one point, I tried Plex and Jellyfin, but since they’re more focused on watching videos, I felt that some things weren’t quite how I wanted them when it came to music. Then I found Navidrome and paired it with Symfonium for Android, which is, in my opinion, the best music listening app I’ve come across on this platform.

Of the two, I use Navidrome’s favorites feature a lot to sort out the music I like. Those are the songs I can put on without a second thought almost any time. But to get there, I have to listen to every song, decide which ones will become favorites, add them, and keep track of my progress. And I’m writing this precisely because something went wrong recently that made me sit down and figure out how to improve the process.

The problem

Last week, my music listening workflow in Navidrome went something like this:

  1. Whenever I had new songs, I’d put them in the folder Navidrome scans every hour.
  2. In Navidrome, I have a manually maintained playlist where I put the music I still need to listen to. To make life easier, I go to “Songs” in the web interface, then click the “More” button, which lets me choose which additional columns to show in the table. I choose “Date Added,” which is the date the songs were added to my library.
  3. With that column visible, clicking it sorts the songs by that field. I usually sort them from newest to oldest, so the most recently added songs appear first.
  4. Then I simply select the rows in the table (which represent songs) until the “Date Added” value tells me I’ve gone past the latest batch of songs. Once they’re all selected, I add them to my playlist (called “pendientes,” or “pending”).
  5. When listening to music, usually in Symfonium, I’ve mapped the “previous” function on my headphones to toggle between “favorite” and “not a favorite” instead of going to the previous track. That way, I just have to listen to the song, and if I like it, I can add it to my favorites from my headphones without unlocking the screen. If I don’t like it, I skip to the next one.

This was very convenient. Or so I thought. But it has its annoyances. First, every so often the pending playlist gets large, so I have to go to Navidrome’s interface, select everything I’ve already listened to, and remove it from the playlist. It also depended a lot on remembering exactly where I’d left off in the playlist. In other words, I had to check where I was in the queue to know which songs I needed to remove.

But what happened a week ago, besides being very stupid, made me think a bit about improving this.

On Saturday, I changed phones. All good there. I went from a Pixel 6 Pro to the base Pixel 8. I’ve really liked the change. But in the process, I didn’t back up Symfonium, and I had a playback queue with about 370 songs that I hadn’t yet removed from Navidrome. So when I reinstalled it on the Pixel 8, I found myself having to start the playlist from the beginning.

And things got even worse. After finding exactly where I’d left off, I tried to remove the previous 369 songs from Navidrome’s web interface. One wrong click messed up the list’s order, and, well, I ended up with a real mess. By the end of it, I had no idea whether the songs left there were the ones I still needed to listen to or the ones I’d already heard. I suspect it was a bit of both.

The solution

After reconciling the data as best I could, I ended up doing something different. Navidrome has smart playlists. They’re defined in JSON and let you set rules. This is useful because the songs that populate these playlists aren’t added manually. You can define the rules songs have to meet, the order they’ll appear in, and several other things. For my use case, I created a file called pendientes.nsp at the root of my music folder. The playlist’s code looks like this:

{
  "name": "Pendientes de escuchar",
  "comment": "Canciones sin reproducir y no favoritas, ordenadas de más nuevas a más antiguas",
  "all": [
    {
      "is": {
        "playCount": 0
      }
    },
    {
      "is": {
        "loved": false
      }
    }
  ],
  "sort": "dateadded",
  "order": "desc"
}

The name means “Pending listening,” and the comment describes unplayed songs that aren’t favorites, sorted from newest to oldest.

This code adds every song that has no plays (where its play count is 0; we’ll get to that shortly) and isn’t already a favorite to the playlist. Naturally, songs that are already favorites won’t end up here, since this playlist is for sorting through the music.

After saving the file, request a quick scan from the “Activity” section in Navidrome’s interface. That makes the playlist available, and you can start playing around with it.

Now, there are a couple of settings to change in Symfonium.

  1. Under Settings > Playback > Playback, adjust the playback threshold a song has to reach before it’s marked as played. By default, Symfonium marks songs as played once you’ve listened to more than 95% of them. I’ve set mine to 20%, because by then I might already know whether the song I’m listening to will be a favorite. Without lowering this, you’d have to listen to the whole song before Symfonium marks it as played, making it a little harder for it to leave the playlist.
  2. It’s also worth checking that the option to reduce last-played updates isn’t enabled.

With these changes, the listening process becomes something like this:

  1. When new music arrives, Navidrome automatically adds it to the “Pendientes” playlist when it scans it, because it has never been played and isn’t in my favorites. Since the playlist is sorted by date added, from newest to oldest, the new songs always appear first.
  2. In Symfonium, simply listening to 20% of a song is enough for it to be marked as played. Then it’s a matter of listening, deciding whether it’ll be a favorite, and moving on to the next one.
  3. Once a song is marked as played, the next time the pending playlist is calculated (which happens when its songs are requested), that song will no longer be part of it. The same happens if it’s added to favorites.
  4. This makes switching phones easy, because every time I open the playlist, it’s up to date with the songs I actually still need to listen to.

Conclusion

In the end, this whole problem made me realize I was doing something manually that I could have automated from the start. My previous system worked, but it depended too much on me remembering where I’d left off, which songs I’d listened to, and which ones I had to remove from a list. A phone change or a wrong click was enough to lose a good part of that work.

With this new method, my progress is recorded in Navidrome, and the playlist builds itself automatically from that. I no longer have to worry about maintaining it, just about listening to music and deciding which songs I like. Which was exactly what I wanted to do in the first place.

I still have hundreds of songs to sort through, and I’ll probably add thousands more in the future. But that’s no longer an organizational problem. New songs will appear on their own, the ones I listen to will stop being pending, and I’ll be able to carry on from any device without having to remember where I left off.

It might seem like too much work for something as simple as listening to music, but I think that’s precisely the point of automating these little things: spending a bit of time fixing a recurring annoyance so I don’t have to think about it again.

After all, the idea wasn’t to spend more time managing my music library, but to spend more time enjoying it.

Comments

You can reply with your Mastodon account to this post.

Reply