I've been frustrated about this for quite a while. About a year ago, I decided that I should just try to roll my own (just for me, using my music collection).
- prefix grouping (so that Symphonies/Concertos etc are automatically grouped together, and the groupings transfer into playlists etc - so you can queue a whole symphony at once).
- enumeration detection.
- splitting multiple artists into separate fields (common where you have Conductors and Orchestras as the artist).
- reads iTunes XML Music Library files, or will extract metadata from supported audio files in a directory tree (see https://github.com/dhowden/tag for supported formats!).
- store your music in the cloud (Amazon S3 supported), locally (on the same machine that hosts the UI server), or on a remote file store.
- web UI (using ReactJS), music played through HTML5 audio.
Amongst the things that are still in the "plan":
- gapless playback (HTML5 makes this a bit tricky/messy).
- Opus codec support (for streaming to mobile devices).
- many more things!
I did the same thing. I solved gapless playback by generating XSPF files and letting a local media player do all the legwork; getting HTML5 to do it seems a little way off.
At the moment I'm messing with some simple Machine Learning to better detect things like "Johannes Brahms" == "Brahms, Johannes" == "Brahms" for names in composer/artist fields.
I've since open sourced my effort here:
https://github.com/tchaik/tchaik
What it does (so far):
- prefix grouping (so that Symphonies/Concertos etc are automatically grouped together, and the groupings transfer into playlists etc - so you can queue a whole symphony at once). - enumeration detection. - splitting multiple artists into separate fields (common where you have Conductors and Orchestras as the artist). - reads iTunes XML Music Library files, or will extract metadata from supported audio files in a directory tree (see https://github.com/dhowden/tag for supported formats!). - store your music in the cloud (Amazon S3 supported), locally (on the same machine that hosts the UI server), or on a remote file store. - web UI (using ReactJS), music played through HTML5 audio.
Amongst the things that are still in the "plan": - gapless playback (HTML5 makes this a bit tricky/messy). - Opus codec support (for streaming to mobile devices). - many more things!