files:
A (length 6)
B (length 3)
C (length 2)
metadata has length 1 for each track
buffer of length 5
playlist: ABC
current playing position indicated with *
M is metadata
-- | -- | -- | -- | -- |
*A1*| A2 | A3 | A4 | AM | - buffer fills
-- | -- | -- |*A4*| AM | - A1-A3 are played
A6 | AM | BM |*A4*| A5 | - AM is moved to end, A5-A6 are buffered, BM is buffered
*A6*| AM | BM | -- | -- | - A4-A5 are played
*A6*| AM | B1 | B2 | BM | - BM is moved to end, B1-B2 are buffered
-- | -- | -- |*B2*| BM | - A6, B1 are played
BM | C1 | CM |*B2*| B3 | - BM is moved, B3, C1 and CM are buffered
-- |*C1*| CM | -- | -- | - B2-B3 are played
-- |*C1*| C2 | CM | -- | - CM is moved, C2 is buffered