A fork of Furnace chiptune tracker with the aim to cut out the bloat (aka abandoned/unfinished stuff), make codebase cleaner and easier to understand, optimize performance and memory usage, and bring more useful features.
Here are our community rules and contribution rules.
Here are the future plans.
See here for the latest unstable build of the fork.
Notice that Furnace-B modules can be incompatible with tildearrow's Furnace version. However, you can try to export module in the format that is compatible (file -> export -> Furnace).
the biggest multi-system chiptune tracker ever made!
downloads | discussion/help | developer info | Unix/Linux packages | FAQ
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.
.fzt
files import and export support) 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.
if you can't download these artifacts (because GitHub requires you to be logged in), go here instead.
NOTE: do not download the project's source as a .zip or .tar.gz as these do not include the project's submodules which are necessary to proceed with building. please instead use Git as shown below.
if building under Windows or macOS, no additional dependencies are required. otherwise, you may also need the following:
some Linux distributions (e.g. Ubuntu or openSUSE) will require you to install the -dev
versions of these.
having libintl is recommended for locale support, but if it isn't present, Furnace will use its own implementation.
type the following on a terminal/console: (make sure Git is installed)
git clone --recursive https://github.com/LTVA1/furnace.git
cd furnace
(the --recursive
parameter ensures submodules are fetched as well)
your typical CMake project.
as of now tildearrow uses MinGW for Windows builds, but thanks to OPNA2608 this works again!
from the developer tools command prompt:
mkdir build
cd build
cmake ..
then open the solution file in Visual Studio and build.
alternatively, do:
msbuild ALL_BUILD.vcxproj
setting up MinGW is a bit more complicated. two benefits are a faster, hotter Furnace, and Windows XP support.
however, one huge drawback is lack of backtrace support, so you'll have to use gdb when diagnosing a crash.
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
mingw32-make
you may use "MSYS Makefiles" instead, depending on how you installed MinGW.
mkdir build
cd build
cmake ..
make
on macOS you may do the following instead:
mkdir build
cd build
cmake -G Xcode ..
...and then load the project on Xcode or type xcodebuild
.
To add an option from the command-line: -D<NAME>=<VALUE>
Example: cmake -DBUILD_GUI=OFF -DWARNINGS_ARE_ERRORS=ON ..
Available options:
Name | Default | Description |
---|---|---|
BUILD_GUI |
ON |
Build the tracker (disable to build only a headless player) |
WITH_LOCALE |
ON |
Enable language support |
USE_RTMIDI |
ON |
Build with MIDI support using RtMidi |
USE_SDL2 |
ON |
Build with SDL2 (required to build with GUI) |
USE_SNDFILE |
ON |
Build with libsndfile (required in order to work with audio files) |
USE_BACKWARD |
ON |
Use backward-cpp to print a backtrace on crash/abort |
USE_FREETYPE |
OFF |
Build with FreeType support |
USE_MOMO |
auto*** | Build a libintl implementation instead of using the system one |
WITH_JACK |
auto* | Whether to build with JACK support. Auto-detects if JACK is available |
WITH_PORTAUDIO |
ON |
Whether to build with PortAudio. |
SYSTEM_FFTW |
OFF |
Use a system-installed version of FFTW instead of the vendored one |
SYSTEM_FMT |
OFF |
Use a system-installed version of fmt instead of the vendored one |
SYSTEM_LIBSNDFILE |
OFF |
Use a system-installed version of libsndfile instead of the vendored one |
SYSTEM_RTMIDI |
OFF |
Use a system-installed version of RtMidi instead of the vendored one |
SYSTEM_ZLIB |
OFF |
Use a system-installed version of zlib instead of the vendored one |
SYSTEM_SDL2 |
OFF |
Use a system-installed version of SDL2 instead of the vendored one |
SYSTEM_FREETYPE |
OFF |
Use a system-installed version of FreeType instead of the vendored one |
SUPPORT_XP |
OFF |
Build a Windows XP-compatible binary |
WARNINGS_ARE_ERRORS |
OFF ** |
Whether warnings in furnace's C++ code should be treated as errors |
WITH_DEMOS |
ON |
Install demo songs on make install |
WITH_INSTRUMENTS |
ON |
Install demo instruments on make install |
WITH_WAVETABLES |
ON |
Install wavetables on make install |
SHOW_OPEN_ASSETS_MENU_ENTRY |
OFF |
Show option to open built-in assets directory (on supported platforms) |
CONSOLE_SUBSYSTEM |
OFF |
Build with subsystem set to Console on Windows |
FORCE_APPLE_BIN |
OFF |
Enable installation of binaries (when doing make install ) to PREFIX/bin on Apple platforms |
(*) ON
if system-installed JACK detected, otherwise OFF
(**) but consider enabling this & reporting any errors that arise from it!
(***) enabled by default if both libintl and setlocale aren't present (MSVC and Android), or on macOS
if it says something about a missing subdirectory in extern
, then either:
if 1, you may run git submodule update --init --recursive
. this will initialize submodules.
if 2, clone this repo.
(note: if on Windows, type furnace.exe
instead, or Debug\furnace.exe
on MSVC)
./furnace
this opens the program.
./furnace -console <file>
this will play a compatible file.
./furnace -console -view commands <file>
this will play a compatible file and enable the commands view.
note that console mode may not work correctly on Windows. you may have to quit using the Task Manager.
where's the manual?
it is in doc/.
is there a tutorial?
a video tutorial of tracker concepts is available on YouTube. thanks Button Masher!
can I import VGM or NSF?
nope. it's a feature that's been requested many times, but I don't have plans to implement that yet.
for NSF import, you can use a modified version of FamiTracker called NSFImport, and then import the resulting .ftm into Furnace. it's all speed 1 though, so don't expect any songs to be nicely laid out with instruments and all.
how about MIDI? can I import these?
nope. it's not implemented.
also, Furnace isn't a MIDI tracker.
it doesn't open under macOS!
this is due to Apple's application signing policy. a workaround is to right click on the Furnace app icon and select Open.
it says "Furnace" is damaged and can't be opened!
as of Monterey, this workaround no longer works (especially on ARM). yeah, Apple has decided to be strict on the matter. if you happen to be on that version (or later), use this workaround instead (on a Terminal):
xattr -d com.apple.quarantine /path/to/Furnace.app
(replace /path/to/ with the path where Furnace.app is located)
you may need to log out and/or reboot after doing this.
I've lost my song!
Furnace keeps backups of the songs you've worked on before. go to file > restore backup.
.spc export?
not yet! coming in 0.7 though, eventually...
ROM export?
not yet! coming in 0.7 though, eventually...
Roland MT-32 support?
MT-32 is used with MIDI in 99.999% of situations. it lacks a direct register interface.
also, Furnace is not a MIDI tracker....
my .dmf song sounds odd at a certain point
Furnace's .dmf compatibility isn't perfect and it's mostly because DefleMask does things different.
my song sounds terrible after saving as .dmf!
you should only save as .dmf if you're really sure, because the DefleMask format has several limitations. save in Furnace song format instead (.fur).
copyright (C) 2021-2024 tildearrow and contributors.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Furnace is NOT affiliated with Delek or DefleMask in any form, regardless of its ability to load and save the .dmf, .dmp and .dmw file formats. additionally, Furnace does not intend to replace DefleMask, nor any other program.