Furnace Manual
Furnace Manual
User Manual
special thanks to ZoomTen for providing tools which assisted in the production of this document!
this documentation is under the Creative Commons Attribution 3.0 Unported ([Link]
[Link]/licenses/by/3.0/) license.
you may reproduce, modify and/or distribute this documentation provided this copyright notice
(including license and attribution) is present and any necessary disclaimers whether modifications
have been made.
2
contents
1. introduction ................................................................................................................................................... 7
1. concepts and terms ......................................................................................................................... 8
2. glossary of common terms ......................................................................................................... 10
3. hexadecimal .................................................................................................................................... 14
2. interface ........................................................................................................................................................ 17
1. asset list ........................................................................................................................................... 19
2. basic mode ....................................................................................................................................... 24
3. UI components ................................................................................................................................ 25
4. effect list window .......................................................................................................................... 31
5. export ................................................................................................................................................ 33
6. keyboard ........................................................................................................................................... 35
7. menu bar ........................................................................................................................................... 42
8. orders ............................................................................................................................................... 46
9. play/edit controls ......................................................................................................................... 48
10. settings ............................................................................................................................................. 52
11. song info ........................................................................................................................................... 66
3. pattern .......................................................................................................................................................... 68
1. effect list .......................................................................................................................................... 73
4. instrument editor ...................................................................................................................................... 79
1. ADPCM-A instrument editor ....................................................................................................... 89
2. ADPCM-B instrument editor ....................................................................................................... 90
3. AY-3-8910 instrument editor ...................................................................................................... 91
4. AY8930 instrument editor ........................................................................................................... 92
5. beeper instrument editor ............................................................................................................. 93
6. Bifurcator instrument editor ..................................................................................................... 94
7. Namco C140 instrument editor .................................................................................................. 95
8. Namco C219 instrument editor .................................................................................................. 96
9. C64 SID instrument editor ........................................................................................................... 97
10. Dave instrument editor ................................................................................................................ 99
11. Ensoniq ES5506 instrument editor ......................................................................................... 100
12. FDS instrument editor ................................................................................................................. 101
13. ESFM instrument editor ............................................................................................................. 102
14. OPL FM synthesis instrument editor ...................................................................................... 106
15. OPLL FM synthesis instrument editor .................................................................................... 109
16. FM (OPM) instrument editor ...................................................................................................... 112
17. FM (OPN) instrument editor ....................................................................................................... 115
18. FM (OPZ) instrument editor ....................................................................................................... 118
19. Irem GA20 instrument editor ..................................................................................................... 121
20. Game Boy instrument editor ..................................................................................................... 122
21. GBA DMA instrument editor ...................................................................................................... 124
22. GBA MinMod instrument editor ............................................................................................... 125
23. Konami K007232 instrument editor ........................................................................................ 126
24. K053260 instrument editor ....................................................................................................... 127
25. Atari Lynx instrument editor ..................................................................................................... 128
26. MSM5232 instrument editor ..................................................................................................... 130
27. MSM6258 instrument editor ..................................................................................................... 131
28. MSM6295 instrument editor ..................................................................................................... 132
Furnace manual 3
29. Namco 163 instrument editor ................................................................................................... 133
30. Nintendo DS instrument editor ................................................................................................ 134
31. NES instrument editor ................................................................................................................ 135
32. NEC PC Engine instrument editor ............................................................................................ 137
33. Commodore PET instrument editor ........................................................................................ 138
34. Pokémon Mini/QuadTone instrument editor ....................................................................... 139
35. Atari POKEY instrument editor ................................................................................................. 140
36. PowerNoise instrument editor .................................................................................................. 141
37. Sega PSG instrument editor ...................................................................................................... 143
38. PV-1000 instrument editor ........................................................................................................ 144
39. Capcom QSound instrument editor ......................................................................................... 145
40. Ricoh RF5C68 instrument editor .............................................................................................. 146
41. Philips SAA1099 instrument editor ......................................................................................... 147
42. Amiga/PCM sound source instrument editor ...................................................................... 148
43. Konami SCC/Bubble System WSG instrument editor ........................................................ 149
44. SegaPCM instrument editor ...................................................................................................... 150
45. SID2 instrument editor ................................................................................................................ 151
46. SM8521 instrument editor ......................................................................................................... 153
47. SNES instrument editor .............................................................................................................. 154
48. tildearrow Sound Unit instrument editor .............................................................................. 156
49. T6W28 instrument editor .......................................................................................................... 158
50. TED instrument editor ................................................................................................................ 159
51. Atari TIA instrument editor ........................................................................................................ 160
52. VERA instrument editor ............................................................................................................... 161
53. Commodore VIC instrument editor ......................................................................................... 162
54. Virtual Boy instrument editor ................................................................................................... 163
55. VRC6 instrument editor .............................................................................................................. 164
56. wavetable synthesizer ............................................................................................................... 165
57. WonderSwan instrument editor .............................................................................................. 167
58. Namco WSG instrument editor ................................................................................................ 168
59. X1-010 instrument editor ........................................................................................................... 169
60. YMZ280B instrument editor ..................................................................................................... 170
5. wavetables ................................................................................................................................................. 171
6. samples ...................................................................................................................................................... 176
7. systems ....................................................................................................................................................... 181
1. 5E01 .................................................................................................................................................. 184
2. Commodore Amiga ....................................................................................................................... 186
3. General Instrument AY-3-8910 ................................................................................................ 188
4. Microchip AY8930 ........................................................................................................................ 190
5. Bifurcator ....................................................................................................................................... 192
6. Bubble System WSG .................................................................................................................... 193
7. Namco C140 ................................................................................................................................... 194
8. Namco C219 .................................................................................................................................... 195
9. Commodore 64 .............................................................................................................................. 196
10. Generic PCM DAC .......................................................................................................................... 198
11. Dave ................................................................................................................................................. 199
12. Ensoniq ES5506 (OTTO) .............................................................................................................. 201
13. ESS ESFM ....................................................................................................................................... 203
14. Famicom Disk System ................................................................................................................ 206
15. Irem GA20 ...................................................................................................................................... 207
16. Game Boy ....................................................................................................................................... 208
17. Game Boy Advance ...................................................................................................................... 209
4
18. Sega Genesis/Mega Drive .......................................................................................................... 210
19. Konami K007232 ........................................................................................................................... 212
20. Konami K053260 .......................................................................................................................... 213
21. Atari Lynx/MIKEY ......................................................................................................................... 214
22. Nintendo MMC5 ............................................................................................................................ 215
23. OKI MSM5232 ................................................................................................................................ 216
24. OKI MSM6258 ................................................................................................................................ 217
25. OKI MSM6295 ................................................................................................................................ 218
26. Namco 163 (also called N163, Namco C163, Namco 106 [sic], Namco 160 or Namco
129) .................................................................................................................................................. 220
27. Namco WSG / Namco C15 / Namco C30 ................................................................................ 222
28. Nintendo DS .................................................................................................................................. 223
29. NES .................................................................................................................................................. 224
30. Yamaha OPL .................................................................................................................................. 228
31. Yamaha YM2413/OPLL ................................................................................................................ 231
32. Yamaha OPZ (YM2414) ............................................................................................................... 233
33. PC Engine/TurboGrafx-16 ......................................................................................................... 236
34. PC Speaker ...................................................................................................................................... 237
35. Commodore PET .......................................................................................................................... 238
36. Pokémon Mini ............................................................................................................................... 239
37. POKEY ............................................................................................................................................. 240
38. PowerNoise .................................................................................................................................... 241
39. Casio PV-1000 .............................................................................................................................. 242
40. Capcom QSound (DL-1425) ....................................................................................................... 243
41. Ricoh RF5C68 ................................................................................................................................ 244
42. Philips SAA1099 ........................................................................................................................... 245
43. Konami SCC/SCC+ ........................................................................................................................ 246
44. SegaPCM ......................................................................................................................................... 247
45. SID2 ................................................................................................................................................. 248
46. Sharp SM8521 ............................................................................................................................... 250
47. TI SN76489 (e.g. Sega Master System) .................................................................................. 251
48. Super Nintendo Entertainment System (SNES) / Super Famicom ................................ 253
49. tildearrow Sound Unit ................................................................................................................ 259
50. Toshiba T6W28 ............................................................................................................................. 261
51. MOS Technology TED .................................................................................................................. 262
52. Atari 2600 (TIA) ............................................................................................................................ 263
53. VERA ................................................................................................................................................. 271
54. Commodore VIC-20 ...................................................................................................................... 272
55. Virtual Boy ...................................................................................................................................... 273
56. Konami VRC6 .................................................................................................................................. 275
57. WonderSwan ................................................................................................................................. 276
58. Seta/Allumer X1-010 .................................................................................................................. 278
59. Yamaha YM2151 ............................................................................................................................. 279
60. Yamaha YM2203 (OPN) ............................................................................................................... 281
61. Yamaha YM2608 (OPNA) ........................................................................................................... 284
62. Neo Geo/Yamaha YM2610 ........................................................................................................ 287
63. Taito Arcade/Yamaha YM2610B .............................................................................................. 290
64. Yamaha YM2612 ........................................................................................................................... 293
65. Yamaha YMU759 .......................................................................................................................... 296
66. Yamaha YMZ280B (PCMD8) ...................................................................................................... 297
67. ZX Spectrum beeper ................................................................................................................... 298
Furnace manual 5
8. advanced ................................................................................................................................................... 299
1. channels ........................................................................................................................................ 300
2. oscilloscope (per-channel) ....................................................................................................... 302
3. chip manager ................................................................................................................................ 306
4. clock ................................................................................................................................................ 308
5. command line usage .................................................................................................................. 309
6. comments ....................................................................................................................................... 312
7. compatibility flags ....................................................................................................................... 313
8. find/replace ................................................................................................................................... 314
9. grooves ............................................................................................................................................ 318
10. input latch ...................................................................................................................................... 321
11. log viewer ...................................................................................................................................... 322
12. memory composition ................................................................................................................. 323
13. mixer ............................................................................................................................................... 324
14. operation mask ............................................................................................................................ 326
15. oscilloscope ................................................................................................................................... 327
16. pattern manager ......................................................................................................................... 328
17. piano / input pad ......................................................................................................................... 330
18. register view ................................................................................................................................. 332
19. statistics ........................................................................................................................................ 333
20. oscilloscope (X-Y) ....................................................................................................................... 334
9. guides .......................................................................................................................................................... 335
1. choosing emulation cores ........................................................................................................ 336
2. AY-3-8910 / AY8930 / SAA1099 envelope guide ................................................................ 338
3. using samples with limited playback rates ......................................................................... 340
4. using OPLL patch macro ............................................................................................................. 341
5. tuning samples ............................................................................................................................ 342
6
introduction
Furnace is a tool which allows you to create music using sound chips ("chiptune"), most from the
8/16-bit era.
it has a large selection of features and sound chips. from the NES, SNES and Genesis to ES5506,
VIC-20 or even Arcade, Furnace has most likely covered your target with many presets to choose
from.
every chip is emulated using many emulation cores, therefore the sound that Furnace produces is
authentic to that of real hardware.
hexadecimal
Furnace uses hexadecimal (abbreviated as "hex") numbers frequently. see this guide14 for a crash
course.
interface
Furnace uses a music tracker interface. think of a table with music notes written on it. then that
table scrolls up and plays the notes.
for an introduction to a tracker interface, see tracker concepts and terms8 before using Furnace.
there's also a glossary of common terms10.
due to its nature of being feature-packed, it may be technical and somewhat difficult to get around.
therefore we added a basic mode24, which hides several advanced features.
it also has a flexible windowing system which you may move around and organize.
once familiar with the tracker, look to 9-guides335 for useful techniques.
tutorial?
How to Learn Chiptune Trackers ([Link] : video tu‐
torial created by Button Masher. covers the basic mechanics of chiptune tracking using Furnace for
demonstration.
Furnace manual 7
concepts and terms
- a song (also called module) is a file for a tracker that contains at least one subsong.
- each Furnace song involves at least one chip, an emulation of a specific audio processor.
tracking
the pattern view68 is similar to spreadsheet that displays the following:
- each labeled column represents a channel of sound provided by the chips in use.
- each note starts a sound playing. within a channel, only one note can play at a time.
- each note is assigned an instrument79 which describes what it will sound like.
- an effect is a command that changes some aspect of playback. it can alter note pitch, volume,
timing, and more.
- an instrument macro is an automated sequence of effects that applies to every note of that
instrument.
- during playback, the playhead moves down, scrolling through the pattern view, triggering the
notes that it encounters.
structure
the order list is a smaller spreadsheet showing the overall song structure.
time
- during playback, each row lasts a number of ticks determined by the song's speed value(s).
- a tick is the smallest measure of time to which all note, effect, and macro times are quantized.
8
sound
sound chips have different capabilities. even within the same chip, each channel may have its own
ways of making sound.
- some channels use one or more waveform generators (sine, square, noise...) to build up a
sound.
- of special note are FM (frequency modulation) channels, which use a number of generators
called operators that can interact to make very complex sounds.
- some channels use samples176 which are (usually) recordings of sounds, often with defined
loop points to allow a note to sustain.
- some channels use wavetables171, which are very short samples of fixed length that automat‐
ically loop.
Furnace manual 9
glossary of common terms
2-op, 3-op, 4-op...: the number of FM operators used to generate a sound. more operators allow
for more complex sounds.
ADPCM: adaptive differential pulse code modulation. this is a variety of DPCM with a more complex
method of storing the amplitude differences.
ADSR: attack, decay, sustain and release. these are elements that comprise a basic envelope.
- when two operators connect to the same point, their sounds are added together.
- when two operators are connected left to right, the left is the modulator and the right is the
carrier sound that is modified.
bitbang: to achieve PCM sound by sending a rapid stream of volume commands to a non-PCM
channel.
bitmask: a set of bits which represent individual single-bit toggles or groups representing small
numbers. these are explained fully in the hexadecimal primer14.
BRR: a lossy sample format used by the SNES. it has a fixed compression ratio; groups of 32 bytes
(16 samples) are encoded in 9 bytes each.
clipping: when a sample or playback stream exceeds the maximum or minimum values. this can
cause audible distortion.
clock rate: the timing at which a chip operates, expressed as cycles per second (Hz).
- changing this may change aspects of how some chips work, most notably pitch.
- some chips cannot operate at anything other than their designed clock rate.
cursor (1): the marker of input focus. anything typed will happen at the cursor's location.
cursor (2): the pointer controlled by a mouse or similar input. clicking when the cursor(2) is in a
valid area will place the cursor(1) there.
DAC: digital analog converter. this converts a digital representation of sound into actual output.
10
.dmf: DefleMask Module File.
- Furnace: .dmf files may be read, and compatibility flags will be set to make them play as ac‐
curately as possible, but there may still be glitches.
- Furnace: .dmf files may be saved, but full compatibility isn't guaranteed and many features will
be missing. this isn't recommended unless absolutely necessary.
DPCM: differential/delta pulse code modulation. this is a variety of PCM that stores each amplitude
as its difference from the previous.
duty cycle: usually called pulse width. in a pulse wave, this is the ratio of the high part to the high
and low combined.
feedback: in FM instruments, this adds some of an operator's output into itself to create complex
harmonics.
FM: frequency modulation. this is a method of generating sound that uses one operator's amp‐
litude to modify another operator's frequency.
- the FM in Yamaha chips is more accurately called phase modulation, which uses a different
method of computation to achieve similar results.
hard-pan: sounds can only be panned all the way to one side or the other, not in-between.
Hz: hertz. a unit representing divisions of one second. 1 Hz means once per second; 100 Hz means
one hundred times per second. also, kHz (kilohertz, one thousand per second) and MHz (mega‐
hertz, one million per second).
interpolate: to fill in the area between two values with a smooth ramp of values in between.
ladder effect: an inaccurate yet common term for the DAC distortion that affects some Yamaha FM
chips.
LFO: low frequency oscillator. a wave with a slow period (often below hearing range) used to alter
other sounds.
noise bass: the technique of using a PSG's periodic noise generator with a very short period to cre‐
ate low-frequency sounds.
Furnace manual 11
normalize: to adjust the volume of a sample so it is as loud as possible without adding distortion
from clipping.
operator: in FM, a single oscillator that interacts with other oscillators to generate sound.
oscillator: a sine wave or other basic waveform used as sound or to alter sound.
PCM: pulse code modulation. a stream of data that represents sound as a rapid sequence of amp‐
litudes.
period: the length of a repeating waveform. as frequency rises, the period shortens.
- the period is the number of values generated until the algorithm repeats itself.
PSG: programmable sound generator. any sound chip is a PSG, though the term is often used to
specifically refer to chips that produce only simple waveforms and noise.
pulse wave: a waveform with a period consisting of only two amplitudes, high and low. also known
as a rectangular wave.
pulse width: sometimes called duty cycle. in a pulse wave, this is the ratio of the high part to the
high and low combined.
release: the part of a note that plays after it's no longer held, or the part of a macro the plays after
it stops looping. usually applies at key off.
- this is a "lossy" process; it usually loses some amount of audio quality. the results can't be
converted back into the original rate without further loss of quality.
- resampling to a lower rate reduces the amount of memory required, but strips away higher
frequencies in the sound.
- resampling to a higher rate cannot recover missing frequencies and may add unwanted har‐
monics along with greater memory requirements.
raw: a sample or wavetable file without a header. when loading such a file, the format must be set
properly or it will be a mess.
register: a memory location within a sound chip. "register view" shows all the relevant memory of
all chips in use.
sample (1): a digitally recorded sound. usually stored as some variant of PCM.
- these can take up a lot of room depending on length and sample rate, thus older systems tend
to use short, lower quality samples.
sample (2): a single value taken from a digitally recorded sound. a sample(1) is made up of
samples(2).
12
signed: a digital representation of a number that may be negative or positive.
- if an imported raw sample sounds recognizable but heavily distorted, it's likely to be unsigned
interpreted as signed or vice-versa.
software mixing: mixing multiple channels of sound down to a single stream to be sent to a PCM
channel.
- this puts a heavy load on the CPU of the host system, so it was rarely used in games.
- Furnace: this is used for DualPCM and QuadTone.
square wave: a wave consisting of only two values, high and low, with equal durations within the
wave's period.
supersaw: a sound made up of multiple saw waves at slightly different frequencies to achieve a
chorusing effect.
tick rate: the number of times per second that the sound engine moves forward. all notes and ef‐
fects are quantized to this rate.
- this usually corresponds to the frame rate the system uses for video, approximately 60 for
NTSC and 50 for PAL.
- if an imported raw sample sounds recognizable but heavily distorted, it's likely to be signed
interpreted as unsigned or vice-versa.
.vgm: Video Game Music. a file containing the log of data sent to a sound chip during sound play‐
back.
- saving to a .vgm file may be compared to "converting text to outlines" or similar irreversible
processes. the results cannot be loaded back into the tracker.
- different versions of the VGM format have different capabilities, with trade-offs. older ver‐
sions may lack chips or features; newer versions may not be compatible with some software.
- samples are stored uncompressed. PCM streams (such as DualPCM) can quickly take up a huge
amount of space.
- the most basic waveform is a sine wave. others include triangle, pulse, saw, and the like.
wavetable (2): an ordered group of wavetables(1) used in sequence within a single instrument.
.zsm: ZSound Music. a VGM-like file meant specifically for the Commander X16 computer.
Furnace manual 13
hexadecimal
the hexadecimal numeral system differs from the decimal system by having 16 digits rather than
10:
hex| decimal
---|---------
0 | 0
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
6 | 6
7 | 7
8 | 8
9 | 9
A | 10
B | 11
C | 12
D | 13
E | 14
F | 15
when there is more than one digit, these are multiplied by 16, 256, 4096 and so on rather than 10,
100, 1000:
hex | decimal
----|---------
00 | 0
04 | 4
08 | 8
0F | 15
10 | 16
11 | 17
12 | 18
13 | 19
20 | 32
30 | 48
40 | 64
hex to decimal
for example, take hexadecimal number AA:
14
| \--- 16^2*12 = 256 * 12 = 3072
\--------- 16^3*4 = 4096 * 4 = 16384
-------
= 19551
decimal to hex
if it's less than 16, just memorize the table at the top of this document.
otherwise find the power of 16 that is closest to the number you want to convert, but no larger than
the number.
then divide, and take the remainder.
divide the remainder with the previous power of 16, until the divider is 1.
220 ÷ 16 = 13 (r = 12) D
12 ÷ 1 = 12 (stop here) C
= DC
= 10F2C
bitmask
a bitmask is a value that actually represents a set of individual binary bits to be toggled, some of
which may be grouped to form small binary numbers. these are used by adding up the value of
each bit and converting the result to hex. in macros, these are shown in decimal.
for example, to turn bits 7 and 5 on, and put 110 (decimal 6) in bits 1 to 3:
`` bit 7 =1... ....= 128 bit 6 =.0.. ....= 0 bit 5 =..1. ....= 32 bit 4 =...0 ....= 0 bit 3 =....
1...= 8 bit 2 =.... .1..= 4 bit 1 =.... ..0.= 0 bit 0 =.... ...0`= 0
`
Furnace manual 15
added together, the resulting binary is 1010 1100, which converts to hex as AC and to decimal as
172.
00 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
10 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
20 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
30 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
40 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
50 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
60 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
70 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
80 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
90 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
A0 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
B0 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
C0 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
D0 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
E0 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
F0 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
16
interface
the Furnace user interface is where the job gets done.
general info
- UI components25: read first!
- global keyboard shortcuts35
- menu bar42
primary windows
- orders46
- play/edit controls48
- instrument/wavetable/sample list 19
- song information66
- effect list window31
- pattern view68
- instrument editor79
- wavetable editor171
- sample editor176
Furnace manual 17
advanced topics
- mixer324
- grooves318
- channels300
- pattern manager328
- chip manager306
- compatibility flags313
- song comments312
- piano/input pad330
- oscilloscope327
- oscilloscope (per channel)302
- clock308
- register view332
- log viewer322
- statistics333
other topics
- basic mode24
- settings52
18
asset list
an "asset" refers to an instrument, wavetable or sample.
instrument list
- Add: pops up a menu to select which type of instrument to add. if only one instrument type is
available, the menu is skipped.
- if the "Display instrument type menu when adding instrument" setting is disabled, this skips
the menu and creates an instrument according to the chip under the cursor.
- right-clicking always brings up the menu.
- Duplicate: duplicates the currently selected instrument.
- Open: brings up a file dialog to load a file as a new instrument at the end of the list.
- Save: brings up a file dialog to save the currently selected instrument.
- instruments are saved as Furnace instrument (.fui) files.
- right-clicking brings up a menu with the following options:
- save instrument as .dmp...: saves the selected instrument in DefleMask format.
Furnace manual 19
- Toggle folders/standard view: enables (and disables) folder view, explained below.
- Move up: moves the currently selected instrument up in the list. pattern data will automatic‐
ally be adjusted to match.
- Move down: same, but downward.
- Delete: deletes the currently selected instrument. pattern data will be adjusted to use the next
available instrument in the list.
folder view
in folder view, the "Move up" and "Move down buttons disappear and a new one appears:
assets may be dragged from folder to folder and even rearranged within folders without changing
their associated numbers.
right-clicking on a folder allows one to rename or delete it. deleting a folder does not remove the
instruments in it.
20
wavetable list
everything from the instrument list applies here also, with one major difference: moving waves
around with the buttons will change their associated numbers in the list but not in pattern or in‐
strument data. be careful!
- right-clicking the Save button brings up a menu with the following options:
- save wavetable as .dmw...: saves the selected wavetable in DefleMask format.
- save raw wavetable...: saves the selected wavetable as raw data.
Furnace manual 21
sample list
everything from the wavetables list applies here also, with the addition of one button before the
Delete button:
right-clicking the Save button brings up a menu with the following options:
- make instrument: creates a new instrument which is set to use the selected sample.
- make me a drum kit: allows you to instantly create a drum kit using all the samples in the list.
see the next section for more information.
- duplicate: makes a copy of the selected sample.
- replace...: opens a file dialog to choose a replacement sample.
- save: opens a file dialog to choose where to save the sample.
22
- delete: removes the sample.
- Drum kit mode: select how to arrange the samples in the sample map.
- Normal: put all samples from the starting octave onwards.
- 12 samples per octave: map the first 12 samples to all octaves, DefleMask-style.
- Starting octave: change the octave where the first sample will be at.
following that is a list of viable instrument types. click on one of them to proceed with drum kit
creation!
Furnace manual 23
basic mode
Furnace comes with a "basic mode" that can be toggled through the "settings" menu. it disables
certain features in Furnace that may look intimidating or confusing for newcomers. if you find that
a certain feature of Furnace is missing, see if this setting is enabled or not.
edit menu
- paste special
- operation masking
- input latch
- find and replace
speed window
- virtual tempo
- divider
- song length
other windows
- mixer
- grooves
- channels
- pattern manager
- compatibility flags
24
UI components
the user interface consists of several kinds of components, some of which benefit from explana‐
tion.
text fields
text fields are able to hold... text.
click on a text field to start editing, and click away to stop editing.
- Ctrl-X: cut
- Ctrl-C: copy
- Ctrl-V: paste
- Ctrl-A: select all
they also usually have + and - buttons which allow you to increase/decrease the value when
clicked (and rapidly do so when holding).
additionally, Ctrl-clicking these buttons may increase/decrease the value by a coarse amount.
sliders
sliders are used for controlling values in a quick manner by being dragged.
using the scroll wheel while holding Ctrl will change the slider's value by small amounts.
right-clicking or Ctrl-clicking or a slider (Command-click on macOS) will turn it into a number input
field, allowing you to input precise values.
once you click away it will become a slider again.
Furnace manual 25
windows
windows may be moved, collapsed, closed or even docked around the workspace.
to move a window, press and hold the left mouse button while on the title bar or any empty space
on it.
then drag your mouse, and release it to stop moving.
to resize a window, drag the bottom right corner (marked by a triangular tab) or the borders.
to close a window, click on the X at the top right corner, or select it from the "window" menu.
to dock a window, drag it from its title bar to another location in the workspace or to the location of
another window.
26
while dragging, an overlay with some options will appear, allowing you to select where and how to
dock that window.
the options are:
drag your mouse cursor to any of the options to dock the window.
if you drag to the sides, the window will cover that side of the workspace.
if you drag it to a window or empty space, five docking positions will appear.
if you drag the window to the center of another window, it will appear as another tab.
if you drag the window to the center of empty space, the window will cover aforementioned empty
space.
otherwise the window will be split in two, with the first half covered by the window you docked and
the second half covered by the other window.
Furnace manual 27
when a window is docked, its title bar turns into a tab bar, and the function provided by the "col‐
lapse" triangle at the top left changes.
28
if this triangle is clicked, a menu will appear with a list of tabs, or a single option if there's only one
tab: "Hide tab bar".
selecting this option will hide the tab bar of that window.
Furnace manual 29
to bring it back, click on the top left corner.
to undock a window, drag its tab away from where it is docked. then it will be floating again.
30
effect list window
for more details about these effects, see the effects page73.
- Chip at cursor: the currently selected chip. the list only shows available effects for this chip.
Furnace manual 31
- menu button: opens a small list of effect categories. toggle each to change whether effects
belonging to such categories will be shown in the list.
32
export
Furnace allows you to export your song in several formats. this section deals with describing the
available export options.
export audio
this option allows you to export your song in .wav format. I know I know, no .mp3 or .ogg export yet,
but you can use a converter.
export VGM
this option allows exporting to a VGM (Video Game Music) file. these can be played back with VG‐
MPlay (for example).
Furnace manual 33
- chips to export: select which chips are going to be exported.
- due to VGM format limitations, you can only select up to two of each chip type.
- some chips will not be available, either because VGM doesn't support these yet, or because
you selected an old format version.
- add pattern change hints: this option adds a "hint" when a pattern change occurs. only useful
if you're a developer.
- the format of the "hint" data block that gets written is: 67 66 FE ll ll ll ll 01 oo rr
pp pp pp ...
- ll: length, a 32-bit little-endian number
- oo: order
- rr: initial row (a 0Dxx effect is able to select a different row)
- pp: pattern index (one per channel)
- direct stream mode: this option allows DualPCM to work. don't use this for other chips.
- may or may not play well with hardware VGM players.
export text
this option allows you to export your song as a text file.
export ZSM
ZSM (ZSound Music) is a format designed for the Commander X16 to allow hardware playback.
it may contain data for either YM2151 or VERA chips.
Calliope is one of the programs that supports playback of ZSM files.
- Tick Rate (Hz): select the tick rate the song will run at.
- I suggest you use the same rate as the song's.
- apparently ZSM doesn't support changing the rate mid-song.
- loop: enables loop. if disabled, the song won't loop.
- optimize size: removes unnecessary commands to reduce size.
it's not really useful, unless you're a developer and want to use a command stream dump for some
reason (e.g. writing a hardware sound driver).
- export: exports in Furnace's own command stream format (FCS). see [Link] in pa‐
pers/ for details.
34
keyboard
everything on this list can be configured in the "Keyboard" tab of the Settings dialog.
the keys in the "Global hotkeys" section can be used in any window, although not when a text field
is activated.
Global hotkeys
New Ctrl-N
Clear song data —
Open file Ctrl-O
Restore backup —
Save file Ctrl-S
Save as Ctrl-Shift-S
Export —
Undo Ctrl-Z
Redo Ctrl-Y
Play/Stop (toggle) Return
Play —
Stop —
Play (from beginning) F5
Play (repeat pattern) —
Play from cursor Shift-Return
Step row Ctrl-Return
Octave up Keypad *
Octave down Keypad /
Previous instrument Shift-Keypad /
Next instrument Shift-Keypad *
Increase edit step Ctrl-Keypad *
Decrease edit step Ctrl-Keypad /
Toggle edit mode Space
Metronome Ctrl-M
Toggle repeat pattern —
Follow orders —
Follow pattern —
Toggle full-screen F11
Request voice from TX81Z —
Furnace manual 35
ACTION DEFAULT KEYBIND
Panic F12
Window activation
Find/Replace Ctrl-F
Settings —
Song Information —
Subsongs —
Speed —
Instrument List —
Wavetable List —
Sample List —
Orders —
Pattern —
Mixer —
Grooves —
Channels —
Pattern Manager —
Chip Manager —
Compatibility Flags —
Song Comments —
Instrument Editor —
Wavetable Editor —
Sample Editor —
Edit Controls —
Piano —
Oscilloscope (master) —
Oscilloscope (per-channel) —
Volume Meter —
Clock —
Register View —
Log Viewer —
Statistics —
Effect List —
Debug Menu Ctrl-Shift-D
About —
Collapse/expand current window —
Close current window Shift-Escape
36
ACTION DEFAULT KEYBIND
Note input
see "note input" section after table
Pattern
Transpose (+1) Ctrl-F2
Transpose (-1) Ctrl-F1
Transpose (+1 octave) Ctrl-F4
Transpose (-1 octave) Ctrl-F3
Increase values (+1) Ctrl-Shift-F2
Increase values (-1) Ctrl-Shift-F1
Increase values (+16) Ctrl-Shift-F4
Increase values (-16) Ctrl-Shift-F3
Select all Ctrl-A
Cut Ctrl-X
Copy Ctrl-C
Paste Ctrl-V
Paste Mix (foreground) Ctrl-Shift-V
Paste Mix (background) —
Paste Flood —
Paste Overflow —
Move cursor up Up
Move cursor down Down
Move cursor left Left
Move cursor right Right
Move cursor up by one (override Edit Step) Shift-Home
Move cursor down by one (override Edit Step) Shift-End
Move cursor to previous channel —
Move cursor to next channel —
Move cursor to next channel (overflow) —
Move cursor to previous channel (overflow) —
Move cursor to beginning of pattern Home
Move cursor to end of pattern End
Move cursor up (coarse) PageUp
Move cursor down (coarse) PageDown
Expand selection upwards Shift-Up
Expand selection downwards Shift-Down
Expand selection to the left Shift-Left
Furnace manual 37
ACTION DEFAULT KEYBIND
Instrument list
Add Insert
Duplicate Ctrl-D
Open —
Open (replace current) —
Save —
38
ACTION DEFAULT KEYBIND
Save (.dmp) —
Move up Shift-Up
Move down Shift-Down
Delete —
Edit Shift-Return
Cursor up Up
Cursor down Down
Toggle folders/standard view Ctrl-V
Wavetable list
Add Insert
Duplicate Ctrl-D
Open —
Open (replace current) —
Save —
Save (.dmw) —
Save (raw) —
Move up Shift-Up
Move down Shift-Down
Delete —
Edit Shift-Return
Cursor up Up
Cursor down Down
Toggle folders/standard view Ctrl-V
Sample list
Add Insert
Duplicate Ctrl-D
Create wavetable from selection Ctrl-W
Open —
Open (replace current) —
Import raw data —
Import raw data (replace current) —
Save —
Save (raw) —
Move up Shift-Up
Move down Shift-Down
Delete —
Furnace manual 39
ACTION DEFAULT KEYBIND
Edit Shift-Return
Cursor up Up
Cursor down Down
Preview —
Stop preview —
Toggle folders/standard view Ctrl-V
Orders
Previous order Up
Next order Down
Cursor left Left
Cursor right Right
Increase value —
Decrease value —
Switch edit mode —
Toggle alter entire row Ctrl-L
Add Insert
Duplicate Ctrl-D
Deep clone Ctrl-Shift-D
Duplicate to end of song Ctrl-E
Deep clone to end of song Ctrl-Shift-E
Remove Delete
Move up Shift-Up
Move down Shift-Down
Replay —
Sample editor
Edit mode: Select Shift-I
Edit mode: Draw Shift-D
Cut Ctrl-X
Copy Ctrl-C
Paste Ctrl-V
Paste replace Ctrl-Shift-V
Paste mix Ctrl-Alt-V
Select all Ctrl-A
Resize Ctrl-R
Resample Ctrl-E
Amplify Ctrl-B
40
ACTION DEFAULT KEYBIND
Normalize Ctrl-N
Fade in Ctrl-I
Fade out Ctrl-O
Insert silence Insert
Apply silence Shift-Delete
Delete Delete
Trim Ctrl-Delete
Reverse Ctrl-T
Invert Ctrl-Shift-T
Signed/unsigned exchange Ctrl-U
Apply filter Ctrl-F
Preview sample —
Stop sample preview —
Zoom in Ctrl-=
Zoom out Ctrl--
Toggle auto-zoom Ctrl-0
Create instrument from sample —
Set loop to selection Ctrl-L
Furnace manual 41
menu bar
the menu bar allows you to select from five menus: file, edit, settings, window and help.
items in italic don't appear in basic mode and are only available in advanced mode.
file
- new...: creates a new song.
- open...: opens the file picker, allowing you to select a song to open.
- open recent: contains a list of the songs you've opened before.
- clear history: erases the file history.
- save: saves the current song.
- opens the file picker if this is a new song, or a backup.
- save as...: opens the file picker, allowing you to save the song under a different name.
- save as .dmf (1.1.3+)...: opens the file picker, allowing you to save your song as a .dmf which is
compatible with DefleMask 1.1.3 onwards.
- this will only work with the systems mentioned in the next option, plus:
- Sega Master System (with FM expansion)
- NES + Konami VRC7
- Famicom Disk System
- only use this option if you really need it. there are features which DefleMask does not support,
like some effects and FM macros, so these will be lost.
- save as .dmf (1.0/legacy)...: opens the file picker, allowing you to save your song as a .dmf
which is compatible with DefleMask Legacy (0.12) or 1.0.
- this will only work on the following systems:
- Sega Genesis/Mega Drive (YM2612 + SN76489)
- Sega Genesis/Mega Drive (YM2612 + SN76489, extended channel 3)
- Sega Master System
- Game Boy
- PC Engine
- NES
- Commodore 64
- Arcade (YM2151 + SegaPCM 5-channel compatibility)
- Neo Geo CD (DefleMask 1.0+)
- only use this option if you really need it. there are features which DefleMask does not support,
like some effects and FM macros, so these will be lost.
- export: allows you to export your song into other formats, such as audio files, VGM and more.
see the export33 page for more information.
- manage chips: opens the Chip Manager306 dialog.
- restore backup: restores a previously saved backup.
- Furnace keeps up to 5 backups of a song.
- the backup directory is located in:
- Windows: %USERPROFILE%\AppData\Roaming\furnace\backups
- macOS: ~/Library/Application Support/Furnace/backups
- Linux/other: ~/.config/furnace/backups
- this directory grows in size as you use Furnace. remember to delete old backups periodically to
save space.
42
- do NOT rely on the backup system as auto-save! you should save a restored backup because
Furnace will not save backups of backups.
- exit: closes Furnace.
edit
- ...: does nothing except prevent accidental clicks on later menu items if the menu is too tall to
fit on the program window.
- undo: reverts the last action.
- redo: repeats what you undid previously.
- cut: moves the current selection in the pattern view to clipboard.
- copy: copies the current selection in the pattern view to clipboard.
- paste: inserts the clipboard's contents in the cursor position.
- you may be able to paste from OpenMPT as well.
- paste special...: variants of the paste feature.
- paste mix: inserts the clipboard's contents in the cursor position, but does not erase the occu‐
pied region.
- paste mix (background): does the same thing as paste mix, but doesn't alter content which is
already there.
- paste with ins (foreground): same thing as paste mix, but changes the instrument.
- paste with ins (background): same thing as paste mix (background), but changes the instru‐
ment.
- paste flood: inserts the clipboard's contents in the cursor position, and repeats until it hits the
end of a pattern.
- paste overflow: paste, but it will keep pasting even if it runs over another pattern.
- delete: clears the contents in the selection.
- select all: changes the selection so it covers a larger area.
- if the selection is wide, it will select the rows in a column.
- if the selection is tall, it will select the entire column.
- if a column is already selected, it will select the entire channel.
- if a channel is already selected, it will select the entire pattern.
- operation mask: toggles which columns will be affected by the listed operations. more in‐
formation here.326
- input latch: determines which data are placed along with a note. more information here.321
- note/octave up/down: transposes notes in the current selection.
- values up/down: changes values in the current selection by ±1 or ±16.
- transpose: transpose notes or change values by a specific amount.
- interpolate: fills in gaps in the selection by interpolation between values.
- change instrument: changes the instrument number in a selection.
- gradient/fade: replace the selection with a "gradient" that goes from the beginning of the se‐
lection to the end.
- does not affect the note column.
- Nibble mode: when enabled, the fade will be per-nibble (0 to F) rather than per-value (00 to
FF).
- use for effects like 04xy (vibrato).
- scale: scales values in the selection by a specific amount.
- use to change volume in a selection for example.
- randomize: replaces the selection with random values.
- does not affect the note column.
- invert values: 00 becomes FF, 01 becomes FE, 02 becomes FD and so on.
- flip selection: flips the selection so it is backwards.
Furnace manual 43
- collapse/expand amount: allows you to specify how much to collapse/expand in the next two
menu items.
- collapse: shrinks the selected contents.
- expand: expands the selected contents.
- collapse pattern: same as collapse, but affects the entire pattern.
- expand pattern: same as expand, but affects the entire pattern.
- collapse song: same as collapse, but affects the entire song.
- it also changes speeds and pattern length to compensate.
- expand song: same as expand, but affects the entire song.
- it also changes speeds and pattern length to compensate.
- find/replace: shows the Find/Replace window314.
- clear: opens a window that allows you to mass-delete things like songs, unused instruments,
and the like.
settings
- full screen: expands the Furnace window so it covers your screen.
- lock layout: prevents you from dragging/resizing docked windows, or docking more.
- basic mode: toggles Basic Mode24.
- visualizer: toggles pattern view particle effects when the song plays.
- reset layout: resets the workspace to its defaults.
- settings...: shows the Settings window. these are detailed in [[Link]].
window
all these menu items show or hide their associated windows.
- song information66
- subsongs66
- speed66
- instruments79
- wavetables171
- samples176
- orders46
- pattern68
- mixer324
- grooves318
- channels300
- pattern manager328
- chip manager306
- compatibility flags313
- song comments312
- piano330
- oscilloscope327
- oscilloscopes (per-channel)302
- clock308
- register view332
- log viewer322
- stats333
44
help
- effect list: displays the effect list.
- debug menu: this menu contains various debug utilities.
- unless you are working with the Furnace codebase, it's not useful.
- inspector: this option shows the Dear ImGui Metrics/Debugger window.
- unless you are working with the Furnace codebase, it's not useful.
- panic: this resets all chips while the song is playing, effectively silencing everything.
- about...: displays the About screen.
- during editing, information about the data under the cursor will be shown here:
- note or note modifier.
- instrument number and name.
- volume in decimal, hex, and percentage.
- effect type and description.
- during playback, these values will be displayed:
- speed/groove @ tick rate (BPM) | order | row | elapsed time
- if any changes or edits have been made but not yet saved, "modified" will appear.
Furnace manual 45
orders
this window displays the order list. a spreadsheet that contains the order of patterns that will play,
from top to bottom.
along the top are the available channels. their abbreviations can be set in the channels window300.
the highlighted channel follows the channel the pattern view cursor is in.
along the left are the order numbers. the highlighted row follows the order the pattern view cursor
is in.
each entry in the table is the pattern that will play during that order. these can be changed accord‐
ing to the order edit mode.
hovering over a pattern number will pop up a tooltip showing the name of that pattern, if it has
one.
46
- Order edit mode: selects the method of changing orders.
- Click to change: a click will add one to the pattern number. a right-click will subtract one.
- Select and type (don't scroll): select a pattern number and type.
- Select and type (scroll horizontally): as above, but after entering two digits, the cursor moves
to the next channel.
- Select and type (scroll vertically): as above, but after entering two digits, the cursor moves to
the next order.
Furnace manual 47
play/edit controls
the "Play/Edit Controls" are used to control playback and change parameters of the pattern view.
- Play from the beginning of this pattern: plays from the start of current pattern.
- Repeat from the beginning of this pattern: repeats current pattern from its start.
- Step one row: plays only the row at cursor position and moves down one.
- Edit: toggles edit mode. when turned off, you won't be able to enter notes.
- Repeat pattern: toggles pattern repeat. during playback while this is on, the current
pattern will play over and over instead of following the order list.
- Poly: turns on polyphony for previewing notes. toggles to Mono for monophony (one note at a
time only).
- Octave: sets current input octave.
- Step: sets edit step. if this is 1, entering a note or effect will move to the next row. if this is a
larger number, rows will be skipped. if this is 0, the cursor will stay in place.
- Follow orders: if on, the selected order in the orders window will follow the song during play‐
back.
- Follow pattern: if on, the cursor will follow playback and the song will scroll by as it plays.
layouts
the layout can be changed in Settings > Appearance to one of these:
48
classic
compact
Furnace manual 49
compact (vertical)
50
split
Furnace manual 51
settings
the Settings window allows you to change Furnace setting.
settings are saved when clicking the OK or Apply buttons at the bottom of the window.
General
Program
- Render backend: changing this may help with performace or compatibility issues. the avail‐
able render backends are:
- OpenGL 3.0: works with the majority of graphics chips/cards (from 2010 onwards). default on
Linux.
- OpenGL 2.0: use if you have a card without OpenGL 3.0 support.
- OpenGL 1.1: use if your card doesn't even support OpenGL 2.0.
- DirectX 11: works with the majority of graphics chips/cards and is optimized specifically for
Windows.
- SDL Renderer: this was the only available render backend prior to the addition of dedicated
OpenGL/DirectX backends in 0.6. default on macOS.
- it is slower than the other backends.
- Software: this is a last resort backend which renders the interface in software. very slow!
- Render driver: this setting appears when using the SDL Renderer backend. it allows you to se‐
lect an SDL render driver.
- VSync: synchronizes rendering to VBlank and eliminates tearing.
- Frame rate limit: allows you to set a frame rate limit (in frames per second).
- only has effect when VSync is off or not available (e.g. software rendering or force-disabled on
driver settings).
- Late render clear: this option is only useful when using old versions of Mesa drivers. it force-
waits for VBlank by clearing after present, reducing latency.
- Power-saving mode: saves power by lowering the frame rate to 2fps when idle.
- may cause issues under Mesa drivers!
- Disable threaded input (restart after changing!): processes key presses for note preview on a
separate thread (on supported platforms), which reduces latency.
- Enable event delay: may cause issues with high-polling-rate mice when previewing notes.
- Per-channel oscilloscope threads: runs the per-channel oscilloscope in separate threads for
a performance boost when there are lots of channels.
- Oscilloscope rendering engine: allows you to select between the following rendering engines
for oscilloscope views (master and per-channel):
- ImGui line plot: the default engine. uses Dear ImGui line plotting functions for rendering.
- GLSL: uses OpenGL shaders for rendering. higher quality, but very GPU-intensive! only avail‐
able in OpenGL 3.0 backend.
File
- Use system file picker: uses native OS file dialog instead of Furnace's.
- Number of recent files: number of files that will be remembered in the open recent... menu.
- Compress when saving: uses zlib to compress saved songs.
- Save unused patterns: stores unused patterns in a saved song.
52
- Use new pattern format when saving: stores patterns in the new, optimized and smaller
format. only disable if you need to work with older versions of Furnace.
- Don't apply compatibility flags when loading .dmf: does exactly what the option says. your
.dmf songs may not play correctly after enabled.
- Play after opening song:
- No
- Only if already playing
- Yes
- Audio export loop/fade out time:
- Set to these values on start-up:
- Loops: number of additional times to play through 0Bxx song loop.
- Fade out (seconds): length of fade out after final loop.
- Remember last values
- Store instrument name in .fui: when enabled, saving an instrument will store its name. this
may increase file size.
- Load instrument name from .fui: when enabled, loading an instrument will use the stored
name (if present). otherwise, it will use the file name.
New Song
- Initial system: the system of chips loaded on starting Furnace.
- Current system: sets current chips as default.
- Randomize: sets default to a random system.
- this will not choose a random system at each start.
- Reset to defaults: sets default to "Sega Genesis/Mega Drive".
- Name: name for the default system. may be set to any text.
- Configure: same as in the chip manager306 and mixer324.
- When creating new song:
- Display system preset selector
- Start with initial system
- Default author name
Start-up
- Play intro on start-up:
- No: skips intro entirely.
- Short: shows silent title screen briefly.
- Full (short when loading song): shows animated musical intro unless started with a song
(command line, double-clicking a .fur file, etc.)
- Full (always): always shows animated musical intro.
- Disable fade-in during start-up
- About screen party time
- warning: may cause epileptic seizures.
Behavior
- New instruments are blank: when enabled, adding FM instruments will make them blank
(rather than loading the default one).
Furnace manual 53
Audio
Output
- Backend: selects a different backend for audio output.
- SDL: the default one.
- JACK: the JACK Audio Connection Kit (low-latency audio server). only appears on Linux, or Ma‐
cOS compiled with JACK support.
- PortAudio: this may or may not perform better than the SDL backend.
- Driver: select a different audio driver if you're having problems with the default one.
- only appears when Backend is SDL.
- Device: audio device for playback.
- if using PortAudio backend, devices will be prefixed with the audio API that PortAudio is going
to use:
- Windows WASAPI: a modern audio API available on Windows Vista and later, featuring an
(optional) Exclusive Mode. be noted that your buffer size setting may be ignored.
- Windows WDM-KS: low-latency, direct to hardware output mechanism. may not work all
the time and prevents your audio device from being used for anything else!
- Windows DirectSound: this is the worst choice. best to move on.
- MME: an old audio API. doesn't have Exclusive Mode.
- Core Audio: the only choice in macOS.
- ALSA: low-level audio output on Linux. may prevent other applications from using your au‐
dio device.
- Sample rate: audio output rate.
- a lower rate decreases quality and isn't really beneficial.
- if using PortAudio backend, be careful about this value.
- Outputs: number of audio outputs created, up to 16.
- only appears when Backend is JACK.
- Channels: mono, stereo or something.
- Buffer size: size of buffer in both samples and milliseconds.
- setting this to a low value may cause stuttering/glitches in playback (known as "underruns" or
"xruns").
- setting this to a high value increases latency.
- Exclusive mode: enables Exclusive Mode, which may offer latency improvements.
- only available on WASAPI devices in the PortAudio backend!
- Low-latency mode: reduces latency by running the engine faster than the tick rate. useful for
live playback/jam mode.
- only enable if your buffer size is small (10ms or less).
- Force mono audio: use if you're unable to hear stereo audio (e.g. single speaker or hearing loss
in one ear).
- want: displays requested audio configuration.
- got: displays actual audio configuration returned by audio backend.
Mixing
- Quality: selects quality of resampling. low quality reduces CPU load by a small amount.
- Software clipping: clips output to nominal range (-1.0 to 1.0) before passing it to the audio
device.
- this avoids activating Windows' built-in limiter.
- this option shall be enabled when using PortAudio backend with a DirectSound device.
54
- DC offset correction: apply a filter to remove DC bias, where the output is overall above or be‐
low zero. default is on.
Metronome
- Volume: sets volume of metronome.
Sample preview
- Volume: sets volume of sample preview.
MIDI
MIDI input
- MIDI input: input device.
- Note input: enables note input. disable if you intend to use this device only for binding actions.
- Velocity input: enables velocity input when entering notes in the pattern.
- Map MIDI channels to direct channels: when enabled, notes from MIDI channels will be
mapped to channels rather than the cursor position.
- Program change pass-through: when enabled, program change events are sent to each
channel as instrument change commands.
- this option is only available when the previous one is enabled.
- Map Yamaha FM voice data to instruments: when enabled, Furnace will listen for any trans‐
mitted Yamaha SysEx patches.
- this option is only useful if you have a Yamaha FM synthesizer (e.g. TX81Z).
- selecting a voice or using the "Voice Transmit?" option will send a patch, and Furnace will cre‐
ate a new instrument with its data.
- this may also be triggered by clicking on "Receive from TX81Z" in the instrument editor (OPZ
only).
- Program change is instrument selection: changes the current instrument when a program
change event is received.
- this option is not available when "Program change pass-through" is enabled.
- Value input style: changes the way values are entered when the pattern cursor is not in the
Note column. the following styles are available:
- Disabled/custom: no value input through MIDI.
Furnace manual 55
- Two octaves (0 is C-4, F is D#5): maps keys in two octaves to single nibble input. the layout is:
- Raw (note number is value): the note number becomes the input value. not useful if you want
to input anything above 7F.
- Two octaves alternate (lower keys are 0-9, upper keys are A-F): maps keys in two octaves,
but with a different layout:
- Use dual control change (one for each nibble): maps two control change events to the nibbles
of a value.
- CC of upper nibble: select the CC number that will change the upper nibble.
- CC of lower nibble: select the CC number that will change the lower nibble.
- Use 14-bit control change: maps two control change events that together form a single 14-bit
CC. some MIDI controllers do these.
- MSB CC: select the CC containing the upper portion of the control.
- LSB CC: select the CC containing the lower portion of the control.
- Use single control change: maps one control change event. not useful if you want to input odd
numbers.
- Control: select the CC number that will change the value.
56
- Per-column control change: when enabled, you can map several control change events to a
channel's columns.
- Volume curve: adjust the velocity to volume curve.
- the default is 2.0, which matches General MIDI standard.
- Actions: this allows you to bind note input and control change events to actions.
- + button: adds a new action.
- window-with-arrow button: new action with learning! press a button or move a slider/knob/
something on your device.
- each action has the following:
- Type: type of event.
- Channel: channel of event.
- Note/Control: the note/control change number.
- Velocity/Value: the velocity or control value
- Action: the GUI action to perform.
- Learn: after clicking on this button, do something in your MIDI device and Furnace will map
that to this action.
- Remove: remove this action.
MIDI output
- MIDI output: output device.
- Output mode:
- Off (use for TX81Z): don't output anything. use if you plan to use Furnace as sync master, or
the "Receive from TX81Z" button in the OPZ instrument editor.
- Melodic: output MIDI events.
- Send Program Change: output program change events when instrument change commands
occur.
- Send MIDI clock: output MIDI beat clock.
- Send MIDI timecode: output MIDI timecode.
- Timecode frame rate: sets the timing standard used for MIDI timecode.
- Closest to Tick Rate: automatically sets the rate based on the song's Tick Rate.
- Film (24fps): output at 24 codes per second.
- PAL (25fps): output at 25 codes per second.
- NTSC drop (29.97fps): output at ~29.97 codes per second, skipping frames 0 and 1 of each
minute that doesn't divide by 10.
- NTSC non-drop (30fps): output at 30 codes per second.
Emulation
Cores
- Playback Core(s): core(s) to use for playback.
- Render Core(s): core(s) to use when exporting audio.
all of these are covered in the guide to choosing emulation cores 336.
Quality
some chips have output quality settings. these may be used to increase quality or lower CPU usage.
Furnace manual 57
the available quality settings are:
Other
- PC Speaker strategy: this is covered in the PC speaker page237.
Keyboard
Keyboard
- Import: imports keyboard layout in .cfgk format.
- Export: exports keyboard layout in .cfgk format.
- Reset defaults: resets all keybinds to default values.
note input
the settings for note input keybinds operate differently. each entry in the list of keybinds is made
of the following:
below all the binds, select a key from the dropdown list to add it. it will appear at or near the top of
the list as a note with value 0.
Interface
Layout
- Workspace layout
- Import: reads a .ini layout file.
- Export: writes current layout to a .ini file.
- Reset: resets layout to default.
- Allow docking editors: when enabled, you'll be able to dock instrument/wave/sample editors.
58
- Remember window position: remembers the window's last position on start-up.
- Only allow window movement when clicking on title bar
- Center pop-up windows
- Play/edit controls layout:
- Classic
- Compact
- Compact (vertical)
- Split
- Position of buttons in Orders:
- Top
- Left
- Right
Mouse
- Double-click time (seconds): maximum time between mouse clicks to recognize them as a
double-click.
- Don't raise pattern editor on click
- Focus pattern editor when selecting instrument
- Note preview behavior: allows you to disable note preview when entering notes in the pat‐
tern.
- Never: don't preview notes at all.
- When cursor is in Note column: only when the cursor is in the Note column
- When cursor is in Note column or not in edit mode: erm... yeah.
- Always: always preview notes.
- Allow dragging selection:
- No: don't allow drag-and-drop.
- Yes: allow drag-and-drop.
- Yes (while holding Ctrl only): allow drag-and-drop but only when holding Control (Command
on macOS).
- Toggle channel solo on: selects which interactions with a channel header will toggle solo for
that channel.
- Right-click or double click
- Right-click
- Double-click
- Double click selects entire column: when enabled, double clicking on a cell of the pattern will
select the entire column.
Cursor behavior
- Insert pushes entire channel row: when enabled, pressing Insert will push the entire channel
rather than the column at the cursor position.
- Pull delete affects entire channel row: when enabled, pull deleting (Backspace by default)
will pull the entire channel rather than the column at the cursor position.
- Push value when overwriting instead of clearing it: in the order list and pattern editors, typ‐
ing into an already-filled value will shift digits instead of starting fresh. for example:
- if off: moving the cursor onto the value A5 and typing a "B" results in 0B.
- if on: moving the cursor onto the value A5 and typing a "B" results in 5B.
- Effect input behavior:
- Move down: after entering an effect (or effect value), the cursor moves down.
Furnace manual 59
- Move to effect value (otherwise move down): after entering an effect, the cursor moves to its
value. if entering a value, the cursor moves down.
- Move to effect value/next effect and wrap around: after entering an effect or effect value,
the cursor moves right. if it was on the last column, it jumps back to the first effect.
- Delete effect value when deleting effect: if enabled, deleting effect will also delete its value.
- Change current instrument when changing instrument column (absorb): if enabled, typing
on the instrument column will also select the instrument you've typed.
- Remove instrument value when inserting note off/release: if enabled, inserting a note off or
release on a row that has instrument value will remove the instrument value.
- Remove volume value when inserting note off/release: same as above, but for volume.
Cursor movement
- Wrap horizontally: selects what to do when the cursor hits horizontal boundaries.
- No: don't wrap the cursor.
- Yes: wrap the cursor.
- Yes, and move to next/prev row: wrap the cursor and move it to the other row.
- Wrap vertically: selects what to do when the cursor hits vertical boundaries.
- No: don't wrap the cursor.
- Yes: wrap the cursor.
- Yes, and move to next/prev pattern: wrap the cursor and go to the next/previous order.
- Yes, and move to next/prev pattern (wrap around): same as the previous option, but also
wraps around the song.
- Cursor movement keys behavior: allows you to select how much will the cursor move by
when pressing cursor movement keys.
- Move by one: guess.
- Move by Edit Step: guess.
- Move cursor by edit step on delete: when deleting, moves the cursor by Edit Step.
- Move cursor by edit step on insert (push): when inserting, moves the cursor by Edit Step.
- Move cursor up on backspace-delete: when pull deleting (Backspace by default), moves
cursor up.
- Move cursor to end of clipboard content when pasting: allows you to choose what happens
after pasting.
- if on, the cursor will move to the end of the clipboard content.
- if off, the cursor won't move.
Scrolling
- Change order when scrolling outside of pattern bounds:
- No: the pattern edit cursor will stay locked within the current order.
- Yes: moving the cursor past the edge of the previous or next order will move to that order, but
not past the start or end of a song.
- Yes, and wrap around song: as above, but will wrap from song end to start.
- Cursor follows current order when moving it
- applies when playback is stopped.
- Don't scroll when moving cursor
- Move cursor with scroll wheel
- No
- Yes
- Inverted
60
Assets
- Display instrument type menu when adding instrument
- if turned off, the menu can still be opened by right-clicking the add button.
- Select asset after opening one
Appearance
Scaling
- Automatic UI scaling factor: automatically matches the OS's UI scaling.
- UI scaling factor: only appears if "Automatic UI scaling factor" is off.
- Icon size
Text
- Font renderer: this allows you to select which font renderer library to use. there are two
choices:
- stb_truetype: the original font renderer used in Furnace 0.6 and before.
- FreeType: this font renderer has support for more font formats and provides more settings.
introduced in Furnace 0.6.1.
- Main font: font for the user interface.
- Header font: font for section headers.
- Pattern font font for the pattern view, the order list, and related.
- if "Custom...", a file path selector will appear.
- Size: font size.
- Display Japanese characters, Display Chinese (Simplified) characters, Display Chinese
(Traditional) characters and Display Korean characters: only toggle these options if you have
enough graphics memory.
- these are a temporary solution until dynamic font atlas is implemented in Dear ImGui.
FreeType-specific settings
Program
- Title bar:
- Furnace
Furnace manual 61
- Song Name - Furnace
- file_name.fur - Furnace
- /path/to/[Link] - Furnace
- Display system name on title bar
- Display chip names instead of "multi-system" in title bar
- Export options layout:
- Sub-menus in File menu: export options appear in the File menu as sub-menus.
- Modal window with tabs: a single "export..." option that opens a dialog with export options.
this is the default.
- Modal windows with options in File menu: like Sub-menus in File menu, but instead of being
sub-menus, selecting one opens a dialog with export settings.
- Status bar:
- Cursor details
- File path
- Cursor details or file path
- Nothing
- Capitalize menu bar
- Display add/configure/change/remove chip menus in File menu: if enabled, the "manage
chips" item in the file menu is split into the four listed items for quick access.
Orders
- Highlight channel at cursor in Orders
- Orders row number format:
- Decimal
- Hexadecimal
Pattern
- Center pattern view: centers pattern horizontally in view.
- Overflow pattern highlights
- Display previous/next pattern
- Pattern row number format:
- Decimal
- Hexadecimal
- Pattern view labels:
- Note off (3-char): default is OFF
- Note release (3-char): default is ===.
- Macro release (3-char): default is REL.
- Empty field (3-char): default is ....
- Empty field (2-char): default is ...
- Pattern view spacing after: number of pixels of space between columns.
- Note
- Instrument
- Volume
- Effect
- Effect value
- Single-digit effects for 00-0F
- Use flats instead of sharps
- Use German notation: display B notes as H, and A# notes as B.
62
Channel
- Channel style: sets the appearance of channel headers in pattern view.
- Classic
- Line
- Round
- Split button
- Square border
- Round border
- Channel volume bar:
- None
- Simple
- Stereo
- Real
- Real (stereo)
- Channel feedback style:
- Off
- Note
- Volume
- Active
- Channel font:
- Regular
- Monospace
- Center channel name
- Channel colors:
- Single
- Channel type
- Instrument type
- Channel name colors:
- Single
- Channel type
- Instrument type
Assets
- Unified instrument/wavetable/sample list: combines all three types of assets into one list.
- the buttons act as appropriate to the currently selected asset or header.
- Horizontal instrument list: when there are more instruments than there is room to display
them...
- if on, scroll horizontally through multiple columns.
- if off, scroll vertically in one long column.
- only appears if "Unified instrument/wavetable/sample list" is off.
- Instrument list icon style:
- None
- Graphical icons
- Letter icons
- Colorize instrument editor using instrument type
Macro Editor
- Macro editor layout:
Furnace manual 63
- Unified
- Grid
- Single (with list)
- Use classic macro editor vertical slider
Wave Editor
- Use compact wave editor
FM Editor
- FM parameter names:
- Friendly
- Technical
- Technical (alternate)
- Use standard OPL waveform names
- FM parameter editor layout:
- Modern
- Compact (2x2, classic)
- Compact (1x4)
- Compact (4x1)
- Alternate (2x2)
- Alternate (1x4)
- Alternate (4x1)
- Position of Sustain in FM editor:
- Between Decay and Sustain Rate
- After Release Rate
- Use separate colors for carriers/modulators in FM editor
- Unsigned FM detune values: uses the internal representation of detune values, such that de‐
tune amounts of -1, -2, and -3 are shown as 5, 6, and 7.
Memory Composition
- Chip memory usage unit: unit for displaying memory usage in the Memory Composition win‐
dow.
- Bytes
- Kilobytes
Oscilloscope
- Rounded corners
- Border
- Mono: displays a single monaural waveform of all sound mixed together.
- if turned off, waves will be drawn on top of each other for each output channel.
- all colors are configurable via Settings > Color > Color scheme > Oscilloscope > Wave (non-
mono).
- Anti-aliased: smoothes the lines of the waveform.
- slight performance cost and slightly buggy.
- Fill entire window: removes the gap between the waveform and the edge of the window.
- Waveform goes out of bounds: allows the waveform to draw past the top and bottom of the
oscilloscope.
64
Windows
- Rounded window corners
- Rounded buttons
- Rounded menu corners
- Borders around widgets: draws borders on buttons, checkboxes, text widgets, and the like.
Color
Color scheme
- Import
- Export
- Reset defaults
- Guru mode: exposes all color options (instead of accent colors).
- General
- Color scheme type:
- Dark
- Light
- Frame shading: applies a gradient effect to buttons and input boxes.
- several more categories...
Furnace manual 65
song info
- Name: the track's title.
- Author: the author(s) of this track.
- Album: the associated album name (or the name of the game the song is from).
- System: the game console or computer the track is designed for. this is automatically set when
creating a new tune, but in advanced mode, it can be changed to anything one wants. the Auto
button will provide a guess based on the chips in use.
all of this metadata will be included in a VGM export. this isn't the case for an audio export, how‐
ever.
- Tuning (A-4): set tuning based on the note A-4, which should be 440 in most cases. opening an
Amiga MOD will set it to 436 for hardware compatibility. available only in advanced mode.
subsongs
this window allows one to create subsongs - multiple individual songs within a single file. each
song has its own order list and patterns, but all songs within a file share the same chips, samples,
and so forth.
speed
there are multiple ways to set the tempo of a song.
items in italic don't appear in basic mode and are only available in advanced mode.
Tick Rate: the frequency of ticks per second, thus the rate at which notes and effects are pro‐
cessed.
- all values are allowed for all chips, though most chips have hardware limitations that mean
they should stay at either 60 (approximately NTSC) or 50 (exactly PAL).
- clicking the Tick Rate button switches to a more traditional Base Tempo BPM setting.
- clicking the "Speed" button changes to more complex modes covered in the grooves318 page.
66
Virtual Tempo: Simulates any arbitrary tempo without altering the tick rate. it does this by adding
or skipping ticks to approximate the tempo. the two numbers represent a ratio applied to the actu‐
al tick rate. example:
Divider: Changes the effective tick rate. a tick rate of 60Hz and a divisor of 6 will result in ticks
lasting a tenth of a second each!
Pattern Length: the length of each pattern in rows. this affects all patterns in the song, and every
pattern must be the same length. (Individual patterns can be cut short by 0Bxx, 0Dxx, and FFxx
commands.)
Song Length: how many orders are in the order list. decreasing it will hide the orders at the bot‐
tom. increasing it will restore those orders; increasing it further will add new orders of all 00 pat‐
terns.
Furnace manual 67
pattern
the pattern view allows you to edit the song's patterns.
1. note
2. instrument
3. volume
4. effects, split into effect type and effect value
all columns are represented in hexadecimal, except for the note column.
row highlights show beats and measures, and are configured in the the Speed window66.
68
cursor and selection
you may change the cursor position by clicking anywhere on the pattern.
to select an area, press and hold the left mouse button. then drag the mouse and release the but‐
ton to finish selection.
right-clicking within the pattern view brings up a pop-up menu with most options from the edit
menu42.
channel bar
using the channel bar, you may adjust several aspects of the channel display.
double-clicking or right-clicking it enables solo mode, in which only that channel will be audible.
clicking the ++ at the top left corner of the pattern view pops up a small menu to set view modes:
- Effect columns/collapse: displays extra options for collapsing channels and adding/remov‐
ing effect columns:
- -: collapse visible columns. changes to + when columns are hidden; click to expand them.
- <: disables the last effect column and hides it. effects are not deleted...
- >: adds an effect column. if one previously existed, its contents will be preserved.
- Pattern names: displays pattern names (per channel). pattern names are also visible when
hovering over a pattern in the order list.
- Channel group hints: display indicators when channels are paired in some way (e.g. OPL3 4-op
mode).
- Visualizer: during playback, show visual effects in the pattern view.
- also can be toggled by right-clicking on the ++ button.
- Channel status: displays icons that indicate activity in the channel. see the "channel status"
section below.
to rename and/or hide channels, open the Channels window300 via the window menu.
channel status
- note status:
Furnace manual 69
- note off
- note on
- nothing
- pitch slide up
- portamento
- arpeggio
- volume alteration:
- nothing
- volume slide up
- tremolo
- other icons may be present depending on the used chips.
70
input
note input
- pressing any of the respective keys will insert a note at the cursor's location, then advance to
the next row (or otherwise according to the Edit Step.)
- note off (OFF) turns off the last played note in that channel (key off for FM/hardware envel‐
ope; note cut otherwise).
- note release (===) triggers macro release (and in FM/hardware envelope channels it also
triggers key off).
- macro release (REL) does the same as above, but does not trigger key off in FM/hardware en‐
velope channels.
- toggle edit enables and disables editing. when editing is enabled, the cursor's row will be
shaded red.
instrument/volume input
type any hexadecimal number (0-9 and A-F). the cursor will move by the Edit Step when a suitable
value is entered.
effect input
works like the instrument/volume input.
each effect column has two subcolumns: effect and effect value.
if the effect value is not present, it is treated as 00.
most effects run until canceled using an effect of the same type with effect value 00, with some
exceptions.
Furnace manual 71
keyboard shortcuts
these are the default key functions. all keys are configurable in the Keyboard tab of the Settings
window.
KEY ACTION
Up/Down move cursor up/down by one row or the Edit Step (configurable)
Left/Right move cursor left/right
PageUp move cursor up by 16 rows
PageDown move cursor down by 16 rows
Home move cursor to beginning of pattern
End move cursor to end of pattern
Shift-Home move cursor up by exactly one row, overriding Edit Step
Shift-End move cursor down by exactly one row, overriding Edit Step
Shift-Up expand selection upwards
Shift-Down expand selection downwards
Shift-Left expand selection to the left
Shift-Right expand selection to the right
Backspace delete note at cursor and/or pull pattern upwards (configurable)
Delete delete selection
Insert create blank row at cursor position and push pattern
Ctrl-A auto-expand selection (select all)
Ctrl-X cut selection
Ctrl-C copy selection
Ctrl-V paste selection
Ctrl-Z undo
Ctrl-Y redo
Ctrl-F1 transpose selection (-1 semitone)
Ctrl-F2 transpose selection (+1 semitone)
Ctrl-F3 transpose selection (-1 octave)
Ctrl-F4 transpose selection (+1 octave)
Space toggle note input (edit)
72
effect list
some of the effect numbers are taken from ProTracker / FastTracker 2.
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.
volume
- 0Axy: Volume slide.
- 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.
- 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.
- F8xx: Single tick volume slide up. adds x to volume on first tick only.
- F9xx: Single tick volume slide down. subtracts x from volume on first tick only.
- 07xy: Tremolo. changes volume to be "wavy" with a sine LFO. x is the speed. y is the depth.
- tremolo is downward only.
- maximum tremolo depth is -60 volume steps.
pitch
- E5xx: Set pitch. 00 is -1 semitone, 80 is base pitch, FF is nearly +1 semitone.
- 01xx: Pitch slide up.
- 02xx: Pitch slide down.
- F1xx: Single tick pitch slide up.
- F2xx: Single tick pitch slide down.
- 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.
- E1xy: Note slide up. x is the speed, while y is how many semitones to slide up.
- E2xy: Note slide down. x is the speed, while y is how many semitones to slide down.
- EAxx: Toggle legato. while on, new notes instantly change the pitch of the currently playing
sound instead of starting it over.
- 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.
Furnace manual 73
- 00xy: Arpeggio. this effect produces a rapid cycle between the current note, the note plus x
semitones and the note plus y semitones.
- E0xx: Set arpeggio speed. this sets the number of ticks between arpeggio values. default is 1.
- 04xy: Vibrato. changes pitch to be "wavy" with a sine LFO. x is the speed, while y is the depth.
- maximum vibrato depth is ±1 semitone.
- E3xx: Set vibrato direction. xx may be one of the following:
- 00: up and down. default.
- 01: up only.
- 02: down only.
- E4xx: Set vibrato range in 1/16th of a semitone.
panning
not all chips support these effects.
- 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 chan‐
nel and y is the rear right one.
- 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).
- 8Axx: Set volume of rear right channel (from 00 to FF).
- 80xx: Set panning (linear). this effect behaves more like other trackers:
- 00 is left.
- 80 is center.
- FF is right.
time
- 09xx: Set speed/groove. if no grooves are defined, this sets speed. if alternating speeds are
active, this sets the first speed.
- 0Fxx: Set speed 2. during alternating speeds or a groove, this sets the second speed.
- Cxxx: Set tick rate. changes tick rate to xxx Hz (ticks per second).
- xxx may be from 000 to 3FF.
- F0xx: Set BPM. changes tick rate according to beats per minute. range is 01 to FF.
- 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.
- 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.
74
- 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.
- FFxx: Stop song. stops playback and ends the song. x is ignored.
note
- 0Cxx: Retrigger. repeats current note every xx ticks.
- this effect is not continuous; it must be entered on every row.
- ECxx: Note cut. triggers note off after xx ticks. this triggers key off in FM/hardware envelope
chips, or cuts note otherwise.
- EDxx: Note delay. delays note by x ticks.
- 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.
sample offset
these effects make the current playing sample on the channel jump to a specific position.
only some chips support this effect.
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.
other
- EBxx: Set LEGACY sample mode bank. selects sample bank. used only for compatibility.
- does not apply on Amiga.
- EExx: Send external command.
- this effect is currently incomplete.
- F5xx: Disable macro.
- F6xx: Enable macro.
- F7xx: Restart macro.
- see macro table at the end of this document for possible values.
Furnace manual 75
macro table
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
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
76
ID MACRO
2F KSL
30 SUS
31 VIB
32 WS
33 KSR
40 operator 2 macros
60 operator 3 macros
80 operator 4 macros
the interpretation of duty, wave and extra macros depends on chip/instrument type:
Furnace manual 77
EX SAA1099 X1-010 NAMCO 163 FDS SOUND UNIT ES5506 MSM6258
6 EnvRampK1
7 EnvRampK2
8 Env Mode
EX QSOUND SNES MSM5232
78
instrument editor
the instrument editor allows you to edit instruments.
it can be activated by double-clicking on an instrument in the instrument list.
main
instrument types
the following instrument types are available:
Furnace manual 79
- FM (OPL)109 - for use with YM3526 (OPL), YM3812 (OPL2) and YMF262 (OPL3).
- FM (OPLL)109 - for use with YM2413.
- FM (OPM)112 - for use with YM2151.
- FM (OPN)115 - for use with YM2612, YM2203, YM2608, YM2610 and YM2610B.
- FM (OPZ)118 - for use with YM2414.
- GA20121 - for use with GA20 sample chip.
- Game Boy Advance DMA124 - for use with Game Boy Advance in direct mode.
- Game Boy Advance MinMod125 - for use with Game Boy Advance with the MinMod software
mixing driver.
- Game Boy122 - for use with Game Boy APU.
- Generic Sample148 for controlling Amiga and other sample channels/chips like YM2612's Chan‐
nel 6 PCM mode, NES channel 5, Sega PCM, X1-010 and PC Engine's sample playback mode.
- K007232126 - for use with K007232 sample chip.
- K053260127 - for use with K053260 sample chip.
- Konami SCC/Bubble System WSG149 - for use with Konami SCC and Wavetable portion in
Bubble System's sound hardware.
- MSM5232130 - for use with MSM5232 PSG sound source.
- MSM6258131 - for use with MSM6258 sample chip.
- MSM6295132 - for use with MSM6295 sample chip.
- Namco 163133 - for use with Namco 163.
- Namco WSG168 - for use with Namco WSG wavetable chips, including C15 and C30.
- NES135 - for use with NES.
- PC Engine137 - for use with PC Engine's wavetable synthesizer.
- PET138 - for use with Commodore PET.
- Pokémon Mini/QuadTone139 - for use with these systems.
- POKEY140 - for use with Atari 8-bit computers and their POKEY sound source.
- PowerNoise141 - for use with PowerNoise chip.
- PV-1000144 - for use with Casio PV-1000.
- QSound145 - for use with QSound sample chip.
- RF5C68146 - for use with RF5C68 sample chip.
- SAA1099147 - for use with Philips SAA1099 PSG sound source.
- SegaPCM150 - for use with SegaPCM sample chip.
- Seta/Allumer X1-010169 - for use with Wavetable portion in Seta/Allumer X1-010.
- SID2151 - for use with SID2 fantasy chip.
- SM8521153 - for use with SM8521 chip, used in Tiger [Link].
- SN76489/Sega PSG143 - for use with TI SN76489 and derivatives like Sega Master System's
PSG.
- SNES154 - for use with SNES.
- Sound Unit156 - for use with Sound Unit chip.
- T6W28158 - for use with Toshiba T6W28 PSG sound source.
- TED159 - for use with Commodore Plus/4 and Commodore 16's TED chip.
- TIA160 - for use with Atari 2600 chip.
- VERA161 - for use with Commander X16 VERA.
- VIC162 - for use with VIC-20 sound chip.
- Virtual Boy163 - for use with Virtual Boy.
- VRC6164 - for use with VRC6's PSG sound source.
- WonderSwan167 - for use with WonderSwan's wavetable synthesizer.
- YMZ280B170 - for use with YMZ280B sample chip.
80
macros
macros are incredibly versatile tools for automating instrument parameters.
after creating an instrument, open the Instrument Editor and select the "Macros" tab. there may be
multiple macro tabs to control individual FM operators and such.
the very first numeric entry sets the visible width of the bars in sequence-type macros. the scroll‐
bar affects the view of all macros at once. there is a matching scrollbar at the bottom underneath
all the macros.
macro types
there are three macro types:
Furnace manual 81
- LFO: Low Frequency Oscillator.
sequence
this is the most basic macro type. when the instrument is played, every value in the macro will be
output sequentially, from left to right.
82
the Length field allows you to set the number of steps in the sequence.
- press and hold the left mouse button to start drawing. release to stop drawing.
- press and hold the right mouse button to draw a line.
- the start point will be set to the cursor position.
- move the cursor to change the end point.
- release to finish drawing the line.
arpeggio and pitch macros may have values above or below the visible area. indicators will be
shown until they are scrolled into view.
Furnace manual 83
bitmask-style macros show labels for each of their bits. these are edited as toggles.
under the sequence view there is a bar that allows you to set loop and release points.
- click to set the loop start point; the end point is the last step or release point.
- right-click to remove the loop point.
- shift-click to set the release point.
- the macro will stop at the release point until the note is released (=== or REL).
- if the loop point is set, and it is placed before the release point, the macro will loop until
note release instead.
- shift-right-click to remove the release point.
arpeggio macros have an additional bar under the sequence view to set steps to "relative" or
"fixed":
the sequence can be edited in the text input field at the very bottom. the following symbols have
special meanings:
- |: loop point.
- /: release point.
- in arpeggio macros, @ prefixed to a value indicates that it is a fixed value as described above.
in bitmask-style macros, the values are added up in binary and converted to decimal.
the release mode parameter determines how macro release (=== or REL in the pattern) is handled:
84
ADSR
- Bottom and Top determine the macro's output range (Bottom can be larger than Top to invert
the envelope!). all outputs will be between these two values.
- Attack, Decay, Sustain, SusDecay, and Release accept inputs between 0 to 255. these are
scaled to the distance between Bottom and Top.
- the output starts at Bottom.
- Attack is how much the output moves toward Top with each tick.
- Hold sets how many ticks to stay at Top before Decay.
- Decay is how much the output moves to the Sustain level.
- Sustain is how far from Bottom the value stays while the note is on.
- SusTime is how many ticks to stay at Sustain until SusDecay.
- SusDecay is how much the output moves toward Bottom with each tick while the note is on.
- Release is how much the output moves toward Bottom with each tick after the note is re‐
leased.
Furnace manual 85
LFO
- Bottom and Top determine the macro's output range (Bottom can be larger than Top to invert
the waveform!).
- Speed is how quickly the LFO position moves.
- Phase defines the starting LFO position, measured in 1/1024 increments.
- Shape is the waveform of the LFO. there are three waveforms:
- Triangle: Bottom > Top > Bottom.
- Saw: moves from Bottom to Top, and then jumps back to Bottom.
- Square: alternates between Bottom and Top.
wavetable
this tab appears for PC Engine, FDS, Namco WSG, and other wavetable-based instruments.
86
when Enable synthesizer is off, the wavetable used for the instrument may be selected by creat‐
ing a Waveform macro with a single value.
to use the wavetable synthesizer, refer to the wavetable synthesizer section 165.
sample
this tab appears for Generic PCM DAC, Amiga and SNES.
Furnace manual 87
see the Generic Sample section148 for more information.
88
ADPCM-A instrument editor
the ADPCM-A instrument editor contains two tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Global Volume: sets the global volume of the ADPCM-A part.
- Panning: toggle left/right output.
- Phase Reset: trigger restart of sample.
Furnace manual 89
ADPCM-B instrument editor
the ADPCM-B instrument editor contains three tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning: toggle left/right output.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
90
AY-3-8910 instrument editor
the AY-3-8910 instrument editor consists of two tabs.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Noise Freq: noise generator frequency sequence.
- note: global!
- Waveform: selector of sound type - square wave tone, noise and/or envelope generator.
- you may select more than one option.
- Pitch: fine pitch.
- Phase Reset: trigger restart of envelope.
- Envelope: configures the hardware envelope.
- enable: sets whether envelope is enabled.
- direction: flips the envelope's direction.
- alternate: when enabled, the envelope will change direction once it hits a boundary.
- hold: sets whether the envelope should stop when hitting boundary, or loop.
- AutoEnv Num: sets the envelope to the channel's frequency multiplied by numerator.
- AutoEnv Den: sets the envelope to the channel's frequency multiplied by denominator.
- these two must be set in order for AutoEnv to work!
Furnace manual 91
AY8930 instrument editor
the AY8930 instrument editor consists of two tabs.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Noise Freq: noise generator frequency sequence.
- note: global!
- Waveform: selector of sound type - square wave tone, noise and/or envelope generator.
- you may select more than one option.
- Pitch: fine pitch.
- Phase Reset: trigger restart of envelope.
- Duty: duty cycle sequence.
- Envelope: configures the hardware envelope.
- enable: sets whether envelope is enabled.
- direction: flips the envelope's direction.
- alternate: when enabled, the envelope will change direction once it hits a boundary.
- hold: sets whether the envelope should stop when hitting boundary, or loop.
- AutoEnv Num: sets the envelope to the channel's frequency multiplied by numerator.
- AutoEnv Den: sets the envelope to the channel's frequency multiplied by denominator.
- these two must be set in order for AutoEnv to work!
- Noise AND Mask: alters the shape/frequency of the noise generator, allowing to produce vari‐
ous interesting sound effects and even PWM phasing.
- Noise OR Mask: see above.
92
beeper instrument editor
used in PC Speaker and ZX Spectrum (SFX-like engine).
Furnace manual 93
Bifurcator instrument editor
Bifurcator instrument editor consists of these macros:
r = (1 + (p / 65536)) * 2
x = (r * x) * (1 - x)
by varying the parameter, the value of x may change drastically, producing a variety of sounds.
the higher the parameter, the more "chaos" is present, effectively yielding noise.
94
Namco C140 instrument
editor
the Namco C140 instrument editor contains two tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
Furnace manual 95
Namco C219 instrument
editor
the Namco C219 instrument editor contains two tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Control: channel control sequence:
- surround: invert the right output for a surround effect.
- invert: invert both outputs. when used together with surround, this inverts just the left output.
- noise: toggles noise mode.
- setting control bits restart the sample!
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
96
C64 SID instrument editor
the C64 instrument editor consists of two tabs: "C64" to control various parameters of sound
channels, and "Macros" containing several macros.
C64
- Waveform: allows selecting a waveform.
- more than one waveform can be selected at once. in that case a logical AND mix of waves will
occur...
- due to hardware flaws, the mixing is a bit weird and sounds different between the 6581 and
the 8580.
- noise is an exception. it cannot be used with any of the other waveforms.
- Attack: determines the rising time for the sound. the bigger the value, the slower the attack. (0
to 15).
- Decay: determines the diminishing time for the sound. the higher the value, the longer the de‐
cay (0 to 15).
- Sustain: sets the volume level at which the sound stops decaying and holds steady (0 to 15).
- Release: determines the rate at which the sound fades out after note off. the higher the value,
the longer the release (0 to 15).
- Duty: specifies the width of a pulse wave (0 to 4095).
- Ring Modulation: when enabled, the channel's output will be multiplied with the previous
channel's.
- Oscillator Sync: enables oscillator hard sync. as the previous channel's oscillator finishes a
cycle, it resets the period of the channel's oscillator, forcing the latter to have the same base
frequency. this can produce a harmonically rich sound, the timbre of which can be altered by
varying the synchronized oscillator's frequency.
- Enable filter: when enabled, this instrument will go through the filter.
- Initialize filter: initializes the filter with the specified parameters:
- Cutoff: the filter's point in where frequencies are cut off (0 to 2047).
- Resonance: amplifies or focuses on the cutoff frequency, creating a secondary peak forms and
colors the original pitch (0 to 15).
- Filter mode: sets the filter mode. you may pick one or more of the following:
- low: a low-pass filter. the lower the cutoff, the darker the sound.
- high: a high-pass filter. higher cutoff values result in a less "bassy" sound.
- band: a band-pass filter. cutoff determines which part of the sound is heard (from bass to
treble).
- ch3off: mutes channel 3 when enabled. it was originally planned for usage with two re‐
gisters where program could read current oscillator and envelope outputs, thus making vi‐
brato and SFX generation easier. but who wanted to sacrifice one channel out of three! so
aforementioned was just done in software, and the feature was never used.
- multiple filter modes can be selected simultaneously. for example, selecting both "low" and
"high" results in a bandstop (notch) filter.
- Absolute Cutoff Macro: when enabled, the cutoff macro will go from 0 to 2047, and it will be
absolute (in other words, control the cutoff directly rather than being relative).
- Absolute Duty Macro: when enabled, the duty macro will go from 0 to 4095.
- Don't test before new note: this option disables the one-tick hard reset and test bit before a
new note.
Furnace manual 97
Macros
- Volume: volume sequence.
- warning: volume sequence is global! this means it controls the chip's volume and therefore af‐
fects all channels.
- Arpeggio: pitch sequence.
- Duty: pulse width sequence.
- Waveform: select the waveform used by instrument.
- Pitch: fine pitch.
- Cutoff: filter cutoff.
- Filter mode: select the filter mode.
- Resonance: filter resonance sequence.
- Special: ring and oscillator sync selector, as well as:
- gate bit:
- set (1): key on. if previous state was 0 it triggers envelope start/restart; if previous state
was 1, it does nothing.
- reset (0): key off. if previous state was 1 it triggers envelope release; if previous state was 0,
it does nothing.
- test bit:
- set (1): immediately mute channel
- if the channel is a source of ring mod and/or hard sync, those stop working until the bit is
reset.
- reset (0): unmute channel and restore ring mod/hard sync.
- Attack: sets envelope attack speed.
- if you modify attack speed when the envelope is in attack phase it immediately changes.
- Decay: sets envelope decay speed.
- if you modify decay speed when envelope is in decay phase it immediately changes.
- Sustain: sets envelope sustain level.
- if you modify sustain level when envelope is in sustain phase it immediately changes, although
you can only go down. for example, 9-to-8 and 8-to-8 both work, but 8-to-9 immediately mutes
the channel.
- Release: sets envelope release speed.
- if you modify release speed when envelope is in release phase it immediately changes.
98
Dave instrument editor
the Dave instrument editor consists of these macros:
Furnace manual 99
Ensoniq ES5506 instrument
editor
the ES5506 instrument editor contains three tabs: Sample, ES5506 and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
ES5506
ES5506 contains a filter, which is somewhat configurable.
there's also a hardware envelope, but it's probably most useful for smoothing.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Filter Mode: sets filter mode.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
- Filter K1: K1 sequence.
- Filter K2: K2 sequence.
- Outputs: ES5506 has 6 stereo output (total 12). select which pair of outputs to use.
- Control: reverse/pause sequence.
100
FDS instrument editor
the FDS instrument editor contains three tabs: FDS, Wavetable and Macros.
FDS
here you can edit FDS-specific settings.
- Compatibility mode: DO NOT ENABLE. this exists for DefleMask compatibility. leave it alone.
- Modulation depth: sets frequency modulation depth.
- Modulation speed: sets frequency modulation speed.
- Modulation table: this allows you to define a waveform for frequency modulation.
- the range is -4 to 3.
- a value of -4 will reset the modulator.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Waveform: wavetable sequence.
- Pitch: fine pitch.
- Mod Depth: modulation depth.
- Mod Speed: modulation speed.
- Mod Position: sets position of modulator.
FM
ESFM is four-operator, meaning it takes four oscillators to produce a single sound.
unlike most four-operator FM synthesizers, however, ESFM does not have an algorithm selection.
instead, it uses a fixed operator arrangement, but allows you to independently control the output
and modulation input levels of each operator. this allows it to reproduce a few common four-oper‐
ator algorithms, as well as unique combinations where operators act as modulators and carriers at
the same time.
- OP4 Noise Mode: determines the mode used to produce noise in operator 4.
- Normal: noise is disabled.
- Snare: takes the snare noise generation mode from OPL. square + noise.
- HiHat: ring modulates with operator 3 and adds noise.
- Top: ring modulates with operator 3 and double pitch modulation input.
- these are normally used for the drum channels in ESFM's OPL3 compatibility mode.
- however, in ESFM, operator 4 can be modulated by operator 3, whereas in OPL3 drum mode
the rhythm channels cannot be modulated.
- note: usage of noise mode "Top" is discouraged for now as it is not properly emulated yet, and
results may change when the emulation gets fixed in the future.
- operator routing preview: shows how operators are connected with each other and with the
audio output (at the bottom).
- left-click pops up a small "operators changes with volume?" dialog where each operator can
be toggled to scale with volume level.
- right-click switches to a preview display of the waveform generated on a new note:
- left-click restarts the preview.
- middle-click pauses and unpauses the preview.
- right-click returns to algorithm view.
102
- Envelope Delay (DL): determines the delay time before the envelope is triggered. the bigger
the value, the longer the delay (0 to 7).
- a change of one unit doubles or halves the delay time.
- a value of 0 results in no delay.
- Attack Rate (AR): determines the rising time for the sound. the bigger the value, the faster the
attack (0 to 15).
- Decay Rate (DR): determines the diminishing time for the sound. the higher the value, the
shorter the decay. it's the initial amplitude decay rate (0 to 15).
- Sustain Level (SL): determines the point at which the sound ceases to decay and changes to a
sound having a constant level. the sustain level is expressed as a fraction of the maximum level
(0 to 15).
- Release Rate (RR): determines the rate at which the sound disappears after note off. the
higher the value, the shorter the release (0 to 15).
- Total Level (TL): represents the envelope’s highest amplitude, with 0 being the largest and 63
(decimal) the smallest. a change of one unit is about 0.75 dB.
- Key Scale Level (KSL): also known as "Level Scale". determines the degree to which the amp‐
litude decreases according to the pitch.
- Key Scale Rate (KSR): also known as "Rate Scale". determines the degree to which the envel‐
ope execution speed increases according to the pitch.
- Frequency Multiplier (MULT): sets the coarse pitch offset in relation to the note (0 to 15). the
values follow the harmonic scale. for example, 0 is -1 octave, 1 is 0 octaves, 2 is 1 octave, 3 is 1
octave 7 semitones, and so on.
- note that values 11, 13 and 14 behave as 10, 12 and 15 respectively.
- Tune (CT): sets the semitone offset in relation to the note (-24 to 24).
- this is a software effect.
- Fine Detune (DT): shifts the pitch in fine steps (-128 to 127). 0 is the base pitch, -128 is -1
semitone, 127 is nearly +1 semitone.
- this is a software effect.
- Left (L): toggles output to the left channel from the operator to the audio output.
- Right (R): toggles output to the right channel from the operator to the audio output.
- Waveform Select (WS): changes the waveform of the operator (0 to 7).
- Vibrato (VIB): makes the operator affected by LFO vibrato.
routing controls
- Output Level (OL): sets the output level from this operator to the audio output (0 to 7).
- 7 is the loudest level and 1 is the softest, while 0 disables audio output.
- a change of one unit is about 6 dB.
- this output scaling factor is applied after TL and envelope scaling have been performed.
- Modulation Input Level (MI): sets the modulation level from the previous operator to this op‐
erator (0 to 7).
- 7 is the strongest level and 1 is the weakest, while 0 disables modulation.
- a change of one unit is about 6 dB.
- for operator 1 this controls the feedback level.
- this modulation scaling factor is applied after the previous operator's TL and envelope scaling
have been performed, but is unaffected by OL above.
common algorithms
this table contains a list of modulation input/output level values which resemble common al‐
gorithms in Yamaha FM chips.
OPN algorithm 0 0 7 0 7 0 7 7
OPN algorithm 4 0 7 7 0 0 7 7
OPN algorithm 6 0 7 7 0 7 0 7
OPN algorithm 7 7 0 7 0 7 0 7
OPL3 algorithm 1 7 0 0 7 0 7 7
OPL3 algorithm 3 7 0 0 7 7 0 7
OPL3 algorithm 1 (variant) 0 7 0 7 7 0 7
#### fixed frequency mode
each operator has a Fixed Frequency mode. once enabled, the operator runs at the specified fre‐
quency regardless of the note.
when fixed frequency mode is enabled, the Tune and Fine Detune sliders will be replaced by Block
(Blk) and FreqNum (F), which allow you to input a raw frequency value into the operator.
the actual frequency is determined by the formula: FreqNum*(2^Block).
in other words, FreqNum defines the base frequency, while Block determines the scaling factor in
octaves.
macros
these macros allow you to control several parameters of FM per tick.
104
OP1-OP4 Macros
most parameters are listed above.
note that the macro cannot exceed 659.1 ms in length - anything beyond that will be treated as a
value of 0.
the Tune and Fine Detune FM parameters are still respected when using these macros.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- OP4 Noise Mode: operator 4 noise mode sequence.
- Panning: enables output on left/right channels.
- note that each operator also has its own pan controls, which get masked by this global pan
control.
- Pitch: fine pitch.
- Relative: when enabled, pitch changes are relative to the current pitch.
- Phase Reset: restarts all operators and resets the waveform to its start.
FM
the OPL synthesizers are nominally two-operator (OPL3 supports 4-operator mode on up to six
channels), meaning it takes two oscillators to produce a single sound.
- Algorithm (ALG): determines how operators are connected to each other (0-1 range and OPL1
and OPL2; 0-3 range on OPL3 4op mode).
- left-click pops up a small "operators changes with volume?" dialog where each operator can
be toggled to scale with volume level.
- right-click to switch to a preview display of the waveform generated on a new note:
- left-click restarts the preview.
- middle-click pauses and unpauses the preview.
- right-click returns to algorithm view.
- Feedback (FB): determines how many times operator 1 returns its output to itself (0 to 7).
- 4-op: enables 4-operator FM instrument editor mode (only on OPL3).
- Drums: enables OPL drum mode editor.
106
- Release Rate (RR): determines the rate at which the sound disappears after note off. the
higher the value, the shorter the release (0 to 15).
- Total Level (TL): represents the envelope’s highest amplitude, with 0 being the largest and 63
(decimal) the smallest. a change of one unit is about 0.75 dB.
- Key Scale Level (KSL): also known as "Level Scale". determines the degree to which the amp‐
litude decreases according to the pitch.
- Key Scale Rate (KSR): also known as "Rate Scale". determines the degree to which the envel‐
ope execution speed increases according to the pitch.
- Frequency Multiplier (MULT): sets the coarse pitch offset in relation to the note (0 to 15). the
values follow the harmonic scale. for example, 0 is -1 octave, 1 is 0 octaves, 2 is 1 octave, 3 is 1
octave 7 semitones, and so on.
- note that values 11, 13 and 14 behave as 10, 12 and 12 respectively.
- Waveform Select (WS): changes the waveform of the operator (OPL2 and OPL3 only, 0-3
range on OPL2 and 0-7 on OPL3).
- Vibrato (VIB): makes the operator affected by LFO vibrato.
macros
these macros allow you to control several parameters of FM per tick.
FM Macros
all parameters are listed above.
OP1-OP4 Macros
all parameters are listed above.
108
OPLL FM synthesis
instrument editor
the OPLL FM editor is divided into 5 tabs:
FM
the OPLL synthesizer is two-operator, meaning it takes two oscillators to produce a single sound.
however, unlike the other FM chips, only one custom patch may be set at a time, shared among all
9 channels.
but don't worry! there also are 15 preset patches that you may select at any time.
- Feedback (FB): determines how many times operator 1 returns its output to itself (0 to 7).
- Sustain (SUS): enables the sustain flag (sets the release rate to 5).
- DC (half-sine carrier): sets the waveform produced by carrier operator to half-sine.
- DM (half-sine modulator): sets the waveform produced by modulator operator to half-sine.
- preset dropdown: selects OPLL preset instrument.
- this is the selector for the preset patches I mentioned before.
- once a preset patch is selected, only the volume is configurable.
- only one user-specified patch may be applied at a time!
if you select the special Drums patch, you may use the instrument in Drums mode of OPLL. an extra
setting also appears:
- Fixed frequency mode: allows you to set a fixed frequency for the drum channels.
- Envelope Scale (KSR): also known as "Key Scale". determines the degree to which the envelope
execution speed increases according to the pitch.
- Frequency Multiplier (MULT): sets the coarse pitch offset in relation to the note (0 to 15). the
values follow the harmonic scale. for example, 0 is -1 octave, 1 is 0 octaves, 2 is 1 octave, 3 is 1
octave 7 semitones, and so on.
- note that values 11, 13 and 14 behave as 10, 12 and 12 respectively.
- Vibrato (VIB): makes the operator affected by LFO vibrato.
macros
these macros allow you to control several parameters of FM per tick.
FM Macros
all parameters are listed above.
OP1-OP4 Macros
all parameters are listed above.
Macros
- Arpeggio: pitch change sequence.
110
- Patch: changes the playing preset mid-note.
- through use of this macro, you may unlock different glitched sounds. useful for distortion gui‐
tars!
- Pitch: fine pitch.
- Relative: when enabled, pitch changes are relative to the current pitch.
- Phase Reset: restarts all operators and resets the waveform to its start.
links
FM instrument tutorial ([Link] : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.
FM
OPM is four-operator, meaning it takes four oscillators to produce a single sound.
- Feedback (FB): determines how many times operator 1 returns its output to itself (0 to 7).
- Algorithm (ALG): determines how operators are connected to each other (0 to 7).
- left-click pops up a small "operators changes with volume?" dialog where each operator can
be toggled to scale with volume level.
- right-click to switch to a preview display of the waveform generated on a new note:
- left-click restarts the preview.
- middle-click pauses and unpauses the preview.
- right-click returns to algorithm view.
- LFO > Freq (FMS): determines how much will LFO have an effect in frequency (0 to 7).
- LFO > Amp (AMS): determines how much will LFO have an effect in volume (0 to 3).
- only applies to operators which have AM turned on.
112
- Envelope Scale (RS/KS): also known as "Key Scale" or "Rate Scale". determines the degree to
which the envelope execution speed increases according to the pitch (0 to 3).
- Frequency Multiplier (MULT): sets the coarse pitch offset in relation to the note (0 to 15). the
values follow the harmonic scale. for example, 0 is -1 octave, 1 is 0 octaves, 2 is 1 octave, 3 is 1
octave 7 semitones, and so on.
- Fine Detune (DT): shifts the pitch a little (0 to 7).
- Coarse Detune (DT2): shifts the pitch by tens of cents (0 to 3).
macros
these macros allow you to control several parameters of FM per tick.
FM Macros
- AM Depth: amplitude modulation depth.
- PM Depth: pitch modulation depth.
- LFO Speed: LFO frequency.
- LFO Shape: LFO shape. choose between saw, square, triangle, and random.
- OpMask: toggles each operator.
OP1-OP4 Macros
all parameters are listed above.
Macros
- Arpeggio: pitch sequence.
- Noise Frequency: specifies the noise frequency.
- this only applies to operator 4 of channel 8!
- Panning: toggles output on left and right channels.
links
FM instrument tutorial ([Link] : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.
114
FM (OPN) instrument editor
the FM editor is divided into 7 tabs:
FM
OPN is four-operator, meaning it takes four oscillators to produce a single sound.
- Algorithm (ALG): determines how operators are connected to each other (0 to 7).
- left-click pops up a small "operators changes with volume?" dialog where each operator can
be toggled to scale with volume level.
- right-click to switch to a preview display of the waveform generated on a new note:
- left-click restarts the preview.
- middle-click pauses and unpauses the preview.
- right-click returns to algorithm view.
- Feedback (FB): determines how many times operator 1 returns its output to itself (0 to 7).
- LFO > Freq (FMS): determines how much will LFO have an effect in frequency (0 to 7).
- LFO > Amp (AMS): determines how much will LFO have an effect in volume (0 to 3).
- only applies to operators which have AM turned on.
- does not apply to YM2203.
- Envelope Scale (RS/KS): also known as "Key Scale" or "Rate Scale". determines the degree to
which the envelope execution speed increases according to the pitch (0 to 3).
- Frequency Multiplier (MULT): sets the coarse pitch offset in relation to the note (0 to 15). the
values follow the harmonic scale. for example, 0 is -1 octave, 1 is 0 octaves, 2 is 1 octave, 3 is 1
octave 7 semitones, and so on.
- Fine Detune (DT): shifts the pitch a little (0 to 7).
macros
these macros allow you to control several parameters of FM per tick.
FM Macros
- LFO Speed: LFO frequency.
- OpMask: toggles each operator.
OP1-OP4 Macros
all parameters are listed above.
Macros
- Arpeggio: pitch change sequence in semitones.
- Panning: toggles output on left and right channels.
- Pitch: fine pitch.
- Relative: when enabled, pitch changes are relative to the current pitch.
116
- Phase Reset: restarts all operators and resets the waveform to its start.
links
FM instrument tutorial ([Link] : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.
FM
OPZ is four-operator, meaning it takes four oscillators to produce a single sound.
- Algorithm (ALG): determines how operators are connected to each other (0 to 7).
- left-click pops up a small "operators changes with volume?" dialog where each operator can
be toggled to scale with volume level.
- right-click to switch to a preview display of the waveform generated on a new note:
- left-click restarts the preview.
- middle-click pauses and unpauses the preview.
- right-click returns to algorithm view.
- Feedback (FB): determines how many times operator 1 returns its output to itself (0 to 7).
- LFO > Freq (FMS/PMS): determines how much will LFO have an effect in frequency (0 to 7).
- LFO > Amp (AM): determines how much will LFO have an effect in volume (0 to 3).
- LFO2 > Freq (FMS/PMS2): determines how much will the second LFO have an effect in fre‐
quency (0 to 7).
- LFO2 > Amp (AMS2): determines how much will the second LFO have an effect in volume (0 to
3).
- Request from TX81Z: if a Yamaha TX81Z is plugged in as MIDI input and output device, this
sends a SysEx to the device in order to fetch its current voice.
118
- Release Rate (RR): determines the rate at which the sound disappears after note off. the
higher the value, the shorter the release (0 to 15).
- Total Level (TL): represents the envelope’s highest amplitude, with 0 being the largest and 127
(decimal) the smallest. a change of one unit is about 0.75 dB.
- Envelope Scale (RS/KS): also known as "Rate Scale" or "Key Scale". determines the degree to
which the envelope execution speed increases according to the pitch (0 to 3).
- Frequency Multiplier (MULT): sets the coarse pitch offset in relation to the note (0 to 15). the
values follow the harmonic scale. for example, 0 is -1 octave, 1 is 0 octaves, 2 is 1 octave, 3 is 1
octave 7 semitones, and so on.
- Fine Frequency Multiplier (Fine): a fine control for MULT.
- Envelope Generator Shift (EGS): adds a "handicap" to the envelope. in other words, the min‐
imum volume of the operator.
- 0: no change
- 1: -12dB
- 2: -24dB
- 3: -48dB
- does not apply for OP4.
- Reverb (REV): not a true reverb. extends release time, giving a slight reverb-like effect to the
operator.
- Fine Detune (DT): shifts the pitch a little (0 to 7).
- Waveform Select (WS): changes the waveform of the operator.
- Coarse Detune (DT2): shifts the pitch by tens of cents (0 to 3).
macros
these macros allow you to control several parameters of FM per tick.
FM Macros
- AM Depth: amplitude modulation depth.
- PM Depth: pitch modulation depth.
- LFO Speed: LFO frequency.
- LFO Shape: LFO shape. choose between saw, square, triangle, and random.
- AM Depth 2: amplitude modulation depth (second LFO).
- PM Depth 2: pitch modulation depth (second LFO).
- LFO2 Speed: LFO 2 frequency.
- LFO2 Shape: LFO 2 shape. choose between saw, square, triangle, and random.
OP1-OP4 Macros
most parameters are listed above.
Macros
- Arpeggio: pitch change sequence in semitones.
- Noise Frequency: specifies the noise frequency.
- this only applies to operator 4 of channel 8!
- Panning: toggles output on left and right channels.
- Pitch: fine pitch.
- Relative: when enabled, pitch changes are relative to the current pitch.
- Phase Reset: restarts all operators and resets the waveform to its start. effectively the same
as a 0Cxx retrigger.
links
FM instrument tutorial ([Link] : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.
120
Irem GA20 instrument
editor
the GA20 instrument editor contains three tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
Game Boy
- Use software envelope: switch to volume macro instead of envelope.
- this exploits a bug in the Game Boy sound hardware in order to have software envelopes
("zombie mode").
- only a couple emulators have accurate reproduction of this bug.
- Initialize envelope on every note: forces a volume reset on each new note.
- Volume: initial channel volume (0 to 15).
- Length: envelope decay/attack duration (0 to 7)
- Sound Length: cuts off channel after specified length, overriding the Length value.
- Direction: up makes the envelope an attack. down makes it decay.
- note: for attack to have effect, start at a lower volume.
- Hardware Sequence: this allows you to define a sequence of hardware envelope changes for
creating complex envelopes. see the next section for more information.
hardware sequence
Furnace provides a sequencer for the hardware envelope. this way you can define timed envelope
changes which may be used for simulating ADSR, adding simple release, and other things.
the + button adds a new command, which may be one of the following:
- Envelope: sets envelope values and retriggers note. it is highly recommended to have this as
the first command.
- Sweep: sets sweep parameters. only works on the first channel.
- Wait: waits a specific number of ticks.
- Wait for Release: waits until the note is released with === or REL.
- Loop: goes to a previous position in the sequence.
- Loop until Release: same as Loop, but doesn't have effect after releasing the note.
- Tick: the tick this command will execute, followed by position in the sequence.
- Command: the command and its parameters.
- Move/Remove: allows you to move the command, or remove it.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
122
notes:
Macros
- Volume: volume sequence.
- note: this only appears if "Use software envelope" is checked.
- Arpeggio: pitch sequence.
- Duty/Noise: pulse wave duty cycle or noise mode sequence.
- Waveform: channel 3 wavetable sequence.
- Panning: output for left and right channels.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Waveform: waveform sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
124
GBA MinMod instrument
editor
the GBA MinMod instrument editor contains two tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Waveform: waveform sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
- Special: invert outputs.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
126
K053260 instrument editor
the K053260 instrument editor contains three tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning: stereo panning sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Duty/Int: bit pattern for LFSR taps and integration.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform/LFSR reset.
LFSR-based synthesis
a linear-feedback shift register is one method used for random number generation.
it works by shifting a sequence of binary numbers (bits), taking the last bit into the output. then
some of the bits are combined with others, doing a XOR (exclusive or) operation and then being
pushed back.
think of it as a conveyor carrying glass bottles. each bottle may be empty or carrying water.
the bottle at the end is taken. if there's water, then the output is 1. if it's empty, the output is 0.
depending on the LFSR configuration, many bottles at specific positions ("taps") are looked at.
these are combined from left to right, two by two:
unlike PowerNoise, Lynx's taps are in fixed positions, but it has many of them.
128
square wave
the LFSR is shifted at the rate define by sound pitch and generates square wave by setting channel
output value to +volume or -volume, depending on the bit shifted in.
triangle wave
alternatively when "int" bit is set sound wave is generated by adding or subtracting volume from
output effectively producing triangle wave.
hint: to obtain triangle set bits "int" and "11" in "Duty/Int" sequence and set volume to about 22.
by enabling 11th tap bit the value shifted in is negated after 11 bit is shifted in hence the volume is
added for 11 cycles and then subtracted for 11 cycles.
130
MSM6258 instrument editor
the MSM6258 instrument editor contains two tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Frequency Divider: selects the frequency divider for the output.
- 0: divide by 512.
- 1: divide by 768.
- 2: divide by 1024.
- Panning: toggle left/right output.
- Phase Reset: trigger restart of sample.
- Clock Divider: clock divider sequence. when it is 1, the clock is divided by half.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Frequency Divider: selects the frequency divider for the output.
- 0: divide by 132.
- 1: divide by 165.
- Phase Reset: trigger restart of sample.
132
Namco 163 instrument
editor
the Namco 163 instrument editor consists of three tabs: "Namco 163" for control of various wave‐
form parameters, "Wavetable" for control of the wave synth and "Macro" containing several mac‐
ros.
Namco 163
- Load waveform: if enabled, a waveform will be loaded when this instrument plays.
- if it isn't then only the position/length change.
- Waveform: determines the waveform that will be loaded.
- only appears when Load waveform is enabled.
- Per-channel wave position/length: when enabled, the position/length settings are split per
channel.
- Position: determines the waveform position in RAM.
- Length: determines the waveform length in RAM.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
note that setting the Update Rate to something greater than 1 and playing the instrument in two
channels may result in conflicts.
Macros
- Volume: volume levels sequence.
- Arpeggio: pitch sequence.
- Wave Pos: sets waveform seek position in RAM.
- Waveform: sets waveform.
- Pitch: fine pitch.
- Wave Length: sets waveform length.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Duty: pulse width sequence.
- only in PSG channels.
- Panning: left/right balance sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
134
NES instrument editor
the NES instrument editor consists of two tabs.
DPCM
this tab is somewhat similar to the Sample instrument editor 148, but it has been tailored for use
with NES' DPCM channel.
sample map
the sample map allows you to set a sample for each note.
after enabling this option, a table appears with the contents of the sample map.
you may right-click anywhere in the number, pitch and delta columns for additional options:
- set entire map to this pitch: sets the DPCM pitch of all notes to the selected cell's.
- set entire map to this delta counter value: sets the initial delta counter value of all notes to
the selected cell's.
- set entire map to this sample: sets the sample number of all notes to the selected cell's.
- reset pitches: resets the sample map's DPCM pitches to defaults (15).
- clear delta counter values: removes all delta counter values from the map.
- clear map samples: removes all samples from the map.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Duty/Noise: duty cycle and noise mode.
136
NEC PC Engine instrument
editor
the PCE instrument editor contains three tabs: Sample, Wavetable and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
note: on PC Engine, using the wave synth may result in clicking and/or phase resets. by default
Furnace attempts to mitigate this problem though.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Noise: enable noise mode.
- only on channels 5 and 6.
- Waveform: wavetable sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
138
Pokémon Mini/QuadTone
instrument editor
used in these two chips/systems. these macros are available:
140
PowerNoise instrument
editor
the PowerNoise instrument editor consists of two tabs.
LFSR-based synthesis
PowerNoise employs LFSR-based synthesis for the noise channels, using linear-feedback shift re‐
gisters for sound generation.
a linear-feedback shift register is one method used for random number generation.
it works by shifting a sequence of binary numbers (bits), taking the last bit into the output. then
one of the bits is either pushed back into the register, or combined with another, doing a XOR (ex‐
clusive or) operation and then being pushed back.
think of it as a conveyor carrying glass bottles. each bottle may be empty or carrying water.
the bottle at the end is taken. if there's water, then the output is 1. if it's empty, the output is 0.
depending on the LFSR configuration:
- a bottle is pushed into the conveyor. it is either empty or filled with water depending on the
bottle at a specific position in the conveyor (this is called a "tap"), or
- two bottles at specific positions ("taps") are looked at and combined as follows:
- if the bottles are identical, an empty bottle is pushed.
- if one bottle has water but the other is empty, a water bottle is pushed.
the process is repeated indefinitely.
PowerNoise uses either one or two taps for the LFSR, configurable via the Control macro.
the LFSR must be initialized before it can produce sound. the Load LFSR macro allows you to do so.
by default the LFSR is configured to produce square waves, by having a single tap in position 1 and
an alternating LFSR pattern.
Macros (noise)
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger reloading the LFSR.
- Control: channel settings:
- slope AM: when enabled, this channel's output and the slope channel go through amplitude
modulation.
- tap B: enables use of two taps for the LFSR.
- Tap A Location: sets the position of the first tap.
PowerNoise tab
this tab allows you to change the base octave - important when you have set a longer LFSR pat‐
tern.
the slope channel uses two "portions" - each with length, offset, invert and clip parameters.
the channel alternates between these portions as it is cycled.
on every cycle, the offset of the current portion is either added or subtracted into the accumulator
(depending on the invert parameter), effectively behaving like a multiplier.
if the clip parameter is enabled, this will make sure the accumulator doesn't go past 0 or 127 (de‐
pending on the invert parameter, again). otherwise, the accumulator will be ANDed with 127.
once an amount of cycles set by the portion length parameter have elapsed, the channel switches
into the other portion.
Macros (slope)
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Control: channel settings:
- clip A: sets clip parameter of first portion.
- clip B: sets clip parameter of second portion.
- reset A: resets the first portion.
- reset B: resets the second portion.
- invert A: sets invert parameter of first portion.
- invert B: sets invert parameter of second portion.
- Portion A Length: sets the duration of the first portion.
- Portion B Length: sets the duration of the second portion.
- Portion A Offset: sets the accumulator speed of the first portion.
- Portion B Offset: sets the accumulator speed of the second portion.
142
Sega PSG instrument editor
the instrument editor for Sega PSG (SMS, and other TI SN76489 derivatives) consists of these mac‐
ros:
144
Capcom QSound instrument
editor
the QSound instrument editor contains two tabs: Sample and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Echo Level: echo wet volume sequence.
- Panning: stereo panning sequence.
- Surround: toggles whether QSound algorithm is enabled.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
- Echo Feedback: echo feedback sequence.
- note: global!
- Echo Length: echo length sequence.
- note: global!
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
146
Philips SAA1099 instrument
editor
the SAA1099 instrument editor consists of these macros:
Sample
- Sample: specifies which sample should be assigned to the instrument.
- Use wavetable: uses wavetable instead of a sample.
- only available in Amiga and Generic PCM DAC.
- Use sample map: enables mapping different samples to notes. see next section for more in‐
formation.
sample map
the sample map allows you to set a sample for each note. this can be used to create more realistic
instruments, split key instruments, drum kits and more.
after enabling this option, a table appears with the contents of the sample map.
you may right-click anywhere in the number and note columns for additional options:
- set entire map to this note: sets the note number of all notes to the selected cell's.
- set entire map to this sample: sets the sample number of all notes to the selected cell's.
- reset notes: resets the sample map's notes to defaults (a chromatic scale).
- clear map samples: removes all samples from the map.
Macros
- Volume: volume sequence. does not apply to some chips.
- Arpeggio: pitch sequence.
- Waveform: waveform sequence.
- only appears when "Use wavetable" is enabled.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
148
Konami SCC/Bubble System
WSG instrument editor
the SCC/Bubble System WSG instrument editor consists of two tabs.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
be noted that channel 4 and 5 share the same waveform on SCC (non-plus). careful.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Waveform: specifies wavetable.
- Pitch: fine pitch.
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
150
SID2 instrument editor
the SID2 instrument editor consists of two tabs: "SID2" to control various parameters of sound
channels, and "Macros" containing several macros.
SID2
- Waveform: allows selecting a waveform.
- more than one waveform can be selected at once. in that case a logical AND mix of waves will
occur...
- although with default mix mode it does occur a bit wrong (like on 8580 SID chip). see below
what happens when other modes are in use.
- noise is an exception. it cannot be used with any of the other waveforms.
- again, only when default mix mode is on.
- Attack: determines the rising time for the sound. the bigger the value, the slower the attack. (0
to 15).
- Decay: determines the diminishing time for the sound. the higher the value, the longer the de‐
cay (0 to 15).
- Sustain: sets the volume level at which the sound stops decaying and holds steady (0 to 15).
- Release: determines the rate at which the sound fades out after note off. the higher the value,
the longer the release (0 to 15).
- Duty: specifies the width of a pulse wave (0 to 4095).
- Ring Modulation: when enabled, the channel's output will be multiplied with the previous
channel's.
- Oscillator Sync: enables oscillator hard sync. as the previous channel's oscillator finishes a
cycle, it resets the period of the channel's oscillator, forcing the latter to have the same base
frequency. this can produce a harmonically rich sound, the timbre of which can be altered by
varying the synchronized oscillator's frequency.
- Enable filter: when enabled, this instrument will go through the filter.
- Initialize filter: initializes the filter with the specified parameters:
- Cutoff: the filter's point in where frequencies are cut off (0 to 4095).
- Resonance: amplifies or focuses on the cutoff frequency, creating a secondary peak forms and
colors the original pitch (0 to 255).
- Filter mode: sets the filter mode. you may pick one or more of the following:
- low: a low-pass filter. the lower the cutoff, the darker the sound.
- high: a high-pass filter. higher cutoff values result in a less "bassy" sound.
- band: a band-pass filter. cutoff determines which part of the sound is heard (from bass to
treble).
- multiple filter modes can be selected simultaneously. for example, selecting both "low" and
"high" results in a bandstop (notch) filter.
- Noise Mode: dictates how noise behaves.
- 0 means usual "white" noise.
- 1-3 provide different tonal waves (in other words, small excerpts of noise are looped, creating
a wave with tonal sound). mode 1 provides more "pure" tonal sound while modes 2 and 3 provide
harsh, rich sounds, which can be further modified by filtering them.
- when only noise wave is enabled, frequency calculation is altered in a way that this noise wave
stays in tune, so wave can freely be used to play actual music.
- Wave Mix Mode: dictates how different waves on the same channel are mixed together.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Pitch: fine pitch.
- Duty: pulse width sequence.
- Waveform: select the waveform used by instrument.
- Phase Reset: trigger restart of envelope.
- Cutoff: filter cutoff.
- Filter Mode: select the filter mode.
- Filter Toggle: turns filter on and off.
- Resonance: filter resonance sequence.
- Special: ring and oscillator sync selector, as well as:
- gate bit:
- set (1): key on. if previous state was 0 it triggers envelope start/restart; if previous state
was 1, it does nothing.
- reset (0): key off. if previous state was 1 it triggers envelope release; if previous state was 0,
it does nothing.
- Attack: sets envelope attack speed.
- if you modify attack speed when the envelope is in attack phase it immediately changes.
- Decay: sets envelope decay speed.
- if you modify decay speed when envelope is in decay phase it immediately changes.
- Sustain: sets envelope sustain level.
- if you modify sustain level when envelope is in sustain phase it immediately changes. note
that, unlike SID chips, you can change sustain level in any direction (both 2->5 and 5->2 work
and do not trigger envelope release).
- Release: sets envelope release speed.
- if you modify release speed when envelope is in release phase it immediately changes.
- Noise Mode: select the noise mode.
- Wave Mix: select the waveform mix mode.
152
SM8521 instrument editor
the SM8521 instrument editor contains two tabs: Wavetable and Macros.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Waveform: wavetable sequence.
- Pitch: fine pitch.
Sample
for sample settings, see the Sample instrument editor 148.
SNES
Use envelope enables the ADSR volume envelope. if it is on:
- A: attack rate.
- D: decay rate.
- S: sustain level.
- D2: decay rate during sustain.
- only appears when Sustain/release mode is Effective or Delayed.
- R: release rate.
- Sustain/release mode:
- Direct: note release acts as note cut.
- Effective (linear decrease): after release, volume lowers by subtractions of 1/64 steps.
- Effective (exponential decrease): after release, volume decays exponentially. see gain
chart253.
- Delayed (write R on release): after release, waits until A and D have completed before start‐
ing release.
if envelope is off:
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
154
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Noise Freq: frequency of noise generator.
- note: global!
- Waveform: waveform.
- only effective when Use wavetable is enabled.
- Panning (left): output level of left channel.
- Panning (right): output level of right channel.
- Pitch: fine pitch.
- Special: bitmap of flags.
- invert left: inverts output of left channel.
- invert right: inverts output of right channel.
- pitch mod: modulates pitch using previous channel's output.
- echo: enables echo.
- noise: enables noise generator.
- Gain: sets mode and value of gain.
- 0 to 127: direct gain from 0 to 127.
- 128 to 159: linear gain from -0 to -31 (decrease linear).
- 160 to 191: exponential gain from -0 to -31 (decrease exponential).
- 192 to 223: linear gain from +0 to +31 (increase linear).
- 224 to 255: exponential gain from +0 to +31 (increase bent line).
Sound Unit
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Duty/Noise: waveform duty cycle sequence.
- Waveform: select waveform.
- 0: pulse wave
- 1: sawtooth
- 2: sine wave
- 3: triangle wave
- 4: noise
- 5: periodic noise
- 6: XOR sine
- 7: XOR triangle
- Panning: stereo panning sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
- Cutoff: set filter cutoff.
- Resonance: set filter resonance.
- values that are too high may distort the output!
- Control: filter parameter/ring mod sequence.
- band pass: a band-pass filter. cutoff determines which part of the sound is heard (from bass
to treble).
- high pass: a high-pass filter. higher cutoff values result in a less "bassy" sound.
- low pass: a low-pass filter. the lower the cutoff, the darker the sound.
- ring mod: enable ring modulation with previous channel.
- note: square wave goes from 0 to volume, so in that case it acts more like amplitude modu‐
lation.
156
- Phase Reset Timer: sets the phase reset timer.
- if the "Switch roles of frequency and phase reset timer" option in the Sound Unit tab is enabled,
this macro controls the frequency register instead.
158
TED instrument editor
TED instrument editor consists of these macros:
160
VERA instrument editor
VERA instrument editor consists of these macros:
162
Virtual Boy instrument
editor
the Virtual Boy instrument editor contains three tabs: Virtual Boy, Wavetable and Macros.
Virtual Boy
- Set modulation table: when enabled, playing this instrument on channel 5 will write to the
modulation table.
- Modulation table: this allows you to define a waveform for frequency modulation.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Noise Length: sets the noise length. higher values result in shorter noise.
- Waveform: wavetable sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Duty: specifies duty cycle for pulse wave channels.
- Pitch: fine pitch.
the only differences from this instrument type compared to the regular one are:
164
wavetable synthesizer
within the "Wavetable" tab of the instrument editor, Furnace allows you to modulate or combine 1
or 2 waves to create unique "animated" sounds. think of it like a VST or a plugin, as it's basically an
extension of regular wavetable soundchips that still allow it to run on real hardware.
this is accomplished by selecting a wave or two, a mode, and adjusting the settings as needed until
you come up with a sound that you like, without taking up a load of space. this allows you to create
unique sound effects or instruments, that, when used well, almost sound like they're Amiga
samples.
unfortunately, on some chips like the HuC6280, you cannot use the wavetable synth to animate
waveforms and have them sound smooth, as the chip resets the channel's phase when a wave‐
form is changed while the channel is playing. on certain frequencies, this can be avoided, but not
on most, unfortunately.
input waveforms should match the size of the wavetable or unexpected results may occur.
166
WonderSwan instrument
editor
the WonderSwan instrument editor contains three tabs: Sample, Wavetable and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
only on channel 2!
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
Macros
these are similar to PC Engine, with some differences.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Noise: specifies noise pitch.
- only applicable for Namco C30.
- Waveform: specifies wavetable sequence.
- Panning (left): output level of left channel.
- Namco C30 only.
- Panning (right): output level of right channel.
- Namco C30 only.
- Pitch: fine pitch.
168
X1-010 instrument editor
X1-010 instrument editor contains three tabs: Sample, Wavetable and Macros.
Sample
for sample settings, see the Sample instrument editor 148.
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.
there also is a "Sample bank slot" setting, but I think that does nothing for now.
Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page165 for
more information.
Macros
- Volume: volume levels sequence.
- Arpeggio: pitch sequence.
- Waveform: waveform selection sequence.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Envelope Mode: sets up envelope. the way it works is kind of complicated and even I don't un‐
derstand how it works, so it's not documented for now.
- Envelope: specifies which wavetable should be used for envelope.
- AutoEnv Num: sets the envelope to the channel's frequency multiplied by numerator.
- AutoEnv Den: sets the envelope to the channel's frequency divided by denominator.
- the X1-010 hardware envelope is considerably slower than AY's. beware!
- these two must be set in order for AutoEnv to work!
Sample
for sample settings, see the Sample instrument editor 148.
Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning: stereo panning sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.
170
wavetables
wavetable chips, in context of Furnace, are sound generators that operate on extremely short,
looping sample streams. by extremely short, usually no more than 256 samples.
this amount of space is nowhere near enough to store an actual sampled sound, but it allows cer‐
tain amount of freedom to define a waveform shape.
each chip has its own maximum size, shown in the following table. if a larger wave is defined for
these chips, it will be scaled to fit within the constraints of the chips. some of these don't work well
with the wavetable synthesizer (described below); these systems are marked in the "notes"
column.
Bubble System 32 16
Game Boy 32 16 phase reset on waveform change (clicking)
SM8521 32 16
Namco WSG 32 16 RAM only
WonderSwan 32 16
Namco 163 ≤240 16 limits differ depending on channel count
SNES ≤256 16
PC Engine 32 32 phase reset on waveform change (clicking)
Virtual Boy 32 64
FDS 64 64
Konami SCC 32 256
Seta X1-010 128 256
Amiga ≤256 256
### wavetable editor
waveform display:
172
controls across the bottom line:
waveform utilities
these provide different ways of creating or altering a waveform.
Shapes
this creates a waveform by adding together a few predefined basic wave shapes.
FM
this creates a waveform using frequency modulation synthesis with up to four operators.
you can set carrier/modulation levels, frequency multipliers, connections between operators and
FM waveforms of these operators.
174
WaveTools
supported chips
the following sound chips have sample support:
using samples
the simplest path to using a sample is:
- in the sample list, use the "Open" button (folder icon) to load the sample.
- double-click the sample in the list to open it in the sample editor.
- click the "Create instrument from sample" button (upload icon, to the left of "Zoom").
176
- use the created instrument in the track.
effect 17xx enables/disables compatible sample mode where supported (e.g. on Sega Genesis or
PC Engine).
in this mode, samples are mapped to notes in an octave from C to B, allowing you to use up to 12
samples.
if you need to use more samples, you may change the sample bank using effect EBxx.
notes
due to limitations in some of those sound chips, some restrictions exist:
- Amiga: maximum frequency is 31469Hz, but anything over 28867 will sound glitchy on hard‐
ware. sample lengths and loop will be set to an even number, and your sample can't be longer
than 131070.
- NES: if on DPCM mode, only a limited selection of frequencies is available, and loop position
isn't supported (only entire sample).
- SegaPCM: your sample can't be longer than 65535, and the maximum frequency is 31.25KHz.
- QSound: your sample can't be longer than 65535, and the loop length shall not be greater than
32767.
- ADPCM-A: no looping supported. your samples will play at around 18.518KHz.
- ADPCM-B/YM2608: no loop position supported (only entire sample), and the maximum fre‐
quency is 55.555KHz.
- MSM6258/MSM6295: no arbitrary frequency.
- ZX Spectrum Beeper: your sample can't be longer than 2048, and it always plays at ~55KHz.
- Seta/Allumer X1-010: frequency resolution is terrible in the lower end. your sample can't be
longer than 131072.
- C219: sample lengths and loop will be set to an even number, and your sample can't be longer
than 131070.
furthermore, many of these chips have a limited amount of sample memory. check memory usage
in window > statistics.
in there, you can modify certain data pertaining to your sample, such as the:
- volume of the sample in percentage, where 100% is the current level of the sample (note that
you can distort it if you put it too high)
- the sample rate.
- what frequencies to filter, along with filter level/sweep and resonance options (much like the
C64)
178
- Chips: set assignment to chips and sample banks.
- sample will only be uploaded to selected chips.
- columns correspond to chips in use.
- rows correspond to sample banks.
180
systems
this is a list that contains some of the systems that Furnace supports, as shown in the New File
dialog. each chip links to a page with information and a list of supported effects.
some systems have alternate chips, such as the Sega Genesis having a YM2612 or YM3438 de‐
pending on the model. this list shows the default configuration.
- NES: 2A03224
- Famicom with Konami VRC6: 2A03224, VRC6275
- Famicom with Konami VRC7: 2A03224, VRC7228
- Famicom with MMC5: 2A03224, MMC5215
- Famicom with Sunsoft 5B: 2A03224, 5B188
- Famicom with Namco 163: 2A03224, N163220
- Famicom Disk System: 2A03224, FDS206
- SNES: SNES253
- Amiga: Amiga186
- MSX: AY-3-8910188
- MSX + SCC: YM2149(F)188, SCC246
chips
this is the full list of chips that Furnace supports.
- 2A03224
- 5E01184
- Amiga186
- AY-3-8910/8914/YM2149(F)/Sunsoft 5B 188
- Microship AY8930190
- Bifurcator192
- MOS 6581/8580 (SID)196
- Dave199
- Ensoniq ES5506201
- Konami SCC246
- FDS206
- Game Boy208
- Game Boy Advance209
- Generic PCM DAC198
- Irem GA20207
- Bubble System WSG193
- K007232212
- K053260213
- Lynx214
- MMC5215
- MSM5232216
- MSM6258217
- MSM6295218
- Namco 163220
- Namco C140194
- Namco WSG/C15/C30222
- Nintendo DS223
- HuC6280236
- PC Speaker237
- PET238
- Pokémon Mini239
- POKEY240
- PowerNoise241
182
- PV-1000242
- QSound243
- RF5C68/RF5C164244
- SAA1099245
- SegaPCM247
- SID2248
- SM8521250
- SN76489/Sega PSG251
- SNES253
- tildearrow Sound Unit259
- T6W28261
- TED262
- TIA263
- VERA271
- VIC272
- Virtual Boy273
- VRC6275
- WonderSwan276
- X1-010278
- Y8950, YM3526, YM3812 and YMF262 (OPL) 228
- ESFM203
- VRC7 and YM2413 (OPLL)231
- YM2414 (OPZ)233
- YM2151 (OPM)279
- YM2203 (OPN)281
- YM2608 (OPNA)284
- YM2610 (OPNB)287
- YM2610B (OPNB2)290
- YM2612/YM3438 (OPN2)293
- YMZ280B297
- ZX Spectrum Beeper298
Furnace also reads .dmf files with the Yamaha YMU759296 system, but...
effects
- 11xx: write to delta modulation counter. range is 00 to 7F.
- this may be used to attenuate the triangle and noise channels; at 7F, they will be at about 57%
volume.
- will not work if a sample is playing.
- 12xx: set duty cycle/noise mode/waveform of channel.
- may be 0 to 3 for the pulse channels:
- 0: 12.5%
- 1: 25%
- 2: 37.5%
- 3: 50%
- may be 0 or 1 for the noise channel:
- 0: long (15-bit LFSR, 32767-step)
- 1: short (9-bit LFSR, 93-step)
- may be 0 to 3 for the wave channel:
- 0: triangle
- 1: saw
- 2: square
- 3: sine
- 13xy: setup sweep up.
- x is the time.
- y is the shift.
- set to 0 to disable it.
- 14xy: setup sweep down.
- x is the time.
- y is the shift.
- set to 0 to disable it.
- 15xx: set envelope mode.
- 0: envelope + length counter. volume represents envelope duration.
- 1: length counter. volume represents output volume.
- 2: looping envelope. volume represents envelope duration.
- 3: constant volume. default value. volume represents output volume.
- pulse and noise channels only.
- you may need to apply a phase reset (using the macro) to make the envelope effective.
- 16xx: set length counter.
- see NES224 for more information.
- this will trigger phase reset.
- 17xx: set frame counter mode.
184
- 0: 4-step.
- 1: 5-step.
- 18xx: set PCM channel mode.
- 00: PCM (software).
- 01: DPCM (hardware).
- when in DPCM mode, samples will sound muffled (due to its nature), availables pitches are
limited, and loop point is ignored.
- 19xx: set triangle linear counter.
- 00 to 7F set the counter.
- 80 and higher halt it.
- 20xx: set DPCM frequency.
- only works in DPCM mode.
info
this chip uses the NES135 instrument editor.
imported MOD files use this chip, and will set A-4 tuning to 436.
amplitude/period modulation
Amiga has support for (rather primitive) amplitude and period (frequency) modulation.
however, nobody has used this feature as it is rather useless, not well-documented and works in a
complicated way.
Amiga sample playback is done by two chips: Paula (the one that you probably know) and Agnus
(the one that actually feeds Paula with samples).
Agnus has several DMA (direct memory access) units which read from chip memory independent of
the CPU. four of these DMA units are used for samples.
when DMA is enabled, Paula requests sample data from Agnus, and then plays these samples
back.
there's a catch though. since the data bus is 16-bit, Paula requests two 8-bit samples at once! this
explains why:
- the sample length registers are in words rather than bytes (thereby allowing samples up to
131070 in length)
- the maximum playback rate (31250Hz PAL; ~31469Hz NTSC) is two times the HBlank rate (Ag‐
nus fetches samples on HBlank, around 15625Hz on PAL or ~15734Hz on NTSC)
during normal sample playback, the first sample is output and then the second. afterwards, two
more samples are fetched, and so on.
now, when amplitude or period modulation are enabled, things work differently.
the channel is silenced, and the two 8-bit samples are treated as a big-endian 16-bit number,
which is then written to the next channel's volume or period.
in the case of amplitude modulation, only the second sample is significant because the volume re‐
gister uses 7 bits (to represent 0 to 64 (65 to 127 are treated as 64)) and the other bits are ignored.
in the case of period modulation, both samples are significant. the first sample is the upper byte,
and the second is the lower byte.
effects
- 10xx: toggle low-pass filter. 0 turns it off and 1 turns it on.
- 11xx: toggle amplitude modulation with the next channel.
- does not work on the last channel.
- 12xx: toggle period (frequency) modulation with the next channel.
- does not work on the last channel.
186
- 13xx: change wave.
- only works when "Mode" is set to "Wavetable" in the instrument.
info
this chip uses the Generic Sample148 instrument editor.
- the maximum rate for sample playback is technically 31469Hz but anything higher than
28867Hz will sound glitchy on hardware.
- sample lengths and loop will be set to an even number.
- samples can't be longer than 131070.
it is a 3-channel square/noise/envelope sound generator. the chip's powerful sound comes from
the envelope...
the AY-3-8914 variant was used in Intellivision, which is pretty much an AY with 4 level envelope
volume per channel and different register format.
Furnace is capable of doing software sample playback on AY-3-8910, where all 3 channels can play
4-bit PCM samples (at the cost of a very high CPU usage).
effects
- 20xx: set channel mode.
- 0: square
- 1: noise
- 2: square and noise
- 3: envelope
- 4: envelope and square
- 5: envelope and noise
- 6: envelope and square and noise
- 7: nothing
- 21xx: set noise frequency. range is 0 to 1F.
- 22xy: set envelope mode.
- x sets the envelope shape:
- 0: \___ decay
- 4: /___ attack once
- 8: \\\\ saw
- 9: \___ decay
- A: \/\/ inverse obelisco
- B: \¯¯¯ decay once
- C: //// inverse saw
- D: /¯¯¯ attack
- E: /\/\ obelisco
- F: /___ attack once
- if y is 1 then the envelope will affect this channel.
- 23xx: set envelope period low byte.
- 24xx: set envelope period high byte.
- 25xx: slide envelope period up.
- 26xx: slide envelope period down.
- 29xy: enable auto-envelope mode.
- in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
188
- x is the numerator.
- y is the denominator.
- if x or y are 0 this will disable auto-envelope mode.
- 2Exx: write to I/O port A.
- this changes the port's mode to "write". make sure you have connected something to it.
- 2Fxx: write to I/O port B.
- this changes the port's mode to "write". make sure you have connected something to it.
what is obelisco
it's a name I use for a spiky waveform that starts low.
its origin is a wavetable that comes in DefleMask that happens to be called Obelisco.
AY derivative modes
AY-3-810 was an absurdly popular chip that was blessed with many third-party clones, licensed or
not.
- the AY-3-8914 variant was used in Intellivision, which is pretty much an 8910 with 4 level en‐
velope volume per channel and different register format.
- Yamaha YM2149 was an AY-3-8910 clone released in 1983. it's almost identical to AY with
minor differences being: higher hardware envelope step resolution (16 vs 32), half-clock mode
when voltage level is low, much stronger DC offset and cleaner, but softer output.
- Sunsoft 5B is YM2149 clone with half-clock mode forced on.
info
this chip uses the AY-3-891091 instrument editor.
sadly, this soundchip has only ever observed minimal success, and has remained rather obscure
since.
it is known for being used in the Covox Sound Master, which didn't sell well either.
emulation of this chip in Furnace is now complete thanks to community efforts and hardware test‐
ing, which an MSX board called Darky has permitted.
Furnace is able to do software PCM on AY8930, where all 3 channels can play 5-bit PCM samples
(at the cost of a very high CPU usage).
effects
- 12xx: set channel duty cycle.
- 0: 3.125%
- 1: 6.25%
- 2: 12.5%
- 3: 25%
- 4: 50%
- 5: 75%
- 6: 87.5%
- 7: 93.75%
- 8: 96.875%
- 20xx: set channel mode. xx may be one of the following:
- 0: square
- 1: noise
- 2: square and noise
- 3: envelope
- 4: envelope and square
- 5: envelope and noise
- 6: envelope and square and noise
- 7: nothing
- 21xx: set noise frequency. xx is a value between 00 and FF.
- 22xy: set envelope mode.
- x sets the envelope shape, which may be one of the following:
- 0: \___ decay
- 4: /___ attack once
- 8: \\\\ saw
- 9: \___ decay
- A: \/\/ inverse obelisco
- B: \¯¯¯ decay once
- C: //// inverse saw
- D: /¯¯¯ attack
- E: /\/\ obelisco
190
- F: /___ attack once
- if y is 1 then the envelope will affect this channel.
- 23xx: set envelope period low byte.
- 24xx: set envelope period high byte.
- 25xx: slide envelope period up.
- 26xx: slide envelope period down.
- 27xx: set noise AND mask.
- 28xx: set noise OR mask.
- 29xy: enable auto-envelope mode.
- in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
- x is the numerator.
- y is the denominator.
- if x or y are 0 this will disable auto-envelope mode.
info
this chip uses the AY893092 instrument editor.
effects
- 10xx: set low byte of channel sample state.
- 11xx: set high byte of channel sample state.
- 12xx: set parameter low byte.
- 13xx: set parameter high byte.
info
this chip uses the Bifurcator94 instrument editor.
192
Bubble System WSG
a Konami-made 2 channel wavetable sound generator logic used on the Bubble System arcade
board, configured with K005289, a 4-bit PROM and DAC.
however, the K005289 is just part of the logic used for pitch and wavetable ROM address.
waveform select and volume control are tied with single AY-3-8910 IO for both channels.
another AY-3-8910 IO is used for reading sound hardware status.
effects
- 10xx: change wave.
info
this chip uses the Konami SCC/Bubble System WSG149 instrument editor.
effects
none!
info
this chip uses the C14095 instrument editor.
194
Namco C219
Namco C219 is a 16-channel PCM sound chip that's a lot like C140, but has a noise generator, sur‐
round effect and a different µ-law curve.
the channels are in groups of four. a sample bank (128KB) may be selected for each group.
if a sample that is on a different bank plays in a group, the group is switched to that bank, and oth‐
er channels will be silenced.
effects
- 11xx: set noise mode.
- 12xy: set invert mode.
- if x is 1 or higher, surround is enabled.
- if y is 1 or higher, invert is enabled.
info
this chip uses the C21996 instrument editor.
very popular in Europe and mostly due to the demoscene, which stretched the machine's limbs to
no end.
two versions of aforementioned chip exist - 6581 (original chip) and 8580 (improved version with
working waveform mixing and somewhat more consistent filter curves).
effects
- 10xx: change wave. the following values are accepted:
- 00: nothing
- 01: triangle
- 02: saw
- 03: triangle and saw
- 04: pulse
- 05: pulse and triangle
- 06: pulse and saw
- 07: pulse and triangle and saw
- 08: noise
- 11xx: set coarse cutoff. xx may be a value between 00 and 64.
- this effect only exists for compatibility reasons, and its use is discouraged.
- use effect 4xxx instead.
- 12xx: set coarse duty cycle. xx may be a value between 00 and 64.
- this effect only exists for compatibility reasons, and its use is discouraged.
- use effect 3xxx instead.
- 13xx: set resonance. xx may be a value between 00 and 0F.
- 14xx: set filter mode. the following values are accepted:
- 00: filter off
- 01: low pass
- 02: band pass
- 03: low+band pass
- 04: high pass
- 05: band reject/stop/notch
- 06: high+band pass
- 07: all pass
- 15xx: set envelope reset time.
- this is the amount of ticks the channel turns off before a note occurs in order to reset the en‐
velope safely.
- if xx is 0 or higher than the song speed, the envelope will not reset.
- 1Axx: disable envelope reset for this channel.
- 1Bxy: reset cutoff:
- if x is not 0: on new note
- if y is not 0: now
196
- this effect is not necessary if the instrument's cutoff macro is absolute.
- 1Cxy: reset duty cycle:
- if x is not 0: on new note
- if y is not 0: now
- this effect is not necessary if the instrument's duty macro is absolute.
- 1Exy: change additional parameters.
- this effect only exists for compatibility reasons, and its use is discouraged.
- x may be one of the following:
- 0: attack (y from 0 to F)
- 1: decay (y from 0 to F)
- 2: sustain (y from 0 to F)
- 3: release (y from 0 to F)
- 4: ring modulation (y is 0 or 1)
- 5: oscillator sync (y is 0 or 1)
- 6: disable channel 3 (y is 0 or 1)
- 20xy: set attack/decay.
- x is the attack.
- y is the decay.
- 21xy: set sustain/release.
- x is the sustain.
- y is the release.
- 3xxx: set duty cycle. xxx range is 000 to FFF.
- 4xxx: set cutoff. xxx range is 000 to 7FF.
info
this chip uses the C6497 instrument editor.
channel status
the following icons are displayed when channel status is enabled in the pattern view:
- channel is silent:
- it's not
with it, you can emulate PCM DACs found in Williams arcade boards, Sound Blasters, MSX TurboR,
Atari STe, NEC PC-9801-86, among others.
effects
none yet.
info
this chip uses the Generic Sample148 instrument editor.
198
Dave
this is the sound chip used in the Enterprise 128 home computer of the '80s, which competed
against other home computers in Europe such as the ZX Spectrum and Amstrad CPC.
Dave is very similar to POKEY in many aspects. it has most of the signature Atari sounds and
POKEY-style high-pass filter.
it has 4 channels, of which 3 generate LFSR-based sounds and the last one is a noise channel
which has five lengths and either runs at a fixed frequency, or steals the frequency of another
channel.
these channels have ring modulation and the aforementioned high-pass filter capabilities. the
noise one also has a pseudo-low-pass filter.
the pitch and volume resolutions are much greater than that of POKEY, with 4096 pitches and 64
volume levels.
it also has stereo output.
on top of that, there's a DAC mode which may be enabled for each side of the stereo output. this
mode overrides sound generation output.
effects
- 10xx: set waveform or noise length.
- the following waveforms apply in the first three channels:
- 0: square
- 1: bass
- 2: buzz
- 3: reed
- 4: noise
- if placed in the noise channel, x is a value from 0 to 3.
- 11xx: set noise frequency source.
- 0: fixed frequency (~62.5KHz)
- 1: channel 1
- 2: channel 2
- 3: channel 3
- 12xx: toggle high-pass with the next channel.
- 13xx: toggle ring modulation with the channel that is located two channels ahead of this
one.
- in the case of channel 1, it modulates with channel 3. channel 2 modulates with channel 4 and
so on.
- 14xx: toggle "swap counters" mode.
- only in noise channel.
- when enabled, the noise length is even shorter and has no effect.
- 15xx: toggle low-pass with channel 2.
- only in noise channel.
- 16xx: set global clock divider.
- 0: divide by 2.
- 1: divide by 3.
when two channels are joined due to high-pass filter, the channel bar will show high on a bracket
tying them together.
when two channels are joined due to low-pass filter, the channel bar will show low on a bracket
tying them together.
when two channels are joined for ring modulation, the channel bar will show ring on a bracket ty‐
ing them together.
200
Ensoniq ES5506 (OTTO)
sample-based synthesis chip used in a bunch of Taito arcade machines and PC sound cards like
Soundscape Elite. a variant of it was the heart of the well-known Gravis Ultrasound.
effects
- 10xx: set waveform.
- 11xx: set filter mode. values are 0 through 3.
- 120x: set pause (bit 0). pauses the sample until the bit is unset; it will then resume where it
left off.
- 14xx: set filter coefficient K1 low byte.
- 15xx: set filter coefficient K1 high byte.
- 16xx: set filter coefficient K2 low byte.
- 17xx: set filter coefficient K2 high byte.
- 18xx: set filter coefficient K1 slide up.
- 19xx: set filter coefficient K1 slide down.
- 1Axx: set filter coefficient K2 slide up.
- 1Bxx: set filter coefficient K2 slide down.
- 20xx: set envelope count.
- 22xx: set envelope left volume ramp.
- 23xx: set envelope right volume ramp.
- 24xx: set envelope filter coefficient K1 ramp.
- 25xx: set envelope filter coefficient K1 ramp (slower).
- 26xx: set envelope filter coefficient K2 ramp.
- 27xx: set envelope filter coefficient K2 ramp (slower).
- 3xxx: set coarse filter coefficient K1.
- 4xxx: set coarse filter coefficient K2.
- 81xx: set panning (left channel).
- 82xx: set panning (right channel).
- 88xx: set panning (rear channels).
- 89xx: set panning (rear left channel).
- 8Axx: set panning (rear right channel).
- 9xxx: set sample offset.
- resets sample position to xxx * 0x100.
- DFxx: set sample playback direction.
202
ESS ESFM
an FM synthesizer core included in a series of sound card chipsets made by ESS, which were mildly
popular in the DOS days during the mid-late 90s.
at a cursory glance, it looks like just an OPL3 clone228. but hidden under a veil of mystery is its ex‐
clusive "native mode", revealing an impressive superset of features, including 4-operator support
on all 18 channels, semi-modular operator routing, per-operator pitch control, and even a few
unique features.
for a long time, not much was known about the inner workings of ESFM's native mode, since ESS
did not release any documentation to developers on how to use it. this has thankfully changed in
recent years thanks to reverse-engineering efforts from the community.
thanks to ESS's decision to not release any documentation to developers and lock down usage of
native mode behind a couple of General MIDI drivers shipping with rather lackluster patch sets,
ESFM's native mode was unfortunately not very well used over its original lifespan.
effects
- 10xy: set AM depth.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is either 0 (1dB, shallow) or 1 (4.8dB, deep).
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 17xy: set vibrato depth.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is either 0 (normal) or 1 (double).
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 20xy: set panning of operator 1.
- x determines whether to output on left.
- y determines whether to output on right.
- 21xy: set panning of operator 2.
- x determines whether to output on left.
- y determines whether to output on right.
- 22xy: set panning of operator 3.
- x determines whether to output on left.
- y determines whether to output on right.
- 23xy: set panning of operator 4.
204
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y determines whether SUS is on.
- 56xx: set DR of all operators.
- 57xx: set DR of operator 1.
- 58xx: set DR of operator 2.
- 59xx: set DR of operator 3.
- 5Axx: set DR of operator 4.
- 5Bxy: set KSR of operator.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y determines whether KSR is on.
info
this chip uses the FM (ESFM)102 instrument editor.
it also offers an additional 6-bit, 64-byte wavetable sound channel with (somewhat limited) FM
capabilities, which is what Furnace supports.
effects
- 10xx: change wave.
- 11xx: set modulation depth.
- 12xy: set modulation speed high byte and toggle on/off.
- x is the toggle. a value of 1 turns on the modulator.
- y is the speed.
- 13xx: set modulation speed low byte.
- 14xx: set modulator position.
- 15xx: set modulator wave.
- xx points to a wavetable. it should (preferably) have a height of 7 with the values mapping to:
- 0: +0
- 1: +1
- 2: +2
- 3: +3
- 4: reset
- 5: -3
- 6: -2
- 7: -1
- do not use this effect. it only exists for compatibility reasons
info
this chip uses the FDS101 instrument editor.
206
Irem GA20
it is a 4 channel PCM sound source used by Irem in their arcades in late 1980s and early 1990s, of‐
ten paired with Yamaha YM2151279.
the sound chip itself is rather unremarkable, having 8-bit volume and pitch control and no stereo
panning...
effects
none
let's be honest. Furnace has too many chips and a great portion of them are sample chips that do
the same task: playing back samples.
info
this chip uses the GA20121 instrument type.
it has stereo sound, two pulse channels, a wave channel and a noise channel.
effects
- 10xx: change wave.
- 11xx: set noise length.
- 0: long
- 1: short
- 12xx: set duty cycle.
- 0: 12.5%
- 1: 25%
- 2: 50%
- 3: 75%
- 13xy: setup sweep. pulse channels only.
- x is the time.
- y is the shift.
- set to 0 to disable it.
- 14xx: set sweep direction. 0 is up and 1 is down.
info
this chip uses the Game Boy122 instrument editor.
links
- Gameboy sound hard‐
ware ([Link] - detailed technical in‐
formation
- GameBoy Sound Table ([Link] - note frequency table
208
Game Boy Advance
a portable video game console from Nintendo, succeeding the Game Boy.
it adds two stereo sample audio channels which can be used directly ("DMA", left/right) or used in a
software mixing driver (most games do this) in order to have multiple voices.
effects
- 10xx: change wave.
Create an empty instrment and put a very high note of it in channel 1 then do 110x in ef‐
fect column and set volume column to set feedback and do nothing else on it
info
this chip uses the GBA DMA124 and GBA MinMod125 instrument editors.
this console is powered by two sound chips: the Yamaha YM2612293 and a derivative of the
SN76489251.
effects
- 10xy: set LFO parameters.
- x toggles the LFO.
- y sets its speed.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 17xx: enable PCM channel.
- this only works on channel 6.
- this effect is here for compatibility reasons! it is otherwise recommended to use Sample type
instruments (which automatically enable PCM mode when used).
- 18xx: toggle extended channel 3 mode.
- 0 disables it and 1 enables it.
- only in extended channel 3 chip.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 20xy: set PSG noise mode.
- x controls whether to inherit frequency from PSG channel 3.
- 0: use one of 3 preset frequencies (C: A-2; C#: A-3; D: A-4).
- 1: use frequency of PSG channel 3.
- y controls whether to select noise or thin pulse.
- 0: thin pulse.
- 1: noise.
210
system modes
extended channel 3
in ExtCh mode, channel 3 is split into one column for each of its four operators. feedback and LFO
levels are shared. the frequency of each operator may be controlled independently with notes and
effects. this can be used for more polyphony or more complex sounds.
all four operators are still combined according to the algorithm in use. for example, algorithm 7
acts as four independent sine waves. algorithm 4 acts as two independent 2-op sounds. even with
algorithm 0, placing a note in any operator triggers that operator alone.
CSM
CSM is short for "Composite Sinusoidal Modeling". CSM works by sending key-on and key-off com‐
mands to channel 3 at a specific frequency, controlled by the added "CSM Timer" channel. this can
be used to create vocal formants (speech synthesis!) or other complex effects.
CSM is beyond the scope of this documentation. for more information, see this brief SSG-EG and
CSM video tutorial ([Link] .
DualPCM
info here.293
Sega CD
this isn't a mode so much as a chip configuration. it adds the Ricoh RF5C68244 found in the Sega CD
add-on, providing 8 channels of PCM.
its sample format is unique; the topmost bit is the end marker, and the low 7 bits are used for gen‐
erating sound (unsigned format).
it has 7 bit digital output per each channel and no volume register on chip, so it needs external logic
to control channel volume.
effects
nothing.
yeah.
info
this chip uses the K007232126 instrument editor.
212
Konami K053260
this chip is a sample-based chip that featured in a number of Konami arcade games, notably Sun‐
set Riders and Teenage Mutant Ninja Turtles: Turtles in Time. it has four channels of audio, 12-bit
pitch resolution and stereo output, and can access up to 2MB of samples in 8-bit PCM or 4-bit AD‐
PCM formats.
effects
- DFxx: set sample playback direction.
- 0 is normal.
- 1 is reverse.
info
this chip uses the K053260127 instrument editor.
while it was an incredible handheld for the time (and a lot more powerful than Game Boy), it unfor‐
tunately meant nothing in the end due to Lynx being a market failure, and ending up as one of the
things that contributed to the downfall of Atari.
although the Lynx is still getting (rather impressive) homebrew developed for it, that does not
mean the Lynx is a popular system at all.
the Atari Lynx has a 6502-based CPU with a sound part (this chip is known as MIKEY). it has the fol‐
lowing sound capabilities:
- 4 channels of LFSR-based sound, which can be modulated with different frequencies (×0, ×1,
×2, ×3, ×4, ×5, ×7, ×10, and ×11) to create square waves and wavetable-like results.
- likewise, when a lot of the modulators are activated, this can provide a "pseudo-white noise"-
like effect, which can be useful for drums and sound effects.
- hard stereo panning capabilities via the 08xx effect command.
- four 8-bit DACs (Digital to Analog Converter), one for each voice. this allows for sample play‐
back (at the cost of CPU time and memory).
- a variety of pitches to choose from, and they go from 32Hz to "above the range of human hear‐
ing", according to Atari.
effects
- 3xxx: load LFSR. this is a bitmask with values ranging from 000 to FFF.
- for it to work, duty macro in instrument editor must be set to some value. without it LFSR will
not be fed with any bits.
info
this chip uses the Atari Lynx128 instrument editor.
214
Nintendo MMC5
a mapper chip which made NES cartridges exceeding 1MB possible.
it has two pulse channels which are very similar to the ones found in the NES, but lacking the
sweep unit.
additionally, it offers an 8-bit DAC which can be used to play samples. only one game is known to
use it, though.
effects
- 12xx: set duty cycle or noise mode of channel.
- may be 0 through 3 for the pulse channels.
info
this chip uses the NES135 and Generic Sample148 instrument editors.
it has 8 channels in 2 groups (of 4 channels each). each group can be configured with an envelope
and the ability to produce 2', 4', 8' and/or 16' square/noise overtones on 8 outputs (four (2', 4', 8' and
16') per group).
however, this chip cannot entirely produce sound alone. it has to be paired with either an external
envelope generator or capacitors to assist the internal envelope generator.
it also has no fine tune whatsoever. the frequency resolution is exactly a semitone.
Furnace implements this chip in a way that allows the following features:
effects
- 10xy: set group control.
- x sets sustain mode.
- y is a 4-bit mask which toggles overtones.
- 11xx: set noise mode.
- 12xx: set group attack. range is 0 to 5.
- only in internal (capacitor-based) envelope mode.
- 13xx: set group decay. range is 0 to 11.
- only in internal (capacitor-based) envelope mode.
info
this chip uses the MSM5232130 instrument editor.
216
OKI MSM6258
a single-channel ADPCM sound source developed by OKI. it allows max sample rate of 15.6 KHz...
with no variable pitch. most prominent use of this chip was Sharp X68000 computer, where it was
paired with Yamaha YM2151.
Furnace's implementation is MSM6258V, a CPU driven variant that is unlimited by amount of
sample data, being able to be fed from the system's RAM.
effects
- 20xx: set frequency divider (0 to 2).
- 0: /512
- 1: /768
- 2: /1024
- 21xx: select clock rate.
- 0: full
- 1: half
chip config
MSM6258 is an extremely basic ADPCM sound codec. it has no variable frequency rate; it depends
on clock rate of a chip itself. Furnace supports the following rates:
4 MHz 7812 Hz
4.096 MHz 8000 Hz
8 MHz 15625 Hz
8.192 MHz 16000 Hz
### info
effects
- 20xx: set chip output rate.
- 0: /132
- 1: /165
info
this chip uses the MSM6295132 instrument editor.
1 MHz 7576 Hz
1.02 MHz 7727 Hz
1.056 MHz 8000 Hz
1.193 MHz 9038 Hz
0.89 MHz 6742 Hz
0.875 MHz 6629 Hz
0.9375 MHz 7102 Hz
1.5 MHz 11364 Hz
1.79 MHz 13561 Hz
2 MHz 15152Hz
2.112 MHz 16000 Hz
3 MHz 22728 Hz
3.58 MHz 27122 Hz
4 MHz 30304 Hz
4.224 MHz 32000 Hz
### chip clock divisor
218
MSM6295 clock rate could be divided by 132 (resulting sample rates above), or by 165.
to get a clock rate using divisor of 165, formula is clock rate (in Hz) / 165.
example: 1 MHz MSM6295 in 165 divisor mode results in output rate of 6060 Hz.
it has 256 nibbles (128 bytes) of internal RAM which is shared between channel state and waves.
wavetables are variable in size and may be allocated anywhere in RAM. at least 128 nibbles (64
bytes) can be dedicated to waves, with more available if not all channels are used - waveform RAM
area becomes smaller as more channels are activated, since channel registers consume 8 bytes for
each channel.
Namco 163 uses time-division multiplexing (TDM) for its output. this means that only one channel
is output per sample (like OPLL and OPN2). therefore, its sound quality gets worse as more chan‐
nels are activated.
when placing a note, the load pos/len and the pos/len are set to the values specified in the instru‐
ment.
waveforms are loaded in the region set by the load pos/len, which you can change using effects
15xx and 16xx as described below.
the region that will play is set by the waveform pos/len, which you can alter using effects 11xx
and 12xx.
the waveform pos/len macros only change the pos/len, and not the load one.
if the waveform changes (e.g. ins change, wave macro or wave synth), or the load pos/len changes,
the wave is written to memory.
effects
- 10xx: set waveform for playback.
- 11xx: set waveform position in RAM for playback.
- 12xx: set waveform length in RAM for playback.
- x goes from 04 to FC in steps of 4.
220
- 15xx: set waveform load position.
- 16xx: set waveform load length.
- x goes from 04 to FC in steps of 4.
- 180x: set channel limit.
- range of x is 0 to 7. 1 is added to get results of 1 through 8.
- 20xx: load a waveform to RAM.
- x is the waveform.
- the length is determined by the wave's width (it will be snapped to a multiple of 4 if it isn't).
- make sure to use 21xx first!
- 21xx: set position for 20xx.
chip options
- Initial channel limit: sets the number of channels that will be active. higher values reduce
volume and make TDM artifacts more noticeable.
- Disable hissing: remove TDM artifacts by mixing. sacrifices some accuracy!
- Scale frequency to wave length: automatically adjusts note frequency to account for differing
waveform lengths.
- if disabled, note frequencies ignore waveveform length. this is how FamiTracker behaves.
info
this chip uses the Namco 163133 instrument editor.
everything starts with Namco WSG, which is a simple 3-channel wavetable with no extra frills. C15
is a much more advanced sound source with 8 channels, and C30 adds stereo output and noise
mode.
effects
- 10xx: change waveform.
- 11xx: toggle noise mode. warning: only on C30.
info
this chip uses the Namco WSG168 instrument editor.
222
Nintendo DS
this portable video game console succeeded the Game Boy Advance.
it has 16 channels of sampled sound, supporting 8-bit PCM, 16-bit PCM and IMA ADPCM.
additionally, the last 8 channels may be put in "PSG mode", featuring 6 channels of pulse with 8
duty cycles and 2 noise channels.
effects
- 12xy: set duty cycle.
- 0 to 7.
- only works in PSG channels.
- 1Fxx: set global volume.
info
this chip uses the Nintendo DS134 instrument editor.
the console is powered by the Ricoh 2A03, a CPU with sound generator built-in. it has five channels:
first two channels play pulse wave with three different duty cycles, third is a fixed-volume triangle
channel, fourth is a noise channel (can work in both pseudo-random and periodic modes) and fifth
is a (D)PCM sample channel.
effects
- 11xx: write to delta modulation counter. range is 00 to 7F.
- this may be used to attenuate the triangle and noise channels; at 7F, they will be at about 57%
volume.
- will not work if a sample is playing.
- 12xx: set duty cycle or noise mode of channel.
- may be 0 to 3 for the pulse channels:
- 0: 12.5%
- 1: 25%
- 2: 50%
- 3: 75%
- may be 0 or 1 for the noise channel:
- 0: long (15-bit LFSR, 32767-step)
- 1: short (9-bit LFSR, 93-step)
- 13xy: setup sweep up.
- x is the time.
- y is the shift.
- set to 0 to disable it.
- 14xy: setup sweep down.
- x is the time.
- y is the shift.
- set to 0 to disable it.
- 15xx: set envelope mode.
- 0: envelope + length counter. volume represents envelope duration.
- 1: length counter. volume represents output volume.
- 2: looping envelope. volume represents envelope duration.
- 3: constant volume. default value. volume represents output volume.
- pulse and noise channels only.
- you may need to apply a phase reset (using the macro) to make the envelope effective.
- 16xx: set length counter.
- see table below for possible values.
- this will trigger phase reset.
- 17xx: set frame counter mode.
- 0: 4-step.
- NTSC: 120Hz sweeps and lengths; 240Hz envelope.
224
- PAL: 100Hz sweeps and lengths; 200Hz envelope.
- Dendy: 118.9Hz sweeps and lengths; 237.8Hz envelope.
- 1: 5-step.
- NTSC: 96Hz sweeps and lengths; 192Hz envelope.
- PAL: 80Hz sweeps and lengths; 160Hz envelope.
- Dendy: 95.1Hz sweeps and lengths; 190.2Hz envelope.
- 18xx: set PCM channel mode.
- 00: PCM (software).
- 01: DPCM (hardware).
- when in DPCM mode, samples will sound muffled (due to its nature), availables pitches are
limited, and loop point is ignored.
- 19xx: set triangle linear counter.
- 00 to 7F set the counter.
- 80 and higher halt it.
- 20xx: set DPCM frequency.
- only works in DPCM mode.
- see table below for possible values.
info
this chip uses the NES135 instrument editor.
226
DPCM frequency table
VALUE TRACKER NTSC FREQ NTSC PITCH PAL FREQ PAL PITCH
essentially a downgraded version of Yamaha's other FM chips, with only 2 operators per channel.
however, it also had a drums mode231, and later chips in the series added more waveforms (than
just the typical sine) and even a 4-operator mode.
the original OPL (Yamaha YM3526) was present as an expansion for the Commodore 64 and MSX
computers (erm, a variant of it). it only had 9 two-operator channels and drums mode.
its successor, the OPL2 (Yamaha YM3812), added 3 more waveforms and was one of the more pop‐
ular chips because it was present on the AdLib card for PC.
later Creative would borrow the chip to make the Sound Blaster, and totally destroyed AdLib's
dominance.
the OPL3 (Yamaha YMF262) added 9 more channels, 4 more waveforms, rudimentary 4-operator
mode (pairing up to 12 channels to make up to six 4-operator channels), quadraphonic output and
some other things.
effects
- 10xx: set AM depth. the following values are accepted:
- 0: 1dB (shallow)
- 1: 4.8dB (deep)
- this effect applies to all channels.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- only in 4-op mode (OPL3).
- 15xx: set operator 4 level.
- only in 4-op mode (OPL3).
- 16xy: set multiplier of operator.
- x is the operator (1-4; last 2 operators only in 4-op mode).
- y is the new MULT value..
- 17xx: set vibrato depth.
- 0: normal
- 1: double
- this effect applies to all channels.
- 18xx: toggle drums mode.
- 0 disables it and 1 enables it.
- only in drums chip.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
228
- 1Cxx: set attack of operator 3.
- only in 4-op mode (OPL3).
- 1Dxx: set attack of operator 4.
- only in 4-op mode (OPL3).
- 2Axy: set waveform of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y is the value.
- only in OPL2 or higher.
- 30xx: enable envelope hard reset.
- this works by inserting a quick release and tiny delay before a new note.
- 50xy: set AM of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y determines whether AM is on.
- 51xy: set SL of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y is the value.
- 52xy: set RR of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y is the value.
- 53xy: set VIB of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y determines whether VIB is on.
- 54xy: set KSL of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y is the value.
- 55xy: set SUS of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y determines whether SUS is on.
- 56xx: set DR of all operators.
- 57xx: set DR of operator 1.
- 58xx: set DR of operator 2.
- 59xx: set DR of operator 3.
- only in 4-op mode (OPL3).
- 5Axx: set DR of operator 4.
- only in 4-op mode (OPL3).
- 5Bxy: set KSR of operator.
- x is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of 0 means
"all operators".
- y determines whether KSR is on.
info
this chip uses the FM (OPL)106 instrument editor.
230
Yamaha YM2413/OPLL
the YM2413, otherwise known as OPLL, is a cost-reduced FM synthesis sound chip, based on the
Yamaha YM3812 (OPL2).
OPLL also spawned a few derivative chips, the best known of these is:
- the famous Konami VRC7. used in the Japan-only video game Lagrange Point, it was another
cost reduction on top of the OPLL! this time just 6 channels...
- Yamaha YM2423, same chip as YM2413, just a different patch set...
- Yamaha YMF281, ditto.....
technical specifications
the YM2413 is equipped with the following features:
effects
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 16xy: set multiplier of operator.
- x is the operator, either 1 or 2.
- y is the new MULT value..
info
this chip uses the FM (OPLL)109 instrument editor.
chip options
- Ignore top/hi-hat frequency changes: in drums mode, makes the top/hi-hat channels not
write frequency since they share it with snare and tom.
- Apply fixed frequency to all drums at once: sets the frequency of all drums to that of a fixed
frequency OPLL drums instrument when one note with it is reached.
232
Yamaha OPZ (YM2414)
disclaimer: despite the name, this has nothing to do with teenage engineering's OP-Z synth!
this is the YM2151's little-known successor, used in the Yamaha TX81Z and a few other Yamaha
synthesizers. oh, and the Korg Z3 too.
unlike the YM2151, this chip is officially undocumented. very few efforts have been made to study
the chip and document it...
therefore emulation of this chip in Furnace is incomplete and uncertain.
effects
- 10xx: set noise frequency of channel 8 operator 4. 00 disables noise while 01 to 20 enable it.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 17xx: set LFO speed.
- 18xx: set LFO waveform. xx may be one of the following:
- 00: saw
- 01: square
- 02: triangle
- 03: noise
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
234
- 4: -0
- 5: -3
- 6: -2
- 7: -1
- 54xy: set RS of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 55xy: set DT2 of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 56xx: set DR of all operators.
- 57xx: set DR of operator 1.
- 58xx: set DR of operator 2.
- 59xx: set DR of operator 3.
- 5Axx: set DR of operator 4.
- 5Bxx: set D2R/SR of all operators.
- 5Cxx: set D2R/SR of operator 1.
- 5Dxx: set D2R/SR of operator 2.
- 5Exx: set D2R/SR of operator 3.
- 5Fxx: set D2R/SR of operator 4.
info
this chip uses the FM (OPZ)118 instrument editor.
- attempted to enter the fierce battle between Nintendo and Sega, but because its capabilities
are a mix of third and fourth generation, it failed to last long (US and Europe), or
- was Nintendo's most fearsome rival, completely defeating Sega Mega Drive and defending it‐
self against Super Famicom (Japan).
it has 6 wavetable channels and the last two ones also double as noise channels.
furthermore, it has some PCM and LFO!
effects
- 10xx: change wave.
- 11xx: toggle noise mode. only available in the last two channels.
- 12xx: setup LFO. the following values are accepted:
- 00: LFO disabled.
- 01: LFO enabled, shift 0.
- 02: LFO enabled, shift 4.
- 03: LFO enabled, shift 8.
- when LFO is enabled, channel 2 is muted and its output is passed to channel 1's frequency.
- 13xx: set LFO speed.
- 17xx: toggle LEGACY sample mode.
- this effect exists only for compatibility reasons! its use is NOT recommended. use Sample
type instruments instead.
info
this chip uses the PC Engine137 instrument editor.
channel status
the following icons are displayed when channel status is enabled in the pattern view:
- off
- on
236
PC Speaker
40 years of one square beep - and still going! single channel, no volume control...
real output
so far this is the only chip in Furnace which has a real hardware output option.
to enable it, select file > configure chip... > PC Speaker > Use system beeper.
be noted that this will only work on Linux as Windows does not provide any user-space APIs to ad‐
dress the PC speaker directly!
you may configure the output method by going in Settings > Emulation > PC Speaker strategy:
real hardware output only works on BIOS/UEFI (non-Mac) x86-based machines! attempting to do
this under any other device will not work, or may even brick the device (if using /dev/port or
outb())!
oh, and of course you also need the beeper to be present in your machine. some laptops connect
the beeper output to the built-in speakers (or the audio output jack), and some other don't do this
at all.
effects
ha! effects...
info
this chip uses the Beeper93 instrument editor.
maybe no better than a computer terminal, but somebody discovered a way to update the screen at
turbo rate - and eventually its sound "chip" (it was nothing more than an 8-bit shift register) was
abused as well.
effects
- 10xx: set waveform.
- xx is a bitmask.
info
this chip uses the PET138 instrument editor.
238
Pokémon Mini
the Pokémon Mini is a ridiculously small handheld system from 2001. its single pulse channel has
only three volume steps (full, half, and off)... but variable pulse width.
effects
none.
info
this chip uses the Pokémon Mini/QuadTone139 instrument editor.
effects
- 10xx: set waveform.
- 0: harsh noise (poly5+17)
- 1: square buzz (poly5)
- 2: weird noise (poly4+5)
- 3: square buzz (poly5)
- 4: soft noise (poly17)
- 5: square
- 6: bass (poly4)
- 7: buzz (poly4)
- 11xx: set AUDCTL. xx is a bitmask.
- bit 7: 9-bit poly mode. shortens noise.
- bit 6: high channel 1 clock (~1.79MHz on NTSC).
- overrides 15KHz mode.
- bit 5: high channel 3 clock (~1.79MHz on NTSC).
- overrides 15KHz mode.
- bit 4: join channels 1 and 2 for a wide period range.
- use with conjunction with bit 6.
- channel 2 becomes inaccessible when this is on.
- bit 3: join channels 3 and 4 for a wide period range.
- use with conjunction with bit 5.
- channel 4 becomes inaccessible when this is on.
- bit 2: high-pass filter (channels 1 and 3).
- filtered output on channel 1 (I suggest you to set channel 3 volume to 0).
- use for PWM effects (not automatic!).
- bit 1: high-pass filter (channels 2 and 4).
- filtered output on channel 2 (I suggest you to set channel 4 volume to 0).
- use for PWM effects (not automatic!).
- bit 0: 15KHz mode.
- 12xx: toggle two-tone mode.
- when enabled, channel 2 modulates channel 1. I don't know how, but it does.
- only on ASAP core.
info
this chip uses the POKEY140 instrument editor.
when two channels are joined for filtered output, the channel bar will show filter on a bracket
tying them together.
when two channels are joined for wide period range, the channel bar will show 16-bit on a brack‐
et tying them together.
240
PowerNoise
a fantasy sound chip created by The Beesh-Spweesh! and jvsTSX for the Hexheld fantasy video
game console.
its design employs linear-feedback shift registers (LFSR) for sound generation. this technology is
used in many random number generators to produce noise, but it is also capable of producing oth‐
er tones.
it has three noise channels and one "slope" channel capable of generating a variety of saw waves.
it outputs stereo sound with 4-bit volume control per channel and 3-bit master volume control.
effect commands
- 20xx: load LFSR value (low byte).
- on the slope channel, this sets its accumulator (from 00 to 7F).
- 21xx: load LFSR value (high byte).
- 22xx: write to I/O port A.
- 23xx: write to I/O port B.
info
this chip uses the PowerNoise141 instrument editor.
effects
- 10xx: set ring modulation.
- amplitude modulation by the previous channel's output.
- 0 turns it off and 1 turns it on.
info
this chip uses the PV-1000144 instrument editor.
242
Capcom QSound (DL-1425)
this chip was used in Capcom's CP System Dash, CP System II and ZN arcade PCBs.
it supports 16 PCM channels and uses the patented (now expired) QSound stereo expansion al‐
gorithm, as the name implies.
because the chip lacks sample interpolation, it is recommended that you try to play samples at
around 24038Hz to avoid aliasing. this is especially important for e.g. cymbals.
the QSound chip also has a small echo buffer, somewhat similar to the SNES, although with a very
basic (and non-adjustable) filter. it is however possible to adjust the feedback and length of the
echo buffer (the initial values can be set in the "configure chip" option in the file menu or the chip
manager).
there are also 3 ADPCM channels. ADPCM samples are fixed to 8012Hz.
effects
- 10xx: set echo feedback level.
- this effect will apply to all channels.
- 11xx: set echo level.
- 12xx: toggle QSound algorithm.
- on by default.
- 3xxx: set echo delay buffer length.
info
this chip uses the QSound145 instrument editor.
effects
none so far.
info
this chip uses the RF5C68146 instrument editor.
244
Philips SAA1099
this was used by the Game Blaster and SAM Coupé. it's pretty similar to the AY-3-8910, but has ste‐
reo sound, twice the channels and two envelopes, both of which are highly flexible. the envelopes
work like this:
effects
- 10xy: set channel mode.
- x toggles noise.
- y toggles square.
- this effect affects either the first 3 or last 3 channels, depending on where it is placed.
- 11xx: set noise frequency.
- this effect affects either the first 3 or last 3 channels, depending on where it is placed.
- 12xx: setup envelope. this is a bitmask.
- bit 7 toggles the envelope.
- bit 5 toggles whether to use a fixed frequency or lock to the frequency of channel 2 or 5.
- bit 4 sets the envelope resolution.
- bits 1 to 3 set the envelope shape:
- 000: always off
- 001: always on
- 010: down
- 011: down loop (saw)
- 100: up down
- 101: up down loop (triangle)
- 110: up then off
- 111: up loop (reverse saw)
- bit 0 sets whether the right output will mirror the left one.
- this effect affects either the first 3 or last 3 channels, depending on where it is placed.
info
this chip uses the SAA1099147 instrument editor.
the only problem? the waveform of the fourth channel is shared with the fifth one due to not
enough memory in the chip!
the SCC+ fixes this issue though (while being compatible with SCC games).
effects
- 10xx: change wave.
info
this chip uses the Konami SCC/Bubble System WSG149 instrument editor.
246
SegaPCM
16 channels of PCM? no way!
a chip used in the Sega OutRun/X/Y arcade boards. eventually the MultiPCM surpassed it with 28
channels, and later they joined the software mixing gang.
5-channel SegaPCM
Furnace also has a five channel version of this chip, but it only exists for DefleMask compatibility
reasons (which doesn't expose the other channels for rather arbitrary reasons).
effects
- 20xx: set PCM frequency.
- xx is a 256th fraction of 31250Hz.
- this effect exists mostly for DefleMask compatibility; it is otherwise recommended to use
Sample type instruments.
info
this chip uses the SegaPCM150 instrument editor.
unlike SID, it has per-channel volume control, better ADSR envelope which doesn't have bugs, more
waveform mixing modes and the ability to play tonal noise waves.
filter cutoff and resonance ranges were extended, as well as the frequency - finally the chip can hit
B-7 note with default clock speed!
effects
- 10xx: change wave. lower 4 bits specify the wave:
- bit 0: triangle
- bit 1: saw
- bit 2: pulse
- bit 3: noise
- 11xx: set resonance. xx may be a value between 00 and FF.
- 12xx: set filter mode. the following values are accepted:
- 00: filter off
- 01: low pass
- 02: band pass
- 03: low+band pass
- 04: high pass
- 05: band reject/stop/notch
- 06: high+band pass
- 07: all pass
- 13xx: disable envelope reset for this channel.
- 14xy: reset cutoff:
- if x is not 0: on new note
- if y is not 0: now
- this effect is not necessary if the instrument's cutoff macro is absolute.
- 15xy: reset duty cycle:
- if x is not 0: on new note
- if y is not 0: now
- this effect is not necessary if the instrument's duty macro is absolute.
- 16xy: change additional parameters.
- x may be one of the following:
- 0: attack (y from 0 to F)
- 1: decay (y from 0 to F)
- 2: sustain (y from 0 to F)
- 3: release (y from 0 to F)
- 4: ring modulation (y is 0 or 1)
- 5: oscillator sync (y is 0 or 1)
- 6: filter mode (y is 0 to 7)
- 7: waveform mix mode (y is 0 to 3)
- 8: noise mode (y is 0 to 3)
248
- 9: phase reset (y is a discarded parameter and does not matter)
- A: envelope key on/key off (y is 0 (trigger envelope release) or 1 (restart envelope again))
- B: filter on/off (y is 0 (disable filter) or 1 (enable filter))
- 3xxx: set duty cycle. xxx range is 000 to FFF.
- 4xxx: set cutoff. xxx range is 000 to FFF.
info
this chip uses the SID2151 instrument editor.
sadly, the [Link] ended up being a failure as well, mostly due to poor quality games. the
[Link] only lasted 3 years before being discontinued.
however, for its time, it was a pretty competitively priced system. the Game Boy Color was to be re‐
leased in a year for $79.95, while the [Link] was released for $69.99; its later model, the Pocket
Pro, was released in mid-1999 for $29.99 due to the [Link]'s apparent significant decrease in
value.
in fact, most games never used the wavetable/noise mode of the chip. Sonic Jam, for example, uses
a sine wave with a software-controlled volume envelope on the DAC channel (see below for more
information on the DAC channel).
effects
- 10xx: set waveform.
- xx is a value between 0 and 255 that sets the waveform of the channel you place it on.
info
this chip uses the SM8521153 instrument editor.
250
TI SN76489 (e.g. Sega
Master System)
a relatively simple sound chip made by Texas Instruments. a derivative of it is used in Sega's Mas‐
ter System, the predecessor to Genesis. it has three square wave channels and one noise channel...
not really.
nominal mode of SN76489 has 3 square wave channels, with noise channel having only 3 preset
frequencies to use (absurdly low, very low, low). to use more pitches, one can enable a mode which
"steals" the frequency from square wave channel 3. by doing that, SN76489 becomes effectively a 3
channel sound chip. in addition, periodic noise mode can be enabled, with same caveats.
the original iteration of the SN76489 used in the TI-99/4A computer, the SN94624, could only pro‐
duce tones as low as 100Hz, and was clocked at 447 KHz. all later versions (such as the one in the
Master System and Genesis) had a clock divider but ran on a faster clock... except for the SN76494,
which can play notes as low as 13670 Hz (A -1). as a result, its pitch accuracy for higher notes is
compromised.
SN7 versions
SN7 was extremely popular due to low cost. therefore, it was cloned and copied to no end, often
with minor differences between each other. Furnace supports several of these:
- SN94624, can only produce tones as low as 100Hz, and is clocked at 447 KHz.
- SN76494, which can play notes as low as 13.670 Hz (A -1). it has a different noise feedback and
invert masks.
- SN76489, identical to SN94624, just without a clock divider.
- SN76489A, identical to 76494, just with a /8 clock divider.
- SN76496, literally identical to former. why is it even here?
- SN76496 with a Atari-like short noise. the chip of many legend and rumours which may be a
result of inaccurate emulation.
- Sega Master System VDP version has a different, characteristic noise LFSR.
- Game Gear SN7, identical to the above, but with stereo.
- NCR8496, different noise invert mask.
- PSSJ3, literally identical to the former. it just swaps "high" and "low" signals in the output,
which results in no audible difference.
effects
- 20xy: set noise mode.
- x controls whether to inherit frequency from channel 3.
- 0: use one of 3 preset frequencies (C: A-2; C#: A-3; D: A-4).
- 1: use frequency of channel 3.
- y controls whether to select noise or thin pulse.
- 0: thin pulse.
- 1: noise.
252
Super Nintendo
Entertainment System
(SNES) / Super Famicom
the successor to NES to compete with Genesis, packing superior graphics and sample-based audio.
its Sony-developed audio system features a DSP chip, SPC700 CPU, and 64KB of dedicated SRAM
used by both.
this whole system itself is pretty much a separate computer that the main CPU needs to upload its
program and samples to.
Furnace communicates with the DSP directly and provides a full 64KB of memory. this memory
might be reduced excessively on ROM export to make up for playback engine and pattern data. you
can go to window > statistics to see how much memory your samples are using.
- pitch modulation.
- a built in noise generator, useful for hi-hats, cymbals, rides, effects, among other things.
- per-channel echo, which unfortunately eats up a lot of memory but can be used to save chan‐
nels in songs.
- an 8-tap FIR filter for the echo, which is basically a procedural low-pass filter that you can edit
however you want.
- sample loop, but the loop points have to be multiples of 16.
- left/right channel invert for surround sound.
- ADSR and gain envelope modes.
- 7-bit volume per channel.
- sample interpolation, which is basically a low-pass filter that gets affected by the pitch of the
channel.
Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) in order to create
more 'animated' sounds, using less memory than regular samples.
effects
- 10xx: set waveform.
- 11xx: toggle noise mode.
- 12xx: toggle echo on this channel.
- 13xx: toggle pitch modulation. frequency modulation by the previous channel's output. no
effect on channel 1.
- 14xy: toggle inverting the left or right channels. x is left, y is right.
- 15xx: set envelope mode. see gain chart below for 1 through 5.
- 0: ADSR mode.
- 1: gain (direct). volume holds at one level.
info
this chip uses the SNES154 instrument editor.
when two channels are joined for pitch modulation, the channel bar will show mod on a bracket ty‐
ing them together.
channel status
the following icons are displayed when channel status is enabled in the pattern view:
- envelope/gain status:
- direct gain
254
- logarithmic gain decrease
- envelope attack
- envelope decay
- envelope sustain
- envelope release
ADSR
ATTACK 0→1 TIME DECAY 1→S TIME SUSTAIN RATIO RELEASE S→0 TIME
17 220ms
18 180ms
19 150ms
1A 110ms
1B 92ms
1C 74ms
1D 55ms
1E 37ms
1F 18ms
gain
VALUE LINEAR INC. BENT LINE INC. LINEAR DEC. EXPONENT DEC.
00 ∞ ∞ ∞ ∞
01 4.1s 7.2s 4.1s 38s
02 3.1s 5.4s 3.1s 28s
03 2.6s 4.6s 2.6s 24s
04 2.0s 3.5s 2.0s 19s
05 1.5s 2.6s 1.5s 14s
06 1.3s 2.3s 1.3s 12s
07 1.0s 1.8s 1.0s 9.4s
08 770ms 1.3s 770ms 7.1s
09 640ms 1.1s 640ms 5.9s
0A 510ms 900ms 510ms 4.7s
0B 380ms 670ms 380ms 3.5s
0C 320ms 560ms 320ms 2.9s
0D 260ms 450ms 260ms 2.4s
0E 190ms 340ms 190ms 1.8s
0F 160ms 280ms 160ms 1.5s
10 130ms 220ms 130ms 1.2s
11 96ms 170ms 96ms 880ms
12 80ms 140ms 80ms 740ms
13 64ms 110ms 64ms 590ms
14 48ms 84ms 48ms 440ms
15 40ms 70ms 40ms 370ms
256
VALUE LINEAR INC. BENT LINE INC. LINEAR DEC. EXPONENT DEC.
noise frequencies
VALUE FREQ. VALUE FREQ.
00 0 Hz 10 500 Hz
01 16 Hz 11 667 Hz
02 21 Hz 12 800 Hz
03 25 Hz 13 1.0 KHz
04 31 Hz 14 1.3 KHz
05 42 Hz 15 1.6 KHz
06 50 Hz 16 2.0 KHz
07 63 Hz 17 2.7 KHz
08 83 Hz 18 3.2 KHz
09 100 Hz 19 4.0 KHz
0A 125 Hz 1A 5.3 KHz
0B 167 Hz 1B 6.4 KHz
0C 200 Hz 1C 8.0 KHz
0D 250 Hz 1D 10.7 KHz
0E 333 Hz 1E 16 KHz
0F 400 Hz 1F 32 KHz
258
tildearrow Sound Unit
a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow.
effects
- 10xx: set waveform.
- 0: pulse wave
- 1: sawtooth
- 2: sine wave
- 3: triangle wave
- 4: noise
- 5: periodic noise
- 6: XOR sine
- 7: XOR triangle
- 12xx: set pulse width. range is 0 to 7F.
- 13xx: set resonance of filter. range is 0 to FF.
- despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF
(255).
- 14xx: set filter mode and ringmod.
- bit 0: ring mod
- bit 1: low pass
- bit 2: high pass
- bit 3: band pass
- 15xx: set frequency sweep period low byte.
- 16xx: set frequency sweep period high byte.
- 17xx: set volume sweep period low byte.
- 18xx: set volume sweep period high byte.
- 19xx: set cutoff sweep period low byte.
- 1Axx: set cutoff sweep period high byte.
- 1Bxx: set frequency sweep boundary.
- 1Cxx: set volume sweep boundary.
- 1Dxx: set cutoff sweep boundary.
- 1Exx: set phase reset period low byte.
- 1Fxx: set phase reset period high byte.
- 20xx: toggle frequency sweep.
- bit 0-6: speed
info
this chip uses the Sound Unit156 instrument editor.
260
Toshiba T6W28
an enhanced SN76489 derivative. same 4 channels, but with stereo (soft panning!) and noise fre‐
quency being fully independent of channel 3's.
effects
- 20xx: set noise mode.
- 0: thin pulse.
- 1: noise.
info
this chip uses the T6W28158 instrument editor.
its audio portion is pretty barren - only 2 channels. one can output square wave and other may be
either square or noise.
pitch range is limited as well, akin to that of SN76489, and volume control is global.
effects
none so far.
info
this chip uses the TED159 instrument editor.
262
Atari 2600 (TIA)
help me! I can't even get this character in where I want!
I've spent hours debugging the issue, counting every possible cycle and I still cannot get it right!
effects
- 10xx: select shape.
- 0: nothing
- 1: buzzy
- 2: low buzzy
- 3: flangy
- 4: square
- 5: square
- 6: pure buzzy
- 7: reedy
- 8: noise
- 9: reedy
- A: pure buzzy
- B: nothing
- C: low square
- D: low square
- E: low pure buzzy
- F: low reedy
info
this chip uses the TIA160 instrument editor.
the arp macro's fixed mode operates differently, writing the direct pitch to the chip. here's a list of
pitches.
shape 1
PITCH NTSC NOTE CENT PAL NOTE CENT
264
PITCH NTSC NOTE CENT PAL NOTE CENT
10 6.1 6.1
11 5.6 5.6
12 5.2 5.2
13 4.8 4.8
14 4.5 4.5
15 4.2 4.2
16 4.0 4.0
17 3.8 3.7
18 3.6 3.5
19 3.4 3.4
20 3.2 3.2
21 3.1 3.0
22 3.0 2.9
23 2.8 2.8
24 2.7 2.7
25 2.6 2.6
26 2.5 2.5
27 2.4 2.4
28 2.3 2.3
29 2.3 2.2
30 2.2 2.2
31 2.1 2.1
#### shapes 4 and 5
PITCH NTSC NOTE CENT PAL NOTE CENT
266
PITCH NTSC NOTE CENT PAL NOTE CENT
19 3.1 3.1
20 2.9 2.9
21 2.8 2.8
22 2.7 2.7
23 2.6 2.5
24 2.5 2.4
25 2.4 2.3
26 2.3 2.3
27 2.2 2.2
28 2.1 2.1
29 2.0 2.0
30 2.0 2.0
31 1.9 1.9
#### shapes 12 and 13
PITCH NTSC NOTE CENT PAL NOTE CENT
268
PITCH NTSC NOTE CENT PAL NOTE CENT
25 13.0 12.9
26 12.5 12.4
27 12.1 12
28 11.7 11.6
29 11.3 11.2
30 10.9 10.8
31 10.6 10.5
reference: Atari 2600 VCS Sound Frequency and Waveform Guide ([Link]
[Link]/Atari_2600_VCS_Sound_Frequency_and_Waveform_Guide)
270
VERA
this is a video and sound generator chip used in the Commander X16, a modern 8-bit computer cre‐
ated by the 8-Bit Guy.
it has 16 channels of pulse/triangle/saw/noise and one stereo PCM channel.
currently Furnace does not support the PCM channel's stereo mode, though (except for panning).
effects
- 20xx: set waveform.
- 0: pulse
- 1: saw
- 2: triangle
- 3: noise
- 22xx: set duty cycle.
- range is 0 to 3F.
- EExx: ZSM synchronization event.
- xx is the event payload. this has no effect in how the music is played in Furnace, but the ZS‐
MKit library for the Commander X16 interprets these events inside ZSM files and optionally trig‐
gers a callback routine. this can be used, for instance, to cause game code to respond to beats or
at certain points in the music.
info
this chip uses the VERA161 and Generic Sample148 instrument editors.
it was also known as the VC-20 in Germany, and the VIC-1001 in Japan.
it has 4 voices that have a limited but wide tuning range, and like the SN76489 and T6W28, the last
voice is dedicated to playing noise.
the 3 pulse wave channels also have different octaves that they can play notes on:
- the first channel is the bass channel, and it can play notes from octave 1.
- the next is the 'mid/chord' channel, and it plays notes from octave 2.
- and rather obviously, the 3rd pulse channel is typically the lead channel, can play notes from
octave 3.
these channels are not referred as "square" wave channels since a technique to play 15 additional
pulse-like waveforms has been discovered long after the VIC-20's release.
effect commands
- 10xx: switch waveform. range is 00 to 0F.
info
this chip uses the VIC162 instrument editor.
272
Virtual Boy
a "portable" video game console made by Nintendo in the '90s.
it supposedly was the beginning of virtual reality... nah, instead it failed to sell well because you
use it for 15 minutes and then you get a headache.
its sound generation chip is called Virtual Sound Unit (VSU), a wavetable chip that is a lot like PC
Engine, but unlike that, the waves are twice as tall, it doesn't go too low in terms of frequency
(~D-2), and the last channel (yep, it has 6 channels) is a noise one.
additionally, channel 5 offers a modulation/sweep unit. the former is similar to FDS' but has much
reduced speed control.
effects
- 10xx: set waveform.
- 11xx: set noise length. range is 0 to 7.
- only in the noise channel.
- 12xy: setup envelope.
- x determines whether envelope is enabled or not.
- 0: disabled
- 1: enabled
- 3: enabled and loop
- yeah, the value 2 isn't useful.
- y sets the speed and direction.
- 0-7: down
- 8-F: up
- 13xy: setup sweep.
- x sets the speed.
- 0 and 8 are "speed 0" - sweep is ineffective.
- y sets the shift (0 to 7).
- 8 and higher will mute the channel.
- only in channel 5.
- 14xy: setup modulation.
- x determines whether it's enabled or not.
- 0: disabled
- 1: enabled
- 3: enabled and loop
- 2 isn't useful here either.
- y sets the speed.
- 0 and 8 are "speed 0" - modulation is ineffective.
- no, you can't really do Yamaha FM using this.
- only in channel 5.
- 15xx: set modulation wave.
- xx points to a wavetable. range is 0 to FF.
- this is an alternative to setting the modulation wave through the instrument.
274
Konami VRC6
the most popular expansion chip to the Famicom's sound system.
the chip has 2 pulse wave channels and one sawtooth channel.
volume register is 4 bit for pulse wave and 6 bit for sawtooth, but sawtooth output is corrupted
when volume register value is too high. because this register is actually an 8 bit accumulator, its
output may wrap around.
for that reason, the sawtooth channel has its own instrument type. setting volume macro and/or
pattern editor volume setting too high (above 42/2A) may distort the waveform.
pulse wave duty cycle is 8-level. it can be ignored and it has potential for DAC at this case: volume
register in this mode is DAC output and it can be PCM playback through this mode.
Furnace supports this routine for PCM playback, but it consumes a lot of CPU time in real hardware
(even if conjunction with VRC6's integrated IRQ timer).
effects
these effects only are effective in the pulse channels.
info
this chip uses the VRC6164 and VRC6 (saw)164 instrument editors.
effects
- 10xx: change wave.
- 11xx: setup noise mode. channel 4 only.
- 0: disable.
- 1-8: enable and set length.
- 12xx: setup sweep period. channel 3 only.
- 0: disable.
- 1-32: enable and set period.
- 13xx: setup sweep amount. channel 3 only.
- 00 to 7F for 0 to 127.
- 80 to FF for -128 to -1.
info
this chip uses the WonderSwan167 instrument editor.
channel status
the following icons are displayed when channel status is enabled in the pattern view:
- off
- on
- sweep (channel 3):
- disabled
- enabled
- noise mode (channel 4):
- off
276
- on
it has 16 channels of wavetable sound with some support for 8-bit samples up to 128KB in length.
the sample frequency resolution is pretty bad in the low end though...
even though this chip has stereo output, no board (as far as we know) uses the two outputs that it
has... instead, only one output is connected, effectively being used as a mono chip.
the chip also has some (complicated) hardware volume envelope capabilities, with half of its
memory being usable for that purpose. the shape of a volume envelope is defined by user-provided
128×16 waveforms.
the chip can store up to 32 sound waveforms and envelope waveforms at once.
this chip was the inspiration for Organya/PxTone (the former being used in a well-known game
called Cave Story).
effects
- 10xx: change wave.
- 11xx: change envelope shape. also wavetable.
- 17xx: toggle LEGACY sample mode.
- this effect exists only for compatibility reasons! its use is NOT recommented. use Sample
type instruments instead.
- 20xx: set PCM frequency. range is 1 to FF.
- PCM frequency formula: step * (clock / 8192).
- range is 1.95KHz to 498KHz if the chip clock is 16MHz.
- 22xx: set envelope mode.
- bit 0 sets whether envelope will affect this channel.
- bit 1 sets whether envelope will run once instead of looping.
- bit 2 sets whether split mode is used. I don't know what it does.
- bit 3/5 sets whether the right/left shape will mirror the original one.
- bit 4/6 sets whether the right/left output will mirror the original one.
- 23xx: set envelope period.
- 25xx: slide envelope period up.
- 26xx: slide envelope period down.
- 29xy: enable auto-envelope mode.
- in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
- x is the numerator.
- y is the denominator.
- if x or y are 0 this will disable auto-envelope mode.
info
this chip uses the X1-010169 instrument editor.
278
Yamaha YM2151
the sound chip powering several arcade boards, synthesizers and the Sharp X1/X68000. eight 4-op
FM channels, with overpowered LFO and almost unused noise generator.
it also was present on several pinball machines and synthesizers of the era, and later surpassed by
the YM2414 (OPZ) present in the world-famous TX81Z.
in most arcade boards the chip was used in combination with a PCM chip, like SegaPCM247 or OKI's
line of ADPCM chips218.
effects
- 10xx: set noise frequency of channel 8 operator 4. 00 disables noise while 01 to 20 enables
it.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 17xx: set LFO speed.
- 18xx: set LFO waveform.
- 00: saw
- 01: square
- 02: triangle
- 03: noise
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 1Exx: set LFO AM depth.
- 1Fxx: set LFO PM depth.
- 30xx: enable envelope hard reset.
- this works by inserting a quick release and tiny delay before a new note.
- 50xy: set AM of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y determines whether AM is on.
- 51xy: set SL of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 52xy: set RR of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 53xy: set DT of operator.
info
this chip uses the FM (OPM)112 instrument editor.
280
Yamaha YM2203 (OPN)
a cost-reduced version of the YM2151 (OPM).
it only has 3 FM channels instead of 8 and removes stereo, the LFO and DT2 (coarse detune).
however it does contain an AY/SSG part which provides 3 channels of square wave with noise and
envelope.
this chip was used in the NEC PC-88/PC-98 series of computers, the Fujitsu FM-7AV and in some
arcade boards.
several variants of this chip were released as well, with more features.
effects
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator from 1 to 4.
- y is the new MULT value..
- 18xx: toggle extended channel 3 mode.
- 0 disables it and 1 enables it.
- only in extended channel 3 chip.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 20xx: set SSG channel mode. xx may be one of the following:
- 0: square
- 1: noise
- 2: square and noise
- 3: nothing (apparently)
- 4: envelope and square
- 5: envelope and noise
- 6: envelope and square and noise
- 7: nothing
- 21xx: set noise frequency. xx is a value between 00 and 1F.
- 22xy: set envelope mode.
- x sets the envelope shape, which may be one of the following:
- 0: \___ decay
- 4: /___ attack once
- 8: \\\\ saw
- 9: \___ decay
- A: \/\/ inverse obelisco
282
- 5Cxx: set D2R/SR of operator 1.
- 5Dxx: set D2R/SR of operator 2.
- 5Exx: set D2R/SR of operator 3.
- 5Fxx: set D2R/SR of operator 4.
extended channel 3
in ExtCh mode, channel 3 is split into one column for each of its four operators and feedback are
shared. the frequency of each operator may be controlled independently with notes and effects.
this can be used for more polyphony or more complex sounds.
all four operators are still combined according to the algorithm in use. for example, algorithm 7
acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with
algorithm 0, placing a note in any operator triggers that operator alone.
info
this chip uses the FM (OPN)115 and AY-3-8910/SSG91 instrument editor.
it was one of the available sound chips for the NEC PC-88VA and later models of PC-98 series of
computers.
the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built-in drums have
been replaced with 6 sample channels.
effects
- 10xy: set LFO parameters.
- x toggles the LFO.
- y sets its speed.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 18xx: toggle extended channel 3 mode.
- 0 disables it and 1 enables it.
- only in extended channel 3 chip.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 20xx: set SSG channel mode.
- 00: square
- 01: noise
- 02: square and noise
- 03: nothing (apparently)
- 04: envelope and square
- 05: envelope and noise
- 06: envelope and square and noise
- 07: nothing
- 21xx: set noise frequency. range is 0 to 1F.
- 22xy: set envelope mode.
- x sets the envelope shape, which may be one of the following:
- 0: \___ decay
- 4: /___ attack once
- 8: \\\\ saw
- 9: \___ decay
284
- A: \/\/ inverse obelisco
- B: \¯¯¯ decay once
- C: //// inverse saw
- D: /¯¯¯ attack
- E: /\/\ obelisco
- F: /___ attack once
- if y is 1 then the envelope will affect this channel.
- 23xx: set envelope period low byte.
- 24xx: set envelope period high byte.
- 25xx: slide envelope period up.
- 26xx: slide envelope period down.
- 29xy: enable SSG auto-envelope mode.
- in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
- x is the numerator.
- y is the denominator.
- if x or y are 0 this will disable auto-envelope mode.
- 30xx: enable envelope hard reset.
- this works by inserting a quick release and tiny delay before a new note.
- 50xy: set AM of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y determines whether AM is on.
- 51xy: set SL of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 52xy: set RR of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 53xy: set DT of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value:
- 0: +0
- 1: +1
- 2: +2
- 3: +3
- 4: -0
- 5: -3
- 6: -2
- 7: -1
- 54xy: set RS of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 55xy: set SSG-EG of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value (0-8).
- values between 0 and 7 set SSG-EG.
- value 8 disables it.
- 56xx: set DR of all operators.
- 57xx: set DR of operator 1.
- 58xx: set DR of operator 2.
- 59xx: set DR of operator 3.
- 5Axx: set DR of operator 4.
extended channel 3
in ExtCh mode, channel 3 is split into one column for each of its four operators. feedback and LFO
levels are shared. the frequency of each operator may be controlled independently with notes and
effects. this can be used for more polyphony or more complex sounds.
all four operators are still combined according to the algorithm in use. for example, algorithm 7
acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with
algorithm 0, placing a note in any operator triggers that operator alone.
info
this chip uses the FM (OPN)115, AY-3-8910/SSG91, ADPCM-A89 and ADPCM-B90 instrument editors.
286
Neo Geo/Yamaha YM2610
originally an arcade board, but SNK shortly adapted it to a rather expensive video game console
with the world's biggest cartridges because some people liked the system so much they wanted a
home version of it.
its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and 2 different format ADPCM
([Link] in a single package!
effects
- 10xy: set LFO parameters.
- x toggles the LFO.
- y sets its speed.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 18xx: toggle extended channel 2 mode.
- 0 disables it and 1 enables it.
- only in extended channel 2 chip.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 20xx: set SSG channel mode.
- 0: square
- 1: noise
- 2: square and noise
- 3: nothing (apparently)
- 4: envelope and square
- 5: envelope and noise
- 6: envelope and square and noise
- 7: nothing
- 21xx: set noise frequency. range is 00 to 1F.
- 22xy: set envelope mode.
- x sets the envelope shape:
- 0: \___ decay
- 4: /___ attack once
- 8: \\\\ saw
- 9: \___ decay
- A: \/\/ inverse obelisco
- B: \¯¯¯ decay once
288
- 5Dxx: set D2R/SR of operator 2.
- 5Exx: set D2R/SR of operator 3.
- 5Fxx: set D2R/SR of operator 4.
extended channel 2
in ExtCh mode, channel 2 is split into one column for each of its four operators. feedback and LFO
levels are shared. the frequency of each operator may be controlled independently with notes and
effects. this can be used for more polyphony or more complex sounds.
all four operators are still combined according to the algorithm in use. for example, algorithm 7
acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with
algorithm 0, placing a note in any operator triggers that operator alone.
info
this chip uses the FM (OPN)115, AY-3-8910/SSG91, ADPCM-A89 and ADPCM-B90 instrument editors.
effects
- 10xy: set LFO parameters.
- x toggles the LFO.
- y sets its speed.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 18xx: toggle extended channel 3 mode.
- 0 disables it and 1 enables it.
- only in extended channel 3 chip.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 1Cxx: set attack of operator 3.
- 1Dxx: set attack of operator 4.
- 20xx: set SSG channel mode.
- 00: square
- 01: noise
- 02: square and noise
- 03: nothing (apparently)
- 04: envelope and square
- 05: envelope and noise
- 06: envelope and square and noise
- 07: nothing
- 21xx: set noise frequency. range is 00 to 1F.
- 22xy: set envelope mode.
- x sets the envelope shape, which may be one of the following:
- 0:\___ decay
- 4:/___ attack once
- 8:\\\\ saw
- 9:\___ decay
- A:\/\/ inverse obelisco
- B:\¯¯¯ decay once
290
- C://// inverse saw
- D:/¯¯¯ attack
- E:/\/\ obelisco
- F:/___ attack once
- if y is 1 then the envelope will affect this channel.
- 23xx: set envelope period low byte.
- 24xx: set envelope period high byte.
- 25xx: slide envelope period up.
- 26xx: slide envelope period down.
- 29xy: enable SSG auto-envelope mode.
- in this mode the envelope period is set to the channel's notes, multiplied by a fraction.
- x is the numerator.
- y is the denominator.
- if x or y are 0 this will disable auto-envelope mode.
- 30xx: enable envelope hard reset.
- this works by inserting a quick release and tiny delay before a new note.
- 50xy: set AM of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y determines whether AM is on.
- 51xy: set SL of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 52xy: set RR of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 53xy: set DT of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value:
- 0: +0
- 1: +1
- 2: +2
- 3: +3
- 4: -0
- 5: -3
- 6: -2
- 7: -1
- 54xy: set RS of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 55xy: set SSG-EG of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value (0-8).
- values between 0 and 7 set SSG-EG.
- value 8 disables it.
- 56xx: set DR of all operators.
- 57xx: set DR of operator 1.
- 58xx: set DR of operator 2.
- 59xx: set DR of operator 3.
- 5Axx: set DR of operator 4.
- 5Bxx: set D2R/SR of all operators.
- 5Cxx: set D2R/SR of operator 1.
extended channel 3
in ExtCh mode, channel 3 is split into one column for each of its four operators. feedback and LFO
levels are shared. the frequency of each operator may be controlled independently with notes and
effects. this can be used for more polyphony or more complex sounds.
all four operators are still combined according to the algorithm in use. for example, algorithm 7
acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with
algorithm 0, placing a note in any operator triggers that operator alone.
info
this chip uses the FM (OPN)115, AY-3-8910/SSG91, ADPCM-A89 and ADPCM-B90 instrument editors.
292
Yamaha YM2612
one of two chips that powered the Sega Genesis. it is a six-channel, four-operator FM synthesizer.
channel #6 can be turned into 8-bit PCM player, that via software mixing, thanks to Z80 sound CPU,
can play more than one channel of straight-shot samples at once.
Furnace also offers DualPCM, a Z80 driver that splits channel 6 into two individual PCM channels
with variable pitch. using the console's Z80 processor, these are mixed together in software and
streamed to channel 6 in PCM mode with a mix rate of 13750 Hz. VGM export requires the "direct
stream mode" option to be enabled, and resulting files will be very large.
extended channel 3
in ExtCh mode, channel 3 is split into one column for each of its four operators. feedback and LFO
levels are shared. the frequency of each operator may be controlled independently with notes and
effects. this can be used for more polyphony or more complex sounds.
all four operators are still combined according to the algorithm in use. for example, algorithm 7
acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with
algorithm 0, placing a note in any operator triggers that operator alone.
CSM
CSM is short for "Composite Sinusoidal Modeling". CSM works by sending key-on and key-off com‐
mands to channel 3 at a specific frequency, controlled by the added "CSM Timer" channel. this can
be used to create vocal formants (speech synthesis!) or other complex effects.
CSM is beyond the scope of this documentation. for more information, see this brief SSG-EG and
CSM video tutorial ([Link] .
DualPCM
thanks to the Z80 sound CPU, DualPCM can play two samples at once! this mode splits channel 6
into two individual PCM channels with variable pitch. these are mixed together in software and
streamed to channel 6 with a mix rate of 13750 Hz. VGM export requires the "direct stream mode"
option to be enabled, and resulting files will be very large.
effects
- 10xy: set LFO parameters.
- x toggles the LFO.
- y sets its speed.
- 11xx: set feedback of channel.
- 12xx: set operator 1 level.
- 13xx: set operator 2 level.
- 14xx: set operator 3 level.
- 15xx: set operator 4 level.
294
- 5Cxx: set D2R/SR of operator 1.
- 5Dxx: set D2R/SR of operator 2.
- 5Exx: set D2R/SR of operator 3.
- 5Fxx: set D2R/SR of operator 4.
info
this chip uses the FM (OPN)115 and Generic Sample148 instrument editors.
sadly Yamaha didn't care about these chips too much, and the register specs were completely un‐
available, which means the YMU759 is totally unsupported and unemulated besides Yamaha's offi‐
cial emulator for it built into MidRadio.
Furnace is able to load DefleMask modules written for this system; however, it doesn't support any
of its effects and is simulated using the OPL core.
effects
since this chip is so abandoned, there isn't any support for it.
even DefleMask dropped support for the chip in version 0.11, which just shows how poorly the chip
has been treated, both by Yamaha themselves and the community.
hey, at least it was the spark that ignited the idea of DefleMask.
info
this chip uses the FM (OPL)106 and Generic Sample148 instrument editors.
296
Yamaha YMZ280B (PCMD8)
8-channel PCM/ADPCM sample-based sound chip designed for use with arcade machines. it lived
throughout mid to late 90s.
it has 16-level stereo panning, up to 16-bit PCM and up to 16MB of external PCM data.
effects
none so far.
info
this chip uses the YMZ280B170 instrument editor.
not really - very soon talented programmers found out ways to output much more than one square
wave channel. a lot of ZX beeper routines do exist, but Furnace only supports two engines:
- a Follin/SFX-like engine with 6 channels of narrow pulse wave and click drums.
- QuadTone: PWM-driven engine with 4ch of pulse wave with freely variable duty cycles and 1-
bit PCM drums.
effects
- 12xx: set pulse width.
- 17xx: trigger overlay drum.
- xx is the sample number.
- overlay drums are 1-bit and always play at 55930Hz (NTSC) or 55420Hz (PAL).
- the maximum length is 2048!
info
this chip uses the Beeper93 or Pokémon Mini/QuadTone139 instrument editor.
298
advanced
advanced Furnace features.
- find/replace314
- mixer324
- grooves318
- channel manager300
- pattern manager328
- chip manager306
- compatibility flags313
- song comments312
- piano330
- oscilloscope327
- oscilloscope (X-Y)334
- oscilloscopes (per-channel)302
- clock308
- register view332
- log viewer322
- stats333
other:
- Visible: uncheck the box to hide the channel from the pattern view. pattern data will be kept.
- crossed-arrows button: click and drag to rearrange pattern data throughout the song.
- note: this does not move channels around! it only moves the channel's pattern data.
- Name: the name displayed at the top of each channel in the pattern view.
300
- the next setting is "short name", which is displayed in the orders view and/or when a channel
is collapsed.
right-clicking the view will display the configuration view shown above:
302
- Off: use the Columns setting.
- Mode 1: always fewer columns than rows.
- Mode 2: bias slightly toward more columns.
- Mode 3: always more columns than rows.
- Amplitude: scales amplitude for all oscilloscope views.
- Gradient: this allows you to use a gradient for determining the waveforms' colors instead of a
single color. see the gradient section for more information.
- if this option is off, a color selector will be displayed. right-click on it for some options:
- select between the square selector and the color wheel selector.
- Alpha bar: display an opacity bar.
- Text format: this allows you to display some text on each oscilloscope view. the following
codes may be used:
- %c: channel name
- %C: channel short name
- %d: channel number (starting from 0)
- %D: channel number (starting from 1)
- %n: channel note
- %i: instrument name
- %I: instrument number (decimal)
- %x: instrument number (hex)
- %s: chip name
- %p: chip part number
- %S: chip ID
- %v: volume (decimal)
- %V: volume (percentage)
- %b: volume (hex)
- %l: new line
- %%: percent sign
when enabling the Gradient setting, a gradient view is displayed in where circular "points" can be
placed.
each point adds a color spot.
the resulting image is used to look up the waveform's color as determined by each axis.
304
- middle-click on a point to delete it.
- Background: sets the gradient's background color.
- X Axis: determines what the horizontal axis maps to.
- Y Axis: determines what the vertical axis maps to. these can be set to the following:
- None (0%): always left or bottom
- None (50%): always center
- None (100%): always right or top
- Frequency: changes color with frequency
- Volume: changes color with volume
- Channel: changes color based on channel number (first channel is 0% and last is 100%)
- Brightness: currently does nothing
- Note Trigger: changes color when a new note is played
Preserve channel order: make existing pattern data stay in place even when chips are rearranged.
when turned off, pattern data will be arranged to match (the default, and usually desired behavior).
306
Clone channel data: when cloning chips, also copy patterns, pattern names, channel names and
other parameters to the clone.
to move a chip around, click and drag the button to the left.
to replace a chip with a different one, click the Change button. this will display the chip selector.
click on a chip's name to open chip configuration. this allows you to change chip options, such as
clock rate, chip type and so on.
the clock shows the current playback position relative to the start of the song:
- order : row
- measure : beat (as defined by row highlight settings)
- beat
- elapsed time in minutes:[Link]
308
command line usage
NAME
Furnace - a chiptune tracker
SYNOPSIS
furnace [params...] [file]
DESCRIPTION
Furnace is a chiptune tracker that supports many systems and sound chips from the 8/16-bit era.
even though it is primarily controlled by using its graphical user interface, Furnace also offers a
command line interface, which is described here.
USAGE
starting Furnace without arguments will start the graphical user interface (GUI), as long as Furnace
has been compiled with GUI enabled.
passing the path to a file will open that file at start-up. if Furnace cannot open that file, it will re‐
port an error and quit.
general
engine
audio export
VGM export
export (other)
310
SEE ALSO
the Furnace user manual in the [Link] file.
comments, credits, or any arbitrary text may be entered here. it has no effect on the song.
there is no word wrap; long lines must be broken manually with the Enter/Return key.
312
compatibility flags
the Compatibility Flags window contains several tabs full of settings that change playback beha‐
vior. a new Furnace song will have these disabled, while opening a DefleMask module, .mod, or
earlier Furnace file will automatically set the appropriate options.
hovering over most options will bring up additional info about them. it is not recommended to
change any of these, especially the ones in the DefleMask and Old Furnace sections.
find
all data that can be found within a pattern can be searched for here.
a query contains:
- Note: note.
- Ins: instrument.
- Volume: volume.
- Effect: effect type.
- Value: effect value.
314
all of these have the following choices for what data will be found:
- Note: note.
- Ins: instrument.
- Volume: volume.
- Effect: effect type.
- Value: effect value.
all of these have the following choices for how they alter matches:
316
the following options also are available:
- Add effect: adds another Effect and Value to be replaced according to how they were found.
- Remove effect: removes last Effect and Value.
- Effect replace mode:
- Replace matches only: replaces only the effect columns that match.
- Replace matches, then free spaces: replaces matched effects; if there are effect columns
without data, those will be filled in with the additional effect replacements.
- Clear effects: overwrites effect data with replacement effects.
- Insert in free spaces: replaces nothing; replacement effects are inserted in free effects
columns when available.
- Replace: performs the query specified in the Find tab and replaces it as directed.
318
the "Grooves" window displays the list of groove patterns in the song.
- the + button adds a new groove pattern; click in the groove pattern to edit it.
- the × buttons remove them.
a single 09xx command will switch to the matching numbered groove pattern.
tempo
this is a non-exhaustive list of grooves and their equivalent tempo in BPM.
note: this table assumes a song's tick rate setting is left at its default value for the chosen engine
speed: 60 for NTSC, or 50 for PAL.
BPM NTSC BPM PAL GROOVE BPM NTSC BPM PAL GROOVE
320
input latch
input latch determines which data are placed along with a note. as in the pattern view, the columns
are note (not changeable), instrument, volume, effect type, and effect value.
if the Follow checkbox is enabled, the log will snap to the bottom and continually scroll to show
the newest messages. if disabled, it will stay put on what's currently shown.
the Level dropdown determines the minimum importance of the messages displayed.
322
memory composition
this window displays the memory usage of chips that support memory (e.g. for samples).
memory composition
"Mixer" tab
324
"Patchbay" tab
the graph shows each existing unit along with their outputs, inputs, and the "patch cables" con‐
necting them. connections can be made by dragging between an output and an input. right-clicking
on a unit gives the option to disconnect all patches from that unit.
the operation mask toggles which columns will be affected by the listed operations. as in the pat‐
tern view, the columns are note, instrument, volume, effect types, and effect values. the effect
toggles apply to all effect columns.
click any area to toggle it. a --- or -- means the operation will ignore any data in that column.
326
oscilloscope
the Oscilloscope shows the audio output as a waveform.
De-duplicate patterns looks for matching patterns, eliminates all but the first instance, and
changes all references in the order list to match.
Re-arrange patterns renumbers patterns to be in sequence, along with changing all references in
the order list to match.
Sort orders renumbers orders and re-arranges patterns so that they are in order.
Make patterns unique will clone all patterns that have been used more than once.
328
the pattern grid shows each channel and all its patterns. these are color-coded to show how much
they're used in the song; these colors can be changed in Settings.
right-clicking on the piano keys will make the buttons disappear; right-clicking again brings them
back.
330
options
key layout:
- Automatic
- Standard: black keys are 2/3 length.
- Continuous: black keys are full length.
Share play/edit offset/range: if disabled, the piano will keep different octave and range values for
playback and non-playback states.
**Read-only (can't input notes): prevents note entry.
332
statistics
the Statistics window shows audio load (CPU used by emulation/playback).
(TODO: image)
- X Channel: the output channel which will affect the X (horizontal) axis. default is 1 (left).
- Invert: flips the axis, therefore flipping the view horizontally.
- Y Channel: the output channel which will affect the Y (vertical) axis. default is 2 (right).
- Invert: flips the axis, therefore flipping the view vertically.
- Zoom: changes amplitude, making the plot bigger or smaller.
- Samples: the maximum number of samples to use for plotting.
- this setting may be replaced by another or removed in a future version.
- Decay Time (ms): sets how long it takes for the points/lines to fade away.
- Intensity: changes the brightness of the dots/lines.
- Line Thickness: sets how thick lines are.
334
guides
this is a collection of user-contributed Furnace guides which may be useful during composition.
- tuning samples342
- using samples with limited playback rates 340
- choosing emulation cores336
- using OPLL patch macro341
- using AY/SAA hardware envelope338
other resources
- FM Synthesis of Real Instruments ([Link]
FM_Synthesis_of_Real_Instruments.pdf) : an in-depth tutorial on creating FM patches from
scratch.
- YM2151 core:
- ymfm: default playback core. much less CPU usage than Nuked-OPM, but less accurate. re‐
commended for users with last-gen or earlier hardware.
- Nuked-OPM: default render core. much more accurate than ymfm, due to the emulator being
based on an image of the die map taken from a real YM2151. very CPU heavy, only recommended
for users with recent hardware.
- YM2612 core:
- Nuked-OPN2: default core. a little lighter on the CPU than Nuked-OPM.
- ymfm: same as ymfm above.
- YMF276-LLE: a new core written by the author of the Nuked cores, specifically focused on
YMF276 emulation. it is very slow and not useful for real-time playback.
- SN76489 core:
- MAME: default core. less accurate than Nuked, but with lower CPU usage. comes from the
MAME emulator project.
- Nuked-PSG Mod: more accurate, but not by that much. this originally started as an emulator
for the YM7101 PSG sound generator, but was modified to emulate the SN7 as the MAME core
was deemed unsatisfactory by some.
- NES core:
- puNES: default core. it comes from a dedicated NES emulator.
- NSFplay: higher CPU usage than puNES.
- FDS core:
- puNES: default playback core. lower CPU usage and far less accurate.
- NSFplay: default render core. higher CPU usage and much more accurate.
- SID core:
- reSID: default playback core. a high quality emulation core. somewhat CPU heavy.
- reSIDfp: default render core. improved version of reSID. the most accurate choice. extremely
CPU heavy.
- dSID: a lightweight open-source core used in DefleMask. not so accurate but it's very CPU
light.
- POKEY core:
- Atari800 (mzpokeysnd): does not emulate two-tone mode.
- ASAP (C++ port): default core. the sound core used in the ASAP player. most accurate option.
- OPN/OPNA/OPNB cores:
- ymfm only: lower CPU usage, less accurate FM.
- Nuked-OPN2 (FM) + ymfm (SSG/ADPCM): default cores. more accurate FM at the cost of more
CPU load.
- YM2608-LLE: a new core written by the author of the Nuked cores. high accuracy, but ex‐
tremely high CPU usage.
- OPL/OPL2/Y8950 core:
- Nuked-OPL3: high quality OPL emulation core. slightly off due to tiny differences between OPL
and OPL3, but otherwise it is good.
- ymfm: this core is supposed to use less CPU than Nuked-OPL3, but for some reason it actually
doesn't.
336
- YM3812-LLE: a new core written by the author of the Nuked cores. it features extremely ac‐
curate emulation.
- this core uses a lot of CPU time. may not be suitable for playback!
- OPL3 core:
- Nuked-OPL3: high quality OPL emulation core.
- ymfm: this core is supposed to use less CPU than Nuked-OPL3, but for some reason it actually
doesn't.
- YMF262-LLE: a new core written by the author of the Nuked cores. it features extremely ac‐
curate emulation.
- this core uses even more CPU than YM3812-LLE. not suitable for playback or even rendering
if you're impatient!
- ESFM core:
- ESFMu: the ESFM emulator. best choice but CPU intensive.
- ESFMu (fast): this is a modification of ESFMu to reduce CPU usage at the cost of less accuracy.
- OPLL core:
- Nuked-OPLL: this core is accurate and the default.
- emu2413: a less accurate core that uses less CPU.
- AY-3-8910/SSG core:
- MAME: default core.
- AtomicSSG: SSG core extracted from YM2608-LLE.
AY-3-8910 / AY8930
In the instrument editor:
- Add a single tick to the "Waveform" macro with only envelope turned on. This will disable any
output, but don't worry.
- Add a single tick to the "Envelope" macro and select enable.
If you play a note now, you will hear a very high-pitched squeak. This is because you must set en‐
velope period, which is the frequency at which the hardware envelope runs. You can do it in two
ways:
Auto-envelope works via numerator and denominator. In general, the higher the numerator, the
higher the envelope pitch. The higher the denominator, the lower the envelope pitch. Why are there
both of these? Because the envelope generator might be used to mask the tone output (i.e. affect
the square wave as well). To do it, set the "Waveform" macro values to both tone and envelope.
The higher the denominator value, then the lower the envelope pitch relative to the square wave
output, and similarly with the numerator. With the square-and-envelope setting, a lot of wild, de‐
tuned synth instruments can be made.
Back to the hardware envelope itself. Depending on the "Envelope" macro value, different envelope
shapes can be obtained. The most basic one, 8, is a sawtooth wave. The direction value will in‐
vert the envelope, producing the reverse sawtooth. The alternate value produces an interesting
pseudo-triangular wave, similiar to halved sine. That one can also be reversed. Hold option dis‐
ables the envelope.
Warning: The envelope pitch resolution is fairly low; at high pitches it will be detuned. Because of
this, it's used mostly for bass.
Warning: There is only one hardware envelope generator. You can't use two pitches or two wave‐
forms at once.
338
SAA1099
SAA envelope works a bit differently. It doesn't have its own pitch; instead, it relies on the channel
2/5 pitch. It also has many more parameters than the AY envelope. To use it:
- Go to waveform macro and add a single tick set to 0 (unless you want to have a square wave
mask).
- Set up an envelope macro. Turn on enabled, loop, and depending on the desired shape, cut
and direction. Resolution will give you higher pitch range than on the AY.
- Place two notes in the pattern editor. One in channel 2 will control the envelope pitch. The oth‐
er in channel 3 can be any note you wish; it's just to enable the envelope output.
examples
- Demoscene-type Beat by Duccinator ([Link]
- Philips SAA1099 Test by Duccinator ([Link]
- Touhou Kaikidan: Mystic Square title theme by ZUN ([Link]
v=tUKei7Pz0Fw) : Rare instance of AY envelope used for drums, it can be used to mask the noise
generator output too
for example: using the NES, a C-4 note in the PCM channel means the associated sample will play
back at a rate of 8363Hz. let's say we want to use a slap bass sample recorded at a rate of
22050Hz in which the audible pitch is A-2. let's also say that when we put a C-4 note in the tracker,
we want to hear the bass play at what sounds like C-3, transposed three semitones higher than the
recorded pitch.
the NES PCM frequency table shows the sixteen notes can be played. if a D-4 is entered, the slap
bass will be heard at D-3 as desired. what if we want to hear a C#3, though?
- load up the original sample in a new slot and open it in the sample editor.
- the Note selector will show "F-6"; this time we add four semitones to make it "A-6". the Hz will
change to 27776.
- just like before, use the Resample button. in the little pop-up, type in 8363 (yes, the NES's C-4
rate), then click Resample.
- select the instrument from the instrument list and open it in the instrument editor. turn on
"Use sample map".
- in the leftmost column, find C#5. click in the next column and enter the number of the second
sample. in the next column to the right, click the "C#4" and hit the key for C-4 to change it.
- in the pattern editor, enter a C#4; it should sound like a C#3!
- try adding another entry in the sample map so the note D#4 plays the second sample at D-4.
340
using OPLL patch macro
YM2413's biggest flaw (or, rather, cost-saving feature) was that it could use only one user-defined
instrument at once. It wasn't monotimbrial; you could use 15 built-in presets and 5 built-in drum
tones freely, but for these going off the beaten path, it surely was limiting. However, there is one
technique, as amazing as simple: mid-note preset switching.
the idea is to use the first patch to put the envelope in an unintended state for the second patch so
that it sounds different, with a higher or lower modulation level. the sustain level defines at which
"envelope level" the envelope will switch to the sustain state (or release depending on envelope
type). if the first patch is used to put the envelope into sustain at a higher or lower envelope state
than intended for the second patch, it'll still be in sustain/release but at a higher or lower level
than it should be at that point.
therefore, much more variety can be forced out, without using custom instruments. As of July 2023,
Furnace is the only tool supporting this feature. It is accessed in 'Macros' tab in OPLL instrument
editor.
For example, try putting the first macro value as 14 (acoustic bass preset), followed by 4 (flute pre‐
set). This way you will get distortion guitar-like sound this is nothing like other 2413 preset! There
are many combination to test out, which is highly recommended (I can only say, 12->1 or 12->4 pro‐
duces sound similiar to the well-known 4-op FM mallet brass)
examples
- Lman-Clubster cover by Mahbod ([Link]
- OPLL Nation by Mahbod ([Link]
it's important to remember that the "Hz" and "Note" as shown in the sample editor are unrelated to
the note heard in the sample itself. a sample shown as having a "Note" of C-4 will use a sample
rate of 4181, even though it may contain a note played at a different pitch than C.
for this example, we'll use a sample of a note played at E and recorded at 22050Hz.
- if needed, use the "Create instrument from sample" button to make an instrument to use in the
track.
- calculate the semitone difference in Hz between the note your recorded sample is playing and
C. in this example, the nearest C is 4 semitones down from E.
- set "Note" to 4 semitones lower than it shows. in this case, it starts at F-6, so set it to C#6.
- or, use a pitch calculator like [Link] (https://
[Link]/other/semitone) . input Frequency 1 as 22050Hz, input -4
semitones, and receive a Frequency 2 of 17501.10Hz. enter that value into "Hz".
- now, using the "Preview sample" button should play the note at C. entering an E in the pattern
will now play it at or near E.
- if the sample still sounds out of tune, adjust "Hz" or "Fine" to bring it in line.
if notes seem "capped" – for example, playing anything over D-6 sounds like a D-6 – those notes
exceed the maximum sample playback rate for the chip. the only solution is to use "Resample" to
change the sample to a lower rate.
342