tildearrow / furnace

a multi-system chiptune tracker compatible with DefleMask modules
GNU General Public License v2.0
2.66k stars 210 forks source link
chiptune emulator music tracker-music

Furnace (chiptune tracker)

screenshot

the biggest multi-system chiptune tracker ever made!

downloads | discussion/help | developer info | Unix/Linux packages


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.

features


quick references

packages

Packaging status

some people have provided packages for Unix/Unix-like distributions. here's a list.


developer info

Build furnace

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.

dependencies

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.

getting the source

type the following on a terminal/console: (make sure Git is installed)

git clone --recursive https://github.com/tildearrow/furnace.git
cd furnace

(the --recursive parameter ensures submodules are fetched as well)

compilation

your typical CMake project.

Windows using MSVC

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

Windows using MinGW

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.

macOS, Linux and other Unix/Unix-like

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.

CMake options

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

(¹) enabled by default if both libintl and setlocale aren't present (MSVC and Android), or on macOS

(²) ON if system-installed JACK detected, otherwise OFF

(³) but consider enabling this and reporting any errors that arise from it!

CMake Error

if it says something about a missing subdirectory in extern, then either:

  1. you didn't set up submodules, or
  2. you downloaded the source as a .zip or .tar.gz. don't do this.

if 1, you may run git submodule update --init --recursive. this will initialize submodules.

if 2, clone this repo.

console usage

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


footnotes

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.