So, on the way home from school today, I was thinking: does changing the tempo from 150 to a multiple of 150 still cause some glitches, i.e. skipping rows and effects?
I'm sorry if this seems to be a silly question, but I'm not too sure.
A random question concerning tempo
- iYamWhatIYam
- Posts: 431
- Joined: Wed Jul 08, 2015 8:19 pm
- Location: Fort Wayne, IN
A random question concerning tempo
she/they. 20. do not perceive me
Re: A random question concerning tempo
If it's a multiple, then you can't, for FT v0.5.0 beta 5 only goes up to 255, not 300.
Now, if you do a divisible (e.g. 75), it will have the same effect as multiplying the speed by 2.
Now, if you do a divisible (e.g. 75), it will have the same effect as multiplying the speed by 2.
wow this is total BS
mmsound.bandcamp.com
you can see my beautiful music there~
mmsound.bandcamp.com
you can see my beautiful music there~
- PostApocolyptica
- Posts: 218
- Joined: Sat May 23, 2015 4:48 pm
- Location: England, United Kingom
- Contact:
Re: A random question concerning tempo
There doesn't seem to be much difference when having, for instance, a tempo of 200, instead of a groove of { 4 5 } at 60 Hz, but one would usually expect tempo changes to be reflected in the engine speed. Use a hex editor if you really want tempos that are multiples of 150.
- rainwarrior
- Forum Staff
- Posts: 165
- Joined: Thu Apr 23, 2015 8:23 pm
- Location: Canada
- Contact:
Re: A random question concerning tempo
The condition is whether the length of a row is an integer multiple of 60 Hz.
1. Convert tempo to beats per minute: BPM = tempo * 6 / speed
2. Convert beats per minute into beats per second (Hz): BPS = BPM / 60
3. Convert beats per second into rows per second: RPS = BPS * 4
4. Convert rows per second into ticks per row: TPR = engine_speed / RPS
Putting that all together: TPR = (speed * 60 * engine) / (tempo * 6 * 4)
Simplifying, at the default NTSC engine speed of 60 Hz: TPR = (speed * 3600) / (tempo * 24) = speed * 150 / tempo
So that's your formula: TPR = speed * 150 / tempo
If ticks per row is a whole number (nothing after the decimal point) it should have an evenly distributed row length.
e.g.
5 * 150 / 150 = 5 < if tempo is 150, speed = ticks per row matches speed, here speed = 5, so TPR = 5
6 * 150 / 225 = 4 < here we see that a tempo of 225 still results in an even row length (TPR = 4)
6 * 150 / 130 = 6.923... < here we see that a tempo of 130 does not have an even row length
1. Convert tempo to beats per minute: BPM = tempo * 6 / speed
2. Convert beats per minute into beats per second (Hz): BPS = BPM / 60
3. Convert beats per second into rows per second: RPS = BPS * 4
4. Convert rows per second into ticks per row: TPR = engine_speed / RPS
Putting that all together: TPR = (speed * 60 * engine) / (tempo * 6 * 4)
Simplifying, at the default NTSC engine speed of 60 Hz: TPR = (speed * 3600) / (tempo * 24) = speed * 150 / tempo
So that's your formula: TPR = speed * 150 / tempo
If ticks per row is a whole number (nothing after the decimal point) it should have an evenly distributed row length.
e.g.
5 * 150 / 150 = 5 < if tempo is 150, speed = ticks per row matches speed, here speed = 5, so TPR = 5
6 * 150 / 225 = 4 < here we see that a tempo of 225 still results in an even row length (TPR = 4)
6 * 150 / 130 = 6.923... < here we see that a tempo of 130 does not have an even row length
- Stratelier
- Posts: 378
- Joined: Sun Apr 26, 2015 7:46 pm
Re: A random question concerning tempo
Fun fact: for any tempo with a non-integral number of ticks per row, it's possible to calculate the 'stable interval', i.e. # of rows across which you'll see an integral # of ticks.
A - calculate 2.5 * (engine speed) * (song Speed).
B - calculate the lowest common multiple of A and your (song Tempo).
C - Stable interval (in rows) = B / A.
E.g., take a tempo of 144 (Speed 6) at 60 Hz. A = 900. B = lcm(900,144) = 3600. C = 3600/900 = every 4 rows.
A - calculate 2.5 * (engine speed) * (song Speed).
B - calculate the lowest common multiple of A and your (song Tempo).
C - Stable interval (in rows) = B / A.
E.g., take a tempo of 144 (Speed 6) at 60 Hz. A = 900. B = lcm(900,144) = 3600. C = 3600/900 = every 4 rows.