Hi, I'm Jelly.

25, from Austria. Software engineer, music nerd, and photographer.

My cat, supervisor of this project
Ben. Supervisor of this project. Didn't help write any of this, but he watched. Very close.

Why I built this

I've been self-hosting and teaching myself to code since I was a teen. Into music even longer, hanging around online in indie music forums, and genres were always half the fun of finding new music.

I run Navidrome for my own library, and none of the players I tried felt right. So I started building my own, mostly to scratch that itch.

Called it Canon because a canon is both a body of music and a rule for classifying it. Didn't know yet how literal that second part would get.

One thing led to another

Once I finished the player, I was never happy with how genres were handled, especially if you're no angel about where you get your music. I tried beets, MusicBrainz Picard, tagging everything by hand. None of it went deep enough. Might just be caring too much about metadata.

So I built genre fixing straight into the player. That turned out to be the best part. Auto-DJ radios built from a real genre tree are just better than ones built from a flat tag list.

At some point I looked at what I'd built and realized it was a genuinely good music player. So I cleaned it up and put it out for anyone else running Navidrome. Try it, open an issue, tell me your genre tree is wrong.