Effect Fxx

From Famitracker Wiki

(Redirected from Fxx)
Jump to: navigation, search

Fxx - speed/tempo. Sets the speed when xx is between 00 - 14, and tempo when xx is between 15 - FF.

FamiTracker and tempo

FamiTracker calculates actual tempo using the following formula: (150 * speed) / 6. One BPM represents 4 rows.

Explanation

The NES runs at a clock speed of 60Hz (NTSC) or 50Hz (PAL). This affects the video refresh rate, but more importantly in our case, it determines how fast the audio engine runs. Changes can only be made to the audio engine every 60th (or 50th) of a second.


Note: The calculations which follow assume the default NTSC clock speed (60Hz) is used.

When the tempo is set 150 bpm, the "speed" values basically indicates how many "frames" (or updates to the audio engine) happen during one row. The "default" tempo is 150 bpm, because 60hz framerate = 3600 frames per minute, and (3600 f/min) / (6 f/row * 4 row/beat) = 150 beat/min.

Other tempo values mean different frame/row values.

Problems may begin to appear when using tempo values that correspond to a number of frames per row in between two whole numbers of frames per row (e.g. 6 and 7, as is the case when using a tempo between 128 bpm and 150 bpm), in which case you get alternating rows of 6 and 7 frames (and it's difficult to predict which is going to be on any given row). The effect of this is that you hear slight unevenness in the tempo. This is especially noticeable when using single-row echo or fast arpeggios (using either instrument-defined arps or the 0xx effect).

Using tempo values outside the "integral" values

Ideally, the "tempo" value should always be 150, and tempo should be set using "speed" or the Fxx effect. However, this does results in a narrow selection of tempi. One way around this is to alternate between two adjacent values of Fxx every row, every 2 rows or even putting 2 spaces in between first and second occurence of Fxx, then immediately going back to the first one. This way you can achieve a wider ranges of tempi while preserving evenness in the tempo.

Another option is, of course, to use a user-defined clock speed, but then you have to modify the calculations above to determine which tempi are acceptable under which clock speeds. One drawback of this method, though, is that few NSF players support custom clock speeds, so NSF export is compromised.


Effect list
0xy - arpeggio 1xx, 2xx - pitch slides 3xx - portamento 4xy - vibrato
7xy - tremolo Axy - volume slide Bxx - jump to frame Cxx - stop
Dxx - skip frame Exx - volume Fxx - speed and tempo Gxx - note delay
Hxy, Ixy - hardware sweep Hxx - FDS modulation depth Ixx, Jxx - FDS modulation speed Pxx - fine pitch
Qxy, Rxy - note slide Sxx - mute delay Vxx - duty/noise/wave mode Wxx - DPCM sample speed
Xxx - DPCM sample retrigger Yxx - DPCM sample offset Zxx - DPCM delta counter
Personal tools