-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Question regarding a "universal playlist" #583
Comments
Hi!, first of all, thanks very much for taking the time to suggest new features. Always appreciated. The 'universal playlist' or the general idea of combining multiple music sources to produce a 'merged' playlist that would provide some new and interesting ways of listening to music is something that has always been at the back of my head, although I have never got to the point of trying to formulate it properly. I think, Tizonia currently as a project has several aims, e.g.
So I think the 'universal playlist' in any of its many possible incarnations is something that fits very well with the current philosophy of the project.
It depends I suppose. E.g. the Tizonia cmdline process is currently architected around the idea of having a single OpenMAX IL 'service' graph active at any time, i.e. a pipeline that realizes the following picture:
The current implementation handles only one of such graphs or pipelines because that is what makes sense as a cmdline application, but it does not prevent having multiple instantiated simultaneously. In fact, there are quite a few places in the code where this option is contemplated and allowed. So one can think of various ways of realizing the 'multi-service' graph/pipeline picture that would be necessary to implement the 'universal playlist' feature, e.g.: The first option is probably easier right now. Tizonia does not prevent it at all and in fact, it makes it possible. Perhaps I tend to favor the second option, as it seems to me the more powerful and flexible solution. But in any case, I would be more than happy to provide assistance if anyone wanted to contribute towards any of these paths. Please feel free to continue asking questions here if you are interested in contributing. There is also a Gitter chat that could be used to continue the conversation. |
Thanks a lot for the detailed info! Glad to hear we agree that this is something very relevant (and potentially important) to this project. Regarding the approaches proposed, I'd also lean more towards 2) for the decreased coupling and added flexibility. So to sum up, making it work like that would require:
If this checks out, then I'd very much welcome the above-mentioned "assistance" on where to start with the first two. I think I can likely put aside some time during the next few weeks to look into this. |
@mrzealot Sorry for the delayed reply:
Absolutely, this would be a feature that would make Tizonia really stand out!
Happy to hear that you agree with that as well!
Regarding this, Tizonia can play individual streams with some of the services that allow it, e.g.:
SoundCloud could probably be added to the above list easily see #561. With Google Music I believe there is no API in gmusicapi (see https://unofficial-google-music-api.readthedocs.io/en/latest/) to achieve that. Perhaps something could be done to 'simulate' that behaviour. Same story with Plex I think (see https://python-plexapi.readthedocs.io/en/latest/).
Tizonia implements a minimal MPRIS2 interface (basically, play, pause, stop, song skip and volume). But it is missing other MPRIS features, see #509, #105 #104. I have not invested more time on MPRIS because it depends on the orphan Because of all that, I started entertaining the idea of adding a more fully featured RPC mechanism (e.g. something based on JSON-RPC, see #488). I think my preference is still to create a tizonia-specific JSON-RPC interface. I could be persuaded to go back to MPRIS if someone could do the heavy lifting of replacing dbus-cplusplus for something that is actually maintained (difficult) or fixing it to get the rest of the MPRIS2 functionality implemented in Tizonia (I think also difficult). Let me know your thoughts. |
Tomahawk was a music player that separated metadata from the actual audio files and did exactly what you mentioned...
... except fully automatically. Unfortunately it's dead now but some backends still work. :) |
Hello!
I've long been planning to combine and streamline my music sources into some kind of a universal library/playlist where each song could have many sources (e.g., a youtube link, and if that's taken down for some reason, there's a backup soundcloud link) but nothing like this exists yet as far as I've seen... In fact, tizonia comes probably the closest with the OSS multi-source playback (which is very nice work btw!), so I'm currently thinking about building on top of this ifrastructure.
So I guess my question is: how hard does implementing this sound (for someone more familiar with the project)? My initial intuition would be adding options to the specific source handlers (like youtube and soundcloud) to play just one song by URL or source-specific identifier, and then implement the playlist as a wrapper layer controlling tizonia. But that's just the easiest/probably fastest way, and depending on how generally appealing such a feature would be, a schema definition and built-in support could be even better...
I'd love to hear your thoughts! Thanks!
The text was updated successfully, but these errors were encountered: