With an extensive local collection browsing becomes an issue. Genres seem to be the logical entry point, yet when autotagging your files with lastgenre etc. you possibly end up with a couple hundred genres, some of which you never heard of. Well at least it is like that for me. Or it used to be.
Now i have:
1 Subgenres
Genres can be hierarchically structured like so:
- electronic music
- - All Artists
- - idm
- - - All Artists
- - - breakcore
- - trip hop
The ‘All Artists’ directory shows a a flat list of all artists of the top genre.
2 dynamic grouping
Even with a hierarchical genre structure you might end up with too many entries in a folder to conveniently browse it. When organising and tagging your collection with beets (http://beets.io) there is a tag ‘grouping’, that can be used to cluster your collection to your liking.
Now whenever and only if more than 30 entries are found below a directory the entries are clustered by groups.
- electronic music
- - : Audiophile
- - : Chillout
- - All Artists
You can group by what ever works best for you.
3 alternate browse structure
The most common browse structure genre:artists:albums:tracks does not work well for some types of audio files.
Radio plays,compilations, singletons are better with a different browse structure.
Dynamic grouping helps to get them nicely clustered.
Futher entry points like
- Label
- (Classical) Composer
- Format
- Samplerate
- Release Year
etc.
If this got you interested, you can use my docker image to give it a try.
docker run -d
–name mopidy
–net host
–device /dev/snd
-v ~/.config/mopidy/mopidy-docker.conf:/root/.config/mopidy/mopidy.conf
-v /data/raid1/music/:/data/raid1/music/
-v ~/.config/beets/:/root/.config/beets/
-v ~/.local/share/mopidy/bigbeet/:/root/.local/share/mopidy/bigbeet/
rawdlite/mopidy:bigbeet
of course you need to adapt the directories according to your file system.
The mapping of ~/.config/mopidy/mopidy-docker.conf allows for the container to run alongside an existing mopidy instance. Just edit the mpd and http port. And maybe the audio device.
For defining the genre tree 2 files are used.
- genres.txt defines which genre names are accepted
- genres-tree.yaml defines the tree structure.
i provided sample files to get you started, that can be copied with:
` docker exec mopidy setup.sh`
it is probably best to reference these files also in the beets config:
lastgenre:
canonical: ~/.local/share/mopidy/bigbeet/genres-tree.yaml
whitelist: ~/.local/share/mopidy/bigbeet/genres.txt
You can use beets inside the container like so:
`docker exec mopidy beet ls Aphex Twin`
and so on.
to keep the bigbeet database in sync to the beets library, you need to point beets to my plugin.
pluginpath:
- /mopidy-bigbeet/beetsplug
if you already have a beets library, you can scan it with
docker exec mopidy mopidy bigbeet scan
Source code is at
This is a proof of concept momentarily, so i would be surprised if everything worked right away.