FS#7801 - Beat detection and speed control for jogging

Attached to Project: Rockbox
Opened by Julio Perez (Pindurs) - Wednesday, 19 September 2007, 22:09 GMT
Task Type Feature Requests
Category Music playback
Status Closed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No



The idea is to make an automatic speed control.
Whatever sport you are doing, it's helping very much to listen to a music that has the same bpm as your activity.

With that function, you would only adjust during the first track, then the player would detect the bpm of the next tracks and adjust them to the speed you choosed. It would either play faster or slower, dependind which is the closer to a multiple of the bpm.

For sure, if the pitch would remain the same it would be great, but it usually gives the sound a strange effect. Changing only the speed would probably be acceptable.

The control of the speed would be done with two buttons (+ and -) to keep it intuitive.

At any moment, you could accelerate or slow down according to your activity (and breathe ;-).

I understand very well that it's a quite big project demanding lots of skills and putting some problems.
For example, how to analyze the next track for detecting the bpm while playing the present one?
Should the player analyze a playlist before to play it?
Should it even be done at home for all the tracks and the bpm of each track kept somewhere on the player?

I'm quite sure that it would be the sort of function that you wonder how you could live so long without...
This task depends upon

Closed by  Björn Stenberg (zagor)

Reason for closing:  Fixed
Additional comments about closing:  Closing all feature requests.
Comment by Jonas Häggqvist (rasher) - Wednesday, 19 September 2007, 22:28 GMT
I think the only chance this would ever work (and perhaps get included) is if the files had a BPM tag set. I just don't think it's feasible to do beat-detection on a poor little DAP, nor do I think anyone would want to see it in the Rockbox core. Now if that was done (I believe there are programs to do something like this already), I don't think it would be *that* difficult.
Comment by Steve Bavin (pondlife) - Thursday, 20 September 2007, 08:44 GMT
I like this idea (pitch/speed setting based on BPM tag). AIUC, the pitch/speed control works on the PCM output, so it wouldn't work too well with crossfade!
Comment by Julio Perez (Pindurs) - Friday, 21 September 2007, 07:21 GMT
With the bpm tag, it looks quite feasible, doesnn't it?

There is a freeware called BPM ProScan that can autodetect and write the bpm into the id3 tag:

Steve, I don't understand why it would prevent the crossfade, are you sure of that?

Neverthless, having all the tracks on the same bpm and beeing able to change it simply with + and - would be great, huh?
Comment by Steve Bavin (pondlife) - Friday, 21 September 2007, 08:34 GMT
I might be wrong, but I believe the only way we have of changing audio speed is by modifying the PCM output sample rate - this affecting all audio output. While the crossfade was taking place, it would have to match either one of the tracks, but couldn't match both at once.

Also, synchronising the speed change with track transitions might be tricky - the audio is decoded into buffers which can take a few seconds to play out.
Comment by Julio Perez (Pindurs) - Friday, 21 September 2007, 08:57 GMT
I understand now.

Maybe the dirty solution would be to change the sample rate in the meedle of the crossfade?
Comment by harry tu (bookshare) - Sunday, 07 October 2007, 19:18 GMT
Maybe we can ask Olympus. Olympus change their speed without the pitch. If we could either get info or analyse their firmware, maybe we can do it the same way.