2022-01-16 06:10:43 +00:00
# effect list
2023-09-09 09:27:48 +00:00
some of the effect numbers are taken from ProTracker / FastTracker 2.
2023-06-24 21:19:46 +00:00
2024-03-20 16:41:33 +00:00
however, effects are continuous (unless specified), which means you only need to type it once and then stop it with an effect value of `00` or no effect value at all.
2023-06-24 21:19:46 +00:00
## volume
- `0Axy` : **Volume slide.**
2023-09-10 17:16:55 +00:00
- if `x` is 0 then this slides volume down by `y` each tick.
- if `y` is 0 then this slides volume up by `x` each tick.
2023-07-04 17:25:21 +00:00
- `FAxy` : **Fast volume slide.** same as `0Axy` above but 4× faster.
- `F3xx` : **Fine volume slide up.** same as `0Ax0` but 64× slower.
- `F4xx` : **Fine volume slide down.** same as `0A0x` but 64× slower.
2024-08-25 21:13:17 +00:00
- `F8xx` : **Single tick volume up.** adds `x` to volume.
- `F9xx` : **Single tick volume down.** subtracts `x` from volume.
2023-08-10 23:47:03 +00:00
- ---
2024-08-26 00:29:02 +00:00
- `D3xx` : **Volume portamento.** slides volume toward the new value instead of jumping immediately. `x` is the speed of the slide.
- `D4xx` : **Volume portamento (fast).** same as `D3xx` but 256× faster.
- ---
2023-07-04 17:25:21 +00:00
- `07xy` : **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth.
2023-09-10 17:16:55 +00:00
- tremolo is downward only.
- maximum tremolo depth is -60 volume steps.
2024-08-26 06:48:58 +00:00
- ---
- `D3xx` : **Volume portamento.** slides the volume to the one specified in the volume column. `x` is the slide speed.
- a volume _must_ be present with this effect for it to work.
- `D4xx` : **Volume portamento (fast).** like `D3xx` but four times faster.
2023-06-24 21:19:46 +00:00
## pitch
2023-06-25 16:43:24 +00:00
- `E5xx` : **Set pitch.** `00` is -1 semitone, `80` is base pitch, `FF` is nearly +1 semitone.
2023-06-24 21:19:46 +00:00
- `01xx` : **Pitch slide up.**
- `02xx` : **Pitch slide down.**
2024-08-25 21:13:17 +00:00
- `F1xx` : **Single tick pitch up.**
- `F2xx` : **Single tick pitch down.**
2023-08-10 23:47:03 +00:00
- ---
2023-08-10 23:37:09 +00:00
- `03xx` : **Portamento.** slides the currently playing note's pitch toward the new note. `x` is the slide speed.
- a note _must_ be present with this effect for it to work.
- the effect stops automatically when it reaches the new note.
2023-06-24 21:19:46 +00:00
- `E1xy` : **Note slide up.** `x` is the speed, while `y` is how many semitones to slide up.
2023-07-05 16:50:03 +00:00
- `E2xy` : **Note slide down.** `x` is the speed, while `y` is how many semitones to slide down.
2023-08-10 23:47:03 +00:00
- ---
2023-08-10 23:37:09 +00:00
- `EAxx` : **Toggle legato.** while on, new notes instantly change the pitch of the currently playing sound instead of starting it over.
2024-03-17 00:41:08 +00:00
- `E6xy` : **Quick legato (compatibility).** transposes note by `y` semitones after `x` ticks.
- if `x` is between 0 and 7, it transposes up.
- if `x` is between 8 and F, it transposes down.
- `E8xy` : **Quick legato up** . transposes note up by `y` semitones after `x` ticks.
- `E9xy` : **Quick legato down** . transposes note down by `y` semitones after `x` ticks.
2024-01-24 20:04:51 +00:00
- `00xy` : **Arpeggio.** this effect produces a rapid cycle between the current note, the note plus `x` semitones and the note plus `y` semitones.
2023-07-05 16:50:03 +00:00
- `E0xx` : **Set arpeggio speed.** this sets the number of ticks between arpeggio values. default is 1.
2023-08-10 23:47:03 +00:00
- ---
2024-06-24 11:24:14 +00:00
- `04xy` : **Vibrato.** makes the pitch oscillate. `x` is the speed, while `y` is the depth.
2023-09-10 17:16:55 +00:00
- maximum vibrato depth is ±1 semitone.
2024-06-24 11:24:14 +00:00
- `E3xx` : **Set vibrato shape.** `xx` may be one of the following:
- `00` : sine (default)
- `01` : sine (upper portion only)
- `02` : sine (lower portion only)
- `03` : triangle
- `04` : ramp up
- `05` : ramp down
- `06` : square
- `07` : random
- `08` : square (up)
- `09` : square (down)
- `0a` : half sine (up)
- `0b` : half sine (down)
2023-07-04 17:25:21 +00:00
- `E4xx` : **Set vibrato range** in 1/16th of a semitone.
2023-06-24 21:19:46 +00:00
## panning
2023-06-25 16:43:24 +00:00
not all chips support these effects.
2023-06-24 21:19:46 +00:00
2023-06-25 07:05:30 +00:00
- `08xy` : **Set panning.** changes stereo volumes independently. `x` is the left channel and `y` is the right one.
- `88xy` : **Set rear panning.** changes rear channel volumes independently. `x` is the rear left channel and `y` is the rear right one.
2023-07-04 17:25:21 +00:00
- `81xx` : **Set volume of left channel** (from `00` to `FF` ).
- `82xx` : **Set volume of right channel** (from `00` to `FF` ).
- `89xx` : **Set volume of rear left channel** (from `00` to `FF` ).
2023-07-05 16:50:03 +00:00
- `8Axx` : **Set volume of rear right channel** (from `00` to `FF` ).
2023-08-10 23:47:03 +00:00
- ---
2023-06-25 07:05:30 +00:00
- `80xx` : **Set panning (linear).** this effect behaves more like other trackers:
2022-04-30 04:41:14 +00:00
- `00` is left.
- `80` is center.
- `FF` is right.
2024-07-07 23:55:22 +00:00
- ---
- `83xy` : **Panning slide.**
- if `y` is 0 then this pans to the left by `x` each tick.
- if `x` is 0 then this pans to the right by `y` each tick.
- be noted that panning macros override this effect.
- `84xy` : **Panbrello.** makes panning oscillate. `x` is the speed, while `y` is the depth.
- be noted that panning macros override this effect.
2023-06-24 21:19:46 +00:00
## time
2023-09-10 17:16:55 +00:00
- `09xx` : **Set speed/groove.** if no grooves are defined, this sets speed. if alternating speeds are active, this sets the first speed.
2023-07-05 16:50:03 +00:00
- `0Fxx` : **Set speed 2.** during alternating speeds or a groove, this sets the second speed.
2023-08-10 23:47:03 +00:00
- ---
2023-06-25 07:05:30 +00:00
- `Cxxx` : **Set tick rate.** changes tick rate to `xxx` Hz (ticks per second).
2023-07-04 17:25:21 +00:00
- `xxx` may be from `000` to `3FF` .
2023-07-05 16:50:03 +00:00
- `F0xx` : **Set BPM.** changes tick rate according to beats per minute. range is `01` to `FF` .
2023-08-10 23:47:03 +00:00
- ---
2024-03-15 19:56:55 +00:00
- `FDxx` : **Set virtual tempo numerator.** sets the virtual tempo's numerator to the effect value.
- `FExx` : **Set virtual tempo denominator.** sets the virtual tempo's denominator to the effect value.
- ---
2023-07-04 17:25:21 +00:00
- `0Bxx` : **Jump to order.** `x` is the order to play after the current row.
- this marks the end of a loop with order `x` as the loop start.
2023-08-04 16:11:53 +00:00
- `0Dxx` : **Jump to next pattern.** skips the current row and remainder of current order. `x` is the row at which to start playing the next pattern.
- this can be used to shorten the current order as though it had a different pattern length.
2023-07-04 17:25:21 +00:00
- `FFxx` : **Stop song.** stops playback and ends the song. `x` is ignored.
2023-06-24 21:19:46 +00:00
## note
2022-01-16 06:10:43 +00:00
2023-06-25 07:05:30 +00:00
- `0Cxx` : **Retrigger.** repeats current note every `xx` ticks.
2023-09-10 17:16:55 +00:00
- this effect is not continuous; it must be entered on every row.
2024-03-15 18:45:57 +00:00
- `ECxx` : **Note cut.** triggers note off after `xx` ticks. this triggers key off in FM/hardware envelope chips, or cuts note otherwise.
2023-06-25 07:05:30 +00:00
- `EDxx` : **Note delay.** delays note by `x` ticks.
2024-03-15 18:45:57 +00:00
- `FCxx` : **Note release.** releases current note after `xx` ticks. this releases macros and triggers key off in FM/hardware envelope chips.
- `E7xx` : **Macro release.** releases macros after `xx` ticks. this does not trigger key off.
2023-06-24 21:19:46 +00:00
2024-04-23 19:43:38 +00:00
## sample offset
these effects make the current playing sample on the channel jump to a specific position.
only some chips support this effect.
sample offset is a 24-bit (3 byte) number.
- `90xx` : **Set sample offset (first byte).**
- `91xx` : **Set sample offset (second byte).**
- `92xx` : **Set sample offset (third byte).**
you may use these effects simultaneously in a row.
if you do not set a byte, its last value will be used.
in previous versions of Furnace a `9xxx` effect existed which set the sample position to `$xxx00` (`xxx` was effectively multiplied by 256). this maps to `920x 91xx` in current Furnace.
2023-06-24 21:19:46 +00:00
## other
2023-08-10 23:37:09 +00:00
- `EBxx` : **Set LEGACY sample mode bank.** selects sample bank. used only for compatibility.
- does not apply on Amiga.
2023-06-24 21:19:46 +00:00
- `EExx` : **Send external command.**
2023-08-10 23:37:09 +00:00
- this effect is currently incomplete.
2023-09-11 00:12:56 +00:00
- `F5xx` : **Disable macro.**
- `F6xx` : **Enable macro.**
2024-01-17 19:51:09 +00:00
- `F7xx` : **Restart macro.**
2023-09-11 00:12:56 +00:00
- see macro table at the end of this document for possible values.
2023-06-24 21:19:46 +00:00
2023-06-25 16:43:24 +00:00
additionally, [each chip has its own effects ](../7-systems/README.md ).
2022-12-17 05:09:56 +00:00
## macro table
2023-07-20 03:34:48 +00:00
ID | macro
-----|-----------------------------
`00` | volume
`01` | arpeggio
`02` | duty/noise
`03` | waveform
`04` | pitch
`05` | extra 1
`06` | extra 2
`07` | extra 3
`08` | extra A (ALG)
`09` | extra B (FM)
`0A` | extra C (FMS)
`0B` | extra D (AMS)
`0C` | panning left
`0D` | panning right
`0E` | phase reset
`0F` | extra 4
`10` | extra 5
`11` | extra 6
`12` | extra 7
`13` | extra 8
| | **operator 1 macros**
`20` | AM
`21` | AR
`22` | DR
`23` | MULT
`24` | RR
`25` | SL
`26` | TL
`27` | DT2
`28` | RS
`29` | DT
`2A` | D2R
`2B` | SSG-EG
`2C` | DAM
`2D` | DVB
`2E` | EGT
`2F` | KSL
`30` | SUS
`31` | VIB
`32` | WS
`33` | KSR
`40` | **operator 2 macros**
`60` | **operator 3 macros**
`80` | **operator 4 macros**
2022-12-17 05:09:56 +00:00
the interpretation of duty, wave and extra macros depends on chip/instrument type:
2023-09-11 04:57:46 +00:00
ex | FM | OPM | OPZ | OPLL | AY-3-8910 | AY8930 | Lynx | C64 |
---|--------|-----------|-----------|-------|------------|------------|----------|------------|
D | NoiseF | NoiseFreq | | | NoiseFreq | NoiseFreq | Duty/Int | Duty |
W | | LFO Shape | LFO Shape | Patch | Waveform | Waveform | | Waveform |
1 | | AMD | AMD | | | Duty | | FilterMode |
2 | | PMD | PMD | | Envelope | Envelope | | Resonance |
2023-11-01 18:19:46 +00:00
3 | LFOSpd | LFO Speed | LFO Speed | | AutoEnvNum | AutoEnvNum | | |
A | ALG | ALG | ALG | | AutoEnvDen | AutoEnvDen | | Cutoff |
2023-09-11 04:57:46 +00:00
B | FB | FB | FB | | | Noise AND | | |
C | FMS | FMS | FMS | | | Noise OR | | |
D | AMS | AMS | AMS | | | | | |
2023-11-01 18:19:46 +00:00
4 | OpMask | OpMask | | | | | | Special |
5 | | | AMD2 | | | | | Attack |
6 | | | PMD2 | | | | | Decay |
7 | | | LFO2Speed | | | | | Sustain |
8 | | | LFO2Shape | | | | | Release |
2023-09-11 04:57:46 +00:00
ex | SAA1099 | X1-010 | Namco 163 | FDS | Sound Unit | ES5506 | MSM6258 |
---|----------|------------|------------|-----------|------------|-----------|----------|
D | | | Wave Pos | | Duty | Filt Mode | FreqDiv |
W | Waveform | Waveform | Waveform | Waveform | Waveform | | |
1 | Envelope | EnvMode | WaveLen | Mod Depth | Cutoff | Filter K1 | ClockDiv |
2 | | Envelope | WaveUpdate | Mod Speed | Resonance | Filter K2 | |
3 | | AutoEnvNum | WaveLoad W | | Control | Env Count | |
A | | AutoEnvDen | WaveLoad P | | | Control | |
B | | | WaveLoad L | | | | |
C | | | WaveLoad T | | | | |
D | | | | | | | |
4 | | | | | PResetTime | EnvRampL | |
5 | | | | | | EnvRampR | |
6 | | | | | | EnvRampK1 | |
7 | | | | | | EnvRampK2 | |
8 | | | | | | Env Mode | |
ex | QSound | SNES | MSM5232 |
---|--------------|-----------|-----------|
D | Echo Level | NoiseFreq | GroupCtrl |
W | | Waveform | |
1 | EchoFeedback | Special | GroupAtk |
2 | Echo Length | Gain | GroupDec |
3 | | | Noise |
A | | | |
B | | | |
C | | | |
D | | | |
4 | | | |
5 | | | |
6 | | | |
7 | | | |
8 | | | |