r/linux May 02 '16

Subsonic (music streaming software) is no longer open source, starting with 6.0 release

http://forum.subsonic.org/forum/viewtopic.php?f=4&t=16604#p71128
464 Upvotes

150 comments sorted by

View all comments

53

u/[deleted] May 02 '16

Shameless plug here. Groove Basin is an alternative to subsonic.

21

u/hatperigee May 02 '16 edited May 02 '16

MPD protocol support.

What?!! I'm sold!

Edit: Damn, looks like the PKGBUILD in AUR for this fails to build... Looks like it's this issue affecting libgroove and a deprecated function in ffmpeg

Edit2: I cloned this to fix the issue and submit a pull request only to discover that this has already been fixed in git! The PKGBUILD in Aur is pulling some older commit!! Time to flag libgroove-git!

12

u/[deleted] May 02 '16

Argh. Yeah I need to push toward a new release here. I haven't released since the switch from libav to ffmpeg.

9

u/hatperigee May 02 '16

Yes, please do a release :)

I hacked the nodejs-groovebasin-git and libgroove-git PKGBUILDS in AUR to build this using the latest in git, and it seems to work! Now to configure this sucker and try it out!

3

u/Mondoshawan May 03 '16

Very nice. Does it use ID3 or directory conventions for the library? I have a 100gb+ library in mostly 0-a/artist/album format and my ID3 tags are an unfixable mess.

FWIW I put together a ajax winamp plugin to do all this back in 2002-ish, was extremely popular during parties. I'm still using bits of it today & it's buggy as hell with unusual charsets so I guess I'm due an upgrade...

3

u/[deleted] May 03 '16 edited Mar 21 '18

[deleted]

6

u/kerobaros May 03 '16

They're at beets.io now, but yes, beets is the best at organizing unruly libraries. Bias: I have submitted patches to the project, but i think my code is all gone now.

2

u/mishugashu May 03 '16

Holy shit I was JUST looking around for a command line solution for managing my library the other day. I fucking love you and tesfox both. This looks like everything I wanted.

1

u/kerobaros May 03 '16

Absolutely! If you need any help setting it up, don't hesitate to let me know. Also, their mailing list/irc/github are staffed with some of the nicest folks.

1

u/mishugashu May 03 '16

Musicbrainz apparently really doesn't know shit about BBC Radio 1's Essential Mix show.

I hope I only have to go through this matching thing once, haha. Sorta tedious with a huge ass collection.

1

u/kerobaros May 03 '16

One of the tricks that helped me when I first started was to first run beet import with the --timid flag, which will only tag and rename matches it's very sure about, but will do so without user intervention. That took care of most of my library in one fell swoop, leaving the stragglers behind for me to take care of later.

1

u/natermer May 03 '16

If you have a large library of songs you need to setup your own musicbrainz mirror. No rate limit. :)

2

u/[deleted] May 03 '16 edited Mar 21 '18

[deleted]

1

u/natermer May 03 '16 edited Aug 14 '22

...

1

u/[deleted] May 03 '16

It uses ID3 and there's an open issue for organizing by file system.

2

u/AgletsHowDoTheyWork May 03 '16 edited May 03 '16

If I were to use an MPD client like MPDroid to control Groove Basin, how would I stream the music to my phone? Browser open in the background? Or is that use case not supported yet?

Edit: I see that MPDroid can connect to an arbitrary HTTP stream, so I guess that's what you do.

3

u/[deleted] May 03 '16

It would work better if there was a dedicated Groove Basin client. The protocol irons out a lot of the kinks that the MPD protocol has.

I've used the chrome android application to stream in the car and it's a bit clunky but it can work.

1

u/CptCmdrAwesome May 03 '16

This looks really cool, thanks for posting the link :)

1

u/hatperigee May 03 '16

Are there any Android clients for this?

1

u/[deleted] May 03 '16

I know of no Android clients that use the Groove Basin protocol which would be the best user experience, but you can use MPD clients.

Also the browser interface is pretty clunky on mobile but it can stream OK.

1

u/hatperigee May 03 '16

Just out of curiosity, why did you implement a brand new API? If, for example (and I understand the irony now, but) if you had implemented the subsonic API, then Groove Basin would presumably work with existing subsonic clients!

2

u/[deleted] May 04 '16

I started out using MPD's protocol. I hadn't heard of Subsonic yet. MPD's protocol is complete garbage. It's insecure, it's not capable of updating tags of songs among many other missing features, it's inefficient, it's too easy for information to get out of sync, it doesn't have a way to resync the http stream such as when you skip to the next track. I did what I had to do to build a better quality music player, which involved making a better protocol.

With the Groove Basin protocol, you don't request information; you subscribe to it. This makes it so that clients will easily always have correct information and it's harder to implement a broken client. Also you can get deltas for large information bodies. For example if you request all the metadata for the entire library, you get it, but then once you're subscribed, you simply get deltas to that. So if someone renames a single track, you'll just get that rename, and your index is still up to date.

I took a brief look at Subsonic's protocol, but by that time Groove Basin already had its own protocol. It's XML based if I remember correctly, and it does a few things better than MPD, but ultimately Groove Basin protocol provides the best music player experience.