Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /storage/content/49/145849/famitracker.com/public_html/forum/classes/dbHandler.php on line 29 FamiTracker
Login:
Menu:
Post: Author:
FamiTracker > General > Bug Reports & Feature Requests > Display averaged BPM (vs. atm BPM) Owner: Stratelier New post
Page 1 of 1 Sort:  
Display averaged BPM (vs. atm BPM) Posted: 2014-07-11 21:11 Reply | Quote
Stratelier



Member for: 2954 days
Status: Offline

#59320
This is a bit of an advanced topic, pertaining to the use of Fxx commands to manually control a song's tempo on a frames-per-row basis.

Take [url=http://famitracker.com/forum/attachments/59080/nevergonnagive.ftm]this song for example and notice the alternating F03/F04 commands, which creates an overall tempo of 257 BPM. Meanwhile, FamiTracker's status bar can't decide whether it should display "300 BPM" (F03) or "225 BPM" (F04).

So how about an option to average the BPM over the last two (or four?) rows and display that instead of trying to display whatever the at-the-moment value is? (Note that this only makes a difference for songs that constantly issue Fxx commands to customize the tempo; for the other 99% where you just specify a given tempo and not worry about the frames-per-row, there's no visible difference.)

_______________________
Where to find me:
YouTube: [url=http://youtube.com/user/stratelier]http://youtube.com/user/stratelier
DeviantArt: [url=http://stratadrake.deviantart.com/]http://stratadrake.deviantart.com/
Posted: 2014-07-12 00:23  (Last Edited: 2014-07-23 20:55) Reply | Quote
jsr
Administrator

Avatar

Member for: 5925 days
Location: Sweden
Status: Offline

#59329
Thanks for your suggestion, but I think the way it's displayed right now should be good enough.

The user will get an idea of how tempo and speed interacts with each other, and if someone wants to use alternating speed commands (instead of using the tempo control) then I'm sure that user already is aware of the desired target BPM.

_______________________
Programmer and developer
Posted: 2014-07-19 16:57 Reply | Quote
poodlecock

Avatar

Member for: 3398 days
Location: !wow
Status: Offline

#59597
I would actually love this feature =D But I suppose it is true...

_______________________
"im going to continue making this crazy stuff then after a while my style will be so sick that you will be like damn suuun that shit is so sick i dont even get it. i will be like bro its ok.. you dont have to." -omgdonut
Posted: 2014-07-21 00:05 Reply | Quote
Stratelier



Member for: 2954 days
Status: Offline

#59635
[quote=jsr]if someone wants to use alternating speed commands (instead of using the tempo control) then I'm sure that user already is aware of the desired target BPM.[/quote]
Yes, it's just one of those little things that would be nice to see the interface giving accommodation for sometime.

_______________________
Where to find me:
YouTube: [url=http://youtube.com/user/stratelier]http://youtube.com/user/stratelier
DeviantArt: [url=http://stratadrake.deviantart.com/]http://stratadrake.deviantart.com/
Posted: 2014-07-23 05:57  (Last Edited: 2014-07-23 06:00) Reply | Quote
CheeseGuy99

Avatar

Member for: 3752 days
Location: Amarillo, TX
Status: Offline

#59699
When trying to find the tempo, I usually just add the two BPM values and divide by two. However, jsr, I think that if there's absolutely nothing else you can think of to add (e.g. in the very distant future), this would be something to consider. But really, it's not useful enough to take priority over, say, 5B. xD

Also, wouldn't this cause issues in songs like this, where there's swing?

_______________________
**** COMMODORE 64 BASIC V2 ****

Some other places I've tried to conquer:
[url=http://chipmusic.org/ch3dd4r]Le Chipmusic
[url=http://battleofthebits.org/barracks/Profile/CH3DD4R/]Le BattleOfTheBits

Attachments:
dolphin_swag.ftm (62 Kb)
Posted: 2014-07-23 09:30 Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#59700
You would add the two frame counts and divide by two, then use that to calculate BPM. Averaging the BPMs directly would be incorrect (it has a reciprocal relationship, not a linear one).

Also, Fxx patterns might be in 2s, or 3s or 4s or some other sized group. Really, the average speed should be accumulated over several rows, not just two. Unfortunately, it would only be stable if the length of the averaging window was a multiple of the group size (e.g. a window of size 4 would give a jittery BPM if used with a group of size 3 or 6). Maybe 12 rows would be a good window, since it would fit 2,3,4,6 and 12.

Personally I prefer it the way it is, though.

Posted: 2014-07-23 09:45  (Last Edited: 2014-07-23 09:46) Reply | Quote
Alexander283

Avatar

Member for: 2912 days
Location: Germany
Status: Offline

#59701
Or a more complex approach: Code in a pattern recognizing algorithm. I've once coded one myself in my informatics class.

It would at first collect the Fxx-commands along the way and then compare them to the ones that are coming up. So, if the algorithm relocates the beginning of the sequence it has stored up until this moment, it will test the following Fxx commands (that will create a new sub-sequence) and if the new sequence of data matches the old one, a pattern is found. If the beginning of the sequence is interrupted by a non-matching Fxx - the pattern is not complete - the subsequence is added to the main sequence and the following Fxx are going to become the new sub-sequence that has to fit in order to find a pattern.

Of course, this overly complicated and advanced for such a minor feature, but one can dream, right?

_______________________
The purpose of a programming language is to protect the computer against the programmer.
Posted: 2014-07-23 09:55 Reply | Quote
Alexander283

Avatar

Member for: 2912 days
Location: Germany
Status: Offline

#59702
I just thought of an expample:

F03
F04
F04
F03
F04
F04
(...)

So it would work like this:
Main Seq - Comapre Seq
F03
F03, F04
F03, F04, F04
F03, F04, F04 - Start of sequence relocated: F03
F03, F04, F04 - F03, F04
F03, F04, F04 - F03, F04, F04
Pattern found and confirmed!

I don't know how this algorithm would stand up against more complex sequences (but things like F07, F05, F06, F05 would probably work). In every case you'd have to keep checking if the sequence is still correct and if not - scrap it and make a new one.

And one minor inconveniance would be that it takes the length of two patterns to recognize and display it correctly. Maybe have one window "Raw BPM: [...]" and another one "PATTERN: x, y, y - BPM: [...]"

_______________________
The purpose of a programming language is to protect the computer against the programmer.
Posted: 2014-07-23 20:55 Reply | Quote
jsr
Administrator

Avatar

Member for: 5925 days
Location: Sweden
Status: Offline

#59706
I do accept code if anyone wants to make a solution for this. It could always be added as an option.

_______________________
Programmer and developer
Posted: 2014-07-23 21:03 Reply | Quote
Alexander283

Avatar

Member for: 2912 days
Location: Germany
Status: Offline

#59707
C++ ?
No thanks, I'll have to pass ...
I don't like the C accent :-/

I could code a sample Code in FreeBASIC, but I doubt that would be any help.
So yeah ... I think that idea died if there's no one to code it.

_______________________
The purpose of a programming language is to protect the computer against the programmer.
Posted: 2014-07-24 05:30 Reply | Quote
Stratelier



Member for: 2954 days
Status: Offline

#59720
I'm a little versed in C based languages ... but not enough to just dive in and write [i]actual[/i] code on demand.

_______________________
Where to find me:
YouTube: [url=http://youtube.com/user/stratelier]http://youtube.com/user/stratelier
DeviantArt: [url=http://stratadrake.deviantart.com/]http://stratadrake.deviantart.com/
Page 1 of 1 Sort: