Guest   L0 n00b  

A merchant crosses your path -
"I've got nothing, I tell ya."

Article History

28% HertzDevil

FamiTracker Effects Commands


  1. Index
  2. Global Effects
  3. General Effects
  4. Channel-Specific Effects
  5. Further Notes
  6. See Also
FamiTracker's effects commands are mostly based on those found in FastTracker II. FamiTracker's effects columns are expandable; each channel supports up to 4 effect columns. This can be helpful if you are an audio micro-managing freak! :D

Bear in mind that what you see is what you get: collapsing an effect column effectively disables them from playback and export (they are not lost though; expanding the column again will reveal the effects and they will then play back like before).


(no effect)
Chip-Specific (2A03 Pulse / VRC7 / FDS / 5B)
Chip-Specific (2A03 Pulse / VRC7 / FDS / 5B)
Chip-Specific (FDS / 5B)
Chip-Specific (2A03 Pulse / Noise / VRC6 / VRC7 / MMC5 / N163 / 5B)
Chip-Specific (DPCM)
Chip-Specific (DPCM)
Chip-Specific (DPCM)
Chip-Specific (DPCM)

Global Effects

Bxx - Jump to frame xx.
xx = Frame (in hexadecimal)

Cxx - Halt; end song.
xx = Inconsequential

Dxx - Skip to next frame and start at xx.
xx = Row (in hexadecimal)

Fxx - Set Speed/Tempo.
If xx = 00-1F: Speed value
If xx = 20-FF: Tempo value

Notes: if you leave the tempo to 2.5 times the refresh rate (NTSC default 150 / F96), then the "speed" setting corresponds the the amount of ticks per tracker row. This is useful to acheive even tempos (without any irregularity), swing, using Gxx efficiently, etc.
Furthermore, recent versions of Famitracker allow modifying the exact split point where Fxx would change the tempo instead of the speed, so that backwards compatibility is maintained. By pressing the key combination Ctrl+Shift+S, the ranges below take effect:
If xx = 00-14: Speed value
If xx = 15-FF: Tempo value
The 0.4.2. beta 1 allows the use of any split point by TXT importation.

General Effects

0xy - Arpeggio aka arps; fast note shifting in half steps.
x = Number of half steps from root note for first shift
y = Number of half steps from root note for second shift

Ex: 037 = Minor chord. 047 = Major chord. 070 = Perfect 5th. 0CC = Octave.
View article on arps for more examples.

Notes: Leaving y blank causes the arp to last two ticks instead of three.

1xx, 2xx - Portamento up (1) and down (2); smooth pitch glide up.
xx = Speed

Notes: 100, 200 and 300 all cancel each other.

3xx - Glissando; pitch glide to next note.
xx = Speed

Notes: 100, 200 and 300 all cancel each other.

4xy - Vibrato; pitch vibration.
x = Speed
y = Depth

Notes: 400 to turn off.

7xy - Tremolo; volume tremor.
x = Speed
y = Depth

Notes: 700 to turn off.

Axy- Volume slide up/down from set volume.
If x > y: Increase volume
If x < y: Decrease volume
If x = y: Halt slide

Notes: It's important to remember that the volume does not reset automatically on every new note; it has to be entered manually every time you want a new slide.

Exx - Set Volume; DEPRECATED. Use volume column instead.
xx = Volume value
Valid range = 00 - 0F

Notes: Larger values of xx beyond 0F can multiply with channel volume.

Gxx - Delay note
xx = Amount of ticks before note is played

Notes: Pattern data cannot be delayed by more than one row.

Pxx - Fine pitch setting.
If xx = 80: Default
If xx > 80: Increase pitch
If xx < 80: Decrease pitch

Qxy, Rxy - Pitch slide up (Q) or down (R) to note.
x = Speed
y = Number of semitones to slide to from base note

Sxx - Delayed note cut.
xx = Ticks before note is cut.

Notes: S00 is effectively the same as a note cut event.

Channel-Specific Effects

Hxy, Ixy - Trigger hardware note sweep up (H) and down (I).
x = Period
y = Shift
Valid range for x and y = 0 - 7

Notes: Unlike 1xx and 2xx, these sweeps are logarithmic.
This feature is only available for the 2A03 Square channels.

Hxx - FDS modulation depth setting.
xx = Modulation depth
Valid range = 00 - 3F

Hxy - 5B envelope share & automatic modulation setting.
If x = 0: Yield control to Ixx and Jxx
If x = 1-7: Apply envelope by left-shifting channel period (useful for fade shapes)
If x = 8: Apply envelope at same period as channel output
If x = 9-F: Apply envelope by right-shifting channel period (useful for triangle / sawtooth shapes)

If y = 0: Disable envelope modulation on this channel
If y = 1-3 or 9: Fade out
If y = 4-7 or D: Fade in
If y = 8 or C: (Exponential) sawtooth
If y = A or E: (Exponential) triangle
If y = B: Fade out, then restore full volume
If y = F: Fade in, then silence

Hxx - VRC7 custom patch port setting.
xx = Register address
Valid range = 00 - 07

Ixx, Jyy - FDS modulation rate setting.
Ixx is the high part of the modulation rate, and Jyy is the low part.
Valid range for xx = 00 - 0F
Valid range for yy = 00 - FF

Ixx, Jyy - 5B envelope period setting.
Ixx is the high part of the envelope period, and Jyy is the low part.

Notes: Ineffective if Hxy with nonzero y is issued.

Ixx - Write to VRC7 custom patch using the address selected by Hxx.
xx = Register value

Vxx - Set Square Duty Cycling / Noise Pattern.
This command affects different channels in different ways.

2A03 & MMC5 squares = sets the duty cycle value (4 settings)
2A03 noise = sets the noise mode (2 settings)
VRC6 squares = sets the duty cycle value (8 settings)
VRC6 sawtooth = flips the volume high bit (2 settings - see notes below)
N163 = calls the corresponding waveform from the current instrument (16 settings)
VRC7 = sets the patch number (16 settings)
5B = enables square or noise output (4 settings) (0.5.0 beta only)
In all cases, using the (n+1)-th setting loops back to 0.

Note that Vxx is overridden by any duty cycle or wave macro in the current instrument.

xx = Square duty cycle
00 = 12.5% Duty
01 = 25% Duty
02 = 50% Duty
03 = 75% Duty

xx = Noise type
00 = Normal noise
01 = Periodic noise

xx = Square duty cycle
00 = 6.25% Duty
01 = 12.5% Duty
02 = 18.75% Duty
03 = 25% Duty
04 = 31.25% Duty
05 = 37.5% Duty
06 = 43.75% Duty
07 = 50% Duty

xx = Sawtooth volume high bit
00 = Normal
01 = Flipped

Notes: The sawtooth wave has no "pulse width" or "duty cycle", but it utilizes the Vxx effect for modifying the volume register's high bit instead. The channel's volume is 6-bit rather than 4-bit (like most other channels), so it goes up to 63. FamiTracker maps values from 0 to 63 by multiplying the channel column's (or instrument macro's) volume by 2 to get the "real" volume value. This means if you input F (or 15), you're really getting 1E (or 30). Vxx (or the duty cycle macro) is simply the way FamiTracker lets you get to volume values above 30; when it is set to 1, add 32 to the "real" volume value (so 0 becomes 32, 1 becomes 34, 2 becomes 36 etc.).

Bear in mind that the actual maximum volume is 42 (which you would get by using 5 with V01) - anything above that causes the accumulator to wrap, the sawtooth wave distorts and no volume is gained whatsoever. In 0.5.0 beta, This command has no effect for VRC6 instruments using 64-step volume sequences.

This calls the corresponding waveform in the instrument.
xx = Waveform index
Valid range = 00 - 0F

Immediately changes the VRC7 patch number.
xx = Patch number
Valid range = 00 - 0F

Notes: Available only in 0.4.1 or before, and 0.5.0 beta.

Enables square or noise output.
xx = Enable flag
00 = Silence
01 = Square only
02 = Noise only
03 = Noise + Square

Wxx - DPCM pitch setting.
xx = DPCM pitch
Valid range = 00 - 0F

Refer to this table via decimal to hex as a reference to when the "pitch" is changed of a DMC sample:
DMC Sampling rate(0-F) (Default:F 33.14KHz)
0: 4.18KHz
1: 4.71KHz
2: 5.26KHz
3: 5.59KHz

4: 6.26KHz
5: 7.05KHz
6: 7.92KHz
7: 8.36KHz

8: 9.42KHz
9: 11.18KHz
A: 12.60KHz
B: 13.98KHz

C: 16.88KHz
D: 21.30KHz
E: 24.86KHz
F: 33.14KHz

Wxx - 5B noise pitch setting.
xx = 5B noise pitch, 00 is highest
Valid range = 00 - 1F

Xxx - DPCM retrigger
xx = length in ticks between retriggers.

Yxx - Start Sample Offset; DPCM skipping.
(64 * xx) = number of bytes to skip from start of sample.
Valid range = 00 - 3F

Note: Currently using a value of xx higher than length of sample results in a weird sample looping in the tracker but comes out only a loud weird glitch upon NSF export.

Zxx - Set the DPCM's delta counter (DC); affects volume of triangle, noise, and DPCM.
Regarding Noise and Triangle: If xx > 00 the volume of the channels is decreased by the offset due to distortion of DC.
Regarding DPCM channel: xx = offset amount of distortion incremented or decremented, resulting in volume either up or down; depending on current DC value.

Notes: The DC counts down and is affected by DC resets provided by the DMC sample and the current DC register value. In summary, the value supplied is relative to the sample and the counter.

Using Zxx in large intervals (ex: Z7F and then Z00) causes a 'clicking' sound due to a radical peak in the wave. Click volume can be manipulated with lower intervals and lower values. Clicks can be used as a form of percussion.

Further Notes

Exx will not work if an instrument volume envelope is used.

1xx, 2xx, 3xx, Qxy, Rxy will not work if an instrument frequency effect loop is used. (Pitch, Hi-pitch and Arpeggio.)

If effects commands seem different or don't work for you, download the latest BotB leak of FamiTracker.

See Also

nsf (format)
nsfplus (format)
List of Effects Commands