furnace

tildearrow活跃维护

一款多系统芯片音乐跟踪器,兼容 DefleMask 模块,可编辑和播放复古游戏机音源,适合制作 chiptune。

a multi-system chiptune tracker compatible with DefleMask modules

v0.6.8.3发布于 2025-06-12 09:02 UTC3,907star +4 / 7 天348fork同步于 2026-11-10 17:40 UTC

怎么上手

由 README 提炼,执行前请确认
git clone --recursive https://github.com/tildearrow/furnace.git
cd furnace
mkdir build
cd build
cmake ..
硬件要求按 README 说明

README 未说明具体硬件要求;提供 Windows、macOS、Linux 预编译包,其他系统需自行编译。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

多平台芯片音乐跟踪器,支持 DefleMask 模块,可混搭多种复古音源芯片编曲

一款多系统芯片音乐跟踪器,兼容 DefleMask 模块,可编辑和播放复古游戏机音源,适合制作 chiptune。

核心能力

  • 支持 YM、OPL、SID、Game Boy 等数十种芯片
  • 最多可混搭 32 个芯片、128 个声道
  • 兼容 DefleMask 模块,可读写 .dmf 并降级
  • 导出 VGM、ZSM、SAP 及分轨音频文件
  • 内置采样编辑器、波形合成器与 MIDI 输入

容易踩的坑

不要下载 .zip 或 .tar.gz 源码包,其中不含构建所需的子模块,必须用 git clone --recursive;Windows 用 MSYS2 编译时必须使用 MINGW64 环境,默认的 UCRT64 环境无法构建;Linux 编译还需安装 libpulse、libx11、libasound、libGL 等依赖(部分发行版需装 -dev 包)。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.6.8.3
  1. v0.6.8.3Furnace v0.6.8.3 - more fixes最新正式版2025-06-12 · 2025-06-12 09:02 UTC

    another release to address a couple bugs present in previous versions, including two or three critical issues (crashes).

    fixes

    • fix severe crash when using OPL4
    • fix possible crash when importing an XM file
    • fix crash when importing a config file
    • fix ESFM output being inverted
    • fix Y channel selector in X/Y osc (thanks Eknous)
    • set default SDL audio driver on Windows Vista to winmm in order to get audio working again
    • fix duty effect not working without note on VRC6
    • fix VIC-20 on/off macro or note off not being taken into account when playing from position

    changes/additions

    • improve chip mixing for certain presets (SCC, PC-88 and PC-98) - thanks Iyatemu!
    • YM2612 chip is now YM2612 by default (it was YM3438 before)
    • Windows 2000 support
    • add winners from the Blank Contest to Demo Songs
    • add speed drift compensation options to VGM export
      • this is added in order to compensate for a slight, yet noticeable difference in playback speed when using DeadFish's Genesis VGM player

    note for Windows XP/Legacy Systems users

    the Windows XP version of Furnace is working once again. I've had an issue with the compiler, which has been temporarily sorted out by downgrading the C runtime package.

    as a bonus, Furnace now supports Windows 2000!!! you'll need DirectX 9 installed though.

    note for Windows Vista users

    this release should work properly on Vista now. it wasn't launching due to dependency on a 7-exclusive function (and after fixing there wouldn't be sound out of the box due to an incomplete WASAPI implementation).

    a user has reported that sound still does not work as it should. if it does not, try changing the audio backend to PortAudio in Settings > Audio.

  2. v0.6.8.2Furnace v0.6.8.2 - regression fix edition2025-05-25 · 2025-05-25 01:20 UTC
    查看更新说明

    this release contains a large number of bug and regression fixes.

    fixes

    • fix audio issues in SDL backend!
      • switching output devices or plugging in/disconnecting your headphones would trigger erroneous playback or even lead to a crash
    • recover state of "Follow pattern" after using the Find function (annoyance fix)
    • fix low quality not working on chips that use acquireDirect (e.g. PC Engine, NES, TIA...)
    • channel oscilloscope fixes
      • Y8950 ADPCM (it wasn't functional before)
      • VRC6 (sawtooth was awfully broken)
      • Y carry-over, which would result in broken samples on the left side of an osc
      • NES chewed off triangle
      • volume display
      • OPL muting was broken
      • OPL3 would break on right-panned channels when using ymfm core
      • PC Engine noise looked horrible
    • fix arp macro corruption when scaling or offseting if any of the steps were fixed
    • fix a bug in zlib which could be used to start nuclear warfare
    • new metronome icon (the bell wasn't good)
    • VGM export fixes
      • OPL3 mode initialization was being done after channel setup. now fixed.
      • YM2608 mode initialization was also being done after channel setup... fixed as well.
      • YM2608 ADPCM was not working on hardware VGM players since Furnace set the memory type to ROM instead of RAM. now fixed with the addition of an option to tell Furnace whether to use ROM or RAM.
      • NES DPCM would not work on MDPlayer. this is due to a strategy which Furnace uses to save space during bank switches. this strategy is not supported by MDPlayer, so now we're using the old-fashioned "write entire bank" method.
    • update VERA emulation core (noise was broken)
    • OPL3 fixes
      • fix muting under certain circumstances
      • fix 4-op mode ignoring instrument changes on the paired channel
    • fix ESFM ins creation malfunction when "New instruments are blank" is enabled
    • OPN family ExtCh fixes
      • fix arp macro not stacking with arpeggio effect
      • fix fixed block not working
      • fix the fix not fixing fixes
    • FM hard reset fixes
      • OPNA with combo core
      • OPNB
      • OPZ
    • fix delayed T6W28 muting
    • fix broken SID2 muting (thanks freq-mod and LTVA)
    • fix note release in Namco 163 acting as a note off
    • fix system file picker hangs due to the use of PFD instead of NFD in the 32-bit Windows build
    • corregir el nombre de algunas percusiones en la traducción al Español
    • fix wavetable length being off by 1 in text export
    • YM2608: fix crash when using ymfm and CSM
    • fix 12-bit raw sample import
    • T6W28: fix DC offset when panning
    • fix no-locale Furnace not building
    • fix WinMain use of strcpy()
    • fix "modern with more labels" FM layout getting reset on startup
    • fix ADSR/LFO macro editor bottom/top fields becoming unusable when the ins editor window is too small

    ADDITIONS!!!!1!!!!!1

    • new effect to set FM algorithm, implemented for OPN family, OPM and OPZ (61xx)
    • new effects to set FM FMS/AMS (62xx and 63xx)

    other changes

    • new demo songs
    • new instrument
    • documentation updates

    note for Windows XP users

    a user has reported that the XP version of Furnace refuses to start under Windows XP due to a missing library. if this happens to you, please let me know.

    note for Flatpak users

    Flatpak (a thing that brings the Android/iOS app experience to Linux desktop) has been giving us pain. its sandboxing enforcement has resulted in multiple problems, such as Furnace devouring your song when attempting to save, file extensions not getting applied, recent files list breaking completely, and more.

    since I don't feel like working around these problems, I have decided to strip off the system file picker from the Flatpak version of Furnace. this does not affect other versions, including the releases in this page. the system file picker is still available. just not in the Flatpak.

    why don't you just call it 0.6.9 and be done with it?

    you will never the funny.

    thanks/greetings

    • Abstract
    • Archi
  3. v0.6.8.1Furnace v0.6.8.1 - fixes2025-04-03 · 2025-04-03 01:35 UTC
    查看更新说明

    this version fixes some problems that were introduced in 0.6.8. hopefully this is actually the final version in the 0.6 series - 0.7 is long overdue!

    change log

    • remove all April 1 bullcrap
      • these "jokes" were programmed to occur only in 2025, but I am removing them to be sure since it annoyed some users
      • I would like to apologize for not offering an option to disable these jokes (adding one would reveal the fact that there were jokes)
    • actually fix compilation with CMake 4.0
    • fix NDS DC drift when DC offset correction is disabled
    • speed up .tfe loader
    • fix pitch issues in YM2612 when using non-linear pitch
    • fix 12-bit sample glitches in OPL4
  4. v0.6.8Furnace v0.6.8 - the last2025-03-30 · 2025-03-30 07:17 UTC
    查看更新说明

    it's been a while since 0.6.7... this is (hopefully) the final release in the 0.6 series. 0.7 development will begin very soon.

    change log

    • add Watara Supervision system

      • a rather obscure console from Taiwan with two pulse channels, a noise and primitive sample channel
    • add SID3 fantasy chip

      • inspired by SID, this chip has 6 channels of analog-synth-like goodness, a boatload of macros and even one wave channel
    • add OPL4 system

      • OPL3 with 24 sample channels taken from the to-be-implemented MultiPCM
    • fix 5E01 not producing sound at all

    • SNES anti-click

      • note that this does not eliminate clicks in samples with incompatible loop regions! it only applies to note playback.
    • POKEY SAP type R export (playable by Altirra and lzss-sap on hardware)

    • FamiTracker import improvements

      • create instrument copies to represent what FamiTracker does (in particular, on VRC6 channels when using 2A03 instruments)
      • fix Hxy effect for S5B (AY)
      • fix virtual tempo going outside range
      • fix VRC7 patch switch effect (Dn-FamiTracker) not being imported correctly
    • find/replace improvements

      • make the note selector a bit more comfortable
      • search in selection now works on selected channels only (previously it would search on all channels... issue #2393)
      • fix a possible crash (issue #2328)
      • cut/delay policy is now lax
      • set macro release mode to Active (issue #2376)
    • C64 4-bit PCM/digi (using volume control)

    • performance optimizations for certain chips

      • up to 10 times less CPU usage during playback and faster audio exports
      • optimized chips include: PC Speaker, GA20, Amiga, PC Engine, SCC, NES, MMC5, VRC6, TIA, Virtual Boy, AY (not so much), Nintendo DS, T6W28, SN, SM8521, Bubble System WSG and K007232
    • new WonderSwan emulation core courtesy of asiekierka (#2401)

    • Virtual Boy changes

      • one notorious Virtual Boy quirk is that you cannot write to wave/modulation table memory unless all channels are disabled
      • Furnace wasn't taking this quirk into account, which means that exported VGMs wouldn't play on hardware
      • this release makes exported VGMs work on hardware by disabling all channels on wave change
      • however, this means there will be a "click" on every wave change, which can get very annoying
      • it is recommended you use static mode, or change waves sparingly...
      • there's a setting to go back to the old behavior, but keep in mind this will break VGM export and is not hardware-accurate!
    • TFM import improvements

      • implement looping
    • XM import improvements

      • new envelope conversion algorithm
    • add ability to set multiple key binds for actions

    • FM 30xx (hard reset envelope) now working on VGM export

    • OPZ improvements (per-op frequency control including arp/pitch macros)

    • support for MSX2 .dmf (no, I am not going to support its weird AY manners. sorry!)

    • add ability to create a sample from a wavetable

    • per-op fixed octave/block setting in OPN, OPL and ESFM (useful for SSG-EG)

    • CSM on all OPN chips

    • Combat Vehicle improvements

      • small stages, modifiers, special powerups and planes
    • fix a possible crash on macOS when the font texture is too large

    • fix two possible hangs in MIDI code when audio output isn't working

    • fix crash when selecting all after expanding/collapsing/change-effect-counting channel

    • OPN: fix possible crash when using FM effects on non-FM channels (issue #2286)

    • fix some file loading exploits

      • negative sample length (issue #2316)
      • samples too long in .dmf
      • invalid pitches in .dmf
    • command palette improvements

      • show shortcuts (for actions)
      • color the search characters
      • use non-greedy search to find optimal fuzzy match order
    • fix the "Rendering..." window being too small at times

    • add cursor undo/redo actions

    • add the ability to set a channel visibility mask for user presets

      • use chanMask in th
  5. v0.6.8pre2Furnace v0.6.8pre2pre-release2025-03-23 · 2025-03-23 19:27 UTC
    查看更新说明

    this fixes a couple bugs, including a critical macOS crash on startup.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Furnace (chiptune tracker)

    screenshot

    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.exe if you wish.
    • macOS: drag Furnace into 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
    • 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

    packages

    Packaging status

    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

    Build furnace

    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. these environments can be found in the Start menu, in a folder MSYS2 has created for you. don't "run MSYS2 now". go to the Start menu and launch MSYS2 with the MINGW64 environment (blue icon). 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 line tools. open a Terminal and type:

    xcode-select --install
    

    if you would like to, and are able to use the App Store, feel free to get Xcode instead.

    development environment setup (Linux/Unix-like)

    get GCC, Git and CMake through your package manager.

    you may also need the following dependencies:

    • libpulse
    • libx11
    • libasound
    • libGL
    • JACK (optional)
    • any other libraries which may be used by SDL

    some Linux distributions (e.g. Ubuntu or openSUSE) will require you to install the -dev/-devel 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)

    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 use Git instead as shown in this section.

    compilation

    Windows using MSVC/Visual Studio

    if you've downloaded the entirety of Visual Studio, including the IDE:

    let Visual Studio do the work for you

    make sure you installed CMake through the Visual Studio installer. just open the CMake project and you're good to go.

    nah, leave it to me instead

    make sure CMake is installed. cd to the Furnace directory and then:

    mkdir build
    cd build
    cmake -G "Visual Studio 17 2022" ..
    

    then open the solution file in Visual Studio and build.

    Windows using MSVC/Visual Studio (command line tools only)

    open a developer tools command prompt, and run CMake as described in the previous section.

    afterwards, build Furnace by using:

    msbuild ALL_BUILD.vcxproj
    

    Windows using MinGW (through MSYS2)

    open the MSYS2 MINGW64 environment. cd to the Furnace directory and then do:

    mkdir build
    cd build
    cmake ..
    ninja
    

    macOS, Linux and other Unix/Unix-like

    the process is straightforward.

    mkdir build
    cd build
    cmake ..
    make
    
    I like Xcode

    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.

    notes

    once you've created the build directory with mkdir, you don't have to do that again. just cd to it when you want to build Furnace.

    once you've run CMake successfully, you don't have to run it again every time you make a change. just run make, ninja, xcodebuild or msbuild.

    CMake options

    to add an option from the command-line, add it before the two dots: -D<NAME>=<VALUE>
    Example: cmake -DBUILD_GUI=OFF -DWARNINGS_ARE_ERRORS=ON ..

    Available options:

    NameDefaultDescription
    BUILD_GUIONBuild the tracker (disable to build only a headless player)
    WITH_LOCALEONEnable language support
    WITH_JSONONEnable JSON export
    USE_RTMIDIONBuild with MIDI support using RtMidi
    USE_SDL2ONBuild with SDL2 (required to build with GUI)
    USE_SNDFILEONBuild with libsndfile (required in order to work with audio files)
    USE_BACKWARDONUse backward-cpp to print a backtrace on crash/abort
    USE_FREETYPEOFFBuild with FreeType support
    USE_MOMOauto¹Build a libintl implementation instead of using the system one
    WITH_JACKauto²Whether to build with JACK support. Auto-detects if JACK is available
    WITH_PORTAUDIOONWhether to build with PortAudio.
    SYSTEM_FFTWOFFUse a system-installed version of FFTW instead of the vendored one
    SYSTEM_FMTOFFUse a system-installed version of fmt instead of the vendored one
    SYSTEM_LIBSNDFILEOFFUse a system-installed version of libsndfile instead of the vendored one
    SYSTEM_RTMIDIOFFUse a system-installed version of RtMidi instead of the vendored one
    SYSTEM_ZLIBOFFUse a system-installed version of zlib instead of the vendored one
    SYSTEM_SDL2OFFUse a system-installed version of SDL2 instead of the vendored one
    SYSTEM_FREETYPEOFFUse a system-installed version of FreeType instead of the vendored one
    SUPPORT_XPOFFBuild a Windows XP-compatible binary
    WARNINGS_ARE_ERRORSOFF³Whether warnings in furnace's C++ code should be treated as errors
    WITH_DEMOSOFFInstall demo songs on make install
    WITH_INSTRUMENTSONInstall demo instruments on make install
    WITH_WAVETABLESONInstall wavetables on make install
    SHOW_OPEN_ASSETS_MENU_ENTRYOFFShow option to open built-in assets directory (on supported platforms)
    CONSOLE_SUBSYSTEMOFFBuild with subsystem set to Console on Windows
    FORCE_APPLE_BINOFFEnable 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!

    troubleshooting

    sometimes things go wrong and you can't proceed any further.

    this guide may help you in that case.

    "command not found", "not a valid command", and similar

    either you forgot to install something, it's not in your PATH or you are using the wrong environment.

    compiler

    if building with the Visual Studio command line tools, make sure you have started the native tools command prompt. Microsoft has a guide here.

    if building with MinGW, make sure you have started the MSYS2 MINGW64 environment (not the UCRT64 one!).

    CMake or Git

    did you install these?

    if you installed them through Visual Studio or MinGW, you may have to set the environment as I described above.

    CMake errors

    No source or binary directory provided

    the two dots after the cmake command are important. it tells CMake where the CMakeLists.txt file is at (two dots mean "parent directory", which makes sense since we are in the build directory inside the Furnace repo).

    read the compilation guide again.

    add_subdirectory missing

    if it says something about a missing directory 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.

    NMake Makefiles

    if CMake says something about NMake, then it means it couldn't find Visual Studio, or it didn't feel like finding Visual Studio.

    try running CMake again but tell it to use the Visual Studio generator (-G "Visual Studio 17 2022"). type cmake --help for a list of generators.

    CMake was unable to find a build program

    if you are on Windows, don't run CMake standalone unless you have Visual Studio or a compiler installed.

    if you are in the MSYS2 MINGW64 environment, make sure you installed mingw-w64-x86_64-cmake instead of cmake. restart the environment after doing so. if you are not, exit and start the MINGW64 environment (not the UCRT64 one!). read the guide!

    if you are not using Windows then you probably haven't set your development environment up correctly. read the guide again.

    Does not match the generator used previously

    yeah I know you probably hit this error right now. delete the build directory (or just CMakeCache.txt and CMakeFiles) and try again.

    The C compiler is not able to compile a simple test program

    something is really wrong, or you are trying to use a compiler outside of an environment. launch the appropriate environment and try again.

    if you are using MSYS2, make sure you have launched the MINGW64 environment. do not install gcc! instead, install mingw-w64-x86_64-gcc.

    ALSA API requested but no ALSA dev libraries found

    if you are on Windows, using MSYS2, then you most likely disregarded the guide and are attempting to build in the UCRT64 environment. don't do that!

    get out of the UCRT64 environment and start the MINGW64 one.

    however, if you already are in the MINGW64 environment, then make sure you installed mingw-w64-x86_64-cmake instead of cmake. restart the environment after doing so.

    otherwise, install the ALSA development libraries (libasound-dev or something like that).

    also make sure you've installed the rest of dependencies so you don't hit one of the errors below...

    Compatibility with CMake < 3.5 has been removed from CMake

    immediately report this issue. patch out every CMakeLists.txt and change the cmake_minimum_required() to comply for now.

    Furnace errors

    The code execution cannot proceed because libintl-8.dll was not found

    this is because sadly libintl (what we use for language support) only exists as a dynamic library (a .dll) on Windows. run CMake again with -DUSE_MOMO=ON and then build to fix it.

    x11 not available/SDL not configured with OpenGL/GLX support

    make sure you have installed the Mesa and X11 development libraries. use your package manager to do so. re-build Furnace afterwards.

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