Famitracker: Ticks per frame step?
BotB Academy n00b s0z
 
 
213931
Level 22 Chipist
icrawfish
 
 
 
post #213931 :: 2025.03.25 4:24pm
For all you Famitracker users:

Is there a way to calculate how many ticks are in a frame step depending on what the speed is? I would like some ability to be precise with tick-based commands and instrument settings. I think this would be helpful for stuff like wanting your arpeggios to be exactly in time with the music, or trying to emulate triplets. Is there already some conversion sheet out there or is this something that just needs to be calculated?

In spite of my time working with the tool I can be a bit of a tracker noob at times, so the answer may be obvious and I just missed it, but if anyone knows that would be a great help.
 
 
213966
Level 30 Chipist
funute
 
 
 
post #213966 :: 2025.03.25 11:34pm
Assuming 60Hz, check the BPM number at the bottom right. 900 / BPM = ticks per step (let's call it TPS). If it doesn't divide evenly, the engine will switch between floor(TPS) and ceil(TPS) to approximate the BPM.

For example: 4 speed + 165 tempo = 247.50 BPM, 900 / 247.5 = 3.6363... (or 3 7/11), so for every 11 steps, 4 steps will take 3 ticks and 7 steps will take 4 ticks.

Ideally you want the fractional denominator to line up with a beat or measure, whatever smallest group you need your tuplet to fit in. Usually it's 2 or 4, maybe 8. That way you have consistent timing between each measure. To go off of the previous example, you can round the TPS to 3.75 (3 3/4) which gets you 900 / 3.75 = 240 BPM (3% diff). In 0CC-FT and later forks, the best way to do this is using the groove settings to explicitly set the TPS pattern.

Now say you want to do a triplet in 1 beat of 4 steps. There will be 3.75 * 4 = 15 ticks within 1 beat. Each note in the triplet should then take 15 ticks / 3 = 5 ticks. Assuming a 4-4-4-3 tick pattern, you'd need to arrange your triplets like this:


row(tick)|note fx | note tick
---------+--------+-----------
00 (00) | C-3 ...| 00 (0+0)
01 (04) | D-3 G01| 05 (4+1)
02 (08) | E-3 G02| 10 (8+2)
03 (12) | ... ...|
04 (15) | D-3 ...| 15 (15+0)
05 (19) | B-2 G01| 20 (19+1)
06 (23) | C-3 G02| 25 (23+2)
07 (27) | ... ...|


If your ticks per beat doesn't neatly divide, you may have to round some frames and get a slightly uneven triplet. I just happened to pick a nicely even set of numbers, but if you instead have something like 3.25 TPS for ~277 BPM, then you get 13 ticks in a beat -> 4 1/3 ticks per triplet note -> 0, 4, 8, 13, 17, 21, etc. note tick timings.

(TBF this isn't natural to intuit, I've just remembered the 900 BPM thing from when someone on the FT forums mentioned it.)
 
 
214046
Level 23 Chipist
Opilion
 
 
 
post #214046 :: 2025.03.27 1:47am
Wow I never heard about TPS before, I didn't know FamiTracker performed all these calculations :o

Usually when working with trackers (including FamiTracker), you can say:
speed = number of ticks in a row

So if you want to find the number of ticks in a frame, you just have to calculate:
speed * number of rows in the frame

The thing about tempo (or engine speed) is that it will determinate the duration of each tick.

For instance with a tempo of 150 bpm (which is the same as a 60Hz/NTSC engine speed), you will have 60 ticks per second so the duration of a single tick will be 1/60 second (so approximately 0.017 second).

With a tempo equal to 120 bpm (which is the same as a 50Hz/PAL engine speed), there is 50 ticks per second so the duration of a single tick is:
1/50 = 0.02 second
 
 
214073
Level 30 Chipist
funute
 
 
 
post #214073 :: 2025.03.27 11:29am :: edit 2025.03.28 8:18pm
  
  Opilion liēkd this
I just made up TPS, I don't know if it's an actual thing.

In the classic module formats (e: basically s3xmodit), tempo dictates the length of a tick, however in FT and similar hardware-based formats the timing is usually constrained by something like vblank or timer interrupts hence the need to approximate tempo with varying numbers of ticks per row.
 
 
214195
Level 25 Chipist
Prestune
 
 
 
post #214195 :: 2025.03.28 4:10pm
Wait yeah I thought that the tick-length couldn't be changed without changing the clockspeed?

tbh I'm not fully sure how tempo works in famitracker. To prevent it doing weird uneven things (like randomly adding or removing ticks from certain rows) I always keep the tempo at 150 and only change the speed. This limits your tempo choices a little bit, but you can alternate Fxx commands to get an in-between speed and I like having that extra level of control.
 
 
214202
Level 30 Chipist
funute
 
 
 
post #214202 :: 2025.03.28 8:26pm
Yeah the tick length for FT (and the other aforementioned hardware-based formats) is set by the NTSC/PAL setting or engine speed.

Keeping tempo at 150 and adjusting speed/Fxx is basically the way to go. There's also the groove settings I mentioned in the earlier post.
 
 
217175
Level 25 Chipist
Flaminglog
 
 
 
post #217175 :: 2025.05.13 5:58am :: edit 2025.05.13 5:59am
If you're working at F06 speed then basically there are going to be six ticks per frame step. This is why decreasing speed increases apparent tempo. I like to keep it at F06 because it makes gxx and sxx easier to work with (for making false triplets etc, six subdivides nicely)

This might not be how it technically works but it's way easier to just think of it this way. Most stuff will work fine if you use this rule of thumb
 
 

LOGIN or REGISTER to add your own comments!