Find a file
2022-07-03 23:43:13 -05:00
.github CI: only upload artifacts for master branch 2022-06-07 13:55:10 -05:00
android add something 2022-05-08 16:02:38 -05:00
demos D E M O 2022-07-03 01:29:41 -05:00
extern possibly fix system file picker filter on macOS 2022-07-01 14:07:55 -05:00
instruments Add 5 AY instruments. 2022-06-29 21:21:39 +02:00
papers Prepare for NGP system 2022-07-02 08:19:25 +07:00
res 0.6pre1 - introduce the final changes 2022-06-29 04:57:05 -05:00
scripts add instruments to make install 2022-06-06 18:18:45 -05:00
src SMS: aaaand more .dmf compatibility 2022-07-03 23:43:13 -05:00
test add furnace test suite 2022-01-22 23:50:26 -05:00
.gitignore update gitignore 2022-06-16 21:25:06 -05:00
.gitmodules de-submodule ImGui 2022-05-18 15:23:10 -05:00
CMakeLists.txt fix opening/saving audio files with non-ASCII char 2022-06-28 02:00:08 -05:00
CONTRIBUTING.md update contributing guidelines 2022-05-22 02:22:56 -05:00
LICENSE add license 2021-05-13 03:37:04 -05:00
README.md Fix paper 404 link 2022-06-29 12:09:15 -04:00
TODO.md 0.6pre1 - introduce the final changes 2022-06-29 04:57:05 -05:00

Furnace Tracker

screenshot

the biggest multi-system chiptune tracker ever made!

downloads | discussion/help | developer info | unofficial packages | FAQ


downloads

check out the Releases page. available for Windows, macOS and Linux (AppImage).

see here for unstable developer builds.

features

  • over 50 sound chips - and counting:
    • 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!
      • Y8950 (OPL with ADPCM)
    • 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 and BBC Micro
      • PC Speaker
      • Philips SAA1099 used in SAM Coupé
    • sample chips:
      • Amiga
      • SegaPCM - all 16 channels
      • Capcom QSound
      • Yamaha YMZ280B (PCMD8)
      • Ricoh RF5C68 used in Sega CD and FM Towns
      • OKI MSM6258 and MSM6295
    • 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
    • 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)
    • TIA used in Atari 2600
    • Game Boy
    • modern/fantasy:
      • Commander X16 VERA
      • tildearrow Sound Unit
  • mix and match sound chips!
    • over 200 ready to use presets from computers, game consoles and arcade boards...
    • ...or create your own - up to 32 of them or a total of 128 channels!
  • DefleMask compatibility
    • loads .dmf modules from all versions (beta 1 to 1.1.3)
    • saves .dmf modules - both modern and legacy
      • Furnace doubles as a module downgrader
    • loads .dmp instruments and .dmw wavetables as well
    • clean-room design (guesswork and ABX tests only, no decompilation involved)
    • bug/quirk implementation for increased playback accuracy through compatibility flags
  • VGM export
  • modular layout that you may adapt to your needs
  • audio file export - entire song, per system 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 and effect and let go!
  • MIDI input support
  • Fractal Sound support!
    • the game-ready Sega Genesis/Mega Drive sound driver!
    • compose your songs in Furnace using the Fractal Sound presets and then use them in your games with Fractal!
  • additional features:
    • FM macros!
    • negative octaves
    • arbitrary pitch samples
    • sample loop points
    • SSG envelopes and ADPCM-B in Neo Geo
    • full duty/cutoff range in C64
    • ability to change tempo mid-song
    • 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.

quick references

unofficial 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

  • CMake
  • JACK (optional, macOS/Linux only)

if building under Windows or macOS, no additional dependencies are required. otherwise, you may also need the following:

  • libpulse
  • libx11
  • libasound
  • libGL

some Linux distributions (e.g. Ubuntu or openSUSE) will require you to install the -dev versions of these.

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 ..
msbuild ALL_BUILD.vcxproj

macOS and Linux

mkdir build
cd build
cmake ..
make

Alternatively, build scripts are provided in the scripts/ folder in the root of the repository.

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)
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
WITH_JACK ON if system-installed JACK detected, otherwise OFF Whether to build with JACK support. Auto-detects if JACK is available
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
WARNINGS_ARE_ERRORS OFF (but consider enabling this & reporting any errors that arise from it!) Whether warnings in furnace's C++ code should be treated as errors

console usage

./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 these commands only actually work in Linux environments. on other command lines, such as Windows' Command Prompt, or MacOS Terminal, it may not work correctly.


frequently asked questions

woah! 50 sound chips?! I can't believe it!

yup, it's real.

where's the manual?

see papers/. it's kind of incomplete, but at least the systems (sound chips) section is there.

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.

how do I use C64 absolute filter/duty?

on Instrument Editor in the C64 tab there are two options to toggle these. also provided are two effects:

  • 3xxx: set fine duty.
  • 4xxx: set fine cutoff. xxx range is 000-7ff. additionally, you can change the cutoff and/or duty as a macro inside an instrument by clicking the absolute cutoff macro and/or absolute duty macro checkbox at the bottom of the instrument. (for the filter, you also need to click the checkbox that says volume macro is cutoff macro.)

how do I use PCM on a PCM-capable system?

two possibilities:

  • the recommended way is by creating the "Sample" type instrument and assigning a sample to it.
  • otherwise you may employ the DefleMask-compatible method, using 17xx effect.

my .dmf song sounds very odd at a certain point

file a bug report. use the Issues page. it's probably another playback inaccuracy.

my .dmf song sounds correct, but it doesn't in DefleMask

file a bug report here. it still is a playback inaccuracy.

my song sounds terrible after saving as .dmf!

the DefleMask format has several limitations. save in Furnace song format instead (.fur).

how do I solo channels?

right click on the channel name.


footnotes

copyright (C) 2021-2022 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.

despite the fact this program works with the .dmf file format, it is NOT affiliated with Delek or DefleMask in any way, nor it is a replacement for the original program.