Rockbox Technical Forums

Rockbox Development => Feature Ideas => Topic started by: TravisE on November 25, 2014, 09:11:44 PM

Title: Skip Back button behavior based on real time rather than track position
Post by: TravisE on November 25, 2014, 09:11:44 PM
The current behavior of Skip Back in Rockbox is to jump to the beginning of the track if the playback position is more than 4 seconds or so in, otherwise go to the beginning of the previous track. This sounds reasonable, but unfortunately, there are several cases in which this behavior drives me nuts.

1. If I pause a track near the very beginning, leave for a while and come back, and want to restart the track from the beginning, I don't usually keep mental track of where I am. Thus I hit Skip Back, expecting to go to the beginning, but it jumps to the *previous* track.

2. If I'm at the first track of the playlist in shuffle mode when 1) happens, it jumps to the end of the list and *reshuffles* it, which I don't want (and there doesn't appear to be a way to restore the original order).

It gets weirder with some of the more “exotic” codecs like MOD, NSF, etc.:

3. Some of these don't seek by min:sec, but by something else. With MOD, it causes Skip Back to go back a track during the first five orders—and depending on the song, that could last anywhere from a fraction of a second to a minute or more of real time (or infinity, if the file contains fewer than five patterns). Worse, MODs loop, so even if a module has been playing for 3 hours straight, a single press of Skip Back can still end up skipping to the previous track, rather than to the beginning of the current track like one might expect.

4. NSF files have the effect that Skip Back jumps to the last track if playing one of the first five subtracks within the NSF file, otherwise jumps back to the beginning of the current NSF. The time interval involved here could be anywhere from seconds to infinity (if single-track looping is on).

The effect of all this is that it makes the behavior of the Skip Back button seem inconsistent and even unpredictable at times, unless you're completely familiar with the content you're listening to, or you always look at the display (assuming it works and you're a sighted user) before using it. I find this quite frustrating.

On the other hand, I think if the button worked more like on many CD players, it'd be less confusing: If pressed the first time, playback always goes to the beginning of the current track regardless of position; then, if it's pressed again within a few seconds or so of last time, and no other buttons were pressed in the meantime, then—and only then—would it go to the previous track (subsequent repeated presses within the interval would then continue to jump back through tracks like it currently does). In other words, the behavior would be similar to what it already is, but based on real-time time intervals rather than the current playback position. This would eliminate the apparent unpredictability in these cases.

Just a thought. Anyone agree/disagree?
Title: Re: Skip Back button behavior based on real time rather than track position
Post by: __builtin on November 26, 2014, 04:47:29 PM
Sounds pretty reasonable to me, though I'm not sure how feasible it is technically.
Perhaps there was a reason it was implemented this way.
Title: Re: Skip Back button behavior based on real time rather than track position
Post by: TravisE on November 26, 2014, 08:10:44 PM
That's what I sort of wondered. You'd presumably need to have an independent way of measuring time, but it wouldn't need to be super-accurate. Hopefully no one would notice if the time interval on a particular platform was 4.9 or 5.1 seconds instead of 5.0. :)
Title: Re: Skip Back button behavior based on real time rather than track position
Post by: __builtin on November 26, 2014, 08:54:01 PM
Rockbox has that. Now someone just needs to implement it! :)
Title: Re: Skip Back button behavior based on real time rather than track position
Post by: monoid on November 27, 2014, 05:25:07 AM
I always wondered, what are the rules for skip back function in RB.

It seems to me that, to do it like on CD sounds like a good idea.

I understand that intention of RB developers was to do it smart and save the user one click. But if it does not work consistently for all codecs and has undesirable sideeffects (undesired reshuffle in certain case) than it might be better to go back to "classic" behaviour.