0% found this document useful (0 votes)
30 views323 pages

Manual

Uploaded by

yidolo2212
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views323 pages

Manual

Uploaded by

yidolo2212
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 323

Furnace

User Manual

for version 0.6.1


authors
- brickblock369
- cam900
- DeMOSic
- Electric Keet
- freq-mod
- host12prog
- Lunathir
- tildearrow

special thanks to ZoomTen for providing tools which assisted in the production of this document!

copyright © 2024 tildearrow and other authors.

this documentation is under the Creative Commons Attribution 3.0 Unported (https://creative‐
commons.org/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.

this documentation is provided as-is and without warranty of any kind.

this manual is written for version 0.6.1 of Furnace.


it may not necessarily apply to previous or future versions.

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. keyboard ........................................................................................................................................... 33
6. menu bar .......................................................................................................................................... 40
7. orders ............................................................................................................................................... 46
8. play/edit controls ......................................................................................................................... 48
9. settings ............................................................................................................................................. 52
10. song info ........................................................................................................................................... 65
3. pattern .......................................................................................................................................................... 67
1. effect list .......................................................................................................................................... 72
4. instrument editor ...................................................................................................................................... 77
1. ADPCM-A instrument editor ....................................................................................................... 87
2. ADPCM-B instrument editor ...................................................................................................... 88
3. AY-3-8910 instrument editor ...................................................................................................... 89
4. AY8930 instrument editor ........................................................................................................... 90
5. beeper instrument editor ............................................................................................................. 91
6. Namco C140 instrument editor .................................................................................................. 92
7. Namco C219 instrument editor .................................................................................................. 93
8. C64 SID instrument editor .......................................................................................................... 94
9. Ensoniq ES5506 instrument editor ........................................................................................... 96
10. FDS instrument editor .................................................................................................................. 97
11. ESFM instrument editor ............................................................................................................... 98
12. OPL FM synthesis instrument editor ...................................................................................... 102
13. OPLL FM synthesis instrument editor .................................................................................... 105
14. FM (OPM) instrument editor ..................................................................................................... 108
15. FM (OPN) instrument editor ....................................................................................................... 111
16. FM (OPZ) instrument editor ...................................................................................................... 114
17. Irem GA20 instrument editor ..................................................................................................... 117
18. Game Boy instrument editor ...................................................................................................... 118
19. Konami K007232 instrument editor ........................................................................................ 120
20. K053260 instrument editor ........................................................................................................ 121
21. Atari Lynx instrument editor ..................................................................................................... 122
22. MSM5232 instrument editor ..................................................................................................... 124
23. MSM6258 instrument editor .................................................................................................... 125
24. MSM6295 instrument editor ..................................................................................................... 126
25. Namco 163 instrument editor ................................................................................................... 127
26. NES instrument editor ................................................................................................................ 128
27. NEC PC Engine instrument editor ............................................................................................ 130
28. Commodore PET instrument editor ......................................................................................... 131
29. Pokémon Mini/QuadTone instrument editor ....................................................................... 132

Furnace manual 3
30. Atari POKEY instrument editor ................................................................................................. 133
31. PowerNoise instrument editor ................................................................................................. 134
32. Sega PSG instrument editor ...................................................................................................... 136
33. PV-1000 instrument editor ........................................................................................................ 137
34. Capcom QSound instrument editor ......................................................................................... 138
35. Ricoh RF5C68 instrument editor .............................................................................................. 139
36. Philips SAA1099 instrument editor ......................................................................................... 140
37. Amiga/PCM sound source instrument editor ....................................................................... 141
38. Konami SCC/Bubble System WSG instrument editor ........................................................ 142
39. SegaPCM instrument editor ...................................................................................................... 143
40. SM8521 instrument editor ......................................................................................................... 144
41. SNES instrument editor .............................................................................................................. 145
42. tildearrow Sound Unit instrument editor .............................................................................. 147
43. T6W28 instrument editor .......................................................................................................... 149
44. TED instrument editor ................................................................................................................ 150
45. Atari TIA instrument editor ......................................................................................................... 151
46. VERA instrument editor .............................................................................................................. 152
47. Commodore VIC instrument editor ......................................................................................... 153
48. Virtual Boy instrument editor ................................................................................................... 154
49. VRC6 instrument editor .............................................................................................................. 155
50. wavetable synthesizer ............................................................................................................... 156
51. WonderSwan instrument editor .............................................................................................. 158
52. Namco WSG instrument editor ................................................................................................ 159
53. X1-010 instrument editor ........................................................................................................... 160
54. YMZ280B instrument editor ...................................................................................................... 161
5. wavetables ................................................................................................................................................ 162
6. samples ...................................................................................................................................................... 167
7. systems ...................................................................................................................................................... 172
1. Commodore Amiga ....................................................................................................................... 175
2. General Instrument AY-3-8910 ................................................................................................ 177
3. Microchip AY8930 ........................................................................................................................ 179
4. Bubble System WSG ..................................................................................................................... 181
5. Namco C140 ................................................................................................................................... 182
6. Namco C219 .................................................................................................................................... 183
7. Commodore 64 .............................................................................................................................. 184
8. Generic PCM DAC .......................................................................................................................... 186
9. Ensoniq ES5506 (OTTO) .............................................................................................................. 187
10. ESS ESFM ........................................................................................................................................ 189
11. Famicom Disk System ................................................................................................................. 192
12. Irem GA20 ....................................................................................................................................... 193
13. Game Boy ........................................................................................................................................ 194
14. Sega Genesis/Mega Drive .......................................................................................................... 195
15. Konami K007232 ........................................................................................................................... 197
16. Konami K053260 .......................................................................................................................... 198
17. Atari Lynx/MIKEY ......................................................................................................................... 199
18. Nintendo MMC5 ........................................................................................................................... 200
19. OKI MSM5232 ................................................................................................................................ 201
20. OKI MSM6258 ............................................................................................................................... 202
21. OKI MSM6295 ............................................................................................................................... 203
22. Namco 163 (also called N163, Namco C163, Namco 106 [sic], Namco 160 or Namco
129) .................................................................................................................................................. 205
23. Namco WSG / Namco C15 / Namco C30 ................................................................................ 207

4
24. NES .................................................................................................................................................. 208
25. Yamaha OPL ................................................................................................................................... 212
26. Yamaha YM2413/OPLL ................................................................................................................ 215
27. Yamaha OPZ (YM2414) ................................................................................................................ 217
28. PC Engine/TurboGrafx-16 ......................................................................................................... 220
29. PC Speaker ...................................................................................................................................... 221
30. Commodore PET .......................................................................................................................... 222
31. Pokémon Mini ............................................................................................................................... 223
32. POKEY ............................................................................................................................................. 224
33. PowerNoise ................................................................................................................................... 225
34. Casio PV-1000 .............................................................................................................................. 226
35. Capcom QSound (DL-1425) ........................................................................................................ 227
36. Ricoh RF5C68 ................................................................................................................................ 228
37. Philips SAA1099 ........................................................................................................................... 229
38. Konami SCC/SCC+ ........................................................................................................................ 230
39. SegaPCM ......................................................................................................................................... 231
40. Sharp SM8521 ............................................................................................................................... 232
41. TI SN76489 (e.g. Sega Master System) ................................................................................. 233
42. Super Nintendo Entertainment System (SNES) / Super Famicom ................................ 235
43. tildearrow Sound Unit ................................................................................................................. 241
44. Toshiba T6W28 ............................................................................................................................ 243
45. MOS Technology TED .................................................................................................................. 244
46. Atari 2600 (TIA) ............................................................................................................................ 245
47. VERA ................................................................................................................................................ 253
48. Commodore VIC-20 ..................................................................................................................... 254
49. Virtual Boy ...................................................................................................................................... 255
50. Konami VRC6 .................................................................................................................................. 257
51. WonderSwan ................................................................................................................................ 258
52. Seta/Allumer X1-010 .................................................................................................................. 260
53. Yamaha YM2151 ............................................................................................................................. 261
54. Yamaha YM2203 (OPN) .............................................................................................................. 263
55. Yamaha YM2608 (OPNA) ........................................................................................................... 266
56. Neo Geo/Yamaha YM2610 ........................................................................................................ 269
57. Taito Arcade/Yamaha YM2610B ............................................................................................... 272
58. Yamaha YM2612 ............................................................................................................................ 275
59. Yamaha YMU759 .......................................................................................................................... 278
60. Yamaha YMZ280B (PCMD8) ...................................................................................................... 279
61. ZX Spectrum beeper ................................................................................................................... 280
8. advanced .................................................................................................................................................... 281
1. channels ........................................................................................................................................ 282
2. oscilloscope (per-channel) ....................................................................................................... 284
3. chip manager ................................................................................................................................ 288
4. clock ................................................................................................................................................ 290
5. command line usage ................................................................................................................... 291
6. comments ...................................................................................................................................... 294
7. compatibility flags ...................................................................................................................... 295
8. find/replace .................................................................................................................................. 296
9. grooves ........................................................................................................................................... 300
10. input latch ..................................................................................................................................... 303
11. log viewer ...................................................................................................................................... 304
12. mixer ............................................................................................................................................... 305
13. operation mask ............................................................................................................................ 307

Furnace manual 5
14. oscilloscope .................................................................................................................................. 308
15. pattern manager ......................................................................................................................... 309
16. piano / input pad ........................................................................................................................... 311
17. register view .................................................................................................................................. 313
18. statistics ......................................................................................................................................... 314
19. oscilloscope (X-Y) ........................................................................................................................ 315
9. guides .......................................................................................................................................................... 316
1. choosing emulation cores ......................................................................................................... 317
2. AY-3-8910 / AY8930 / SAA1099 envelope guide ................................................................. 319
3. using samples with limited playback rates .......................................................................... 321
4. using OPLL patch macro ............................................................................................................ 322
5. tuning samples ............................................................................................................................ 323

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.

see 2-interface17 and 3-pattern67 for more information.

once familiar with the tracker, look to 9-guides316 for useful techniques.

tutorial?
How to Learn Chiptune Trackers (https://www.youtube.com/watch?v=Q37XuOLz0jw) : video tu‐
torial created by Button Masher. covers the basic mechanics of chiptune tracking using Furnace for
demonstration.

Furnace Tutorials (https://youtube.com/playlist?


list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1) : video tutorials created by Spinning Square
Waves. be noted that these may not apply to the current version.

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 view67 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 instrument77 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.

- a song is made up of a list of orders.


- an order is a set of numbered patterns used for each channel.
- each channel has its own unique list of patterns.
- each pattern contains note and effect data for that channel only.
- patterns may be used multiple times in the order list. changing a pattern's data in one order
will affect the same pattern used in other orders.
- each pattern is made of the same number of rows as seen in the tracker view.
- during playback, the playhead moves down as described previously. when it reaches the end
of the pattern view, it will go to the next order.
- if the last order is reached and the playhead reaches the end of the pattern view, it will go back
to the beginning of the song.

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 samples167 which are (usually) recordings of sounds, often with defined
loop points to allow a note to sustain.
- some channels use wavetables162, 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.

algorithm: the way in which the operators in an FM instrument interact.

- 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.

asset: an instrument, wavetable or sample.

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.

- usually stored in .brr files.

clipping: when a sample or playback stream exceeds the maximum or minimum values. this can
cause audible distortion.

- this often occurs when a sample is amplified too much.


- it can also occur during playback if too much sound is being added together at once. in some
cases the mixer can be used to reduce the volume. if this doesn't work, the clipping is caused
within the chip's own mixing, and the only solution is to reduce the volumes of the notes being
played.

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.

.dmp: DefleMask Preset. an instrument file.

.dmw: DefleMask Wavetable. a wavetable file.

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.

- in the algorithm view, an operator with a circle around it is capable of feedback.

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.

.fui: a Furnace instrument file.

.fur: a Furnace module file.

.fuw: a Furnace wavetable file.

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.

- some sample-based chips can interpolate, filtering out unwanted harmonics.

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.

macro: a sequence of values automatically applied while a note plays.

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.

periodic noise: an approximation of random noise generated algorithmically.

- the period is the number of values generated until the algorithm repeats itself.

phase reset: to restart a waveform at its initial value.

- for FM instruments, this restarts the volume envelope also.

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.

resample: to convert a sample to a different playback rate.

- 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.

- this is equivalent to a pulse wave with a duty of 50%.

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.

unsigned: a digital representation of a number that can only be positive.

- 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.

waveform: a very short period of repeating sound.

- the most basic waveform is a sine wave. others include triangle, pulse, saw, and the like.

wavetable (1): a very short looping sample.

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:

2nd digit -\ /- 1st digit


A A
16^1*10 = 16*10 = 160 + 10 = 170

now for hexadecimal number 4C5F:

3rd digit -\ /- 2nd digit


4th digit -\ | | /- 1st digit
4 C 5 F
| | | |
| | | 15 = 15 = 15 +
| | \16^1*5 = 16 * 5 = 80

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.

for example, for the decimal number 220:

220 ÷ 16 = 13 (r = 12) D
12 ÷ 1 = 12 (stop here) C

= DC

now for decimal number 69420:

69420 ÷ 65536 = 1 (r = 3884) 1


3884 ÷ 4096 = 0 (r = 3884) 0
3884 ÷ 256 = 15 (r = 44) F
44 ÷ 16 = 2 (r = 12) 2
12 ÷ 1 = 12 (stop here) C

= 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.

BIT BINARY DECIMAL

bit 7 1000 0000 128


bit 6 0100 0000 64
bit 5 0010 0000 32
bit 4 0001 0000 16
bit 3 0000 1000 8
bit 2 0000 0100 4
bit 1 0000 0010 2
bit 0 0000 0001 1

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.

hex to decimal table


HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F

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.

the default layout of Furnace is depicted below.

general info
- UI components25: read first!
- global keyboard shortcuts33
- menu bar40

primary windows
- orders46
- play/edit controls48
- instrument/wavetable/sample list 19
- song information65
- effect list window31
- pattern view67
- instrument editor77
- wavetable editor162
- sample editor167

Furnace manual 17
advanced topics
- mixer305
- grooves300
- channels282
- pattern manager309
- chip manager288
- compatibility flags295
- song comments294
- piano/input pad311
- oscilloscope308
- oscilloscope (per channel)284
- clock290
- register view313
- log viewer304
- statistics314

other topics
- basic mode24
- settings52

18
asset list
an "asset" refers to an instrument, wavetable or sample.

instrument list

buttons from left to right:

- 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:

- New folder: creates a new folder.

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!

wavetables are saved as Furnace wavetable (.fuw) files.

- 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:

- Preview: plays the selected sample at its default note.


- right-clicking stops the sample playback.

samples are saved as standard wave (.wav) files.

right-clicking the Save button brings up a menu with the following options:

- save raw sample...: saves the selected sample as raw data.

right-clicking a sample in the list brings up a menu:

- 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.

make me a drum kit


I have added this option to make it easier for you to create a drum kit.
it puts all the samples into a new instrument with sample map.

after selecting this option, a list of parameters appears:

- 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.

among the features that cannot be accessed in this mode are:

edit menu
- paste special
- operation masking
- input latch
- find and replace

speed window
- virtual tempo
- divider
- song length

song info window


- manual system naming
- tuning options

pattern right-click menu


- gradient/fade
- scale
- randomize
- invert values
- flip selection
- collapse
- expand

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.

the following keyboard shortcuts work while on a text field:

- Ctrl-X: cut
- Ctrl-C: copy
- Ctrl-V: paste
- Ctrl-A: select all

(replace Ctrl with Command on macOS)

number input fields


these work similar to text fields, but you may only input numbers.

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 collapse a window, click on the triangle in the title bar.


clicking again expands the window.

to close a window, click on the X at the top right corner, or select it from the "window" menu.

arrangement and docking


windows may be docked, which comes in handy.

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

this window provides a list of the effects that are available.

for more details about these effects, see the effects page72.

- 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
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.

ACTION DEFAULT KEYBIND

Global hotkeys
New Ctrl-N
Clear song data —
Open file Ctrl-O
Restore backup —
Save file Ctrl-S
Save as Ctrl-Shift-S
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 —
Panic F12

Furnace manual 33
ACTION DEFAULT KEYBIND

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

Note input

34
ACTION DEFAULT KEYBIND

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
Expand selection to the right Shift-Right

Furnace manual 35
ACTION DEFAULT KEYBIND

Expand selection upwards by one (override Edit Step) —


Expand selection downwards by one (override Edit Step) —
Expand selection to beginning of pattern —
Expand selection to end of pattern —
Expand selection upwards (coarse) Shift-PageUp
Expand selection downwards (coarse) Shift-PageDown
Delete Delete
Pull delete Backspace
Insert Insert
Mute channel at cursor Alt-F9
Solo channel at cursor Alt-F10
Unmute all channels Alt-Shift-F9
Go to next order —
Go to previous order —
Collapse channel at cursor —
Increase effect columns —
Decrease effect columns —
Interpolate —
Fade —
Invert values —
Flip selection —
Collapse rows —
Expand rows —
Collapse pattern —
Expand pattern —
Collapse song —
Expand song —
Set note input latch —
Clear note input latch —

Instrument list
Add Insert
Duplicate Ctrl-D
Open —
Open (replace current) —
Save —
Save (.dmp) —

36
ACTION DEFAULT KEYBIND

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 —
Edit Shift-Return

Furnace manual 37
ACTION DEFAULT KEYBIND

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
Normalize Ctrl-N

38
ACTION DEFAULT KEYBIND

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 39
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 audio...: opens the file picker, allowing you to export your song to a .wav file. see next
section for more details.
- export VGM...: opens the file picker, allowing you to export your song to a .vgm file. see next
section for more details.
- export text...: opens the file picker, allowing you to export your song to a .txt file.
- export ZSM...: opens the file picker, allowing you to export your song to a .zsm file. see next
section for more details.
- only available when there's a YM2151 and/or VERA.
- export command stream...: export song data to a command stream file. see next section for
more details.
- this option is for developers.

40
- manage chips: opens the Chip Manager288 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.
- 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.

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.

there are two parameters:

- Loops: sets the number of times the song will loop.


- does not have effect if the song ends with FFxx effect.
- Fade out (seconds): sets the fade out time when the song is over.
- does not have effect if the song ends with FFxx effect.

and three export choices:

- one file: exports your song to one .wav file.


- multiple files (one per chip): exports the output of each chip to .wav files.
- multiple files (one per channel): exports the output of each channel to .wav files.
- useful for usage with a channel visualizer such as corrscope.

export VGM
this option allows exporting to a VGM (Video Game Music) file. these can be played back with VG‐
MPlay (for example).

the following settings exist:

- format version: sets the VGM format version to use.


- versions under 1.70 do not support per-chip volumes, and therefore will ignore the Mixer com‐
pletely.
- other versions may not support all chips.
- use this option if you need to export for a quirky player or parser.
- for example, RYMCast is picky with format versions. if you're going to use this player, select
1.60.
- loop: includes loop information. if disabled, the resulting file won't loop.
- loop trail: sets how much of the song is written after it loops.
- the reason this exists is to work around a VGM format limitation in where post-loop state isn't
recorded at all.
- this may change the song length as it appears on a player.
- auto-detect: detect how much to write automatically.

Furnace manual 41
- add one loop: add one more loop.
- custom: allows you to specify how many ticks to add.
- 0 is effectively none, disabling loop trail completely.
- this option will not appear if the loop modality isn't set to None as there wouldn't be a need to.
- 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.

click on click to export to begin exporting.

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.

the following settings are available:

- 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.

click on Begin Export to... you know.

export command stream


this option exports a text or binary file which contains a dump of the internal command stream
produced when playing the song.

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 (binary): exports in Furnace's own command stream format (FCS). see export-
tech.md in papers/ for details.
- export (text): exports the command stream as a text file. only useful for analysis, really.

42
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.307
- input latch: determines which data are placed along with a note. more information here.303
- 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.
- collapse/expand amount: allows you to specify how much to collapse/expand in the next two
menu items.
- collapse: shrinks the selected contents.

Furnace manual 43
- 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 window296.
- 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 [settings.md].

window
all these menu items show or hide their associated windows.

- song information65
- subsongs65
- speed65
- instruments77
- wavetables162
- samples167
- orders46
- pattern67
- mixer305
- grooves300
- channels282
- pattern manager309
- chip manager288
- compatibility flags295
- song comments294
- piano311
- oscilloscope308
- oscilloscopes (per-channel)284
- clock290
- register view313
- log viewer304
- stats314

help
- effect list: displays the effect list.

44
- 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.

at the end of the menu bar, more information may be shown:

- 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 window282.
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.

the buttons are:

- Add new order: adds a new order.


- Remove order: removes the currently selected order.
- Duplicate order: adds a new order with patterns matching the selected one directly below it.
- right-click to "deep clone"; this copies all patterns involved to new ones.
- Move order up: swaps the selected order with the one above it.
- Move order down: swaps the selected order with the one below it.
- Duplicate order at end of song: same as "Duplicate order" except the new order is added at
the bottom of the list.
- Order change mode: selects how much of the order will change with an edit. only applies if
"Order edit mode" is set to "Click to change".
- one: only current channel's pattern will change.
- entire row: all patterns in the order will change.

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: plays from cursor position.

- Stop: stops all playback.

- 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.

- Metronome: toggles the metronome, which only works during playback.

- 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
settings are saved when clicking the OK or Apply buttons at the bottom of the dialog.

General
Program
- Render backend: changing this may help with performace issues.
- 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.
- however, crashes have been reported when threaded input is on. enable this option if that is
the case.
- 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.

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.
- 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.

52
- 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 manager288 and mixer305.
- 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).

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.

Furnace manual 53
- 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.
- 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.

54
- 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.
- 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.

Furnace manual 55
- 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.
- 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.

56
- 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 317.

- PC Speaker strategy: this is covered in the PC speaker page221.

Keyboard
Keyboard
- Import
- Export
- Reset defaults

a list of keybinds is displayed.

- click on a keybind. then enter a key or key combination to change it.


- right-click to clear the keybind.
- the full list is in the keyboard33 page.

note input

the settings for note input keybinds operate differently. each entry in the list of keybinds is made
of the following:

- Key: key assignment.


- Type: type of note input. left-click cycles through "Note", "Note off", "Note release", and "Macro
release".
- note: the list is sorted by type. on changing a key's type, it will instantly move to its new sort‐
ing position!
- Value: number of semitones above C at the current octave. only appears for note type binds.

Furnace manual 57
- Remove: removes the keybind from the list.

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.
- 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.

58
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.
- 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:

Furnace manual 59
- 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

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

- Anti-aliased fonts: when enabled, fonts will be rendered smooth.


- Support bitmap fonts: this option allows you to enable the loading of bitmap fonts.
- be noted that this may force non-bitmap fonts to undesired sizes!
- Hinting: this option allows you to define how crisp fonts are rendered.
- Off: disable font hinting. at small sizes, fonts may be blurry.
- Slight: enable slight font hinting.

60
- Normal: enable font hinting.
- Full: enable harsh font hinting. fonts may look ugly/distorted to some people.
- Auto-hinter: some fonts contain hinting data, but some don't. this allows you to select what
happens.
- Disable: only rely upon font hinting data.
- Enable: prefer font hinting data if present.
- Force: ignore font hinting data.

Program
- Title bar:
- Furnace
- Song Name - Furnace
- file_name.fur - Furnace
- /path/to/file.fur - Furnace
- Display system name on title bar
- Display chip names instead of "multi-system" in title bar
- 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

Furnace manual 61
- 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.

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

62
- Letter icons
- Colorize instrument editor using instrument type

Macro Editor
- Macro editor layout:
- 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.

Statistics
- Chip memory usage unit: unit for displaying memory usage in the Statistics window.
- 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).

Furnace manual 63
- 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.

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...

64
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.

- the drop-down box selects the current subsong.


- the + button adds a new subsong.
- the − button permanently deletes the current subsong (unless it's the only one).
- Name: title of the current subsong.
- the box at the bottom can store any arbitrary text, like a separate "Comments" box for the cur‐
rent subsong.

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.

Speed: the number of ticks per row.

- clicking the "Speed" button changes to more complex modes covered in the grooves300 page.

Furnace manual 65
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:

- set tick rate to 150 BPM (60 Hz) and speed to 6.


- set the first virtual tempo number (numerator) to 200.
- set the second virtual tempo number (denominator) to 150.
- the track will play at 200 BPM.
- the ratio doesn't have to match BPM numbers. set the numerator to 4 and the denominator to
5, and the virtual BPM becomes 150 × 4/5 = 120.
- another way to accomplish this with more control over the results is to use grooves. see the
page on grooves300 for details.

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!

Highlight: sets the pattern row highlights:

- the first value represents the number of rows per beat.


- the second value represents the number of rows per measure.
- these don't have to line up with the music's actual beats and measures. set them as preferred
for tracking.
- note: these values are used for the metronome and calculating BPM.

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.

66
pattern
the pattern view allows you to edit the song's patterns.

a pattern consists of columns ("channels") and numbered rows.


each column has several subcolumns in this order:

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 window65.

Furnace manual 67
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
menu40.

channel bar
using the channel bar, you may adjust several aspects of the channel display.

clicking on a channel name mutes that channel.

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 window282 via the window menu.

channel status
- note status:

68
- note off

- note on

- note on but macro released (REL)

- note released (===)


- pitch alteration:

- nothing

- pitch slide up

- pitch slide down

- portamento

- arpeggio
- volume alteration:

- nothing

- volume slide up

- volume slide down

- tremolo
- other icons may be present depending on the used chips.

Furnace manual 69
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.

here's a list of effect types72.

70
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)

Furnace manual 71
effect list
some of the effect numbers are taken from ProTracker / FastTracker 2.

however, effects are continuous, 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.
- 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.

72
- 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.

- 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.
- 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.

Furnace manual 73
- ECxx: Note cut. ends current note after xx ticks. for FM instruments, it's equivalent to a "key
off".
- EDxx: Note delay. delays note by x ticks.

other
- 9xxx: Set sample position. jumps current sample to position xxx * 0x100.
- not all chips support this effect.
- 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.

additionally, each chip has its own effects 172.

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

74
ID MACRO

20 AM
21 AR
22 DR
23 MULT
24 RR
25 SL
26 TL
27 DT2
28 RS
29 DT
2A D2R
2B SSG-EG
2C DAM
2D DVB
2E EGT
2F KSL
30 SUS
31 VIB
32 WS
33 KSR
40 operator 2 macros
60 operator 3 macros
80 operator 4 macros

the interpretation of duty, wave and extra macros depends on chip/instrument type:

EX FM OPM OPZ OPLL AY-3-8910 AY8930 LYNX C64

D NoiseF NoiseFreq NoiseFreq NoiseFreq Duty/Int Duty


W LFO Shape LFO Shape Patch Waveform Waveform Waveform
1 AMD AMD Duty FilterMode
2 PMD PMD Envelope Envelope Resonance
3 LFOSpd LFO Speed LFO Speed AutoEnvNum AutoEnvNum
A ALG ALG ALG AutoEnvDen AutoEnvDen Cutoff
B FB FB FB Noise AND
C FMS FMS FMS Noise OR
D AMS AMS AMS
4 OpMask OpMask Special
5 AMD2 Attack

Furnace manual 75
EX FM OPM OPZ OPLL AY-3-8910 AY8930 LYNX C64

6 PMD2 Decay
7 LFO2Speed Sustain
8 LFO2Shape Release
EX SAA1099 X1-010 NAMCO 163 FDS SOUND UNIT ES5506 MSM6258

D Wave Pos Duty Filt Mode FreqDiv


W Waveform Waveform Waveform Waveform Waveform
1 Envelope EnvMode WaveLen Mod Depth Cutoff Filter K1 ClockDiv
2 Envelope WaveUpdate Mod Speed Resonance Filter K2
3 AutoEnvNum WaveLoad W Control Env Count
A AutoEnvDen WaveLoad P Control
B WaveLoad L
C WaveLoad T
D
4 PResetTime EnvRampL
5 EnvRampR
6 EnvRampK1
7 EnvRampK2
8 Env Mode
EX QSOUND SNES MSM5232

D Echo Level NoiseFreq GroupCtrl


W Waveform
1 EchoFeedback Special GroupAtk
2 Echo Length Gain GroupDec
3 Noise
A
B
C
D
4
5
6
7
8

76
instrument editor
the instrument editor allows you to edit instruments.
it can be activated by double-clicking on an instrument in the instrument list.

alternatively, window > instrument editor displays it.

main

- Select: displays a list of instruments in the song.


- Load: open an instrument file.
- Save: save current instrument to a file.
- right-click to see additional options, such as saving in DefleMask preset format (.dmp).
- Name: changes the instrument name.
- Type: changes the instrument type (usually chip-specific).
- if changed, all applicable settings and macros will remain unchanged.
- you may have to adjust them afterwards.

instrument types
the following instrument types are available:

- SN76489/Sega PSG136 - for use with TI SN76489 and derivatives like Sega Master System's
PSG.
- FM (OPN)111 - for use with YM2612, YM2203, YM2608, YM2610 and YM2610B.
- Game Boy118 - for use with Game Boy APU.
- C6494 - for use with Commodore 64 SID.
- Generic Sample141 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.
- PC Engine130 - for use with PC Engine's wavetable synthesizer.
- AY-3-8910/SSG89 - for use with AY-3-8910 PSG sound source and SSG portion in YM2610.
- AY893090 - for use with Microchip AY8930 E-PSG sound source.
- TIA151 - for use with Atari 2600 chip.
- SAA1099140 - for use with Philips SAA1099 PSG sound source.
- VIC153 - for use with VIC-20 sound chip.
- PET131 - for use with Commodore PET.

Furnace manual 77
- VRC6155 - for use with VRC6's PSG sound source.
- FM (OPLL)105 - for use with YM2413.
- FM (OPL)105 - for use with YM3526 (OPL), YM3812 (OPL2) and YMF262 (OPL3).
- FM (ESFM)98 - for use with ESFM.
- FDS97 - for use with Famicom Disk System sound source.
- Virtual Boy154 - for use with Virtual Boy.
- Namco 163127 - for use with Namco 163.
- Konami SCC/Bubble System WSG142 - for use with Konami SCC and Wavetable portion in
Bubble System's sound hardware.
- FM (OPZ)114 - for use with YM2414.
- POKEY133 - for use with Atari 8-bit computers and their POKEY sound source.
- Beeper91 - for use with PC Speaker and ZX Spectrum Beeper (SFX-like engine).
- WonderSwan158 - for use with WonderSwan's wavetable synthesizer.
- Atari Lynx122 - for use with Atari Lynx handheld console.
- VERA152 - for use with Commander X16 VERA.
- Seta/Allumer X1-010160 - for use with Wavetable portion in Seta/Allumer X1-010.
- ES550696 - for use with Ensoniq ES5506 sound chip.
- SNES145 - for use with SNES.
- Sound Unit147 - for use with Sound Unit chip.
- Namco WSG159 - for use with Namco WSG wavetable chips, including C15 and C30.
- FM (OPM)108 - for use with YM2151.
- NES128 - for use with NES.
- MSM6258125 - for use with MSM6258 sample chip.
- MSM6295126 - for use with MSM6295 sample chip.
- ADPCM-A87 - for use with ADPCM-A sample chip.
- ADPCM-B88 - for use with ADPCM-B sample chip.
- SegaPCM143 - for use with SegaPCM sample chip.
- QSound138 - for use with QSound sample chip.
- YMZ280B161 - for use with YMZ280B sample chip.
- RF5C68139 - for use with RF5C68 sample chip.
- MSM5232124 - for use with MSM5232 PSG sound source.
- T6W28149 - for use with Toshiba T6W28 PSG sound source.
- K007232120 - for use with K007232 sample chip.
- GA20117 - for use with GA20 sample chip.
- Pokémon Mini/QuadTone132 - for use with these systems.
- SM8521144 - for use with SM8521 chip, used in Tiger Game.com.
- PV-1000137 - for use with Casio PV-1000.
- K053260121 - for use with K053260 sample chip.
- TED150 - for use with Commodore Plus/4 and Commodore 16's TED chip.
- C14092 - for use with C140 sample chip.
- C21993 - for use with C219 sample chip.
- PowerNoise134 - for use with PowerNoise chip.

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.

78
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.

each macro has the following parameters:

- macro type (explained below)


- timing options:
- Step Length (ticks): determines the number of ticks between macro steps. default is 1.
- Delay: delays the macro until this many ticks have elapsed. default is 0.
- the button is highlighted if either of these parameters is set to non-default values.

macro types
there are three macro types:

- Sequence: a sequence of numeric values.

- ADSR: this is an attack/decay/sustain/release envelope.

- 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.

Furnace manual 79
80
the Length field allows you to set the number of steps in the sequence.

the sequence view allows you to edit the macro.

- 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.

the sequence view may be adjusted using the following combinations:

- hold Ctrl and use the scroll wheel to zoom horizontally.


- hold Ctrl-Shift and use the scroll wheel to zoom vertically.
- the scrollbar at the right allows you to scroll vertically (if possible).
- you may hold Shift and use the scroll wheel to scroll vertically as well.

right-click on the sequence view to open a menu:

- copy: copy this macro to clipboard.


- paste: pastes the macro.
- clear: clears the macro.
- clear contents: resets all values to 0.
- offset:
- X: slides the data "horizontally" within the macro, filling the gap with zeroes. data moved past
the start or end is lost.
- Y: increases or decreases all values, clipping them if they would move past the allowed range.
- scale:
- X: stretches the macro.
- Y: multiplies all values by the scale factor, clipping them if they would exceed the allowed
range.
- randomize: replaces all values with random values between Min and Max.

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 81
bitmask-style macros show labels for each of their bits. these are edited as toggles.

- drawing lines is not possible in these macros.

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":

- by default, step values are offsets relative to the note.


- if clicked on, a step value becomes fixed and will be played at its corresponding note without
regard to the currently playing note.
- values are counted from C-0. for example, a fixed value of 48 produces a C-4 note.
- fixed values are especially useful for noise or percussion.

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:

- Active: jumps to release position on release.


- Passive: does not jump to release position. this will result in delay if release position has not
been reached yet.

82
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 83
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.

84
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 156.

sample
this tab appears for Generic PCM DAC, Amiga and SNES.

Furnace manual 85
see the Generic Sample section141 for more information.

86
ADPCM-A instrument editor
the ADPCM-A instrument editor contains two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

note that samples on ADPCM-A are tied to one frequency.

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 87
ADPCM-B instrument editor
the ADPCM-B instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning: toggle left/right output.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.

88
AY-3-8910 instrument editor
the AY-3-8910 instrument editor consists of two tabs.

Sample
for sample settings, see the Sample instrument editor 141.

the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.

note that using samples on AY is CPU expensive!

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 89
AY8930 instrument editor
the AY8930 instrument editor consists of two tabs.

Sample
for sample settings, see the Sample instrument editor 141.

the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.

note that using samples on AY is CPU expensive!

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.

90
beeper instrument editor
used in PC Speaker and ZX Spectrum (SFX-like engine).

- Volume: on-off volume sequence.


- Arpeggio: pitch sequence.
- Pulse Width: pulse width sequence.
- only on ZX Spectrum.
- Pitch: fine pitch.

Furnace manual 91
Namco C140 instrument
editor
the Namco C140 instrument editor contains two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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.

92
Namco C219 instrument
editor
the Namco C219 instrument editor contains two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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.

Furnace manual 93
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.

94
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.

Furnace manual 95
Ensoniq ES5506 instrument
editor
the ES5506 instrument editor contains three tabs: Sample, ES5506 and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

ES5506
ES5506 contains a filter, which is somewhat configurable.
there's also a hardware envelope, but it's probably most useful for smoothing.

you may use this tab to set up ES5506-specific parameters:

- Filter Mode: sets filter mode.


- HP/K2, HP/K2: run high-pass twice using filter K2.
- HP/K2, LP/K1: run high-pass using filter K2, and then low-pass using filter K1.
- LP/K2, LP/K2: run low-pass twice using filter K2.
- LP/K2, LP/K1: run low-pass using filter K2, and then again using filter K1.
- Filter K1: set coefficient 1 (K1). effectively controls cutoff.
- Filter K2: set coefficient 2 (K2). effectively controls cutoff.
- Envelope count: set length of hardware envelope (it's very short even at highest value).
- Left Volume Ramp: how much to change left volume on every envelope step.
- Right Volume Ramp: how much to change right volume on every envelope step.
- Filter K1 Ramp: how much to change filter K1 every envelope step.
- Filter K2 Ramp: how much to change filter K2 on every envelope step.
- K1 Ramp Slowdown: increases length of K1 ramp.
- K2 Ramp Slowdown: increases length of K2 ramp.

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.

96
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 page156 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.

Furnace manual 97
ESFM instrument editor
the ESFM editor is divided into 6 tabs:

- FM: for controlling the basic parameters of FM sound source.


- Macros (OP1): for macros controlling FM parameters of operator 1.
- Macros (OP2): for macros controlling FM parameters of operator 2.
- Macros (OP3): for macros controlling FM parameters of operator 3.
- Macros (OP4): for macros controlling FM parameters of operator 4.
- Macros: for other macros (volume/arp/pitch/pan/operator 4 noise mode).

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.

these apply to the instrument as a whole:

- 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.

these apply to each operator:

- the crossed-arrows button can be dragged to rearrange operators.


- Amplitude Modulation (AM): makes the operator affected by LFO tremolo.
- AM Depth (DAM/AMD): when enabled, LFO tremolo is deeper (1dB off; 4.8dB on).
- Sustain flag (SUS): when enabled, the envelope pauses ("sustains") once it reaches the Sus‐
tain Level and does not proceed to the release phase until note off.

98
- 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). 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.
- Vibrato Depth (DVB/FMD): when enabled, vibrato is deeper.

Furnace manual 99
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.

note: MI1 is not included as it is the feedback level.

ALGORITHM OL1 MI2 OL2 MI3 OL3 MI4 OL4

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.

OP1-OP4 Macros
most parameters are listed above.

100
envelope delay macro tricks
due to a quirk in how the envelope delay feature works, the Envelope Delay macro can control the
operator's key-on status for a limited amount of time after a note is played. a value of 0 represents
key-on, while a value of 7 represents key-off.

note that the macro cannot exceed 659.1 ms in length - anything beyond that will be treated as a
value of 0.

operator arpeggio and pitch macros


among the available macros are Op. Arpeggio and Op. Pitch. these work like the Arpeggio and
Pitch macros featured below, but are applied to the individual operator, overriding the Arpeggio/
Pitch macros respectively.

the Tune and Fine Detune FM parameters are still respected when using these macros.

fixed frequency macros


when fixed frequency is enabled for an operator, the Op. Arpeggio and Op. Pitch macros will be re‐
placed by the Block and FreqNum macros. these can be used to change the operator's fixed fre‐
quency over time.

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.

Furnace manual 101


OPL FM synthesis
instrument editor
the OPL FM editor is divided into 7 tabs:

- FM: for controlling the basic parameters of FM sound source.


- Macros (FM): for macros controlling algorithm and feedback.
- Macros (OP1): for macros controlling FM parameters of operator 1.
- Macros (OP2): for macros controlling FM parameters of operator 2.
- Macros (OP3): for macros controlling FM parameters of operator 3 (only when 4-op flag is set
and only on OPL3!).
- Macros (OP4): for macros controlling FM parameters of operator 4 (only when 4-op flag is set
and only on OPL3!).
- Macros: for other macros (volume/arp/pitch/pan).

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.

these apply to the instrument as a whole:

- 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.

these apply to each operator:

- the crossed-arrows button can be dragged to rearrange operators.


- Amplitude Modulation (AM): makes the operator affected by LFO tremolo.
- Sustain flag (SUS): when enabled, the envelope pauses ("sustains") once it reaches the Sus‐
tain Level and does not proceed to the release phase until note off.
- 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).

102
- 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). 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.

Macros
- Volume: volume sequence.

Furnace manual 103


- Arpeggio: pitch sequence.
- Panning: enables output on left/right/rear channels. OPL3 only.
- 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.

OPL (drums) instrument editor


this is similar to the OPL instrument editor, but sets the parameters of snare, tom, top and hi-hat
directly once a drums instrument is activated.

104
OPLL FM synthesis
instrument editor
the OPLL FM editor is divided into 5 tabs:

- FM: for controlling the basic parameters of FM sound source.


- Macros (FM): for macros controlling algorithm, waveform and feedback.
- Macros (OP1): for macros controlling FM parameters of operator 1.
- Macros (OP2): for macros controlling FM parameters of operator 2.
- Macros: for other macros (volume/arp/pitch/patch).

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.

these apply to the instrument as a whole:

- 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.

these apply to each operator:

- the crossed-arrows button can be dragged to rearrange operators.


- Amplitude Modulation (AM): makes the operator affected by LFO tremolo.
- Envelope generator sustain flag (EGS): when enabled, value of Sustain Level is in effect.
- 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).

Furnace manual 105


- 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.
- in the case of the second operator, it goes from 0 to 15 instead.
- Key Scale Level (KSL): also known as "Level Scale". determines the degree to which the amp‐
litude decreases according to the pitch.

- 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). 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.
- Patch: changes the playing preset mid-note.

106
- 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 (https://www.youtube.com/watch?v=wS8edjurjDw) : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.

Furnace manual 107


FM (OPM) instrument editor
the FM editor is divided into 7 tabs:

- FM: for controlling the basic parameters of FM sound source.


- Macros (FM): for macros controlling algorithm, feedback and LFO.
- Macros (OP1): for macros controlling FM parameters of operator 1.
- Macros (OP2): for macros controlling FM parameters of operator 2.
- Macros (OP3): for macros controlling FM parameters of operator 3.
- Macros (OP4): for macros controlling FM parameters of operator 4.
- Macros: for other macros (volume/arp/pitch/noise).

FM
OPM is four-operator, meaning it takes four oscillators to produce a single sound.

these apply to the instrument as a whole:

- 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.

these apply to each operator:

- the crossed-arrows button can be dragged to rearrange operators.


- the OP1, OP2, OP3, and OP4 buttons enable or disable those operators.
- Amplitude Modulation (AM): makes the operator volume affected by LFO.
- Attack Rate (AR): determines the rising time for the sound. the bigger the value, the faster the
attack (0 to 31).
- 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 31).
- 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).
- Decay Rate 2 (D2R) / Sustain Rate (SR): determines the diminishing time for the sound. the
higher the value, the shorter the decay. this is the long "tail" of the sound that continues as long
as the key is depressed (0 to 31).
- 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.

108
- 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). 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.
- Pitch: fine pitch.

Furnace manual 109


- 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 (https://www.youtube.com/watch?v=wS8edjurjDw) : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.

110
FM (OPN) instrument editor
the FM editor is divided into 7 tabs:

- FM: for controlling the basic parameters of FM sound source.


- Macros (FM): for macros controlling algorithm, feedback and LFO.
- Macros (OP1): for macros controlling FM parameters of operator 1.
- Macros (OP2): for macros controlling FM parameters of operator 2.
- Macros (OP3): for macros controlling FM parameters of operator 3.
- Macros (OP4): for macros controlling FM parameters of operator 4.
- Macros: for other macros (volume/arp/pitch).

FM
OPN is four-operator, meaning it takes four oscillators to produce a single sound.

these apply to the instrument as a whole:

- 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.

these apply to each operator:

- the crossed-arrows button can be dragged to rearrange operators.


- the OP1, OP2, OP3, and OP4 buttons enable or disable those operators.
- Amplitude Modulation (AM): makes the operator's volume affected by LFO.
- does not apply to YM2203.
- Attack Rate (AR): determines the rising time for the sound. the bigger the value, the faster the
attack (0 to 31).
- 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 31).
- 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).
- Decay Rate 2 (D2R) / Sustain Rate (SR): determines the diminishing time for the sound. the
higher the value, the shorter the decay. this is the long "tail" of the sound that continues as long
as the key is depressed (0 to 31).
- 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).

Furnace manual 111


- 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.
- Hardware Envelope Generator (SSG-EG): executes the built-in envelope, inherited from
AY-3-8910 PSG. speed of execution is controlled via Decay Rate.

- 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). 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.
- Phase Reset: restarts all operators and resets the waveform to its start.

112
links
FM instrument tutorial (https://www.youtube.com/watch?v=wS8edjurjDw) : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.

Furnace manual 113


FM (OPZ) instrument editor
the FM editor is divided into 7 tabs:

- FM: for controlling the basic parameters of FM sound source.


- Macros (FM): for macros controlling algorithm, feedback and LFO
- Macros (OP1): for macros controlling FM parameters of operator 1
- Macros (OP2): for macros controlling FM parameters of operator 2
- Macros (OP3): for macros controlling FM parameters of operator 3
- Macros (OP4): for macros controlling FM parameters of operator 4
- Macros: for other macros (volume/arp/pitch/noise).

FM
OPZ is four-operator, meaning it takes four oscillators to produce a single sound.

these apply to the instrument as a whole:

- 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.

these apply to each operator:

- the crossed-arrows button can be dragged to rearrange operators.


- Amplitude Modulation (AM): makes the operator's volume affected by LFO.
- Attack Rate (AR): determines the rising time for the sound. the bigger the value, the faster the
attack (0 to 31).
- 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 31).
- 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).
- Decay Rate 2 (D2R) / Sustain Rate (SR): determines the diminishing time for the sound. the
higher the value, the shorter the decay. this is the long "tail" of the sound that continues as long
as the key is depressed (0 to 31).

114
- 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). 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).

I am familiar with Yamaha TX81Z. where's LS and KVS?

these are software effects.

- you may use TL effects to simulate LS.


- you may access a KVS-like feature by clicking on the algorithm preview.

Furnace manual 115


fixed frequency mode
each operator has a Fixed Frequency mode. once enabled, the operator runs at the specified fre‐
quency regardless of the note.

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 (https://www.youtube.com/watch?v=wS8edjurjDw) : A great starting
point to learn how create and work with FM sounds. this was made for DefleMask, but all the same
principles apply.

116
Irem GA20 instrument
editor
the GA20 instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.

Furnace manual 117


Game Boy instrument editor
the Game Boy instrument editor consists of three tabs: one controlling envelope of sound chan‐
nels, another for the wave synth and macro tab containing several macros.

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 sequence consists of a list of "commands".

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.

each command in the sequence is represented in three columns:

- 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 page156 for
more information.

118
notes:

- only for Wave channel.


- on Game Boy, using the wave synth may result in clicking and/or phase resets. by default Fur‐
nace attempts to mitigate this problem though, but some clicking may still be audible.

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.

Furnace manual 119


Konami K007232 instrument
editor
the K007232 instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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.

120
K053260 instrument editor
the K053260 instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning: stereo panning sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.

Furnace manual 121


Atari Lynx instrument editor
Atari Lynx instrument editor consists of two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.

note that using samples on Lynx is CPU expensive!

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.

audio generation description


Atari Lynx generates sound using a 12-bit linear feedback shift register with configurable tap. nine
separate bits can be enabled to be the source of feedback: 0, 1, 2, 3, 4, 5, 7, 10 and 11. to generate
any sound at least one bit must be enabled.

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:

- if two 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.

unlike PowerNoise, Lynx's taps are in fixed positions, but it has many of them.

122
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.

how triangle wave works?

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.

Furnace manual 123


MSM5232 instrument editor
the instrument editor for MSM5232 consists of these macros:

- Volume: volume sequence.


- only has effect when the envelope mode of a group is set to External.
- Arpeggio: pitch sequence.
- Group Ctrl: group control sequence:
- sustain: enable sustain mode.
- 2': enable 2' overtone.
- 4': enable 4' overtone.
- 8': enable 8' overtone.
- 16': enable 16' overtone.
- Group Attack: set attack rate of group.
- Group Decay: set decay rate of group.
- Noise: toggle noise mode.

124
MSM6258 instrument editor
the MSM6258 instrument editor contains two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

note that samples on MSM6258 are tied to one frequency.

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.

Furnace manual 125


MSM6295 instrument editor
the MSM6295 instrument editor contains two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

note that samples on MSM6295 are tied to one frequency.

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.

126
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 page156 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.

Furnace manual 127


NES instrument editor
the NES instrument editor consists of two tabs.

DPCM
this tab is somewhat similar to the Sample instrument editor 141, but it has been tailored for use
with NES' DPCM channel.

- Sample: specifies which sample should be assigned to the instrument.


- Use sample map: enables mapping different samples to notes. see next section for more in‐
formation.
- when this option is disabled, 16 notes (from C-0 to D#1 and repeating) will map to the DPCM
channel's 16 possible pitches.

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.

- the first column represents the input note.


- the second column allows you to type in a sample number for each note.
- you may press Delete to clear it.
- the third one is used to set the DPCM pitch at which the specified sample will play.
- for possible values, refer to the table below.
- you may press Delete to clear it. if no value is specified, the last pitch is used.
- the fourth column allows you to set the initial delta counter value when playing the sample.
- this is an hexadecimal number.
- the range is 00 to 7F.
- you may press Delete to clear it. if no value is specified, the delta counter isn't altered.
- the fifth and last column provides a combo box for selecting a sample.

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.

128
- pulse duty cycles:
- 0: 12.5%
- 1: 25%
- 2: 50%
- 3: 75%
- noise modes:
- 0: long noise
- 1: short noise
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.

Furnace manual 129


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 141.

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 page156 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.

130
Commodore PET instrument
editor
the PET instrument editor consists of these macros:

- Volume: volume sequence (on/off).


- Arpeggio: pitch sequence.
- Waveform: an 8×1 waveform.
- Pitch: fine pitch sequence.

Furnace manual 131


Pokémon Mini/QuadTone
instrument editor
used in these two chips/systems. these macros are available:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Pulse Width: pulse width sequence.
- Pitch: fine pitch.

132
Atari POKEY instrument
editor
the instrument editor for POKEY consists of these macros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- AUDCTL: audio control register sequence:
- poly9: reduces size of LFSR. only on noise waveforms!
- high1: runs channel 1 at 1.79MHz.
- high3: runs channel 3 at 1.79MHz.
- 16-bit 1+2: enables 16-bit frequency mode by combining channels 1 and 2.
- 16-bit 3+4: enables 16-bit frequency mode by combining channels 3 and 4.
- filter 1+3: applies a high-pass "filter" by combining channels 1 and 3.
- filter 2+4: applies a high-pass "filter" by combining channels 2 and 4.
- 15KHz: runs channels at 15KHz.
- Waveform: wave selection sequence:
- 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)
- Pitch: fine pitch.

Furnace manual 133


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.

134
- Tap B Location: sets the position of the second tap.
- Load LFSR: allows you to load the LFSR with a specific pattern.

PowerNoise tab
this tab allows you to change the base octave - important when you have set a longer LFSR pat‐
tern.

PowerNoise (slope) instrument editor


this channel has its own instrument type, as it does not use LFSR-based synthesis but instead
generates saw waves.

it uses a custom algorithm which will be (roughly) described below.

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.

the current value of the accumulator is output.

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.

Furnace manual 135


Sega PSG instrument editor
the instrument editor for Sega PSG (SMS, and other TI SN76489 derivatives) consists of these mac‐
ros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Duty: noise mode.
- 0: short noise; preset frequencies.
- 1: long noise; preset frequencies.
- 2: short noise; use channel 3 for frequency.
- 3: long noise; use channel 3 for frequency.
- Panning: output for left and right channels.
- only on Game Gear!
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.

136
PV-1000 instrument editor
the instrument editor for the Casio PV-1000 consists of these macros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Pitch: fine pitch.

Furnace manual 137


Capcom QSound instrument
editor
the QSound instrument editor contains two tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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!

138
Ricoh RF5C68 instrument
editor
the RF5C68 instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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 139


Philips SAA1099 instrument
editor
the SAA1099 instrument editor consists of these macros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Duty/Noise: noise generator frequency. the following values are available:
- 0: high
- 1: mid
- 2: low
- 3: use frequency of channel 1 or 4 (depending on where the instrument plays).
- Waveform: selector between tone and noise.
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Envelope: envelope generator settings:
- enable: enables the envelope generator.
- N/A: has no effect.
- fixed: toggles whether to use a fixed, slow frequency or lock to the frequency of channel 2 or 5
(depending on where the instrument plays).
- resolution: increases the envelope generator pitch resolution.
- direction: inverts the envelope.
- cut: cuts the envelope (producing saw wave out of tri wave)
- loop: toggles whether envelope is one-shot or constantly looping.
- mirror: sets whether the right output will mirror the left one.
- the envelope only has effect in channels 3 and 6.

140
Amiga/PCM sound source
instrument editor
the Generic Sample instrument editor consists of a sample selector and several 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.

- the first column represents the input note.


- the second column allows you to type in a sample number for each note.
- you may press Delete to clear it.
- the third one is used to set the note at which the specified sample will play.
- the fourth and last column provides a combo box for selecting a sample.

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.

Furnace manual 141


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 page156 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.

142
SegaPCM instrument editor
the SegaPCM instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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 143


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 page156 for
more information.

Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Waveform: wavetable sequence.
- Pitch: fine pitch.

144
SNES instrument editor
these four tabs are unique to the editor for SNES instruments.

Sample
for sample settings, see the Sample instrument editor 141.

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
chart235.
- Delayed (write R on release): after release, waits until A and D have completed before start‐
ing release.

if envelope is off:

- Gain Mode: selects gain mode.


- Direct: direct gain from 0 to 127.
- Decrease (linear): linear gain from -0 to -31.
- Decrease (logarithmic): exponential gain from -0 to -31.
- note: using decrease modes will not produce any sound unless a Gain macro is set. the first
tick must be the initial gain, and the second tick must be the decrease gain value. gain values
are as described in the Macros section below.
- Increase (linear): linear gain from +0 to +31.
- Increase (bent line): inverse exponential gain from +0 to +31.
- Gain: value of gain.

Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page156 for
more information.

only active when Use wavetable is enabled in the Sample tab.

Furnace manual 145


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).

146
tildearrow Sound Unit
instrument editor
this instrument editor has two tabs.

Sound Unit
for sample settings, see the Sample instrument editor 141.

the differences are:

- the lack of an "Use wavetable" option


- the presence of a "Use sample" one
- the presence of a "Switch roles of frequency and phase reset timer" option. when enabled,
this writes frequency to the phase reset timer register rather than the frequency register
- this may be used to create sync-like effects.

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.

Furnace manual 147


- 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.

148
T6W28 instrument editor
the instrument editor for T6W28 consists of these macros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Noise Type: noise type sequence:
- 0: short noise
- 1: long noise
- Panning (left): output level for left channel.
- Panning (right): output level for right channel.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.

Furnace manual 149


TED instrument editor
TED instrument editor consists of these macros:

- Volume: volume sequence.


- note: global! affects entire chip.
- Arpeggio: pitch sequence.
- Square/Noise: select whether square, noise or nothing will be output.
- noise only available on channel 2
- if square and noise are enabled, square takes precedence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.
- note: global! triggers both channels...

150
Atari TIA instrument editor
the TIA instrument editor consists of these macros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- note: fixed mode works differently. it sets the frequency directly rather than the note, so it only
goes from 0 to 31.
- Waveform: selects waveform to be used:
- 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
- Pitch: "fine" pitch. fine in quotes as TIA doesn't have true pitch control at all.

Furnace manual 151


VERA instrument editor
VERA instrument editor consists of these macros:

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Duty: pulse duty cycle sequence.
- Waveform: select the waveform used by instrument.
- Panning: toggles left/right output.
- Pitch: fine pitch.

152
Commodore VIC instrument
editor
the VIC instrument editor consists of these macros:

- Volume: volume sequence.


- note: global! affects entire chip.
- Arpeggio: pitch sequence.
- On/Off: enable/disable channel output.
- Waveform: square wave distortion type sequence.
- Pitch: "fine" pitch.

Furnace manual 153


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 page156 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.

154
VRC6 instrument editor
the VRC6 (regular) instrument editor consists of two tabs.

Sample
for sample settings, see the Sample instrument editor 141.

the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample"
one.

note that using samples on VRC6 is CPU expensive!

Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Duty: specifies duty cycle for pulse wave channels.
- Pitch: fine pitch.

VRC6 (saw) instrument editor


this channel has its own instrument type, a thing in Furnace that was decided as a compromise
during a debate.

the only differences from this instrument type compared to the regular one are:

- the lack of a Sample tab.


- it has a volume range of 0-63 instead of 0-15.
- it lacks a duty cycle macro.
- if you come from FamiTracker, this may seem strange to you, but it isn't.

Furnace manual 155


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.

- Enable synthesizer: must be on for the rest of this to work.

156
- synthesizer type: selects the synthesis algorithm.
- waveform displays.
- Wave 1: selects input waveform.
- this will turn yellow to indicate that a Waveform macro is set.
- Wave 2: selects second input waveform. only appears when a dual-waveform synthesizer is
selected.
- Pause preview: toggles live waveform preview.
- Restart preview: restarts preview from initial state.
- Copy to new wavetable: copies the currently displayed output waveform into the wavetable
as a new entry.
- (width×height): size of wavetable.
- Update Rate: time in ticks between waveform changes.
- Speed: rate of change with each update.
- Amount: strength of synthesizer function.
- Power: only appears when synthesizer type is "Phase Modulation".
- Global:
- if disabled, each note resets the synthesizer to the start.
- if enabled, synthesis continues unbroken from note to note.

Furnace manual 157


WonderSwan instrument
editor
the WonderSwan instrument editor contains three tabs: Sample, Wavetable and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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 page156 for
more information.

Macros
these are similar to PC Engine, with some differences.

- Volume: volume sequence.


- Arpeggio: pitch sequence.
- Noise: set noise size.
- only on channel 4.
- Waveform: wave sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of waveform.

158
Namco WSG instrument
editor
the Namco WSG/C15/C30 instrument editor consists of two tabs: Wavetable and Macros.

Wavetable
this allows you to enable and configure the Furnace wavetable synthesizer. see this page156 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.

Furnace manual 159


X1-010 instrument editor
X1-010 instrument editor contains three tabs: Sample, Wavetable and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

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 page156 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!

160
YMZ280B instrument editor
the YMZ280B instrument editor contains three tabs: Sample and Macros.

Sample
for sample settings, see the Sample instrument editor 141.

Macros
- Volume: volume sequence.
- Arpeggio: pitch sequence.
- Panning: stereo panning sequence.
- Pitch: fine pitch.
- Phase Reset: trigger restart of sample.

Furnace manual 161


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.

SYSTEM WIDTH HEIGHT NOTES

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

162
controls across the top line:

- waveform number. the - and + buttons step through the list.


- open. opens a file selector to choose the file to open.
- save. opens a file selector to choose the file to save to.
- right-clicking brings up a menu:
- save as .dmw...: saves the selected wavetable in DefleMask format.
- save raw...: saves the selected wavetable as raw data.
- Steps: view waveform as discrete blocks.
- Lines: view waveform as a continuous line.
- Width: length of the waveform data. maximum is 256.
- Height: height of the waveform. maximum is 256.
- < / >: show/hide waveform utilities (described below).

waveform display:

- the waveform is directly editable with the mouse.


- hovering will display a tooltip with the waveform position and value.

Furnace manual 163


controls across the bottom line:

- Dec: view text input as decimal.


- Hex: view text input as hexadecimal.
- + / ±: toggle text input as unsigned/signed. also adjusts waveform display.
- text input: waveform data as an editable numeric sequence. also called "MML stream".

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.

- shape: select shape from sine, triangle, saw, and square.


- Duty: only affects pulse waves, determining their width.
- Exponent: applies an exponent (power) to the waveform (^2, ^3 and so on).
- XOR Point: determines the point where the waveform gets inverted.
- Amplitude/Phase: add together up to 16 instances of the shape.

164
- Amplitude: height of the shape.
- Phase: position along the shape. for example, 0.250 starts the shape a quarter of the way
along.

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.

Furnace manual 165


WaveTools

these are useful editing tools to fine-tune the waveform:

- Scale X: stretches the waveform to a new length.


- interpolation method: filters the waveform when stretching. choose from none, linear, cosine,
and cubic interpolation.
- Scale Y: resizes the waveform to a new height. it will clip at the top and bottom.
- Offset X: slides the the waveform forward or back. it will wrap around.
- Offset Y: slides the waveform up or down. it will clip at the top and bottom.
- Smooth. averages values in the waveform.
- Amplify. changes the volume of the waveform. it will clip at the top and bottom.
- Normalize: stretches waveform to maximum within the wavetable height.
- Invert: flips waveform vertically.
- Reverse: flips waveform horizontally.
- Half: halves the waveform's frequency by stretching its first half to fill the waveform length.
- Double: doubles the waveform's frequency by squashing it to half length then repeating it.
- Convert Signed/Unsigned. worth trying if an imported wave sounds corrupted.
- Randomize: generate a completely random waveform.

166
samples
in the context of Furnace, a sound sample (usually just referred to as a sample) stores a sound.

in Furnace, these samples can be generated by importing a .wav file.

supported chips
the following sound chips have sample support:

- NES/Ricoh 2A03 (with DPCM support and only on channel 5)


- Sega Genesis/YM2612 (channel 6 only)
- PC Engine/TurboGrafx-16
- Amiga
- SegaPCM
- YM2608 (ADPCM channel only)
- YM2610(B) (ADPCM channels only)
- Seta/Allumer X1-010
- Atari Lynx
- MSM6258
- MSM6295
- QSound
- ZX Spectrum 48K (1-bit overlay)
- RF5C68
- SNES
- WonderSwan (channel 2 only)
- Sound Unit
- VERA (last channel only)
- Y8950 (last channel only)
- Konami K007232
- Konami K053260
- Irem GA20
- Ensoniq OTTO/ES5506
- Yamaha PCMD8/YMZ280B
- MMC5 (last channel only)
- VRC6 (software!)
- AY-3-8910 (software!)
- AY8930 (software!)
- Namco C140
- Namco C219

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").

Furnace manual 167


- use the created instrument in the track.

compatible sample mode (LEGACY)


use of this mode is discouraged in favor of Sample type instruments.

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.

the sample editor


you can edit your samples in Furnace's sample editor, which can be accessed by clicking on window
(at the top of the screen) then clicking on sample editor, or by double-clicking a sample in the
sample list.

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)

168
- and many more.

- top-left drop-down box: sample slot.


- Open: replaces current sample.
- right-clicking brings up a menu:
- import raw...: brings up a file selector, then presents a dialog to choose the format of the
selected file.
- Save: saves current sample to disk.
- right-clicking brings up a menu:
- save raw...: brings up a file selector, then saves the sample as raw data.
- Name: name in sample list.
- button to left of Info: collapses and expands the info section.
- Type: sample format.
- only 8-bit and 16-bit PCM samples are editable.
- selecting a format converts the sample data.
- BRR emphasis: boosts higher frequencies to compensate for the SNES low-pass filter.
- should not be enabled for BRR-type samples.
- only appears when applicable.
- 8-bit dither: applies dithering to samples meant to play back at 8-bit resolution.
- only appears when applicable.
- Rate: switches to normal rate values.
- Compat Rate: switches to DefleMask-compatible rate values for sample mapping.
- use of this is discouraged!
- Hz: base frequency of sample played at C-4.
- Note: note corresponding to Hz.
- Fine: fine tuning. ranges from -64 to 63, which maps to -1 to almost +1 semitone.
- Loop: enable or disable sample loop. only on supported chips.
- Mode: direction of loop. backward and ping pong loops are only natively available on some
chips.
- Start: start of loop.
- End: end of loop.

Furnace manual 169


- 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.

- Edit mode: Select: cursor selects portion of sample.


- Edit mode: Draw: cursor draws over wave.
- Resize: stretches sample. pops up a dialog to type new length.
- Resample: stretches sample. pops up a dialog box:
- Rate: new sample rate.
- 0.5x: halves sample rate.
- ==: returns to original sample rate.
- 2.0x: doubles sample rate.
- Factor: multiplier of original sample rate.
- Filter: selects interpolation filter for resampling.
- Undo: undoes previous edit.
- Redo: redoes undone edit.
- Amplify: changes amplitude of selection. pops up a dialog to type amount.
- Normalize: adjusts amplitude of selection to maximum without clipping.
- Fade in: ramp amplitude of selection from 0 to original.
- Fade in: ramp amplitude of selection from original to 0.
- Insert silence: inserts silence. pops up a dialog to type length.
- Apply silence: reduces amplitude of selection to 0.
- Delete: removes selection.
- Trim: removes all but selection.
- Reverse: reverses direction of selection.
- Invert: flips selection "vertically".
- Signed/unsigned exchange: reinterprets selection data as being of the opposite sign.
- if a sample sounds fine elsewhere but is distorted on import, it may have been interpreted as
signed when it should be unsigned, or vice versa; this will correct that.
- Apply filter: filters the selection. pops up a dialog box:
- From: filter cutoff frequency at start of selection.
- To: filter cutoff frequency at end of selection.
- Resonance: emphasizes frequencies around filter cutoff.
- Power: number of times resonance is applied.
- Low-pass: amount to attenuate everything above cutoff.
- Band-pass: amount to attenuate everything outside cutoff.
- High-pass: amount to attenuate everything below cutoff.
- Crossfade loop points: applies a "fade" between the loop's starting point and the end.
- Number of samples: how many samples in the loop region to take into account for crossfade.
- Linear <-> Equal power: the curve used to crossfade.
- Preview sample: plays sample at base frequency.
- Stop sample preview: stops preview.
- Create instrument from sample: creates a new instrument with its sample set to the current
sample.

170
- Zoom: shows and sets sample view zoom level.
- Zoom mode: switches between "Auto" (entire sample fits in window) and "100%" (each hori‐
zontal pixel represents one sample point).

in the sample viewer:

- left-click and drag to select a region of the sample.


- right-click to display a menu:
- cut: puts the selection in the sample clipboard and deletes it from the sample.
- copy: copies the selection into the sample clipboard.
- paste: inserts the sample clipboard at the start of the selection.
- paste (replace): replaces the selection with the sample clipboard.
- paste (mix): mixes the sample clipboard into the existing sample, beginning at the start of the
selection.
- set loop to selection: changes loop region to match selection.
- create wavetable from selection: copies the selection into a new wavetable entry.

Furnace manual 171


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.

- Sega Genesis: YM3438275, SN76489233


- Sega Genesis (with Sega CD): YM3438275, SN76489233, RF5C164228

- Sega Master System: SN76489233


- Sega Master System (with FM expansion): SN76489233, YM2413215

- NES: 2A03208
- Famicom with Konami VRC6: 2A03208, VRC6257
- Famicom with Konami VRC7: 2A03208, VRC7212
- Famicom with MMC5: 2A03208, MMC5200
- Famicom with Sunsoft 5B: 2A03208, 5B177
- Famicom with Namco 163: 2A03208, N163205
- Famicom Disk System: 2A03208, FDS192

- Game Boy: Game Boy194

- SNES: SNES235

- NEC PC Engine/TurboGrafx-16: HuC6280220

- Commodore VIC-20: VIC254

- Commodore 64 (6581 SID): MOS 6581184


- Commodore 64 (8580 SID): MOS 8580184

- Amiga: Amiga175

- Arcade (YM2151 and SegaPCM): YM2151261, SegaPCM231

- Capcom CPS-1: YM2151261, MSM6295203


- Capcom CPS-2 (QSound): QSound227

- Neo Geo CD: YM2610269


- Neo Geo CD (extended channel 2): YM2610269

- Neo Geo Pocket: T6W28243, DAC186

- Atari 2600/7800: TIA245

172
- Atari 800: POKEY224

- Konami Bubble System: AY-3-8910177 × 2, Konami WSG181

- Sharp X68000: YM2151261, MSM6258202

- PC + Sound Blaster Pro: YM3812212 × 2, DAC186, PC Speaker221

- MSX: AY-3-8910177
- MSX + SCC: YM2149(F)177, SCC230

- Commander X16 (VERA only): VERA253

- and many, many more!

chips
this is the full list of chips that Furnace supports.

- 2A03208
- Amiga175
- AY-3-8910/8914/YM2149(F)/Sunsoft 5B 177
- Microship AY8930179
- MOS 6581/8580 (SID)184
- Ensoniq ES5506187
- Konami SCC230
- FDS192
- Game Boy194
- Generic PCM DAC186
- Irem GA20193
- Bubble System WSG181
- K007232197
- K053260198
- Lynx199
- MMC5200
- MSM5232201
- MSM6258202
- MSM6295203
- Namco 163205
- Namco C140182
- Namco WSG/C15/C30207
- HuC6280220
- PC Speaker221
- PET222
- Pokémon Mini223
- POKEY224
- PowerNoise225
- PV-1000226
- QSound227
- RF5C68/RF5C164228
- SAA1099229
- SegaPCM231

Furnace manual 173


- SM8521232
- SN76489/Sega PSG233
- SNES235
- tildearrow Sound Unit241
- T6W28243
- TED244
- TIA245
- VERA253
- VIC254
- Virtual Boy255
- VRC6257
- WonderSwan258
- X1-010260
- Y8950, YM3526, YM3812 and YMF262 (OPL) 212
- ESFM189
- VRC7 and YM2413 (OPLL)215
- YM2414 (OPZ)217
- YM2151 (OPM)261
- YM2203 (OPN)263
- YM2608 (OPNA)266
- YM2610 (OPNB)269
- YM2610B (OPNB2)272
- YM2612/YM3438 (OPN2)275
- YMZ280B279
- ZX Spectrum Beeper280

Furnace also reads .dmf files with the Yamaha YMU759278 system, but...

174
Commodore Amiga
a computer with a desktop OS, lifelike graphics and 4 channels of PCM sound in 1985? no way!

in this very computer music trackers were born...

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.

Furnace manual 175


- 13xx: change wave.
- only works when "Mode" is set to "Wavetable" in the instrument.

info
this chip uses the Generic Sample141 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.

176
General Instrument
AY-3-8910
this chip was used in many home computers (ZX Spectrum, MSX, Amstrad CPC, Atari ST, etc.), video
game consoles (Intellivision and Vectrex), arcade boards and even slot machines!

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.

Furnace manual 177


- 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-891089 instrument editor.

178
Microchip AY8930
a backwards-compatible successor to the AY-3-8910, with increased volume resolution, duty cycle
control, three envelopes and highly configurable noise generator.

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

Furnace manual 179


- 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 AY893090 instrument editor.

180
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.

Furnace emulates this configuration as a "chip" with 32×16 wavetables.

effects
- 10xx: change wave.

info
this chip uses the Konami SCC/Bubble System WSG142 instrument editor.

Furnace manual 181


Namco C140
the Namco C140 is a 24-channel custom PCM sound chip manufactured jointly by Fujitsu and
Namco. it was first used in Namco System 2 arcade family starting in 1987.

this chip features:

- stereo soft panning


- accepts either raw 12-bit PCM or 8-bit µ-law compressed PCM samples
- 21.4 kHz sampling rate

effects
none!

info
this chip uses the C14092 instrument editor.

182
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.

this chip features:

- stereo soft panning


- accepts either 8-bit PCM or proprietary 8-bit µ-law compressed PCM samples

sample memory notice


this chip is rather unique when it comes to sample memory. be sure to read this notice.

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 C21993 instrument editor.

Furnace manual 183


Commodore 64
a home computer with a synthesizer-grade sound chip of which people took decades to master.
three oscillators with four selectable waveforms, ring modulation, oscillator sync, multi-mode fil‐
ter and ADSR envelope.

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

184
- 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 C6494 instrument editor.

channel status
the following icons are displayed when channel status is enabled in the pattern view:

- channel is silent:

- it's not

- gate bit disabled

- gate bit disabled and test bit enabled

- test bit enabled

- ch3off enabled in filter mode

Furnace manual 185


Generic PCM DAC
a sample channel, with freely selectable rate, mono/stereo and bit depth settings.

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 Sample141 instrument editor.

186
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.

it has a whopping 32 channels of 16-bit PCM and:

- real time digital filters


- linear interpolation
- loop start and stop positions for each voice (bidirectional and reverse looping)
- internal volume multiplication and stereo panning
- hardware support for short envelopes

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.

Furnace manual 187


info
this chip uses the ES550696 instrument editor.

188
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 clone212. 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.

Furnace manual 189


- x determines whether to output on left.
- y determines whether to output on right.
- 24xy: set output level of operator.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is the value.
- 25xy: set modulation input level of operator.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is the value.
- 26xy: set envelope delay of operator.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is the value.
- 27xx: set operator 4 noise mode.
- 0: noise off
- 1: square + noise
- 2: ring mod from operator 3 + noise
- 3: ring mod from operator 3 + double pitch modulation input
- note: emulation issues. subject to change!
- 2Axy: set waveform of operator.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is the value.
- 2Exx: enable envelope hard reset.
- 2Fxy: set fixed frequency block (octave).
- x is the operator from 1 to 4.
- y is the block/octave from 0 to 7.
- 3xyy: set fixed frequency f-num.
- x contains operator number and high bits of f-num may be any of the following:
- 0 to 3 for operator 1
- 4 to 7 for operator 2
- 8 to B for operator 3
- C to F for operator 4
- y are the lower bits of f-num.
- 40xx: set operator 1 detune.
- 41xx: set operator 1 detune.
- 42xx: set operator 1 detune.
- 43xx: set operator 1 detune.
- 50xy: set AM of operator.
- x is the operator from 1 to 4. 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. a value of 0 means "all operators".
- y is the value.
- 52xy: set RR of operator.
- x is the operator from 1 to 4. a value of 0 means "all operators".
- y is the value.
- 53xy: set VIB of operator.
- x is the operator from 1 to 4. 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. a value of 0 means "all operators".
- y is the value.
- 55xy: set SUS of operator.

190
- 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)98 instrument editor.

Furnace manual 191


Famicom Disk System
the Famicom Disk System is an expansion device for the Famicom (known as NES outside Japan), a
popular console from the '80s.
as it name implies, it allowed people to play games on specialized floppy disks that could be re‐
written on vending machines, therefore reducing the cost of ownership and manufacturing.

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 FDS97 instrument editor.

192
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 YM2151261.

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 GA20117 instrument type.

Furnace manual 193


Game Boy
the Game Boy is one of the most successful portable game systems ever made.

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 Boy118 instrument editor.

links
- Gameboy sound hard‐
ware (https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware) - detailed technical in‐
formation
- GameBoy Sound Table (http://www.devrs.com/gb/files/sndtab.html) - note frequency table

194
Sega Genesis/Mega Drive
a video game console that showed itself as the first true rival to Nintendo's video game market
near-monopoly in the US during the '80s.

this console is powered by two sound chips: the Yamaha YM2612275 and a derivative of the
SN76489233.

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.

Furnace manual 195


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 (https://www.youtube.com/watch?v=IKOR0TUlnWU) .

DualPCM
info here.275

Sega CD
this isn't a mode so much as a chip configuration. it adds the Ricoh RF5C68228 found in the Sega CD
add-on, providing 8 channels of PCM.

196
Konami K007232
a 2-channel PCM sound chip from Konami which was used in some of their 1986-1990 arcade
boards.

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 K007232120 instrument editor.

Furnace manual 197


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 K053260121 instrument editor.

198
Atari Lynx/MIKEY
the Atari Lynx is a 16 bit handheld console developed by Atari Corporation, and initially released in
September of 1989, with the worldwide release being in 1990.

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.

but hey, Furnace supports it, so...

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 Lynx122 instrument editor.

Furnace manual 199


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 NES128 and Generic Sample141 instrument editors.

200
OKI MSM5232
a rather primitive (but powerful) sound generator chip used in some arcade boards and even syn‐
thesizers (like Korg Poly-800).

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:

- internal (capacitors) or external (volume macro) envelope modes per group


- the ability to change the volume of each output (this can be used to generate saw waves if you
set each part/overtone's volume to exactly half of the previous one)
- global fine tune
- global vibrato (some arcade boards played with the clock input to simulate vibrato)

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 MSM5232124 instrument editor.

Furnace manual 201


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:

CLOCK RATE SAMPLING RATE

4 MHz 7812 Hz
4.096 MHz 8000 Hz
8 MHz 15625 Hz
8.192 MHz 16000 Hz
### info

this chip uses the MSM6258125 instrument editor.

202
OKI MSM6295
an upgrade from 6258 - it provides 4 ADPCM channels, at max 32 KHz (still no variable pitch
though). between late '80s and late '90s, it was one of the most common, if not the most common
soundchip used in arcade machines (Capcom, Toaplan, Kaneko, Atari, Tecmo, the list can go on and
on...). without bankswitching, the chip supports 256kB of sample RAM and can hold up to 127
samples at once.

effects
- 20xx: set chip output rate.
- 0: /132
- 1: /165

info
this chip uses the MSM6295126 instrument editor.

chip clock rates


like MSM6258, MSM6295 is an extremely basic ADPCM sound codec. it has no variable frequency
rate, it depends on clock rate of a chip itself. Furnace supports following rates:

CLOCK RATE SAMPLING RATE

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

Furnace manual 203


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.

204
Namco 163 (also called
N163, Namco C163, Namco
106 [sic], Namco 160 or
Namco 129)
this is one of Namco's NES mappers, with up to 8 wavetable channels.

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.

waveform load position versus waveform position


in Furnace, waveform load position/length is different from the waveform position/length.

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.

Furnace manual 205


- 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 163127 instrument editor.

206
Namco WSG / Namco C15 /
Namco C30
a family of wavetable synth sound chips used by Namco in their arcade machines (Pac-Man and
later). waveforms are 4-bit, with 32-byte sample length.

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 WSG159 instrument editor.

Furnace manual 207


NES
the console from Nintendo that plays Super Mario Bros. and helped revive the agonizing video
game market in the US during mid-80s.

also known as Famicom. it is a five-channel sound generator: 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.
- PAL: 100Hz sweeps and lengths; 200Hz envelope.
- Dendy: 118.9Hz sweeps and lengths; 237.8Hz envelope.

208
- 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 NES128 instrument editor.

short noise frequencies (NTSC)


NOTE ARPEGGIO FUNDAMENTAL MIDI NOTE PITCH

C-0 @0 4.7 Hz -9.47 d_1 + 53¢


C#0 @1 9.5 Hz 2.53 D-0 + 53¢
D-0 @2 18.9 Hz 14.55 D-1 + 55¢
D#0 @3 25.3 Hz 19.53 G-1 + 53¢
E-0 @4 37.9 Hz 26.55 D-2 + 55¢
F-0 @5 50.6 Hz 31.57 G-2 + 57¢
F#0 @6 75.8 Hz 38.55 D-3 + 55¢
G-0 @7 95.3 Hz 42.51 F#3 + 51¢
G#0 @8 120.3 Hz 46.55 A#3 + 55¢
A-0 @9 150.4 Hz 50.41 D-4 + 41¢
A#0 @10 200.5 Hz 55.39 G-4 + 39¢
B-0 @11 300.7 Hz 62.41 D-5 + 41¢
C-1 @12 601.4 Hz 74.41 D-6 + 41¢
C#1 @13 1202.8 Hz 86.41 D-7 + 41¢
D-1 @14 2405.6 Hz 98.41 D-8 + 41¢
D#1 @15 4811.2 Hz 110.41 D-9 + 41¢

reference: NESdev (https://www.nesdev.org/wiki/APU_Noise)

Furnace manual 209


length counter table
VALUE RAW NTSC PAL DENDY NTSC 5-STEP PAL 5-STEP DENDY 5-STEP

03 2 17ms 20ms 17ms 21ms 25ms 21ms


05 4 33ms 40ms 34ms 42ms 50ms 42ms
07 6 50ms 60ms 50ms 63ms 75ms 63ms
09 8 67ms 80ms 67ms 83ms 100ms 84ms
00 10 83ms 100ms 84ms 104ms 125ms 105ms
0B 10 83ms 100ms 84ms 104ms 125ms 105ms
0D 12 100ms 120ms 101ms 125ms 150ms 126ms
10 12 100ms 120ms 101ms 125ms 150ms 126ms
0C 14 117ms 140ms 118ms 146ms 175ms 147ms
0F 14 117ms 140ms 118ms 145ms 175ms 147ms
1C 16 133ms 160ms 135ms 167ms 200ms 168ms
11 16 133ms 160ms 135ms 167ms 200ms 168ms
13 18 150ms 180ms 151ms 188ms 225ms 189ms
02 20 166ms 200ms 168ms 208ms 250ms 210ms
15 20 167ms 200ms 168ms 208ms 250ms 210ms
17 22 183ms 220ms 185ms 229ms 275ms 231ms
12 24 200ms 240ms 202ms 250ms 300ms 252ms
19 24 200ms 240ms 202ms 250ms 300ms 252ms
0E 26 217ms 260ms 219ms 271ms 325ms 273ms
1B 26 217ms 260ms 219ms 271ms 325ms 273ms
1D 28 233ms 280ms 235ms 292ms 350ms 294ms
1F 30 250ms 300ms 252ms 313ms 375ms 315ms
1E 32 267ms 320ms 269ms 333ms 400ms 336ms
04 40 333ms 400ms 336ms 417ms 500ms 421ms
14 48 400ms 480ms 404ms 500ms 600ms 505ms
0A 60 500ms 600ms 505ms 625ms 750ms 631ms
1A 72 600ms 720ms 606ms 750ms 900ms 757ms
06 80 667ms 800ms 673ms 833ms 1.0s 841ms
16 96 800ms 960ms 807ms 1.0s 1.2s 1.0s
08 160 1.3s 1.6s 1.3s 1.7s 2.0s 1.7s
18 192 1.6s 1.9s 1.6s 2.0s 2.4s 2.0s
01 254 2.1s 2.5s 2.1s 2.6s 3.2s 2.7s

reference: NESdev (https://www.nesdev.org/wiki/APU_Length_Counter)

210
DPCM frequency table
VALUE TRACKER NTSC FREQ NTSC PITCH PAL FREQ PAL PITCH

00 C-3 4181.7Hz C-8 - 2¢ 4177.4Hz C-8 - 4¢


01 D-3 4709.9Hz D-8 + 4¢ 4696.6Hz D-8 - 1¢
02 E-3 5264.0Hz E-8 - 3¢ 5261.4Hz E-8 - 4¢
03 F-3 5593.0Hz F-8 + 2¢ 5579.2Hz F-8 - 3¢
04 G-3 6258.0Hz G-8 - 4¢ 6023.9Hz G-8 - 70¢
05 A-3 7046.4Hz A-8 + 2¢ 7044.9Hz A-8 + 1¢
06 B-3 7919.4Hz B-8 + 4¢ 7917.2Hz B-8 + 3¢
07 C-4 8363.4Hz C-9 - 2¢ 8397.0Hz C-9 + 5¢
08 D-4 9419.9Hz D-9 + 4¢ 9446.6Hz D-9 + 9¢
09 F-4 11186.1Hz F-9 + 2¢ 11233.8Hz F-9 + 9¢
0A G-4 12604.0Hz G-9 + 8¢ 12595.5Hz G-9 + 7¢
0B A-4 13982.6Hz A-9 - 12¢ 14089.9Hz A-9 + 1¢
0C C-5 16884.6Hz C-10 + 15¢ 16965.4Hz C-10 + 23¢
0D E-5 21306.8Hz E-10 + 17¢ 21315.5Hz E-10 + 18¢
0E G-5 24858.0Hz G-10 - 16¢ 25191.0Hz G-10 + 7¢
0F C-6 33143.9Hz C-11 - 18¢ 33252.1Hz C-11 - 12¢

reference: NESdev (https://www.nesdev.org/wiki/APU_DMC#Pitch_table)

Furnace manual 211


Yamaha OPL
a series of FM sound chips which were very popular in DOS land. it was so popular that even
Yamaha made a logo for it!

essentially a downgraded version of Yamaha's other FM chips, with only 2 operators per channel.
however, it also had a drums mode215, 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.

afterwards everyone moved to Windows and software mixed PCM streaming...

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.

212
- 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)102 instrument editor.

Furnace manual 213


when two channels are joined for 4-op mode, the channel bar will show 4OP on a bracket tying
them together.

214
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:

- 9 channels of 2 operator FM synthesis


- a drum/percussion mode, replacing the last 3 voices with 5 rhythm channels, with drum mode
tones hard-defined in the chip itself, like FM instruments. only pitch might be altered.
- drum mode works like following: FM channel 7 is for Kick Drum, which is a normal FM channel
but routed through mixer twice for 2× volume, like all drum sounds. FM channel 8 splits to Snare,
Drum, and Hi-Hat. Snare Drum is the carrier and it works with a special 1 bit noise generator
combined with a square wave, all possible by overriding phase-generator with some different
synthesis method. Hi-Hat is the modulator and it works with the noise generator and also the
special synthesis. channel 9 splits to Top-Cymbal and Tom-Tom, Top-Cymbal is the carrier and
only has the special synthesis, while Tom-Tom is basically a 1op wave.
- special synthesis mentioned already is: 5 square waves are gathered from 4×, 64× and 128× the
pitch of channel 8 and 16× and 64× the pitch of channel 9 and they go through a process where 2
HH bits OR'd together, then 1 HH and 1 TC bit OR'd, then the two TC bits OR'd together, and those 3
results get XOR'd.
- 1 user-definable patch (this patch can be changed throughout the course of the song)
- 15 pre-defined patches which can all be used at the same time
- support for ADSR on both the modulator and the carrier
- sine and half-sine based FM synthesis
- 9 octave note control
- 4096 different frequencies for channels
- 16 unique volume levels (NOTE: volume 0 is NOT silent.)
- modulator and carrier key scaling
- built-in hardware vibrato support

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..

Furnace manual 215


- 18xx: toggle drums mode.
- 0 disables it and 1 enables it.
- only in drums mode.
- 19xx: set attack of all operators.
- 1Axx: set attack of operator 1.
- 1Bxx: set attack of operator 2.
- 50xy: set AM of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y determines whether AM is on.
- 51xy: set SL of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y is the value.
- 52xy: set RR of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y is the value.
- 53xy: set VIB of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y determines whether VIB is on.
- 54xy: set KSL of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y is the value.
- 55xy: set EGT of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y determines whether EGT is on.
- 56xx: set DR of all operators.
- 57xx: set DR of operator 1.
- 58xx: set DR of operator 2.
- 5Bxy: set KSR of operator.
- x is the operator, either 1 or 2. a value of 0 means "all operators".
- y determines whether KSR is on.

info
this chip uses the FM (OPLL)105 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.

216
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.

it adds these features on top of the YM2151:

- 8 waveforms (but they're different from the OPL ones)


- per-channel (possibly) linear volume control separate from TL
- increased multiplier precision (in 1/16ths)
- 4-step envelope generator shift (minimum TL)
- another LFO
- no per-operator key on/off
- fixed frequency mode per operator (kind of like OPN family's extended channel mode but with
a bit less precision and for all 8 channels)
- "reverb" effect (actually extends release)

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.

no plans have been made for TX81Z MIDI passthrough, because:

- Furnace works with register writes rather than MIDI commands


- the MIDI protocol is slow (would not be enough).
- the TX81Z is very slow to process a note on/off or parameter change event.
- the TL range has been reduced to 0-99, but the chip goes from 0-127.

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.

Furnace manual 217


- 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.
- 24xx: set LFO 2 speed.
- 25xx: set LFO 2 waveform. xx may be one of the following:
- 00: saw
- 01: square
- 02: triangle
- 03: noise
- 26xx: set LFO 2 AM depth.
- 27xx: set LFO 2 PM depth.
- 28xy: set reverb of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 2Axy: set waveform of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 2Bxy: set EG shift of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 2Cxy: set fine multiplier of operator.
- x is the operator (1-4). a value of 0 means "all operators".
- y is the value.
- 2Fxx: enable envelope hard reset.
- this works by inserting a quick release and tiny delay before a new note.
- 3xyy: set fixed frequency of operator 1/2.
- x is the block (0-7 for operator 1; 8-F for operator 2).
- y is the frequency. fixed frequency mode will be disabled if this is less than 8.
- the actual frequency is: y*(2^x).
- 4xyy: set fixed frequency of operator 3/4.
- x is the block (0-7 for operator 3; 8-F for operator 4).
- y is the frequency. fixed frequency mode will be disabled if this is less than 8.
- the actual frequency is: y*(2^x).
- 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

218
- 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)114 instrument editor.

Furnace manual 219


PC Engine/TurboGrafx-16
a console from NEC that, depending on a region:

- 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 Engine130 instrument editor.

channel status
the following icons are displayed when channel status is enabled in the pattern view:

- noise mode (channels 5 and 6 only):

- off

- on

220
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:

- evdev SND_TONE: uses input events to control the beeper.


- requires write permission to /dev/input/by-path/platform-pcspkr-event-spkr.
- is not 100% frequency-accurate as SND_TONE demands frequencies, but Furnace uses raw
timer periods...
- KIOCSOUND on /dev/tty1: sends the KIOCSOUND ioctl to control the beeper.
- may require running Furnace as root.
- /dev/port: writes to /dev/port to control the beeper.
- requires read/write permission to /dev/port.
- KIOCSOUND on standard output: sends the KIOCSOUND ioctl to control the beeper.
- requires running Furnace on a TTY.
- outb(): uses the low-level kernel port API to control the beeper.
- requires running Furnace as root, or granting it CAP_SYS_RAWIO to the Furnace executable:
sudo setcap cap_sys_rawio=ep ./furnace.

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 Beeper91 instrument editor.

Furnace manual 221


Commodore PET
a computer from 1977 which was leader on US schools back then. subsequently the Apple II took its
throne.

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.

some of these didn't even have sound...

effects
- 10xx: set waveform.
- xx is a bitmask.

info
this chip uses the PET131 instrument editor.

222
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/QuadTone132 instrument editor.

Furnace manual 223


POKEY
a sound and input chip developed by Atari for their 8-bit computers (Atari 400, 800, XL/XE and so
on). 4 channels of signature Atari sounds.

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 POKEY133 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.

224
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.

refer to its instrument type's documentation for details on sound synthesis.

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 PowerNoise134 instrument editor.

Furnace manual 225


Casio PV-1000
released only in Japan, this console was pulled after only a few weeks on the market. it has only 3
square waves with 6-bit pitch resolution and no bass.

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-1000137 instrument editor.

226
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 QSound138 instrument editor.

Furnace manual 227


Ricoh RF5C68
YM2612's sidekick - poor man's SNES DSP. 8-channel PCM sample-based synthesizer used in Sega
CD, Fujitsu FM Towns and some of Sega's arcade machines. supports up to 64KB of sample data.

effects
none so far.

info
this chip uses the RF5C68139 instrument editor.

228
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:

- an instrument with envelope settings is placed on channel 2 or channel 5


- an instrument that is used as an "envelope output" is placed on channel 3 or channel 6 (you
may want to disable wave output on the output channel)

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 SAA1099140 instrument editor.

Furnace manual 229


Konami SCC/SCC+
the Sound Creative Chip (SCC) adds 5 channels of wavetable to your MSX!
it was used in (of course) several Konami games, which had better audio quality due to the extra
channels provided by this chip (poor AY since nobody used the envelope for bass).

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 WSG142 instrument editor.

230
SegaPCM
16 channels of PCM? no way!

yep, that's right! 16 channels of PCM!

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 SegaPCM143 instrument editor.

Furnace manual 231


Sharp SM8521
the SM8521 is the CPU and sound chip of the Game.com, a handheld console released in 1997 as a
competitor to the infamous Nintendo Virtual Boy.

sadly, the Game.com ended up being a failure as well, mostly due to poor quality games. the
Game.com 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 Game.com was released for $69.99; its later model, the Pocket
Pro, was released in mid-1999 for $29.99 due to the Game.com'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).

the sound-related features and quirks of the SM8521 are as follows:

- 2 4-bit wavetable channels


- a noise channel (which can go up to a very high pitch, creating an almost periodic noise sound)
- 5-bit volume
- a low bit-depth output (which means it distorts a lot).
- it phase resets when you switch waves
- 12-bit pitch with a wide frequency range
- a software-controlled D/A register that (potentially) requires all other registers to be stopped
to play. due to this, it is currently not implemented in Furnace.

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 SM8521144 instrument editor.

232
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.

Furnace manual 233


info
this chip uses the SN76489/Sega PSG136 instrument editor.

234
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.

some notable features of the DSP are:

- 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.

Furnace manual 235


- 2: linear decrement. volume lowers by subtractions of 1/64.
- 3: exponential decrement. volume lowers by multiplications of 255/256.
- 4: linear increment. volume rises by additions of 1/64.
- 5: bent line (inverse log) increment. volume rises by additions of 1/64 until 3/4, then additions
of 1/256.
- 16xx: set gain. 00 to 7F if direct, 00 to 1F otherwise.
- 18xx: enable echo buffer.
- 19xx: set echo delay. range is 0 to F.
- 1Axx: set left echo channel volume.
- 1Bxx: set right echo channel volume.
- 1Cxx: set echo feedback.
- all of these are signed numbers.
- 00 to 7F for 0 to 127.
- 80 to FF for -128 to -1.
- setting these to -128 is not recommended as it may cause echo output to overflow and there‐
fore click.
- 1Dxx: set noise generator frequency. range is 00 to 1F. see noise frequencies chart below.
- 1Exx: set left dry / global volume.
- 1Fxx: set right dry / global volume.
- these do not affect echo.
- 20xx: set attack. range is 0 to F.
- 21xx: set decay. range is 0 to 7.
- 22xx: set sustain. range is 0 to 7.
- 23xx: set release. range is 00 to 1F.
- these four are only used in ADSR envelope mode. see ADSR chart below.
- 3xyy: set echo filter coefficient.
- x is the coefficient from 0 to 7.
- yy is the value (signed number).
- 00 to 7F for 0 to 127.
- 80 to FF for -128 to -1.
- note: be sure the sum of all coefficients is between -128 and 127. sums outside that may result
in overflow and therefore clicking.
- see SnesLab (https://sneslab.net/wiki/FIR_Filter) for a full explanation and examples.

info
this chip uses the SNES145 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

- linear gain decrease

236
- logarithmic gain decrease

- linear gain increase

- bent-line gain increase

- envelope attack

- envelope decay

- envelope sustain

- envelope release

ADSR
ATTACK 0→1 TIME DECAY 1→S TIME SUSTAIN RATIO RELEASE S→0 TIME

00 4.1s 00 1.2s 00 1/8 00 ∞


01 2.5s 01 740ms 01 2/8 01 38s
02 1.5s 02 440ms 02 3/8 02 28s
03 1.0s 03 290ms 03 4/8 03 24s
04 640ms 04 180ms 04 5/8 04 19s
05 380ms 05 110ms 05 6/8 05 14s
06 260ms 06 74ms 06 7/8 06 12s
07 160ms 07 37ms 07 1 07 9.4s
08 96ms 08 7.1s
09 64ms 09 5.9s
0A 40ms 0A 4.7s
0B 24ms 0B 3.5s
0C 16ms 0C 2.9s
0D 10ms 0D 2.4s
0E 6ms 0E 1.8s
0F 0ms 0F 1.5s
10 1.2s
11 880ms
12 740ms
13 590ms
14 440ms
15 370ms
16 290ms

Furnace manual 237


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

reference: Super Famicom Development Wiki (https://wiki.superfamicom.org/spc700-refer‐


ence#dsp-voice-register:-adsr-1097)

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

238
VALUE LINEAR INC. BENT LINE INC. LINEAR DEC. EXPONENT DEC.

16 32ms 56ms 32ms 290ms


17 24ms 42ms 24ms 220ms
18 20ms 35ms 20ms 180ms
19 16ms 28ms 16ms 150ms
1A 12ms 21ms 12ms 110ms
1B 10ms 18ms 10ms 92ms
1C 8ms 14ms 8ms 74ms
1D 6ms 11ms 6ms 55ms
1E 4ms 7ms 4ms 37ms
1F 2ms 3.5ms 2ms 18ms

reference: Super Famicom Development Wiki (https://wiki.superfamicom.org/spc700-refer‐


ence#dsp-voice-register:-gain-1156)

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

reference: Super Famicom Development Wiki (https://wiki.superfamicom.org/spc700-refer‐


ence#dsp-register:-flg-1318)

Furnace manual 239


resources
- SNES-format BRR samples (https://www.smwcentral.net/?p=stion&s=brrsamples) at SMW
Central

240
tildearrow Sound Unit
a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow.

it has the following capabilities:

- 8 channels of either waveform or sample


- stereo sound
- 8 waveforms (pulse, saw, sine, triangle, noise, periodic noise, XOR sine and XOR triangle)
- 128 widths for the pulse wave
- per-channel resonant filter
- ring modulation
- volume, frequency and cutoff sweep units (per-channel)
- phase reset timer (per-channel)

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

Furnace manual 241


- bit 7: up direction
- 21xx: toggle volume sweep.
- bit 0-4: speed
- bit 5: up direction
- bit 6: loop
- bit 7: alternate
- 22xx: toggle cutoff sweep.
- bit 0-6: speed
- bit 7: up direction
- 4xxx: set cutoff. range is 0 to FFF.

info
this chip uses the Sound Unit147 instrument editor.

242
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.

this chip was used in Neo Geo Pocket.

effects
- 20xx: set noise mode.
- 0: thin pulse.
- 1: noise.

info
this chip uses the T6W28149 instrument editor.

Furnace manual 243


MOS Technology TED
also called 7360/8360, TED stands for Text Editing Device. it's both a video and audio chip of Com‐
modore budget computers, like Plus/4 and 16.

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 TED150 instrument editor.

244
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!

only 2 channels and 31 frequencies?!

Furnace isn't complete without this one...

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 TIA151 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

0 2096.0 C-7 +2 2080.0 C-7 -1


1 1048.0 C-6 +2 1040.0 C-6 -1
2 698.7 F-5 0.0 693.3 F-5 -1
3 524.0 C-5 +2 520.0 C-5 -1
4 419.2 G#4 +16 416.0 G#4 +3
5 349.3 F-4 0.0 346.7 F-4 -13
6 299.4 D-4 +33 297.1 D-4 +20

Furnace manual 245


PITCH NTSC NOTE CENT PAL NOTE CENT

7 262.0 C-4 +3 260.0 C-4 -11


8 232.9 A#3 -2 231.1 A#3 -15
9 209.6 G#3 +15 208.0 G#3 +2
10 190.5 F#3 +50 189.1 F#3 +37
11 174.7 F-3 +1 173.3 F-3 -13
12 161.2 E-3 -39 160.0 D#3 +48
13 149.7 D-3 +33 148.6 D-3 +20
14 139.7 C#3 +13 138.7 C#3 +1
15 131.0 C-3 +3 130.0 C-3 -11
16 123.3 B-2 -3 122.4 B-2 -16
17 116.4 A#2 0.0 115.6 A#2 -14
18 110.3 A-2 +5 109.5 A-2 -8
19 104.8 G#2 +16 104.0 G#2 +3
20 99.8 G-2 +31 99.0 G-2 +17
21 95.3 G-2 -49 94.5 F#2 +36
22 91.1 F#2 -27 90.4 F#2 -40
23 87.3 F-2 0.0 86.7 F-2 -12
24 83.8 E-2 +29 83.2 E-2 +16
25 80.6 E-2 -39 80.0 D#2 +48
26 77.6 D#2 -5 77.0 D#2 -18
27 74.9 D-2 +34 74.3 D-2 +20
28 72.3 D-2 -27 71.7 D-2 -41
29 69.9 C#2 +15 69.3 C#2 0
30 67.6 C#2 -44 67.1 C-2 +44
31 65.5 C-2 +3 65.0 C-2 -11
#### shapes 2 and 3
PITCH NTSC NOTE CENT PAL NOTE CENT

0 67.6 C#2 -44 67.1 C-2 +44


1 33.8 C#1 -42 33.5 C-1 +42
2 22.5 F#0 -46 22.4 F-0 +46
3 16.9 C#0 -44 16.8 C-0 +44
4 13.5 13.4
5 11.3 11.2
6 9.7 9.6
7 8.5 8.4
8 7.5 7.5
9 6.8 6.7

246
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

0 15720.0 B-9 -9 15600.0 B-9 -23


1 7860.0 B-8 -9 7800.0 B-8 -23
2 5240.0 E-8 -11 5200.0 E-8 -25
3 3930.0 B-7 -10 3900.0 B-7 -23
4 3144.0 G-7 +4 3120.0 G-7 -9
5 2620.0 E-7 -11 2600.0 E-7 -25
6 2245.7 C#7 +21 2228.6 C#7 +8
7 1965.0 B-6 -9 1950.0 B-6 -23
8 1746.7 A-6 -13 1733.3 A-6 -27
9 1572.0 G-6 +4 1560.0 G-6 -9
10 1429.1 F-6 +39 1418.2 F-6 +25
11 1310.0 E-6 -11 1300.0 E-6 -25
12 1209.2 D-6 +49 1200.0 D-6 +36

Furnace manual 247


PITCH NTSC NOTE CENT PAL NOTE CENT

13 1122.9 C#6 +22 1114.3 C#6 +8


14 1048.0 C-6 +2 1040.0 C-6 -11
15 982.5 B-5 -10 975.0 B-5 -23
16 924.7 A#5 -15 917.6 A#5 -28
17 873.3 A-5 -14 866.7 A-5 -27
18 827.4 G#5 -7 821.1 G#5 -20
19 786.0 G-5 +4 780.0 G-5 -9
20 748.6 F#5 +20 742.9 F#5 +7
21 714.5 F-5 +39 709.1 F-5 +26
22 683.5 F-5 -38 678.3 E-5 +48
23 655.0 E-5 -12 650.0 E-5 -25
24 628.8 D#5 +18 624.0 D#5 +5
25 604.6 D-5 +49 600.0 D-5 +36
26 582.2 D-5 -16 577.8 D-5 -29
27 561.4 C#5 +21 557.1 C#5 +8
28 542.1 C#5 -40 537.9 C-5 +47
29 524.0 C-5 +2 520.0 C-5 -11
30 507.1 B-4 +45 503.2 B-4 +32
31 491.3 B-4 -9 487.5 B-4 -23
#### shapes 6, 7, 9 and 10
PITCH NTSC NOTE CENT PAL NOTE CENT

0 1014.2 B-5 +45 1006.5 B-5 +32


1 507.1 B-4 +45 503.2 B-4 +32
2 338.1 E-4 +43 335.5 E-4 +30
3 253.5 B-3 +45 251.6 B-3 +32
4 202.8 G#3 -42 201.3 G-3 +45
5 169.0 E-3 +43 167.7 E-3 +30
6 144.9 D-3 -23 143.8 D-3 -37
7 126.8 B-2 +42 125.8 B-2 +32
8 112.7 A-2 +42 111.8 A-2 +28
9 101.4 G#2 -41 100.6 G-2 +45
10 92.2 F#2 -6 91.5 F#2 -19
11 84.5 E-2 +43 83.9 E-2 +31
12 78.0 D#2 +4 77.4 D#2 -9
13 72.4 D-2 -24 71.9 D-2 -37
14 67.6 C#2 -44 67.1 C-2 +44
15 63.4 B-1 +46 62.9 B-1 +32

248
PITCH NTSC NOTE CENT PAL NOTE CENT

16 59.7 A#1 +41 59.2 A#1 +26


17 56.3 A-1 +39 55.9 A-1 +27
18 53.4 G#1 +48 53.0 G#1 +35
19 50.7 G#1 -41 50.3 G-1 +45
20 48.3 G-1 -25 47.9 G-1 -39
21 46.1 F#1 -4 45.7 F#1 -20
22 44.1 F-1 +16 43.8 F-1 +4
23 42.3 E-1 +44 41.9 E-1 +28
24 40.6 E-1 -26 40.3 E-1 -39
25 39.0 D#1 +4 38.7 D#1 -9
26 37.6 D-1 +41 37.3 D-1 +27
27 36.2 D-1 -24 35.9 D-1 -38
28 35.0 C#1 +19 34.7 C#1 +5
29 33.8 C#1 -42 33.5 C-1 +42
30 32.7 C-1 0.0 32.5 C-1 -11
31 31.7 B-0 +44 31.5 B-0 +33
#### shape 8
PITCH NTSC NOTE CENT PAL NOTE CENT

0 61.5 B-1 -6 61.1 B-1 -18


1 30.8 B-0 -6 30.5 B-0 -22
2 20.5 E-0 -8 20.4 E-0 -17
3 15.4 15.3
4 12.3 12.2
5 10.3 10.2
6 8.8 8.7
7 7.7 7.6
8 6.8 6.8
9 6.2 6.1
10 5.6 5.6
11 5.1 5.1
12 4.7 4.7
13 4.4 4.4
14 4.1 4.1
15 3.8 3.8
16 3.6 3.6
17 3.4 3.4
18 3.2 3.2

Furnace manual 249


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

0 5240.0 E-8 -11 5200.0 E-8 -25


1 2620.0 E-7 -11 2600.0 E-7 -25
2 1746.6 A-6 -14 1733.3 A-6 -27
3 1310.0 E-6 -11 1300.0 E-6 -25
4 1048.0 C-6 +2 1040.0 C-6 -11
5 873.3 A-5 -14 866.7 A-5 -27
6 748.6 F#5 +20 742.9 F#5 +7
7 655.0 E-5 -12 650.0 E-5 -25
8 582.2 D-5 -16 577.8 D-5 -29
9 524.0 C-5 +2 520.0 C-5 -11
10 476.4 A#4 +39 472.7 A#4 +23
11 436.7 A-4 -13 433.3 A-4 -27
12 403.1 G-4 +48 400.0 G-4 +34
13 374.3 F#4 +20 371.4 F#4 +6
14 349.3 F-4 0.0 346.7 F-4 -13
15 327.5 E-4 -11 325.0 E-4 -25
16 308.2 D#4 -17 305.9 D#4 -30
17 291.1 D-4 -16 288.9 D-4 -29
18 275.8 C#4 -9 273.7 C#4 -22
19 262.0 C-4 +3 260.0 C-4 -11
20 249.5 B-3 +18 247.6 B-3 +5
21 238.2 A#3 +37 236.4 A#3 +24

250
PITCH NTSC NOTE CENT PAL NOTE CENT

22 227.8 A#3 -40 226.1 A-3 +47


23 218.3 A-3 -14 216.7 A-3 -27
24 209.6 G#3 +15 208.0 G#3 +2
25 201.5 G-3 +47 200.0 G-3 +34
26 194.1 G-3 -17 192.6 G-3 -31
27 187.1 F#3 +19 185.7 F#3 +6
28 180.7 F#3 -41 179.3 F-3 +45
29 174.7 F-3 +1 173.3 F-3 -13
30 169.0 E-3 +43 167.7 E-3 +30
31 163.8 E-3 -11 162.5 E-3 -25
#### shapes 14 and 15
PITCH NTSC NOTE CENT PAL NOTE CENT

0 338.1 E-4 +43 335.5 E-4 +30


1 169.0 E-3 +43 167.7 E-3 +30
2 112.7 A-2 +42 111.8 A-2 +28
3 84.5 E-2 +43 83.9 E-2 +31
4 67.6 C#2 -44 67.1 C-2 +44
5 56.3 A-1 +39 55.9 A-1 +27
6 48.3 G-1 -25 47.9 G-1 -39
7 42.3 E-1 +44 41.9 E-1 +28
8 37.6 D-1 +41 37.3 D-1 +27
9 33.8 C#1 -42 33.5 C-1 +42
10 30.7 B-0 -11 30.5 B-0 -22
11 28.2 A-0 +44 28.0 A-0 +31
12 26.0 G#0 0.0 25.8 G#0 -13
13 24.1 G-0 -29 24.0 G-0 -36
14 22.5 F#0 -46 22.4 F-0 +46
15 21.1 E-0 +42 21.0 E-0 +33
16 19.9 D#0 +42 19.7 D#0 +25
17 18.8 D-0 +40 18.6 D-0 +20
18 17.8 C#0 +45 17.7 C#0 +36
19 16.9 C#0 -44 16.8 C-0 +44
20 16.1 C-0 -30 16.0 C-0 -40
21 15.4 15.2
22 14.7 14.6
23 14.1 14
24 13.5 13.4

Furnace manual 251


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 (http://7800.8bitdev.org/in‐
dex.php/Atari_2600_VCS_Sound_Frequency_and_Waveform_Guide)

252
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 VERA152 and Generic Sample141 instrument editors.

Furnace manual 253


Commodore VIC-20
the Commodore VIC-20 was Commodore's major attempt at making a personal home computer,
and is the precursor to the Commodore 64.

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 VIC153 instrument editor.

254
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.

Furnace manual 255


info
this chip uses the Virtual Boy154 instrument editor.

256
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.

- 12xx: set duty cycle. range is 0 to 7.


- 17xx: toggle LEGACY sample mode.
- this effect exists only for compatibility reasons! its use is NOT recommented. use Sample
type instruments instead.

info
this chip uses the VRC6155 and VRC6 (saw)155 instrument editors.

Furnace manual 257


WonderSwan
a handheld console released only in Japan by Bandai, designed by the same people behind Game
Boy and Virtual Boy.
for this reason it has lots of similar elements from those two systems in the sound department.

it has 4 wavetable channels. some of them have additional capabilities:

- the second channel could play samples


- the third one has hardware sweep
- the fourth one also does noise

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 WonderSwan158 instrument editor.

channel status
the following icons are displayed when channel status is enabled in the pattern view:

- PCM mode (channel 2):

- off

- on
- sweep (channel 3):

- disabled

- enabled
- noise mode (channel 4):

- off

258
- on

Furnace manual 259


Seta/Allumer X1-010
the X1-010 is a chip used by Seta (and Allumer) in the Seta 1 and 2 arcade boards.

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-010160 instrument editor.

260
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 SegaPCM231 or OKI's
line of ADPCM chips203.

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.

Furnace manual 261


- 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 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 (OPM)108 instrument editor.

262
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

Furnace manual 263


- 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.
- 5Bxx: set D2R/SR of all operators.

264
- 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)111 and AY-3-8910/SSG89 instrument editor.

Furnace manual 265


Yamaha YM2608 (OPNA)
like YM2203, but with twice the FM channels, stereo, an ADPCM channel and built-in drums
("rhythm")!

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

266
- 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.

Furnace manual 267


- 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.

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)111, AY-3-8910/SSG89, ADPCM-A87 and ADPCM-B88 instrument editors.

268
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
(https://wiki.neogeodev.org/index.php?title=ADPCM) 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

Furnace manual 269


- 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.

270
- 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)111, AY-3-8910/SSG89, ADPCM-A87 and ADPCM-B88 instrument editors.

Furnace manual 271


Taito Arcade/Yamaha
YM2610B
YM2610B is basically YM2610 with 2 extra FM channels used at some 90s Taito arcade hardware.
it is backward compatible with the original chip.

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

272
- 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.

Furnace manual 273


- 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. 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)111, AY-3-8910/SSG89, ADPCM-A87 and ADPCM-B88 instrument editors.

274
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 (https://www.youtube.com/watch?v=IKOR0TUlnWU) .

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.

Furnace manual 275


- 16xy: set multiplier of operator.
- x is the operator (1-4).
- y is the new MULT value..
- 17xx: toggle LEGACY sample mode.
- this only works on channel 6.
- this effect exists only for compatibility reasons! its use is NOT recommented. use Sample
type instruments instead.
- 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.
- 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: -3
- 1: -2
- 2: -1
- 3: 0
- 4: 1
- 5: 2
- 6: 3
- 7: -0
- 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.

276
- 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)111 and Generic Sample141 instrument editors.

Furnace manual 277


Yamaha YMU759
the Yamaha YMU759 is a sound chip designed for feature phones during the early 2000s.
it is also known as MA-2.

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)102 and Generic Sample141 instrument editors.

278
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 YMZ280B161 instrument editor.

Furnace manual 279


ZX Spectrum beeper
rather than having a dedicated sound synthesizer, early ZX Spectrum models had one piezo beeper,
controlled by Z80 CPU and ULA chip. its capabilities should be on par with an IBM PC speaker...
right?

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 Beeper91 or Pokémon Mini/QuadTone132 instrument editor.

280
advanced
advanced Furnace features.

as listed in the "Edit" menu:

- find/replace296

as listed in the "Window" menu:

- mixer305
- grooves300
- channel manager282
- pattern manager309
- chip manager288
- compatibility flags295
- song comments294
- piano311
- oscilloscope308
- oscilloscope (X-Y)315
- oscilloscopes (per-channel)284
- clock290
- register view313
- log viewer304
- stats314

other:

- command line usage291

Furnace manual 281


channels
the "Channels" dialog allows manipulation of the song's channels.

each channel has the following options:

- 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.

282
- the next setting is "short name", which is displayed in the orders view and/or when a channel
is collapsed.

Furnace manual 283


oscilloscope (per-channel)
the "Oscilloscope (per-channel)" window displays several oscilloscope views (one per channel).

right-clicking the view will display the configuration view shown above:

- Columns: sets the amount of columns for the oscilloscope views.


- Size (ms): sets how much of a channel's output is captured for the oscilloscope view.
- Center waveform: when enabled, the displayed waveforms will be centered using an auto-
correlation algorithm.
- Automatic columns: sets the number of columns based on the number of channels.

284
- 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

click on OK to return to the main view.

Furnace manual 285


gradient

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.

- right-click to place a point.


- left-click on a point to change its color:
- a color picker is displayed, alongside two settings.
- Distance: the size of the circle.
- Spread: the size of the solid center of the circle. increasing it fills more of the circle with the
color.

286
- 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

Furnace manual 287


chip manager
the chip manager window allows you to manage chips, including adding, changing, moving or re‐
moving them.

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).

288
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.

to remove a chip, click the button.

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.

Furnace manual 289


clock

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:seconds.hundredths

290
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.

the following parameters may be used:

general

- -help: display the following help.


- -console: enable command-line interface (CLI) player.
- see the COMMAND LINE INTERFACE section for more information
- -loglevel <level>: set the logging level to one of the following:
- error: critical errors only
- warning: errors and warnings
- info: errors, warnings, and useful information
- debug: all of the above, including debug information
- trace: like debug, but with even more details (default)
- -info: get information about a song.
- you must provide a file, otherwise Furnace will quit.
- -version: display version information.
- -warranty: view warranty disclaimer.

engine

- -audio sdl|jack|portaudio: override audio backend to one of the following:


- sdl: SDL (default)
- jack: JACK Audio Connection Kit

Furnace manual 291


- portaudio: PortAudio
- -view <type>: set visualization of data to one of the following:
- pattern: order and pattern
- commands: engine commands
- nothing: guess (default)
- -loops <count>: set number of loops
- -1 means loop forever.
- -subsong <number>: set sub-song to play.
- -safemode: enable safe mode (software rendering without audio).
- -safeaudio: enable safe mode (software rendering with audio).
- -benchmark render|seek: run performance test and output total time.
- render: measure render time
- seek: measure time to seek through the entire song
- you must provide a file, otherwise Furnace will quit.

audio export

- -output path: export audio in .wav format to path.


- you must provide a file, otherwise Furnace will quit.
- -outmode one|persys|perchan: set audio export output mode.
- one: single file (default)
- persys: one file per chip (_sXX will be appended to file name, where XX is the chip number)
- perchan: one file per channel (_cXX will be appended to file name, where XX is the channel
number)

VGM export

- -vgmout path: output VGM data to path.


- you must provide a file, otherwise Furnace will quit.
- -direct: enable VGM export direct stream mode.
- this mode is useful for DualPCM export.
- note that this will increase file size by a huge amount!

export (other)

- -zsmout path: output Zsound Music data for Commander X16.


- you must provide a file, otherwise Furnace will quit.
- -cmdout path: output command stream dump to path.
- you must provide a file, otherwise Furnace will quit.
- -binary: set command stream output format to binary.

COMMAND LINE INTERFACE


Furnace provides a command-line interface (CLI) player which may be activated through the -con‐
sole option.

the following controls may be used:

- Left/H: go to previous order.


- Right/L: go to next order.
- Space: pause/resume playback.

292
SEE ALSO
the Furnace user manual in the manual.pdf file.

Furnace manual 293


comments

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.

294
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.

Furnace manual 295


find/replace
Furnace has a powerful find-and-replace function that can take the repetitive work out of mass
editing.

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.

296
all of these have the following choices for what data will be found:

- ignore: ignore this.


- equals: match the given value exactly.
- not equal: match everything but the given value.
- between: match anything between and including the given values.
- not between: match anything outside the given range of values.
- any: match all values.
- none: match blanks only.

the following options also are available:

- -: remove query. if only one query exists, it is cleared.


- Add effect: adds another Effect and Value to the query, each set representing additional ef‐
fects columns.
- Remove effect: removes last Effect and Value from the query.
- +: adds another query.
- Search range: restricts search range to the whole Song, the current Selection, or the cur‐
rently viewed Pattern.
- Confine to channels: restricts to the selected channels and the channels between them.
- Match effect position: chooses how the order of effect types and effect values will matter
when finding them.
- No: no attention is paid to what order the effects appear in.
- Lax: matches effects if they appear in the same order as selected above.
- Strict: effects may only match in their correponding effects columns.
- Find: finds everything that matches the query and displays it in a list.
- the order, row, and channel columns are as they say.
- the go column of buttons will take you to the location of the result.

Furnace manual 297


replace

you may select any of these to replace:

- Note: note.
- Ins: instrument.
- Volume: volume.
- Effect: effect type.
- Value: effect value.

all of these have the following choices for how they alter matches:

- set: changes matched data to this value.


- add: adds this value to matched data. it may be negative for subtraction. notes are calculated
in semitones.
- add (overflow): as "add" above, but values will wrap around; for example, adding 13 to FF will
result in 0C.
- scale: multiply value to this percentage; for example, scaling 1A by 150 results in 27. not
available for "note".
- clear: erases matched data.

298
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.

Furnace manual 299


grooves
a groove is the equivalent of repeating 0Fxx effects on each row to get a cycle of speeds. for ex‐
ample, a groove of "6 4 5 3" makes the first row 6 ticks long, the next row 4 ticks, then 5, 3, 6, 4, 5,
3...

to set the song's groove:

- open the "Speed" window.


- click the "Speed" button so it becomes "Speeds" (effectively a groove of two speeds).
- click again so it becomes "Groove".
- enter a sequence of up to 16 speeds.

300
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

100.00 83.33 9 168.75 140.63 6, 5, 5


102.86 85.71 9, 9, 9, 8 171.43 142.86 6, 5, 5, 5
103.85 86.54 9, 9, 8 175.61 146.34 6, 5, 5, 5, 5, 5, 5, 5
105.88 88.24 9, 8 180.00 150.00 5
108.00 90.00 9, 8, 8 184.62 153.85 5, 5, 5, 5, 5, 5, 5, 4
109.09 90.91 9, 8, 8, 8 189.47 157.89 5, 5, 5, 4
112.50 93.75 8 192.86 160.71 5, 5, 4
114.29 95.24 8, 8, 8, 8, 8, 8, 8, 7 194.59 162.16 6, 4, 5, 4, 5, 4, 5, 4
116.13 96.77 8, 8, 8, 7 200.00 166.67 5, 4
118.03 98.36 9, 7, 8, 7, 8, 7, 8, 7 205.71 171.43 5, 4, 5, 4, 5, 4, 4, 4

Furnace manual 301


BPM NTSC BPM PAL GROOVE BPM NTSC BPM PAL GROOVE

120.00 100.00 8, 7 207.69 173.08 5, 4, 4


122.03 101.69 8, 7, 8, 7, 8, 7, 7, 7 211.76 176.47 5, 4, 4, 4
124.14 103.45 8, 7, 7, 7 218.18 181.82 5, 4, 4, 4, 4, 4, 4, 4
126.32 105.26 8, 7, 7, 7, 7, 7, 7, 7 225.00 187.50 4
128.57 107.14 7 232.26 193.55 4, 4, 4, 4, 4, 4, 4, 3
130.91 109.09 7, 7, 7, 7, 7, 7, 7, 6 240.00 200.00 4, 4, 4, 3
133.33 111.11 7, 7, 7, 6 245.45 204.55 4, 4, 3
135.00 112.50 7, 7, 6 248.28 206.90 5, 3, 4, 3, 4, 3, 4, 3
135.85 113.21 8, 6, 7, 6, 7, 6, 7, 6 257.14 214.29 4, 3
138.46 115.38 7, 6 266.67 222.22 4, 3, 4, 3, 4, 3, 3, 3
141.18 117.65 7, 6, 7, 6, 7, 6, 6, 6 270.00 225.00 4, 3, 3
142.11 118.42 7, 6, 6 276.92 230.77 4, 3, 3, 3
144.00 120.00 7, 6, 6, 6 288.00 240.00 4, 3, 3, 3, 3, 3, 3, 3
146.94 122.45 7, 6, 6, 6, 6, 6, 6, 6 300.00 250.00 3
150.00 125.00 6 327.27 272.73 3, 3, 3, 2
153.19 127.66 6, 6, 6, 6, 6, 6, 6, 5 337.50 281.25 3, 3, 2
156.52 130.43 6, 6, 6, 5 360.00 300.00 3, 2
158.82 132.35 6, 6, 5 385.71 321.43 3, 2, 2
160.00 133.33 7, 5, 6, 5, 6, 5, 6, 5 400.00 333.33 3, 2, 2, 2
163.64 136.36 6, 5 450.00 375.00 2
167.44 139.53 6, 5, 6, 5, 6, 5, 5, 5 900.00 750.00 1

302
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.

- && fills in the currently selected instrument.


- .. ignores the column.
- all columns (except note) can be reset with a right-click.
- Set: sets latch according to the data found at the cursor.
- Reset: resets all columns to default (selected instrument, ignore others).
- only the first effect type and effect value may be latched.

Furnace manual 303


log viewer
the log viewer provides a look at Furnace's internal messages. this can be useful for chasing down
problems.

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.

LEVEL MESSAGE SHOWN

ERROR serious problem


warning may or may not be a problem
info significant information
debug general info about what Furnace is doing
trace detailed info useful only to developers

304
mixer
the "Mixer" dialog provides options for overall sound mixing.

"Mixer" tab

"Master Volume" controls the overall mix.

each chip has several options:

- Invert: flips the output wave.


- Volume: controls the chip's volume relative to other chips.
- Panning: left-right sound control.
- Front/Rear: front-read sound control. only useful for setups with four or more speakers.

Furnace manual 305


"Patchbay" tab

- Automatic patchbay: make appropriate connections when adding, removing, or changing


chips and chip settings.
- Display hidden ports: shows all available connection ports. the "System" unit actually has 16
ports; 1 maps to the left channel, and 2 maps to the right.
- Display internal: hows two additional units, one for sample previews and one for the metro‐
nome sound.

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.

306
operation mask

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.

Furnace manual 307


oscilloscope
the Oscilloscope shows the audio output as a waveform.

right-clicking on the oscilloscope toggles adjustment sliders:

- waveform height (zoom)


- window size (how much of the output to display) in milliseconds.

308
pattern manager
the pattern manager is useful for cleaning up stray patterns and as an overview of pattern usage.

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.

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.

Furnace manual 309


DEFAULT COLOR NAME IN SETTINGS MEANING

grey Unallocated pattern doesn't exist yet


red Unused exists but isn't in order list
green Used used only once in order list
yellow Overused used multiple times
orange Really overused used in half or more orders
magenta Combo Breaker the only used pattern in this channel!

right-clicking a pattern will permanently delete it.

310
piano / input pad
the piano serves as a non-keyboard interface to input notes.

the buttons at the left do the following:

move one octave down move one octave up open options


fewer visible octaves more visible octaves swap buttons

when swapped, the buttons do the following:

input note off input note release open options


input macro release delete swap buttons

every C key is labelled with its octave.

right-clicking on the piano keys will make the buttons disappear; right-clicking again brings them
back.

Furnace manual 311


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.

312
register view
during playback, "Register View" shows the hex data involved with each chip's operation.

Furnace manual 313


statistics
the Statistics dialog shows running stats such as overall audio processing load and per-chip
sample memory.

314
oscilloscope (X-Y)
also called "vectorscope", this is similar to the normal oscilloscope in that it draws audio output as
a waveform, but instead of being one-dimensional and going from left to right, it is plotted in two
dimensions (usually X represents left output and Y represents right output).

(TODO: image)

right-clicking the X-Y oscilloscope window displays settings:

- 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.

click OK to return to the oscilloscope view.

Furnace manual 315


guides
this is a collection of user-contributed Furnace guides which may be useful during composition.

- tuning samples323
- using samples with limited playback rates 321
- choosing emulation cores317
- using OPLL patch macro322
- using AY/SAA hardware envelope319

other resources
- FM Synthesis of Real Instruments (http://www.javelinart.com/
FM_Synthesis_of_Real_Instruments.pdf) : an in-depth tutorial on creating FM patches from
scratch.

316
choosing emulation cores
Furnace achieves the authentic sound of videogame hardware by emulating sound chips as accur‐
ately as possible, using emulator cores. in some cases there are multiple cores to choose from,
each with different strengths and weaknesses. here are the major differences between them all.

- 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.
- 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.
- 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.
- 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:

Furnace manual 317


- 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!

318
AY-3-8910 / AY8930 /
SAA1099 envelope guide
The AY-3-8910 programmable sound generator, aside from normal 4-bit volume control, has an
hardware volume envelope. This feature that allows for defining the shape of the volume envelope
at arbitrary speed according to 8 preset envelope shapes. One may think, what is any upside of
hardware envelope? Well, it's somewhat independent of tone/noise generators, and since it goes
so high in frequency, it can be used melodically! This guide explains how to make best use of the
AY/SAA envelope.

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:

- 23xx and 24xx effects (envelope coarse and fine period);


- 29xx auto-envelope period effect and macros.

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.

Furnace manual 319


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 (https://www.youtube.com/watch?v=qcBgmpPrlUA)
- Philips SAA1099 Test by Duccinator (https://www.youtube.com/watch?v=IBh2gr09zjs)
- Touhou Kaikidan: Mystic Square title theme by ZUN (https://www.youtube.com/watch?
v=tUKei7Pz0Fw) : Rare instance of AY envelope used for drums, it can be used to mask the noise
generator output too

320
using samples with limited
playback rates
some sample-based chips have a limited number of available sample playback rates. when work‐
ing with these chips, notes entered in the pattern editor will play back at the closest available
rate... which might be perfect, or might be several semitones off. the solution is to prepare samples
to work around this.

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.

here's how to make this example work:

- load up the sample and open it in the sample editor.


- the Note selector will show "F-6"; add the three semitones mentioned above to make it "G#6".
the Hz will change to 26217.
- use the Resample button. in the pop-up dialog, type in 8363, then click Resample.
- select the instrument from the instrument list, and in the pattern editor, enter a C-4 in the
PCM channel. it should sound like a slap bass playing a C-3 note.

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.

Furnace manual 321


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)

drums using this technique


Using OPLL's drum mode, described is systems/opll.md, you gain access to 5 hardcoded drum
tones at the expense of 3 melodic FM channels. Patch switching eliminates that, as using it, it's
also possible to construct percussive sounds, some even fuller than their drum mode counter‐
parts!
In short, noise portion of drums (as in hi-hats), can be created of the very high pitched pseudo-dis‐
tortion guitar, described as above. For kicks, snares, toms and claps, more effort is needed, how‐
ever using volume and arpeggio macros will help.

examples
- Lman-Clubster cover by Mahbod (https://www.youtube.com/watch?v=jfHs7tSyjXI)
- OPLL Nation by Mahbod (https://www.youtube.com/watch?v=ou6pEfxByeE)

322
tuning samples
loading a new sample into Furnace is easy... but getting it transposed and tuned to match the song
can be tricky at first.

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 https://www.omnicalculator.com/other/semitone (https://
www.omnicalculator.com/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.

Furnace manual 323

You might also like