+ (setq emus-current-progress "")
+ (set-process-filter
+ (emus-get-process)
+ (lambda (_proc string)
+ (pcase string
+ ((and "@P 0\n"
+ (guard emus-continuous-playback)
+ (guard (eq emus-state 'playing)))
+ (emus-play-next))
+ ((rx (: string-start
+ "@F "
+ (+ digit)
+ " "
+ (+ digit)
+ " "
+ (let left-str (+ (not " ")))
+ " "
+ (let right-str (+ any))))
+ (let* ((left (string-to-number left-str))
+ (right (string-to-number right-str))
+ (total (+ left right)))
+ (setq emus-current-progress
+ (format " %s/%s"
+ (emus--timestamp left)
+ (emus--timestamp total))))))))