February 19, 2012, 10:00:21 Last Edit: February 19, 2012, 10:25:55 by jees
Hi there,
while being very happy using gmusicbrowser I often try out other media players to check if there are new concepts or features I might miss :). Before using gmusibrowser I used Songbird and i felt quite ok. What I loved was this tight web integration that allowed me to easy discover new music I might like. Being no longer supported I dropped Songbird and discovered GMB and was amazed by it's customizability and speed. Then the last week I began to play with Tomahawk and was amazed by it's possibilities of sharing and discovering of streaming content. Not planning to make a step off of GMB I thought this might be a perfect chance to give something back to GMB.

Basically Tomahawk implements a API/Service called Playdar, which allows the player to resolve theoretically any music file by utilizing only the Artist and Title tags. The Playdar system will the go out and search for a streamable version of this track on the internet. Being found it will just be played instantly.
This is the basic system. The Tomahawk guys have quite more ideas based on this system, which are (somewhat) good documented and open (protocol-wise) so are able to be implemented in GMB too. But these are things to be considered in the future.

So what I want to do to get this started are the following things:

  • Enable GMB support for streaming content. Simple?
  • Add support for the Playdar API. This should possible as a fairly simple plugin.
  • Make the Web-Content plugin aware of music content on web pages and pass them to GMB via Playdar (something like Songbirds web-playlists). Playdar.js would be a starting point.

With these building blocks GMB should be able to stream content from the internet either, if a track couldn't be found in the local library (entry is there, file cannot be found) or stream any suggested songs (by last.fm, etc.) that are not part of your library.

This is a rough description of what I think is doable utilizing the Playdar API, which I would favor to get integration with the web. If my descriptions are too unclear and you have the time please check the links at the bottom to get more informations.

Best,
Jens

References

hey!

i'm not the gmusicbrowser developer but i thought since this thread has been quiet for a while i'd say something.
i think that your ideas are great and i'd love to see them implemented. i wrote a plugin for gmusicbrowser (artistinfo) that would work well with what you propose. it generates automatic queues (=dynamic playlists) based on similarity suggestions by lastfm. obviously it only plays local artists, but it would be very cool to extend this to streams.

i'm not entirely sure how hard it would be to enable streaming for gmusicbrowser, but i think it shouldn't be extremely hard. iirc gmusicbrowser had basic radio support a long time ago, at least i stumbled across snippets of that. judging from my discussions with quentin about webradio-support the main problem was the lack of standards for the song-information returned by radio-stations and the question of how to implement it in the user interface.

all the best
simon

#2 March 08, 2012, 16:36:48 Last Edit: March 08, 2012, 16:40:29 by jees
Hi Simon,

thanks for your reply :).

I've just started to play around with the stuff mentiond in my first post. The whole Playdar project seems quide dead, so I decided to take it only as inspiration to build something upon it.
My very first plan was to create this as GMB-plugin only. Rethinking this idea I'm planning to create a simple "query engine" for media retrieval. In detail this will be a small daemon running silently in the background. Your media player may connect to it, to get informations like free downloads, streams, similar artists, etc. These informations will be gathered by small resolver plugins. These plugins will query for example last.fm, Jamendo, MusicBrainz, etc. for requested informations. This should address the problem you described with the lack of standards, because the daemon middleware will gather all information (or a portion) returned by the resolvers, do some magic and hand over the information (in a well defined format) back to the media application.

This is where I'm currently at. I have more ideas for a user interface, resolver handling, etc. but this is the basic stuff I want to see, before extending further. I'm experimenting a bit with different ideas to see if I'm able to do what I described.

Sorry for not replying sooner, I'm not sure when I'll implement playing streams, the actual playing is easy, as it's not really gmb's problem but gstreamer's or mplayer's. The problem is how to handle a "current song" that is not part of gmb's library. I've got a few ideas on implementing that, but I'm not that happy about them, so I'm not very eager to do it.
Other than that I guess the rest shouldn't be hard, don't hesitate if you have questions.

+1 for the request for supporting streaming! :)

i'm also in favor of basic streaming support.

@quentin: i'm wondering whether it might be a good first step to add the functionality under the hood, so that at least plugins can make use of it. that way you don't have to have the UI totally figured out, yet people who want to can try to use it.

Quote from: Quentin Sculo on March 09, 2012, 22:54:42
Sorry for not replying sooner, I'm not sure when I'll implement playing streams, the actual playing is easy, as it's not really gmb's problem but gstreamer's or mplayer's. The problem is how to handle a "current song" that is not part of gmb's library. I've got a few ideas on implementing that, but I'm not that happy about them, so I'm not very eager to do it.
Other than that I guess the rest shouldn't be hard, don't hesitate if you have questions.

Np, you aren't late :)

What do you mean with handling the current song? Having no insight view of gmb's source do you mean the different handling from local files (the problem with meta information, etc.) or the handling of the library?
Maybe like ochosi suggested said a start would be to support simple playback of streams. This will allow us to play a bit with it and maybe we come up with a good solution all together :)

IMHO the first dvlpt's goal should be support Ipod. GMB will not be a viable music browser for distro as soon as it won't be able to support this king of music support. Actually we need to install 2 musicbrowser : one for play music (gmb), one for manage Ipod (rhythmbox, banshee, clementine, ...). unbearable !

#8 March 13, 2012, 22:26:28 Last Edit: March 14, 2012, 01:23:09 by VastOne
mrgrubert, I strongly disagree.  I do not think any music app (other than Apples own) should manage the device. 

IMHO, the OS should be responsible for the device to be seen and GMB would see the music as a directory and manage it as such, (loading, copying, moving, deleting etc) nothing more.

@mgrubert: While I'm with VastOne and this being not the topic of this thread, I think this should be already doable with libgpod as an extension.