So to play the rest of the album, the player doesn't need to know where it came from, It could just play from that FID onwards. - the giving the same net result.
Right. That's what it does when you un-shuffle. It un-shuffles around your current position, and the rest of that album plays.
Although it doesn't work exactly as you describe it. It doesn't go by FID, it goes by playlist order (becuase FIDs can be in a different order than the playlists).
Here's the way the player currently does its shuffling...
- When you select a playlist, it recursively (down the tree) grabs all songs from that playlist and all of its sub-playlists.
- The result is a flattened list of songs.
- It stores that flattened list of un-shuffled songs onto the scratch partition.
- It shuffles and de-dupes that list, and stores it onto the scratch partition, also.
Whenever you re-initiate a shuffle, it takes that un-shuffled list and re-shuffles it, locates the first occurence of your current song and moves you to that point in the list (allowing you to shuffle without interrupting playback).
Whenever you disengage a shuffle, it loads the un-shuffled list, locates the first occurence of your current song, and moves you to that point in the list (allowing you to be dropped into the correct point in the un-shuffled list without interrupting playback).
The player has no knowledge of whether the list of songs surrounding your current song is an accurate "album" or not. The only way the player could know how to re-assemble an album is by inference from the tags. And then it would only be a guess. And in my case, it wouldn't work every time because sometimes I retag compilation albums so that the correct original album is listed. For example, it wouldn't work for my copy of the Sopranos soundtrack because I've retagged all the songs to say the correct original album.