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