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:**422**Joined:**Wed Jul 08, 2015 8:19 pm**Location:**Fort Wayne, IN

### 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.