View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0018988||MMW 5||Now Playing||public||2022-04-19 00:08||2023-05-29 16:09|
|Target Version||5.1||Fixed in Version||5.1|
|Summary||0018988: Make Shuffle mode display track order (and related improvements)|
|Description||Shuffle mode in MediaMonkey has long been implemented in a manner similar to Winamp in which the Player randomly selects tracks from the list of tracks in the queue. This results in several deficiencies:|
1) The user cannot see what tracks are going to be played next
2) The user cannot see what tracks have been played
3) If the users restarts MM after some tracks in the list have been played, the randomization process begins afresh (there's no record of which tracks have been played)
4) There can be UI conflicts between Auto-DJ and Shuffle mode (i.e. if the Auto-DJ is active, then it can conflict with Shuffle mode)
5) There's a need for different terminology (Shuffle mode vs shuffle vs randomize)
Many other modern players (e.g. Groove, YT Music, GoneMad) take a different approach to solve the above issues:
a) When 'Shuffle' is activated, tracks in the Queue are re-ordered. Disabling 'Shuffle' undoes the re-ordering. This resolves issues 1, 2, 3 and 5.
. i) in the above implementations, 'Shuffle' generally functions like MM's 'Randomize' function--i.e. it's a transient operation and tracks played or added subsequently do NOT get shuffled (the mode changes back to 'Normal' once the user adds unshuffled tracks). AND in some implementations, while 'Shuffle' is enabled, the default playback commands change so that tracks are queueable shuffled. i.e.
- Normal mode has: Play, Play Next, Enqueue, Shuffle
- Shuffle mode has: Play, Play Next, Enqueue, _Enqueue Shuffled_, Shuffle
b) Auto-DJ is mutually exclusive to Shuffle to solve issue 4. i.e. there are 3 modes: Normal, Shuffle, and Auto-DJ, all controlled via a 3-way toggle.
For MM5, we could take the approach:
a) Similar to other players as described above:
i) Randomize the Playing list when Shuffle is activated (and rely on 'undo' functionality to undo changes to the Playing list order)
ii) Leave 'Shuffle' enabled until the user plays tracks normally (unshuffled)
iii) When 'Shuffle' is enabled, change the presented order of commands and shortcuts from:
Play now . . Alt+Enter
Play next . . Ctrl+Shift+Enter
Play last . . Ctrl+Enter
Play Shuffled >
Play now (shuffled) . . Alt+Enter
Play next (shuffled)
Play next (shuffled/mixed) . . Ctrl+Shift+Enter
Play last (shuffled) . . Ctrl+Enter
Play normally >
iv) When Shuffle mode is enabled, Change the order of browser view playback commands [Play all] [Play shuffled] --> [Play shuffled] [Play]
v) Remove the 'Randomize list' command (since it duplicates the revised 'Shuffle' functionality).
vi) Change the Shuffle tooltip to 'Shuffles the Playing list and makes default play commands shuffle tracks.'
b) Make the Shuffle command a 3 way toggle (i.e. add Auto-DJ to it).
Note: This might seem to be a signficant change from MM3/MM4, however, although there are some UI changes, workflow remains almost completely unchanged. The only difference is that disabling 'Shuffle' wouldn't cause the Playing list to play in it's pre-shuffled order. Issue 0000023, suggested an alternative implementation which addressed that, however, I believe that the current proposal is more understandable (and probably easier to implement).
|Tags||No tags attached.|
|Fixed in build||2800|
|related to||0000023||feedback||rusty||MMW v4||Configurable Shuffle functionality (current behavior vs randomize list)|
|related to||0016622||assigned||michal||MMW 5||Now Playing: Unexpected behavior when Changing Sort order|
|related to||0016061||feedback||rusty||MMW 5||Playing list (panel): Numerous issues with Randomize List functionality|
|related to||0018776||resolved||Ludek||MMW 5||Automatically retain X files in Playing list does not work when Shuffle is enabled|
|related to||0019934||new||rusty||MMA||Rationalize Shuffle and Randomize functionality so that queue order is reflective of play order as in MMW 5.1|
|related to||0019569||closed||peke||MMW 5||Filters: filtering the Playing list causes the track number to change|
|related to||0020054||new||martin||MMA||Album Shuffle|
ok, makes sense for me and also some possitive feedback about this future change is already here: https://www.mediamonkey.com/forum/viewtopic.php?p=496119#p496119
Assigned to Michal re feedback and for implementation.
Feel free to ask also the support team whether they see some disadvantages (or usability miss) with the newly suggested approach.
||Moving to 5.1.|
||As discussed, terminology to be adjusted based on https://www.mediamonkey.com/forum/viewtopic.php?t=102722|
Fixed in build 2800. Changes in terminology included. Two things were not implemented:
1) Shuffle button left as 2-state (On/Off), Auto-DJ can work in both modes, I do not see any conflict.
2) hotkeys left untouched. It would be problematic and very confusing to have the same hotkey for two different actions, like Alt+Enter for Play Now and Play Now (shuffled). Users can set hotkeys for both actions separately, forcing to change them to something else or switch them after changing Shuffle state is not a good idea I think.
||Reopened, shuffle now does not work as expected now (Next in shuffle mode skips to random track instead of next), seems to be some regression.|
Things to decide:
1) playback rule "Ignore Shuffle" is not used now, as it was used only for the old shuffle functionality. Should we remove it or should it have some other use?
2) pressing "Shuffle" when activating shuffle mode now randomizes whole Playing list, just like old Randomize list function. Maybe it should randomize only tracks AFTER currently playing/active track?
Per feedback here: https://www.mediamonkey.com/forum/viewtopic.php?t=104130
and also per my opinion there are some bugs, see the forum link.
Namely double-clicking a tracklist to play and immediatelly enabling shuffle should move highlighted (playing) track on top of the Playing list.
1) remove "Ignore Shuffle" setting, as it currently does not have any function
2) activating "Shuffle" with some track active or playing should
a) place active track as the first and shuffle the rest
b) shuffle only tracks after the current one
(I prefer the latter, but hard to say, could be also as new setting instead of Ignore Shuffle)
3) double-clicking some track (if Play now action is set to "Clear list & Play selected + subsequent") will add clicked track as first and shuffle the rest of added tracks.
Rusty please review this and decide what to do in 2), then assign me back, thanks.
Please note that Ignore shuffle should be actively used when you play Audio Books and Podcasts so that you do not need to disable shuffle when playing unplayed podcast episodes and have Shuffle enabled for regular Music Playback eg. Enable Shuffle -> Add 5 Episodes of podcast and play first then after those 5 episodes MM resume shuffle behavior (2690 Behavior).
Reviewing this now current behavior completely break podcast playback.
0. Settings fro play now is in attached picture + Shuffle is off
1. Add number of tracks to playing list
2. Start Playback
3. Add bunch of AudioBooks/Podcast episodes as NEXT so that you p[lay them in order
4. In middle of listening you noticed that Shuffle ois off and you want to continue shuffle playlist after you listen the episodes
5. Turn on shuffle
6. Order of Episodes are lost
Example 2 when you play playlist:
1. Play some track from 1k Now playing playlist (Shuffle off)
2. Right click on playlist -> Queue Last
3. Double click to play some track from playlist
4. You decide to play some shuffle tracks and enable Select Shuffle and all tracks in Now playing including playlist one are shuffled all over
5. No way to easily stop shuffler and continue playback of playlist order you added. Only if you have not done any additional changes to now playing you can use ⋮ -> Undo -> Randomize list and start playback of playlist or you clear playlist, disable shuffle add that playlist again (thus loose 1k of tracks in playlist)
I tested number of apps and enabling shuffle do not change Now playing track list order in UI, just background cached queue order. If I want to add selection as shuffle then I would use Right click Play shuffled -> Queue Next/Last even in some cases Mixed
From What i see the problem is that Play shuffled options are not available as Play Now actions so user can Select full set behavior as shuffled eg. "Clear... Play Selected shuffled Mixed + subsequent" Which will Shuffle mix playlist to existing Now Playing.
Video Showing enabling shuffle make irreversible damage to Now playing.
||Additional test showed that if Shuffle is ON and you add AudioBooks in list as Play next they are played normally in order, but if you disable and enable Shuffle then they are scrambled (shuffled) across playlist.|
Peke: this issue is about changing of previous behavior of shuffle. So "apps do not change Now playing track list order in UI, just background cached queue order." is irrelevant, as this previous behavior was the main reason for this issue, as users did not like it and wanted to see tracks in the shuffled order, not some unclear hidden order.
I personally do not understand, why somebody switches shuffle on and then plays audiobook, where shuffling is not wanted.
Anyway we now do "Randomize list" function on shuffle as requested, your points go mostly against the assignment. You in fact want to return previous behavior.
No, even I think that previous behavior was better that current one, I would like to make this fixed rather than revert.
Current behavior makes shuffle completely unusable for me especially in custom Play now Environment (95% of cases).
I agree that this behavior have its benefits. But it completely negate (make obsolete) Grouping (one of the most requested feature in past) and Ignore shuffle option because it is completely ignored and irreversibly change Now playing.
Thing I expect from Now playing behavior we already use in Static playlist eg.
1. Add randomly 100 tracks to Static Playlist (different artist/titles and randomize list)
2. focus that playlist
3. click on title to sort by title
4. # column is now Randomized as sort is changed, but it require SAVE in order to make it permanent so if you change
Now playing is permanently changed each time when you enable Shuffle and no way to revert sort unless you UNDO Shuffle like it is Playlist edit function and not PLAYER/PLAYBACK ONLY function that is temp behavior.
Also Play Now while playing loose meaning because as soon as you Enable shuffle All is garbled. another example you add bunch of Albums you want to check metadata, but do not want to listen complete albums while doing that but shuffle so you enable Shuffle -> List is randomized and tracks from album are all over the place and you need to scroll hold CTRL + Scroll to select all tracks from album.
The expected behavior if we want to make UI changes when activating Shuffle in MM player it should behave like in pictures (I will use Main screen as it can easily show behavior of now playing) before and after activating Shuffle:
1. Add bunch of tracks to playlist (Column # is Visible) (PIC1)
2. Enable Shuffle (PIC2)
3. Actual Playlist order is not changed (# column shows correct order without shuffle on) while UI shows playback order
4. Disable Shuffle will revert UI to playlist order (PIC1)
This behavior have another benefit as if you actually change order of tracks (D&D) user will change playback order, but would still retain now playing playlist order.
Summarizing all the discussions/feedback to-date:
1) Re. 'Ignore Shuffle': it should be implemented similarly to in the past. i.e.
a) As suggested by Michal/Jiri: If shuffle is activated and such tracks are in the list, randomize all continuous regions of tracks with Ignore Shuffle set together. I.e., if tracks 5-9 in NP belong to Ignore Shuffle set, they will be shown in the very same order after Shuffle is pressed, but at random position of the resulting list (or perhaps even at the beginning of the shuffled section of the list).
b) If such tracks are queued while Shuffle mode is enabled, treat them as if shuffle mode is not enabled.
2) Effects of toggling the function:
a) Activation: I think that the suggested behavior of shuffling tracks that are after the currently playing track makes sense (option b).
. i) The downside is that there wouldn't be a simple way of shuffling the entire list so it might be a good idea to add back 'Re-shuffle' to the Now Playing list context menu (previously 'Randomize').
b) De-activation: As currently implemented, disabling Shuffle mode does nothing. I think this is the best approach, except perhaps in the case when the last action on the Playing list was to shuffle it, in which case undoing that action could make sense. On the other hand, that might seem like a bug (that sometimes it undoes the shuffle and other times it doesn't), so I'd leave this as is for now.
3) The current shuffle commands don't always yield the expected results:
a) Play now (shuffled): I kind of agree--it should add clicked track as first and shuffle the _subsequent_ tracks (i.e. the tracks prior to the double-clicked track should appear before the playing track).
b) When the user selects a single track and clicks Queue next (shuffled) or Queue last (shuffled) the 'shuffled' indicator is confusing because nothing actually gets shuffled. Would it be feasible to just display 'Queue next' / 'Queue last' if only a single track is selected?
4) Shuffle mode currently affects the Play order (#) in the tracklist for Playlists: When Shuffle mode is enabled, it currently changes the Play order field in the tracklist for Playlists. Shuffle mode should only affect the Playing node/window (there is a need for playlist management tools in the same way as Playing list management tools, but that's a separate issue).
5) Very minor issue: Regarding hotkeys, when the user switches toggles 'shuffle' mode, wouldn't they expect hotkeys to work as in the past? i.e. ENTER --> Play tracks (shuffled) already works in this manner, so shouldn't the following?
CTRL SHIFT ENTER --> Play next (shuffled)
CTRL ENTER - Play last (shuffled)
6) One question/possible issue: will the revised implementation break any addons and is there anything that we can do to limit this.
a) I'd prefer to shuffle all tracks here (i.e. option a). The use case I'm thinking about is: Start playback of the 3rd track of an album, then decide to play the rest shuffled => I'd expect Shuffle click to shuffle the whole album.
b) I think that the 'does nothing' part could be improved by showing a Toast message on Shuffle click. As for the undo of shuffle -- I'm not sure here. Maybe the Toast message could also have a button 'Original track order'?
2a) I suspect that the most common case would be that a user double-clicks a track expecting it and the tracks that follow to play (whether shuffle is enabled or not). BTW, this is also how MMW 5.0.4 works.
Re. 2b), I discussed this further with Peke and the problems are a bit more clear to me now. They are:
i) With 5.0.4, the user can disable Shuffle to get back to the original playlist order and continue playing the next track from the original order (e.g. if the original order was by Album, the user can disable shuffle and continue listening to tracks from that album). With 5.1 the user can do this:
- via Undo, but it’s not as intuitive and also undoes edits to the Playing list
- by sorting by another attribute such as Album to easily see the other tracks on the album, but this doesn’t work well either (see ii below).
ii) With 5.0.4 sorting by other attributes isn't mutually exclusive to shuffling--so the user can view other sort orders even if shuffle is enabled. With 5.1, when the user sorts ‘Playing’ by Album in order to view other tracks on the Album, it causes the Playing list '#' column to update to match the new Album sort, effectively overriding the Shuffle function. i.e. Shuffle is enabled, but the tracks are no longer being shuffled! This is basically another instance of the issue already described at 0016622
iii) Peke also believes that the current approach will break scripting (I’ll leave that to the devs to evaluate).
To resolve the above, Peke is suggesting that MMW's Playing list should work in a manner similar to how sorting of static Playlists currently works (this is roughly what was previously suggested at 0016622). i.e. Playlists have the actual play order '#' field, but if the user sorts by Title, the tracks are listed in the revised play order but the original play order is still retained and list operations are performed on the original play order.
For the Playing list, this could work as follows:
A) Enable Shuffle --> tracks are randomized, but the original play order is retained (in a field hidden from the ‘Playing’ window but optionally displayable in the ‘Playing’ tracklist as ‘[sort icon] #’). A ‘Save new play order’ icon appears once ‘Shuffle’ mode is enabled, and If the user ‘Saves’ it, then the original play order is overwritten with the Shuffled order.
When Shuffle is enabled:
B) Additions to the queue (Queue next / Queue last) would update both the 'original Play order' (items queued unshuffled) and the ‘Shuffled order’ (items queued shuffled) variables.
C) Attempts to re-order the queue would only reorder the Shuffled Playing list (and not the 'original Playing list').
D) Toggling Shuffle off would revert to a version of the Playing list that's similar to what the user had–i.e. It’s the original Playing list plus Queued items but without re-ordering changes (unless the user previously clicked SAVE, in which case the new Shuffled order would have been saved). Note that this is currently the default behavior in build 2802 when Shuffle is enabled.
E) When navigating to Tree > Playing, sort orders of # and/or [Shuffled]# would display, the default sort depending on whether Shuffle is enabled.
F) In Tree > Playing, sorts by anything other than the default sort would cause the # and/or [Shuffled]# sort order numbers to update, and a 'Save' icon to appear (as with Playlists).
I agree with the idea of having an option to return to the original order. That said, for me the introduction of a different sort order and its 'Saving' to the real sort order sounds a bit too complicated even for somewhat advanced users. What about something like this:
1. Introduce _internally_ the original sort order field. It can be maintained while Shuffle is enabled, as much as possible. This field could be made accessible to scripts, but I don't think it should be visible to users (unless a script implements it).
2. When Shuffle is disabled, NP order will _always_ revert to the original sort order. In order to avoid unwanted modifications, there will be a toast message shown 'Reverted to the original Now Playing order [Keep Shuffled order]'. By clicking the button, the user will be able to keep the shuffled order, even though the Shuffle mode is no longer enabled.
But what is "original sort order" if user changed NP list during shuffle mode? I.e. something added/inserted somewhere, something removed, something moved.
I agree, it sounds quite complicated now, hard to think of all possible variants. I also do not like idea with "Save" button, reasons described here: https://www.ventismedia.com/mantis/view.php?id=16622#c60276
This would also again destroy the original idea of this issue - show real playing order in NP list.
Btw. we did not have anything like shuffle order for previous shuffle functionality, even app. did not know in advance, what will be played next (that is why it could not display tracks in shuffled order before).
||As for the "original sort order", there certainly doesn't exist anything like this after some operations with the Shuffled list, but I think that there does exist something like "expected original sort order". E.g. after playback of album A, pressing Shuffle, adding album B to NP, reordering and removing some tracks and turning Shuffle off, I'd expect albums A and B in the NP in their original track# order with the removed tracks missing.|
||OK, so when activating Shuffle, we will backup original sort order of NP list to new hidden column and will fill this column for all newly added tracks as they would be added to the end of the list. After deactivating shuffle we will sort the list by this column. This should be doable. But probably should have some new option, as e.g. I would not be happy with resorting NP list after deactivating shuffle.|
Here is small .XLSX file, which due the limitation of Spreadsheet manipulation simulate only one part of Shuffle ON/OFF behavior with hidden Original order column.
Playback ORDER # = Playback order [Now Playing list] (Should be same as NOW PLAYING # when Shuffle is OFF)
NOW PLAYING # = Original Order in which tracks are added to Playlist
Shuffle RANDOMIZE KEY = Random Seed simulating result of RANDOMIZE LIST (Calculated each time SHUFFLE gets ON or user use ⋮ -> RANDOMIZE LIST)
SHUFFLE ON = To simulate Shuffle ON use Drop Down on "Shuffle RANDOMIZE KEY" -> Sort Ascending -> Playback is shuffled, but "NOW PLAYING #" is not changed
SHUFFLE OFF = To simulate Shuffle OFF use Drop Down on "NOW PLAYING #" -> Sort Ascending and It is reverted to original order eg. ROW # and "NOW PLAYING #" should match.
Nowplaying Shuffle-2.xlsx (20,986 bytes)