https://github.com/epoupon/lms is another (Open)Subsonic compatible server that supports directory browsing commands.
But actually few clients use them.
Huh, interesting. I usually have full copies of my music collection where I need them (512gb microsd in my phone and on the work laptop) but it would be nice to just have a web interface if I'm at someone's house or so they can play off their phone. I think I was using subsonic until they changed all their licensing.
One UI question? Is there a reason you left off volume controls? That's something that always annoys me still about Bandcamp and I had submitted a patch to Mastodon to create a volume control for their video component.
This is a good question.
On mobile, I just use phone buttons to control volume.
On desktop, I just use the media keys since I don't listen to something else.
But since you are not the first to ask, I can add a volume slider on large devices.
About volume control, when there is a volume control on the TV, the TV box, as well as the receiver, it feels a bit unnecessary to also have a volume control in the software.
Both of those projects look great! I could definitely see using both of them. I've been thinking about writing something similar to lms for awhile now.
About the software license, the web framework used (wt) is using the GPL license. So unfortunately I have to stick with it since I include/link with it. It is likely not a problem for SaaS though.
- ncmpcpp-like frontend: what do you have in mind actually? I am not sure since the goal here is to play the music on the device from which you access to the server.
- directory-based navigation: well I think that is a matter of taste. Personally I find the navigation directory based very restrictive. It does not scale well on a large collection and after all, it is just a fixed view of what you can offer using tag based browsing.
Most people use a genre/artist/album layout, but using tags you could easily achieve the same, and go even further and do whatever you want: genre/decade/artist/album, mood/album, genre/mood/artist, etc.
Honestly, I would rather encourage people to properly tag their files rather than spending time on implementing a clunky directory based navigation.
- Any info on the recommendation engine? How does it work?
Low-level Data is fetched from AcousticBrainz. See an exemple here for a random song: https://acousticbrainz.org/e73f3d92-4e9f-4db4-943a-41978d9db...
Some features are extracted for each track (the exact list is here: https://github.com/epoupon/lms/blob/develop/src/database/Sim...) and all these features are used together to classify the tracks. You can find details here: https://en.wikipedia.org/wiki/Self-organizing_map .
Once it is done, you get a map with all your tracks in it, and using the underlying SOM you can determine the neighbourhood of a given track.
The recommendation engine uses this map. For example, if you want albums that are similar to a particular one, you look for the tracks of the album in the map and you retreive the albums of the tracks that are close to them.
- Does musicbrainzId support include id3 tagging? id3 is a tag format used mainly in MP3. LMS reads all the tags using taglib. Therefore it can extract the tags (id3 or whatever) it needs internally (musicbrainz ids, artist, albumartist, date, etc.) as well as custom tags the administrator want too (
albummood, mood, albumgenre, grouping, etc.)
Hope that helps!
My bad I think I misunderstood your question about musicbrainzId.
It is used internally :
- as a key for albums and artists to properly handle duplicated names.
- to retreive audio data analysis from AcousticBrainz
If you have musicbrainz identifiers in your file, it is assumed the other tags (artist, album, etc.) are correct and are directly used.
> what do you have in mind actually? I am not sure since the goal here is to play the music on the device from which you access to the server.
ncmpcpp is a music client, but for the mpd music server. Not sure if LMS <-> MPD do the same things. compare ncmpcpp to mpc, but w/ ncurses + c++. It has directory-based navigation which makes it easy to move through music.
That's a good question, I have to admit there are a lot of similar softwares available these days.
I noticed that I tend to always listen to the same music, and sadly I even forget the music I have.
That's why I tried to put as many links as I can in the interface to easily jump from a title/release/artist/albumartist/genre/whatevercustomtag to another one. In particular, it should handle (custom) tags with multiple values, and it can filter over some of them on all views.
I also tried to make a recommendation engine that makes use of a SOM (https://en.wikipedia.org/wiki/Self-organizing_map). For that it fetches data from AcousticBrainz (https://acousticbrainz.org/) and makes clusters of songs that have similar audio characteristics. I have to say it's not perfect (it's quite good to cluster metal tracks though), but I would like to go deeper into this subject.
Apart from that, it is really lightweight and that was not really the case of the avalaible softwares when I started it.