-
-
Notifications
You must be signed in to change notification settings - Fork 36
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
[Feature]: implement queuing such as is done in the Spotify app #34
Comments
This looks really interesting and helpful. I think I will add this feature soon. |
Would you still like a more in-depth description of the spotify behavior? I can try to do a little write up on what exactly happens when and how. |
Yeah I think a in-depth description would be nice. |
In spotify you have a user queue and what I'll call a context queue a third Current SongThe current song, can be mutated by the following three actions:
Context queueThe context queue is mutated by action User queueThis is what makes the Spotify queuing system special and very nice to use in The user queue is only mutated by the following actions:
As you can see all of these actions require manual interaction of the user. Changing the current playing song and context queue don't mutate the user queue. Why is this so handy? Well say that I want to have a nice queue of songs before stepping into my car, so that I won't be distracted by choosing music to play while driving, I queue some songs but I'm not sure whether I'd want to play song X. When using the apple music app it's game over, I can't play the song since it will wipe my queue, I can only queue the song play it and then decide whether I like it. In Spotify you can play the song without having to worry about changing the user queue since you can change the current song without mutating the user queue. In the Apple Music app there's no separation between the user queue and context queue which I think is insane. If I'm queuing songs it means just directly playing some genre, artist or album didn't suit my needs and I didn't have a playlist which fits the occasion either. If I wanted to use the context queue I wouldn't have used the user queue anyways! It seems that in the apple music app queuing is seen as an extension of playlists while in Spotify it serves as another mechanism for when no playlist or context is appropriate. I hope this was somewhat of an in depth explanation instead of unclear ramblings but if anything is unclear I can add details. |
Thank you for this in depth description. This feature is really nice. I think the time to implement this is quite high. I add this to the feature list. |
I am currently working on this feature and I have some questions regarding the behavior. As example please take a look at the following picture: There we have the red songs 1, 2 and 3. Currently the songs "Example Artists - Good Morning" is playing. An other important question: What happens with songs from the user queue if they have been played? Should the swipe to the right also be available in the Popup player view or only in the library views (songs, playlist details, ...)? How to name the section names? Currently the section names in the PopupPlayer are "Previous" and "Next". How are the new sections should be named (there are now three sections or two if no song is in the user queue)?
|
Do artists/albums/playlists have the right swipe too? |
Just tried it out on Spotify, apparently they don't. But I think that could actually be a very nice improvement. They do allow you to queue the artist or album via one of those circles with three dots in them menu's. But I could really think of a ton of cases where this would be a lot nicer, think of queuing multiple albums whole because you'd like to listen to the whole album, in spotify this would take five taps and swipes in total, one simple swipe would be a lot faster! |
Could you please give me some feedback about the implemented behavior? |
Hi sorry for the delay. There are a few things I think could be polished. In short I think it would be nice to be able to queue everything, including artists, albums, genres, directories and playlists in the same way you queue songs. I also think the wording of the queue could be a bit better, I rather like the way spotify did it: What's particularly nice about this queue is that it also shows you the context of what is playing next. Would you like me to create new issues for these improvement suggestions or extend on them here? |
continued here: #85 (comment) First of all a few definitions (because I noticed I use a lot of words of which the meaning isn't clear):
I forgot about a big one: automatic context switching of the non user queue. The context is changed whenever a user manually taps on one of the possible contexts enumerated above. Automatically switching the context would replace the Here's an example use case to show how automatic context switching reduces the number of taps needed. If a user wants to play all songs in a playlist which come after certain song in a playlist what you'd have to do at the moment is add the whole playlist to the queue, open the queue, scroll down to the song (which can take quite some time if you've got a big playlist) and tap on the song. If I counted correctly this takes 4 taps excluding the scrolling needed to find the appropriate song in the queue. If the context of the non user queue changed automatically you'd be done by clicking on the song in the playlist, thus only requiring one tap. Again, I can open another issue for this and can think of more use cases if you're not quite convinced yet. Let me know what is best for you. |
I agree, everything should be queueable. I will add this for the next release. The complete context switch/ "play all" behavior is a lot more effort that I will not implement till the next release. Are there any other suggestions regarding the current "waiting queue" implementation? |
referencing #34 (comment)
I think it would still be a good idea to rename the user queue from |
I renamed it to "Next in Queue" with be933d8 |
Did you get time to test this feature in beta v1.1.0? Is the behavior correct if a song from a new context is played? |
As of now it seems there are some bugs in the new queueing system, there seem to be some weird interactions between queued songs and the context queue. If I for instance queue a song to the user queue and press play on a playlist the expected behavior would be that the playlist would start playing and the queued song would be played after the current song if I skip to the next song. Currently however the queued song is played when pressing the play button. Another example is if I queue something to the user queue (or something which had previously been queued in the user queue is playing) pressing play on any other song doesn't work. I'll pay closer attention and figure out what is happening exactly, I'll try and see if I can figure some more out by looking at the code as well. Since it's not completely clear to me currently whether these behaviors and functions are bugs or if you meant to implement them like that. So for now I think it's best to leave this issue open and resolve other potential bugs in new issues. |
OK thank you for your feedback.
The above describe scenarios should behave the same if the play button is pressed in a playlist (the first song of the playlist is the "pressed" song). Are the describe scenarios correct? |
Is
In regards to In short I think a currently playing song should not be part of the user queue. I suppose this should simplify the current logic for queuing quite a bit as well. |
|
Is the queuing behaviour now correct? |
It seems so yes, although there might be some edge cases but in general the functionality is very very good so it isn't noticeable if there are. I'll open a new issue if I find another bug. Thanks a lot for implementing this :) |
I was wondering whether you'd be interested in implementing queuing such as is done in the Spotify app and whether you are already familiar with this behavior (if not I could describe it in detail to make implementation easier).
It basically works like the following:
This is how it looks:
I could elaborate more on the exact behavior and arguments on why I think this is better behavior than for instance the Apple Music app queuing if you might be interested in implementing this.
The text was updated successfully, but these errors were encountered: