Furnace
a multi-system chiptune tracker compatible with DefleMask modules
Install / Use
/learn @tildearrow/FurnaceREADME
Furnace (chiptune tracker)

the biggest multi-system chiptune tracker ever made!
mini-site | downloads | installation | Unix/Linux packages
documentation/discussion/help | developer info
downloads
check out the Releases page. available for Windows, macOS and Linux.
for other operating systems, you may build the source.
see here for the latest unstable build.
installation
- Windows: extract the .zip into a new directory for Furnace (or one you've created before). make a shortcut for
furnace.exeif you wish. - macOS: drag
Furnaceinto the Applications directory (or the folder of your choice). drag everything else into a separate directory.- when opening Furnace for the first time, make sure to right-click the Furnace app icon and then select Open.
- Linux/other: instructions should be similar to Windows, unless you decide to install using your package manager (see Unix/Linux packages).
features
- a large selection of sound chips:
- Yamaha FM chips:
- YM2151 (OPM)
- YM2203 (OPN)
- YM2413 (OPLL)
- YM2414 (OPZ) used in Yamaha TX81Z
- YM2608 (OPNA) used in PC-98
- YM2610 (OPNB) used in Neo Geo
- YM2610B (OPNB2)
- YM2612 (OPN2) used in Sega Genesis and FM Towns
- YM3526 (OPL) used in C64 Sound Expander
- YM3812 (OPL2)
- YMF262 (OPL3) with full 4-op support!
- YMF278 (OPL4) including sample channels
- Y8950 (OPL with ADPCM)
- ESS ESFM (like OPL3 but with more features)
- square wave chips:
- AY-3-8910/YM2149(F) used in several computers and game consoles
- Commodore VIC used in the VIC-20
- Microchip AY8930
- TI SN76489 used in Sega Master System, BBC Micro, and many others
- PC Speaker
- Philips SAA1099 used in SAM Coupé
- OKI MSM5232 used in some arcade boards
- sample chips:
- SNES
- Amiga
- SegaPCM - all 16 channels
- Capcom QSound
- Yamaha YMZ280B (PCMD8)
- Ricoh RF5C68 used in Sega CD and FM Towns
- OKI MSM6258 and MSM6295
- Konami K007232
- Konami K053260
- Irem GA20
- Ensoniq ES5506
- Namco C140
- Namco C219
- wavetable chips:
- HuC6280 used in PC Engine
- Konami Bubble System WSG
- Konami SCC/SCC+
- Namco arcade chips (WSG/C15/C30)
- WonderSwan
- Seta/Allumer X1-010
- Sharp SM8521 used in Tiger Game.com
- NES (Ricoh 2A03/2A07), with additional expansion sound support:
- Konami VRC6
- Konami VRC7
- MMC5
- Famicom Disk System
- Sunsoft 5B
- Namco 163
- Family Noraebang (OPLL)
- SID (6581/8580) used in Commodore 64
- Mikey used in Atari Lynx
- ZX Spectrum beeper
- SFX-like engine
- QuadTone engine
- Pokémon Mini
- Commodore PET
- TED used in Commodore Plus/4
- Casio PV-1000
- TIA used in Atari 2600
- including software tuning engine (TIunA)
- POKEY used in Atari 8-bit computers
- Game Boy
- including software envelopes (zombie mode)
- Virtual Boy
- Game Boy Advance
- DMA (direct memory access) two channel mode
- MinMod software driver by Natt Akuma
- Nintendo DS
- Watara Supervision
- modern/fantasy:
- Commander X16 VERA
- tildearrow Sound Unit
- PowerNoise
- Bifurcator
- SID2
- SID3
- Generic PCM DAC
- Yamaha FM chips:
- mix and match sound chips!
- over 200 ready to use presets from computers, game consoles and arcade boards...
- ...or create your own presets - up to 32 chips or a total of 128 channels!
- modular layout that you may adapt to your needs
- DefleMask compatibility
- loads .dmf modules from all versions (beta 1 to 1.2.0)
- saves .dmf modules - both modern and legacy
- Furnace doubles as a module downgrader
- loads/saves .dmp instruments and .dmw wavetables as well
- clean-room design (guesswork and ABX tests only, no decompilation involved)
- some bug/quirk implementation for increased playback accuracy through compatibility flags
- many export types:
- VGM export
- ZSM export for Commander X16
- TIunA export for Atari 2600
- SAP type R export for POKEY (playable by Altirra and lzss-sap)
- audio file export - entire song, per chip or per channel
- quality emulation cores (Nuked, MAME, SameBoy, Mednafen PCE, NSFplay, puNES, reSID, Stella, SAASound, vgsound_emu and ymfm)
- wavetable synthesizer
- available on wavetable chips
- create complex sounds with ease - provide up to two wavetables, select an effect and let go!
- MIDI input support
- additional features:
- FM macros!
- negative octaves
- advanced arp macros
- arbitrary pitch samples
- sample loop points
- SSG envelopes and ADPCM-B in Neo Geo
- pitchable OPLL drums
- full duty/cutoff range in C64
- optional PCM channel in C64
- full 16-channel SegaPCM
- ability to change tempo mid-song
- decimal tempo/tick rate
- multiple sub-songs in a module
- per-channel oscilloscope with waveform centering
- built-in sample editor
- chip mixing settings
- built-in visualizer in pattern view
- open-source under GPLv2 or later/GPLv3. see LICENSE.
quick references
- help:
- new to Furnace? check out the quick start guide.
- documentation.
- frequently asked questions (FAQ).
- discussion: see the Discussions section, or the Discord.
- these are the only official discussion channels for Furnace. any other places are not official and not managed by me (tildearrow).
- no, there isn't an official Furnace Facebook group. the one that seemingly exists isn't mine.
packages
some people have provided packages for Unix/Unix-like distributions. here's a list.
- Flatpak: yes! Furnace is now available on Flathub thanks to ColinKinloch.
- Arch Linux: furnace is in the official repositories.
- Chimera Linux: furnace is in the contrib repository.
- FreeBSD: a package in ports is available courtesy of ehaupt.
- Nix: package thanks to OPNA2608.
- openSUSE: a package is available, courtesy of fpesari.
- Void Linux: furnace is available in the official repository.
unstable builds
if you can't download these artifacts (because GitHub requires you to be logged in), go here instead.
developer info
the following section will teach you how to build Furnace from its source code.
dependencies
these are the things you'll need to build Furnace:
- CMake
- Git (for cloning the repository)
- a C/C++ compiler (e.g. Visual Studio or MinGW on Windows, Xcode (the command-line tools are enough) on macOS or GCC on Linux)
read the sections below for information on how to set these up.
development environment setup (Windows)
this little section will teach you how to get either Visual Studio or MinGW ready for building Furnace.
MinGW through MSYS2
I recommend you to use this because the compiler produces faster builds and it doesn't use a lot of disk space. there's some command line-fu in here, so I hope you're prepared.
install it through MSYS2, a Linux-like environment for Windows. follow the guide up to step 4. do NOT start MSYS2 from the installer as this will start the wrong environment and prevent you from going further.
MSYS2 provides a variety of environments, but we'll work with the MINGW64 one.<br/> these environments can be found in the Start menu, in a folder MSYS2 has created for you.<br/> don't "run MSYS2 now". go to the Start menu and launch MSYS2 with the MINGW64 environment (blue icon).<br/> it is extremely important that you use this environment. the one that MSYS2 starts with by default (UCRT64) is NOT suitable for this task and will NOT work.
we'll install a couple packages, including GCC, CMake, Git and Ninja. type the following in the MSYS2 console, and then press Enter.
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gcc git
when prompted to, type Y and press Enter again.
proceed to the "getting the source" section.
if it says UCRT64 anywhere in the console, YOU ARE IN THE WRONG ENVIRONMENT! if so quit MSYS2 NOW and start the MINGW64 environment.
Visual Studio (the real one)
if you are patient enough, can stand 50GB of stuff and want the Microsoft experience, you may install Visual Studio (no, not "Code"... that's just a text editor with IDE features). it is an easy-to-use IDE and compiler that comes in both free and paid versions.
the installer also lets you install Git and CMake. Visual Studio integrates nicely with these. however I recommend you install Git standalone so you can clone the repo correctly.
development environment setup (macOS)
install the Xcode command
