Stacks: virtual crate digging for Roon

For my own App Basso, I developed Stacks: a fun way of browsing your digital library as if digging though a crate of albums:

I am trying to bring this to Roon, most likely as an extension + web app. This thread is for progress and discussion – I’d love to hear what you think and whether this is worth pursuing.

I’ll move over a few conversations from other threads over to start things off. A little teaser to wet the appetite – here’s my Roon library in Stacks:

8 Likes

That is so cool

you should add the catalogue number in the stacks :wink: so it really resembles a stack of disks / vinyls

2 Likes

drewl

and sort by cataloguenumber - soo cool for organising your electronic music

:drooling_face:

Already there – that’s the easy part. :slight_smile:

The hard part is getting the catalogue # just right. Basso works with periodic automatching with Discogs & MusicBrainz. Matching Apple’s catalog is a bit messy.

I could consider building a separate version of Stacks towards Roon.

Roon does not have catalogue numbers, but does have the barcodes (UPC, like 0602547586995). Does that help you?

1 Like

I always tag my files and I do have the cataloguenumber in my tags

They get displayed in the credits / release info like this

Label and catalog

But in Roon nothing you can much do with it

If these default tags would be visible and sortable that would be soo cool

Like this? :wink:

3 Likes

Making progress:

  • Full booklet: cover, tracks, credits, play/shuffle/play next/play later
  • Sorting options (incl. catalog #, optional), with keyboard type-ahead
  • Zone selection
  • Miniplayer (optional), leading to
  • Now playing sidebar overlay, with progress bar, play controls, what’s next and queue

Booklet:

Sort by catalog #:

Miniplayer:

Now Playing:

That’s about it. Let me know if anyone is interested in digging their Roon crate themselves. Next step would be looking into packaging it up.

1 Like

I love this, would love to try it out.

1 Like

Filter on the following – and any combination thereof:

  • Title
  • Artist
  • Label
  • Catalog number
  • Barcode
  • Year
  • Format (e.g. 24/96)
  • Source (Qobuz, Tidal, Local)

love to try it out :slight_smile:

I made my own tagger (also vibe coded in python) because as a DJ I have lots of Vinyl rips and promos, which are a pain to get identified in Roon unless they are perfectly tagged.
Songkong can do someting similar, but I wanted to resemble my workflow from tagscanner – so i made one from scratch with everything I want/need when tagging music :wink:

I scrape the label info and cataloguenumbers from discogs/Musicbrains
so my own collection already has these tags for all my local music:

it does a lookup in discogs and musicbrainz - combines all info and writes to de default flac / mp3 tags:

in Roon they get displayed in the release info

so if we just can use these as a basic in the stacks, that would be awesome

Cool stuff. As long as the catalog # ends up in Roon, I can pick it up. I’ll wrap Stacks up in a Docker container sometime this week and update here.

I’m interested to see how things hold up with large collections – my test set is only about 2K albums. Spine colors are calculated on first run (will take some time). Values are stored in JSON – new albums are automatically analyzed and added. Spine height is somewhat indicative of album length,

3 Likes

Can’t wait!

Party time: :tada:

Let me know how things go. On the first run, spine thickness and colors are automatically extracted from album duration and artwork. The latter will take some time (Stacks shows the progress) – values are stored in JSON so this process only needs to run once. Just don’t expect to be digging your crates immediately. :slight_smile:

I am very interested in how things run with larger collections, both in the initial generation and in the browser behavior with lots of spines.

Happy digging!

Please read the following first before installing:

Richer data (on by default)

Roon’s official extension API gives the album list, covers and playback. It doesn’t give play times, release dates, catalogue numbers, barcodes, formats or credits. With Richer data, Stacks reads those from Roon’s internal protocol, the one Roon’s own apps use. It does this through code copied from Deep Roon MCP, which builds on Arthur Soares’ roon-api-reverse-engineering.

With Richer data, the spines get their thickness, play time, year and format, the booklet gets track times and credits, and Release Date, Date Added and Catalog # are added to the orders.

This is unofficial. It isn’t made, endorsed or supported by Roon Labs, and a Roon update can break it until Stacks is updated. Stacks uses it carefully:

  • it only reads: it never changes anything in your library;
  • it reads each album once, one at a time;
  • it then refreshes a small share each day;
  • it closes the connection when idle or when Stacks stops.

If Richer data breaks or is switched off, Stacks keeps working with the official API.

Richer data is on from the start, because it is what makes Stacks Stacks. To use only the official API, switch it off in Roon › Settings › Extensions › Stacks › Richer data.

1 Like

Super easy install and first launch. Stacks says I have 2,990 albums; Roon reports 3,101, so I’m a little confused there. Using the native data connection, not API.

Scanned and colored all the spines in about 3 minutes. Looking forward to playing with it!

1 Like

Stacks counts what Roon shows on its Albums screen. Roon’s Home count also includes hidden duplicates, the other versions of albums you have more than once. What does you Roon > Albums say?

Hmmm… Interesting… Can you check what it says in the extension?