Merge branch 'master' into sysmgrtooltip_syschaninfo

This commit is contained in:
Eknous 2024-08-18 22:03:29 +04:00 committed by GitHub
commit e50b3438f2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
834 changed files with 780920 additions and 160607 deletions

View file

@ -1,48 +1 @@
# EXTREMELY IMPORTANT NOTICE - PLEASE **READ**!!!!!!!
BY SUBMITTING AN ISSUE, YOU HEREBY AGREE TO COMPLY WITH THESE TERMS.
FAILURE TO DO SO MAY RESULT IN YOUR ISSUE BEING DECLARED VOID.
**ADDITIONALLY, FAILURE TO COMPLY WITH POINTS 1 AND 2 WILL RESULT IN THE INABILITY TO ISSUE FURTHER ISSUE REPORTS.**
1. this section is exclusively for ISSUES related to Furnace (bugs, major annoyances and others). ONLY THINGS THAT COUNT AS **ISSUES** (ad pedem litterae).
2. **THIS SECTION IS NOT FOR SUGGESTIONS, REQUESTS, QUESTIONS, SHOWCASE OR ANY OTHER DISCUSSIONS THAT DO NOT MEET THE CRITERIA AND DEFINITION OF AN __ISSUE__.**
- see the Discussions section if you wish to submit these.
3. check whether your issue has been reported already.
- go to the Issues section, and use the search bar that appears on top of the Issues list.
4. include the following information:
- version of Furnace (help > about)
- operating system (and version)
- whether you have downloaded Furnace, or built it from source.
5. provide these details if you believe the issue is operating system and/or computer-specific:
- CPU model
- Windows: go to Control Panel > System.
- macOS: go to the Apple menu and select About This Mac...
- Linux: use `lscpu` or `cat /proc/cpuinfo`.
- graphics card (and driver version)
- Windows: open `dxdiag` and observe the Render tab.
- macOS: go to the Apple menu and select About This Mac...
- this information is not always shown.
- this information is not necessary if you use an Apple silicon Mac.
- Linux: use `glxinfo | grep OpenGL`.
6. if your issue is an abnormal program termination (a "Crash"), you must provide additional details:
- the furnace_crash.txt file that is created by Furnace after a Crash. this file is located in the following paths:
- Windows: `C:\Users\<username>\furnace_crash.txt`
- Linux/other: `/tmp/furnace_crash.txt`
- on macOS this file is not generated. you may retrieve information about the Crash by clicking on "Report..." or "Show Details" in the "quit unexpectedly" dialog that appears following the Crash.
- make sure to remove any personal information for privacy reasons.
- be sure to select "Don't Send" afterwards.
- the furnace.log file located in:
- Windows: `C:\Users\<username>\AppData\Roaming\furnace\furnace.log`
- macOS: `~/Library/Application Support/furnace/furnace.log`
- Linux: `~/.config/furnace/furnace.log`
- make sure to remove any personal information for privacy reasons.
BY SUBMITTING AN ISSUE, YOU HEREBY AGREE TO COMPLY WITH THESE TERMS.
FAILURE TO DO SO MAY RESULT IN YOUR ISSUE BEING DECLARED VOID.
**ADDITIONALLY, FAILURE TO COMPLY WITH POINTS 1 AND 2 WILL RESULT IN THE INABILITY TO ISSUE FURTHER ISSUE REPORTS.**
***END OF NOTICE***
PLEASE REMOVE THIS NOTICE AFTER READING.
FAILURE TO REMOVE THIS NOTICE IS NEGLIGENCE.
please do not post suggestions, feature requests or non-issue discussions here. go to Discussions if you want to post these instead.

1
.github/issue_template/config.yml vendored Normal file
View file

@ -0,0 +1 @@
blank_issues_enabled: false

33
.github/issue_template/issue.yml vendored Normal file
View file

@ -0,0 +1,33 @@
name: Issue Report
description: for issues (bugs, annoyances, crashes and similar).
body:
- type: markdown
attributes:
value: |
Suggestions, feature requests, questions, showcase or anything else? Go to the Discussions section.
- type: textarea
id: description
attributes:
label: Description
- type: textarea
id: steps
attributes:
label: Steps to Reproduce (if applicable)
- type: textarea
id: info
attributes:
label: Additional Information
- type: input
id: version
attributes:
label: Furnace version? (help > about)
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: This is an issue
description: By submitting this issue, you affirm that this is an actual issue (not a suggestion, question or otherwise non-issue).
options:
- label: I hereby certify that the ticket I am submitting is an issue.
required: true

View file

@ -2,7 +2,7 @@ name: Build furnace
on:
push:
branches: master
branches: [master, locale]
pull_request:
branches: master
@ -11,7 +11,7 @@ defaults:
shell: bash
env:
BUILD_TYPE: RelWithDebInfo
BUILD_TYPE: Debug
jobs:
build:
@ -22,11 +22,11 @@ jobs:
- { name: 'Windows MSVC x86_64', os: windows-latest, compiler: msvc, arch: x86_64 }
#- { name: 'Windows MinGW x86', os: ubuntu-20.04, compiler: mingw, arch: x86 }
#- { name: 'Windows MinGW x86_64', os: ubuntu-20.04, compiler: mingw, arch: x86_64 }
- { name: 'macOS x86_64', os: macos-latest, arch: x86_64 }
- { name: 'macOS x86_64', os: macos-12, arch: x86_64 }
- { name: 'macOS ARM', os: macos-latest, arch: arm64 }
- { name: 'Linux x86_64', os: ubuntu-20.04, arch: x86_64 }
#- { name: 'Linux ARM', os: ubuntu-18.04, arch: armhf }
fail-fast: false
fail-fast: true
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
@ -128,7 +128,8 @@ jobs:
librtmidi-dev \
libsndfile1-dev \
zlib1g-dev \
libjack-jackd2-dev
libjack-jackd2-dev \
gettext
- name: Install Dependencies [Linux armhf]
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'armhf' }}
@ -140,7 +141,8 @@ jobs:
sudo apt update
sudo apt install \
crossbuild-essential-armhf \
appstream
appstream \
gettext
sudo apt install \
libsdl2-dev:armhf \
libfmt-dev:armhf \
@ -150,6 +152,11 @@ jobs:
libjack-jackd2-dev:armhf
ls /usr/arm-linux-gnueabihf/lib
- name: Build Language Files
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }}
run: |
./scripts/build-po.sh
- name: Configure
run: |
export USE_WAE=ON
@ -173,9 +180,9 @@ jobs:
fi
elif [ '${{ runner.os }}' == 'macOS' ]; then
if [ '${{ matrix.config.arch }}' == 'arm64' ]; then
CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="11.0"' '-DCMAKE_OSX_ARCHITECTURES=arm64')
CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="11.0"' '-DCMAKE_OSX_ARCHITECTURES=arm64' '-DMAKE_BUNDLE=ON')
else
CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"')
CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"' '-DCMAKE_OSX_ARCHITECTURES=x86_64' '-DMAKE_BUNDLE=ON' '-DCMAKE_C_FLAGS=-march=core2' '-DCMAKE_CXX_FLAGS=-march=core2')
fi
elif [ '${{ runner.os }}' == 'Linux' ] && [ '${{ matrix.config.arch }}' == 'armhf' ]; then
CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-Linux-armhf.cmake')
@ -221,6 +228,7 @@ jobs:
cp -v ../LICENSE LICENSE.txt
cp -v ../res/releaseReadme/unstable-win.txt README.txt
cp -vr ../po/locale locale
cp -vr ../papers ../${binPath}/furnace.exe ./
if [ '${{ matrix.config.compiler }}' == 'msvc' ]; then
cp -v ../${binPath}/furnace.pdb ./
@ -233,38 +241,22 @@ jobs:
if: ${{ runner.os == 'macOS' }}
run: |
pushd build
retries=0
while ! cpack; do
echo "TRYING AGAIN..."
retries=$((retries+1))
if [ $retries -gt 5 ]; then
echo "OH NO, WE'VE FAILED..."
exit 1
break
fi
done
echo "preparing bundle"
mkdir -p Furnace.app/Contents/Resources
cp -v -r ../po/locale Furnace.app/Contents/Resources/locale
cp -v ../res/icon.icns Furnace.app/Contents/Resources/Furnace.icns
codesign --deep -f -s - Furnace.app
echo "making dirs"
mkdir orig
mkdir new
echo "attaching"
echo "y" | hdiutil attach Furnace-*-Darwin.dmg -readonly -mount required -mountpoint orig
echo "copying"
cp -v -r orig/Furnace.app new/Furnace.app
cp -v -r Furnace.app new/Furnace.app
ln -s /Applications new/Applications
echo "synchronizing"
sync
echo "detaching"
hdiutil detach orig
echo "removing orig"
rmdir orig
rm Furnace-*-Darwin.dmg
if [ -e new/Furnace.app/Contents/Resources/bin/furnace ]; then
rm -v new/Furnace.app/Contents/Resources/bin/furnace
rmdir new/Furnace.app/Contents/Resources/bin
fi
echo "copying extra stuff"
cp -v ../LICENSE new/LICENSE.txt
@ -278,7 +270,7 @@ jobs:
echo "creating new image"
retries=0
while ! hdiutil create -srcfolder new -volname Furnace -format UDZO furnace.dmg; do
while ! hdiutil create -srcfolder new -volname Furnace -format UDZO -fs HFS+ furnace.dmg; do
echo "TRYING AGAIN..."
retries=$((retries+1))
if [ $retries -gt 5 ]; then
@ -315,6 +307,8 @@ jobs:
rm -r share/icons
rm -r share/licenses
rm -r share/metainfo
rm -r share/mime
mv share/locale ..
rmdir share
@ -337,3 +331,10 @@ jobs:
with:
name: ${{ steps.package-identify.outputs.id }}
path: ${{ steps.package-identify.outputs.filename }}
- name: Upload Metal artifact
if: ${{ github.repository == 'tildearrow/furnace' && github.ref_name == 'metal' }}
uses: actions/upload-artifact@v4.3.0
with:
name: ${{ steps.package-identify.outputs.id }}
path: ${{ steps.package-identify.outputs.filename }}

2
.gitignore vendored
View file

@ -5,6 +5,7 @@ nosdl/
release/
t/
winbuild/
winCbuild/
win32build/
xpbuild/
macbuild/
@ -34,4 +35,5 @@ res/docpdf/manual.html
res/docpdf/manual.pdf
res/docpdf/.venv
res/docpdf/htmldoc/
res/fonts/compressed/
res/furnace.appdata.xml

3
.gitmodules vendored
View file

@ -15,6 +15,3 @@
[submodule "extern/portaudio"]
path = extern/portaudio
url = https://github.com/PortAudio/portaudio.git
[submodule "extern/adpcm-xq"]
path = extern/adpcm-xq
url = https://github.com/dbry/adpcm-xq.git

View file

@ -16,7 +16,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_PROJECT_VERSION_MAJOR 0)
set(CMAKE_PROJECT_VERSION_MINOR 6)
set(CMAKE_PROJECT_VERSION_PATCH 1)
set(CMAKE_PROJECT_VERSION_PATCH 5)
set(BUILD_GUI_DEFAULT ON)
set(USE_SDL2_DEFAULT ON)
@ -67,33 +67,58 @@ else()
endif()
set(WITH_RENDER_SDL_DEFAULT ON)
if (APPLE)
set(WITH_RENDER_OPENGL_DEFAULT OFF)
else()
set(WITH_RENDER_OPENGL_DEFAULT ON)
endif()
set(WITH_RENDER_OPENGL_DEFAULT ON)
if (WIN32)
set(WITH_RENDER_DX11_DEFAULT ON)
set(WITH_RENDER_DX9_DEFAULT ON)
else()
set(WITH_RENDER_DX11_DEFAULT OFF)
set(WITH_RENDER_DX9_DEFAULT OFF)
endif()
if (APPLE)
set(WITH_RENDER_METAL_DEFAULT ON)
else()
set(WITH_RENDER_METAL_DEFAULT OFF)
endif()
if (ANDROID)
set(USE_GLES_DEFAULT ON)
set(WITH_RENDER_OPENGL1_DEFAULT OFF)
else()
set(USE_GLES_DEFAULT OFF)
if (APPLE)
set(WITH_RENDER_OPENGL1_DEFAULT OFF)
else()
set(WITH_RENDER_OPENGL1_DEFAULT ON)
endif()
endif()
set(WITH_LOCALE_DEFAULT ON)
try_compile(HAVE_SETLOCALE ${CMAKE_BINARY_DIR}/check SOURCES ${CMAKE_SOURCE_DIR}/src/check/check_setlocale.c)
include(FindIntl)
if (HAVE_SETLOCALE AND Intl_FOUND AND NOT APPLE)
set(USE_MOMO_DEFAULT OFF)
else()
set(USE_MOMO_DEFAULT ON)
endif()
option(BUILD_GUI "Build the tracker (disable to build only a headless player)" ${BUILD_GUI_DEFAULT})
option(WITH_LOCALE "Use libintl for language support" ${WITH_LOCALE_DEFAULT})
option(USE_RTMIDI "Build with MIDI support using RtMidi." ${USE_RTMIDI_DEFAULT})
option(USE_SDL2 "Build with SDL2. Required to build with GUI." ${USE_SDL2_DEFAULT})
option(USE_SNDFILE "Build with libsndfile. Required in order to work with audio files." ${USE_SNDFILE_DEFAULT})
option(USE_BACKWARD "Use backward-cpp to print a backtrace on crash/abort." ${USE_BACKWARD_DEFAULT})
option(USE_MOMO "Build a libintl implementation instead of using the system one." ${USE_MOMO_DEFAULT})
option(WITH_JACK "Whether to build with JACK support. Auto-detects if JACK is available" ${WITH_JACK_DEFAULT})
option(WITH_PORTAUDIO "Whether to build with PortAudio for audio output." ${WITH_PORTAUDIO_DEFAULT})
option(WITH_RENDER_SDL "Whether to build with the SDL_Renderer render backend." ${WITH_RENDER_SDL_DEFAULT})
option(WITH_RENDER_OPENGL "Whether to build with the OpenGL render backend." ${WITH_RENDER_OPENGL_DEFAULT})
option(WITH_RENDER_OPENGL1 "Whether to build with the OpenGL 1.1 render backend." ${WITH_RENDER_OPENGL1_DEFAULT})
option(WITH_RENDER_DX11 "Whether to build with the DirectX 11 render backend." ${WITH_RENDER_DX11_DEFAULT})
option(WITH_RENDER_DX9 "Whether to build with the DirectX 9 render backend." ${WITH_RENDER_DX9_DEFAULT})
option(WITH_RENDER_METAL "Whether to build with the Metal render backend." ${WITH_RENDER_METAL_DEFAULT})
option(USE_GLES "Use OpenGL ES for the OpenGL render backend." ${USE_GLES_DEFAULT})
option(USE_FREETYPE "Use FreeType for font rendering." ON)
option(SYSTEM_FFTW "Use a system-installed version of FFTW instead of the vendored one" OFF)
@ -110,6 +135,15 @@ option(WITH_DEMOS "Install demo songs" ON)
option(WITH_INSTRUMENTS "Install instruments" ON)
option(WITH_WAVETABLES "Install wavetables" ON)
option(SHOW_OPEN_ASSETS_MENU_ENTRY "Show option to open built-in assets directory (on supported platforms)" OFF)
option(CONSOLE_SUBSYSTEM "Build Furnace with Console subsystem on Windows" OFF)
if (APPLE)
option(FORCE_APPLE_BIN "Force enable binary installation to /bin" OFF)
option(MAKE_BUNDLE "Make a bundle" OFF)
else()
# not Apple - not needed
set(FORCE_APPLE_BIN OFF)
set(MAKE_BUNDLE OFF)
endif()
set(DEPENDENCIES_INCLUDE_DIRS extern/IconFontCppHeaders src/icon)
@ -137,19 +171,21 @@ else()
set(SYSTEM_SDL_MIN_VER 2.0.0)
endif()
if (WIN32)
# support Windows XP
if (SUPPORT_XP)
add_compile_definitions("_WIN32_WINNT=0x0501")
endif()
endif()
#list(APPEND DEPENDENCIES_INCLUDE_DIRS "extern/SAASound/include")
list(APPEND DEPENDENCIES_INCLUDE_DIRS "extern/vgsound_emu-modified")
find_package(Threads REQUIRED)
list(APPEND DEPENDENCIES_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
if (WIN32)
# support Windows XP
if (SUPPORT_XP)
list(APPEND DEPENDENCIES_DEFINES "_WIN32_WINNT=0x0501")
list(APPEND DEPENDENCIES_DEFINES "SUPPORT_XP")
endif()
endif()
if (SYSTEM_FFTW)
find_package(PkgConfig REQUIRED)
pkg_check_modules(FFTW REQUIRED fftw3>=3.3)
@ -390,15 +426,10 @@ else()
endif()
endif()
if (BUILD_GUI)
if (NOT WITH_RENDER_SDL AND NOT WITH_RENDER_OPENGL AND NOT WITH_RENDER_DX11)
message(FATAL_ERROR "No render backends selected!")
endif()
endif()
set(AUDIO_SOURCES
src/audio/abstract.cpp
src/audio/midi.cpp
src/audio/pipe.cpp
)
if (USE_SDL2)
@ -445,6 +476,8 @@ src/baseutils.cpp
src/fileutils.cpp
src/utfutils.cpp
extern/itcompress/compression.c
extern/SAASound/src/SAAAmp.cpp
extern/SAASound/src/SAADevice.cpp
extern/SAASound/src/SAAEnv.cpp
@ -485,7 +518,7 @@ extern/adpcm/yma_codec.c
extern/adpcm/ymb_codec.c
extern/adpcm/ymz_codec.c
extern/adpcm-xq/adpcm-lib.c
extern/adpcm-xq-s/adpcm-lib.c
extern/opn/ym3438.c
extern/Nuked-PSG/ympsg.c
@ -497,6 +530,10 @@ extern/YMF262-LLE/fmopl3.c
extern/YMF276-LLE/fmopn2.c
extern/ESFMu/esfm.c
extern/ESFMu/esfm_registers.c
extern/emu2413/emu2413.c
extern/YM2608-LLE/fmopna_2608.c
extern/YM2608-LLE/fmopna_2610.c
extern/YM2608-LLE/fmopna_2612.c
extern/pwrnoise/pwrnoise.c
@ -516,6 +553,8 @@ src/engine/platform/sound/nes/mmc5.c
src/engine/platform/sound/vera_psg.c
src/engine/platform/sound/vera_pcm.c
src/engine/platform/sound/atomicssg/ssg.c
src/engine/platform/sound/nes_nsfplay/5e01_apu.cpp
src/engine/platform/sound/nes_nsfplay/5e01_dmc.cpp
src/engine/platform/sound/nes_nsfplay/nes_apu.cpp
@ -615,6 +654,17 @@ src/engine/platform/sound/dave/dave.cpp
src/engine/platform/sound/nds.cpp
src/engine/platform/sound/sid2/envelope.cc
src/engine/platform/sound/sid2/filter.cc
src/engine/platform/sound/sid2/sid.cc
src/engine/platform/sound/sid2/version.cc
src/engine/platform/sound/sid2/voice.cc
src/engine/platform/sound/sid2/wave8580_PS_.cc
src/engine/platform/sound/sid2/wave8580_PST.cc
src/engine/platform/sound/sid2/wave8580_P_T.cc
src/engine/platform/sound/sid2/wave8580__ST.cc
src/engine/platform/sound/sid2/wave.cc
src/engine/platform/oplAInterface.cpp
src/engine/platform/ym2608Interface.cpp
src/engine/platform/ym2610Interface.cpp
@ -624,9 +674,20 @@ src/engine/fileOps/dmf.cpp
src/engine/fileOps/fc.cpp
src/engine/fileOps/ftm.cpp
src/engine/fileOps/fur.cpp
src/engine/fileOps/it.cpp
src/engine/fileOps/mod.cpp
src/engine/fileOps/s3m.cpp
src/engine/fileOps/text.cpp
src/engine/fileOps/tfm.cpp
src/engine/fileOps/xm.cpp
src/engine/fileOps/p.cpp
src/engine/fileOps/p86.cpp
src/engine/fileOps/pdx.cpp
src/engine/fileOps/ppc.cpp
src/engine/fileOps/pps.cpp
src/engine/fileOps/pvi.cpp
src/engine/fileOps/pzi.cpp
src/engine/blip_buf.c
src/engine/brrUtils.c
@ -640,6 +701,7 @@ src/engine/configEngine.cpp
src/engine/dispatchContainer.cpp
src/engine/engine.cpp
src/engine/export.cpp
src/engine/exportDef.cpp
src/engine/fileOpsIns.cpp
src/engine/fileOpsSample.cpp
src/engine/filter.cpp
@ -727,11 +789,14 @@ src/engine/platform/dave.cpp
src/engine/platform/gbadma.cpp
src/engine/platform/gbaminmod.cpp
src/engine/platform/nds.cpp
src/engine/platform/bifurcator.cpp
src/engine/platform/sid2.cpp
src/engine/platform/pcmdac.cpp
src/engine/platform/dummy.cpp
src/engine/export/abstract.cpp
src/engine/export/amigaValidation.cpp
src/engine/export/tiuna.cpp
src/engine/effect/abstract.cpp
src/engine/effect/dummy.cpp
@ -747,6 +812,13 @@ if (WIN32)
list(APPEND ENGINE_SOURCES res/furnace.rc)
endif()
if (APPLE)
if (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS 10.12)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/macports-legacy-support/include)
list(APPEND ENGINE_SOURCES extern/macports-legacy-support/src/time.c)
endif()
endif()
set(CLI_SOURCES
src/cli/cli.cpp
)
@ -757,6 +829,7 @@ extern/imgui_patched/imgui_draw.cpp
extern/imgui_patched/imgui_tables.cpp
extern/imgui_patched/imgui_widgets.cpp
extern/imgui_patched/backends/imgui_impl_sdl2.cpp
extern/imgui_software_renderer/imgui_sw.cpp
extern/imgui_patched/misc/cpp/imgui_stdlib.cpp
extern/igfd/ImGuiFileDialog.cpp
@ -764,18 +837,22 @@ src/gui/plot_nolerp.cpp
src/gui/render.cpp
src/gui/render/abstract.cpp
src/gui/render/renderSoftware.cpp
src/gui/font_exo.cpp
src/gui/font_liberationSans.cpp
src/gui/font_mononoki.cpp
src/gui/font_plexMono.cpp
src/gui/font_plexSans.cpp
src/gui/font_plexSansJP.cpp
src/gui/font_plexSansKR.cpp
src/gui/font_proggyClean.cpp
src/gui/font_ptMono.cpp
src/gui/font_unifont.cpp
src/gui/font_icon.cpp
src/gui/font_furicon.cpp
src/gui/fonts.cpp
src/gui/fontzlib.cpp
src/gui/image_icon.cpp
src/gui/image_talogo.cpp
@ -842,6 +919,7 @@ src/gui/sysManager.cpp
src/gui/sysMiscInfo.cpp
src/gui/sysPicker.cpp
src/gui/tutorial.cpp
src/gui/userPresets.cpp
src/gui/util.cpp
src/gui/waveEdit.cpp
src/gui/volMeter.cpp
@ -881,12 +959,32 @@ if (WITH_RENDER_OPENGL)
endif()
if (WIN32)
list(APPEND DEPENDENCIES_LIBRARIES opengl32)
elseif(APPLE)
list(APPEND DEPENDENCIES_LIBRARIES "-framework OpenGL")
elseif(USE_GLES)
list(APPEND DEPENDENCIES_LIBRARIES GLESv2)
else()
list(APPEND DEPENDENCIES_LIBRARIES GL)
endif()
message(STATUS "UI render backend: OpenGL")
if (USE_GLES)
message(STATUS "UI render backend: OpenGL ES 2.0")
else()
message(STATUS "UI render backend: OpenGL 3.0/2.0")
endif()
endif()
if (WITH_RENDER_OPENGL1)
list(APPEND GUI_SOURCES src/gui/render/renderGL1.cpp)
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_opengl2.cpp)
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_GL1)
if (NOT WITH_RENDER_OPENGL)
if (WIN32)
list(APPEND DEPENDENCIES_LIBRARIES opengl32)
else()
list(APPEND DEPENDENCIES_LIBRARIES GL)
endif()
endif()
message(STATUS "UI render backend: OpenGL 1.1")
endif()
if (WITH_RENDER_DX11)
@ -897,7 +995,7 @@ if (WITH_RENDER_DX11)
list(APPEND GUI_SOURCES src/gui/render/renderDX11.cpp)
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_dx11.cpp)
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_DX11)
list(APPEND DEPENDENCIES_LIBRARIES d3d11)
list(APPEND DEPENDENCIES_LIBRARIES d3d11 dxgi)
message(STATUS "UI render backend: DirectX 11")
endif()
else()
@ -905,6 +1003,31 @@ if (WITH_RENDER_DX11)
endif()
endif()
if (WITH_RENDER_DX9)
if (WIN32)
list(APPEND GUI_SOURCES src/gui/render/renderDX9.cpp)
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_dx9.cpp)
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_DX9)
list(APPEND DEPENDENCIES_LIBRARIES d3d9)
message(STATUS "UI render backend: DirectX 9")
else()
message(FATAL_ERROR "DirectX 9 render backend only for Windows!")
endif()
endif()
if (WITH_RENDER_METAL)
if (APPLE)
list(APPEND GUI_SOURCES src/gui/render/renderMetal.mm)
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_metal.mm)
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_METAL)
list(APPEND DEPENDENCIES_LIBRARIES "-framework Metal")
list(APPEND DEPENDENCIES_LIBRARIES "-framework MetalKit")
message(STATUS "UI render backend: Metal")
else()
message(FATAL_ERROR "Metal render backend only for Apple operating systems!")
endif()
endif()
if (NOT WIN32 AND NOT APPLE)
CHECK_INCLUDE_FILE(sys/io.h SYS_IO_FOUND)
CHECK_INCLUDE_FILE(linux/input.h LINUX_INPUT_FOUND)
@ -935,6 +1058,39 @@ if (NOT WIN32)
endif()
endif()
if (WITH_LOCALE)
if (HAVE_SETLOCALE)
list(APPEND DEPENDENCIES_DEFINES HAVE_SETLOCALE)
message(STATUS "setlocale() found")
else()
if (NOT USE_MOMO)
message(FATAL_ERROR "setlocale() is not defined! This means the C library in your system does not support locale at all. Try enabling USE_MOMO.")
else()
message(STATUS "setlocale() is not defined")
endif()
endif()
if (USE_MOMO)
list(APPEND ENGINE_SOURCES src/momo/momo.c)
list(APPEND DEPENDENCIES_DEFINES HAVE_LOCALE)
list(APPEND DEPENDENCIES_DEFINES HAVE_MOMO)
list(APPEND DEPENDENCIES_INCLUDE_DIRS src/momo)
message(STATUS "Using libintl (Momo)")
else()
if ("${CMAKE_VERSION}" VERSION_LESS "3.2")
message(FATAL_ERROR "CMake 3.2 or later required for locale support.")
else()
if (NOT Intl_FOUND)
message(FATAL_ERROR "Could not find libintl! Try enabling USE_MOMO.")
endif()
list(APPEND DEPENDENCIES_DEFINES HAVE_LOCALE)
list(APPEND DEPENDENCIES_DEFINES GNULIB_overrides_sprintf)
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${Intl_INCLUDE_DIRS})
list(APPEND DEPENDENCIES_LIBRARIES ${Intl_LIBRARIES})
message(STATUS "Using libintl (system)")
endif()
endif()
endif()
set(USED_SOURCES ${ENGINE_SOURCES} ${AUDIO_SOURCES} ${CLI_SOURCES} src/main.cpp)
if (USE_BACKWARD)
@ -967,6 +1123,7 @@ if (BUILD_GUI)
list(APPEND DEPENDENCIES_INCLUDE_DIRS
extern/imgui_patched
extern/imgui_patched/backends
extern/imgui_software_renderer
extern/igfd
)
if (WIN32 OR APPLE)
@ -989,7 +1146,7 @@ elseif (APPLE)
find_library(COCOA Cocoa REQUIRED)
list(APPEND DEPENDENCIES_LIBRARIES ${COCOA})
else()
list(APPEND DEPENDENCIES_LIBRARIES dl)
list(APPEND DEPENDENCIES_LIBRARIES ${CMAKE_DL_LIBS})
endif()
if (NOT MSVC)
@ -1036,41 +1193,56 @@ if (NOT ANDROID OR TERMUX)
endif()
endif()
if(ANDROID AND NOT TERMUX)
add_library(furnace SHARED ${USED_SOURCES})
elseif(WIN32)
add_executable(furnace WIN32 ${USED_SOURCES})
else()
add_executable(furnace ${USED_SOURCES})
if (WIN32 AND CONSOLE_SUBSYSTEM)
list(APPEND DEPENDENCIES_DEFINES "TA_SUBSYSTEM_CONSOLE")
endif()
target_include_directories(furnace SYSTEM PRIVATE ${DEPENDENCIES_INCLUDE_DIRS})
target_compile_definitions(furnace PRIVATE ${DEPENDENCIES_DEFINES})
target_compile_options(furnace PRIVATE ${DEPENDENCIES_COMPILE_OPTIONS})
target_link_libraries(furnace PRIVATE ${DEPENDENCIES_LIBRARIES})
if (MAKE_BUNDLE)
set(FURNACE Furnace)
else()
set(FURNACE furnace)
endif()
if(ANDROID AND NOT TERMUX)
add_library(${FURNACE} SHARED ${USED_SOURCES})
elseif(WIN32 AND NOT CONSOLE_SUBSYSTEM)
add_executable(${FURNACE} WIN32 ${USED_SOURCES})
else()
add_executable(${FURNACE} ${USED_SOURCES})
endif()
if (MAKE_BUNDLE AND NOT FORCE_APPLE_BIN)
set_target_properties(${FURNACE} PROPERTIES
MACOSX_BUNDLE True
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/Info.plist)
endif()
target_include_directories(${FURNACE} SYSTEM PRIVATE ${DEPENDENCIES_INCLUDE_DIRS})
target_compile_options(${FURNACE} PRIVATE ${DEPENDENCIES_COMPILE_OPTIONS})
target_link_libraries(${FURNACE} PRIVATE ${DEPENDENCIES_LIBRARIES})
if (PKG_CONFIG_FOUND AND (SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYSTEM_SDL2 OR SYSTEM_RTMIDI OR WITH_JACK))
if ("${CMAKE_VERSION}" VERSION_LESS "3.13")
message(WARNING
"CMake version is <3.13, using old pkg-config LDFLAGS. "
"You may encounter linking problems with these!"
)
target_link_libraries(furnace PRIVATE ${DEPENDENCIES_LEGACY_LDFLAGS})
target_link_libraries(${FURNACE} PRIVATE ${DEPENDENCIES_LEGACY_LDFLAGS})
else()
target_link_directories(furnace PRIVATE ${DEPENDENCIES_LIBRARY_DIRS})
target_link_options(furnace PRIVATE ${DEPENDENCIES_LINK_OPTIONS})
target_link_directories(${FURNACE} PRIVATE ${DEPENDENCIES_LIBRARY_DIRS})
target_link_options(${FURNACE} PRIVATE ${DEPENDENCIES_LINK_OPTIONS})
endif()
endif()
# why 3.16..... why not 3.0?
if (NOT "${CMAKE_VERSION}" VERSION_LESS "3.16")
if (BUILD_GUI)
target_precompile_headers(furnace PUBLIC
target_precompile_headers(${FURNACE} PUBLIC
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/pch.h>
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/extern/imgui_patched/imgui.h>
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/extern/imgui_patched/imgui_internal.h>
)
else()
target_precompile_headers(furnace PUBLIC
target_precompile_headers(${FURNACE} PUBLIC
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/pch.h>
)
endif()
@ -1079,14 +1251,17 @@ endif()
if (NOT ANDROID OR TERMUX)
if (NOT WIN32 AND NOT APPLE)
include(GNUInstallDirs)
install(TARGETS furnace RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS ${FURNACE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES res/furnace.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES res/mime.xml RENAME furnace.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages)
if (NOT DONT_HAVE_GIT)
install(FILES ${CMAKE_BINARY_DIR}/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
endif()
install(DIRECTORY doc DESTINATION ${CMAKE_INSTALL_DOCDIR})
install(DIRECTORY papers DESTINATION ${CMAKE_INSTALL_DOCDIR}/other)
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/furnace)
list(APPEND DEPENDENCIES_DEFINES LOCALE_DIR="${CMAKE_INSTALL_FULL_LOCALEDIR}")
install(DIRECTORY po/locale/ DESTINATION ${CMAKE_INSTALL_LOCALEDIR})
if (WITH_DEMOS OR WITH_INSTRUMENTS OR WITH_WAVETABLES)
set(FURNACE_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}/furnace)
if (WITH_DEMOS)
@ -1098,9 +1273,9 @@ if (NOT ANDROID OR TERMUX)
if (WITH_WAVETABLES)
install(DIRECTORY wavetables DESTINATION ${FURNACE_DATADIR})
endif()
add_compile_definitions(FURNACE_DATADIR="${FURNACE_DATADIR}")
list(APPEND DEPENDENCIES_DEFINES FURNACE_DATADIR="${FURNACE_DATADIR}")
if (SHOW_OPEN_ASSETS_MENU_ENTRY)
add_compile_definitions(SHOW_OPEN_ASSETS_MENU_ENTRY)
list(APPEND DEPENDENCIES_DEFINES SHOW_OPEN_ASSETS_MENU_ENTRY)
endif()
endif()
foreach(num 16 32 64 128 256 512)
@ -1110,24 +1285,12 @@ if (NOT ANDROID OR TERMUX)
endforeach()
install(FILES res/logo.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/1024x1024/apps)
else()
install(TARGETS furnace RUNTIME DESTINATION bin)
if (MAKE_BUNDLE)
install(TARGETS ${FURNACE} BUNDLE DESTINATION Applications RESOURCE DESTINATION Resources)
else()
install(TARGETS ${FURNACE} RUNTIME DESTINATION bin)
endif()
endif()
set(CPACK_PACKAGE_NAME "Furnace")
set(CPACK_PACKAGE_VENDOR "tildearrow")
set(CPACK_PACKAGE_DESCRIPTION "free and open-source chiptune tracker")
if (APPLE)
set(CPACK_GENERATOR Bundle)
set(CPACK_DMG_SLA_DIR ${CMAKE_SOURCE_DIR}/res/macLicense)
set(CPACK_DMG_SLA_LANGUAGES en)
set(CPACK_BUNDLE_NAME "Furnace")
set(CPACK_DMG_VOLUME_NAME "Furnace")
set(CPACK_BUNDLE_PLIST ${CMAKE_SOURCE_DIR}/res/Info.plist)
set(CPACK_BUNDLE_ICON ${CMAKE_SOURCE_DIR}/res/icon.icns)
set(CPACK_BUNDLE_STARTUP_COMMAND "furnace")
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
endif()
include(CPack)
endif()
target_compile_definitions(${FURNACE} PRIVATE ${DEPENDENCIES_DEFINES})

View file

@ -80,14 +80,21 @@ for other operating systems, you may [build the source](#developer-info).
- 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
- modern/fantasy:
- Commander X16 VERA
- tildearrow Sound Unit
- PowerNoise
- Bifurcator
- SID2
- Generic PCM DAC
- mix and match sound chips!
- over 200 ready to use presets from computers, game consoles and arcade boards...
@ -130,7 +137,7 @@ for other operating systems, you may [build the source](#developer-info).
---
# quick references
- **discussion**: see the [Discussions](https://github.com/tildearrow/furnace/discussions) section, the [official Revolt](https://rvlt.gg/GRPS6tmc) or the [official Discord server](https://discord.gg/EfrwT2wq7z).
- **discussion**: see the [Discussions](https://github.com/tildearrow/furnace/discussions) section.
- **help**: check out the [documentation](doc/README.md).
## packages
@ -175,6 +182,8 @@ 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)
@ -254,11 +263,13 @@ 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 |
@ -267,18 +278,22 @@ Available options:
| `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 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
## CMake Error
if it says something about a missing subdirectory in `extern`, then either:
@ -317,6 +332,27 @@ this will play a compatible file and enable the commands view.
---
# frequently asked questions
> where's the manual?
it is in [doc/](doc/README.md).
> is there a tutorial?
[a video tutorial of tracker concepts is available on YouTube](https://www.youtube.com/watch?v=Q37XuOLz0jw). 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](http://rainwarrior.ca/projects/nes/nsfimport.html), 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.
@ -334,14 +370,6 @@ xattr -d com.apple.quarantine /path/to/Furnace.app
you may need to log out and/or reboot after doing this.
> where's the manual?
it is in [doc/](doc/README.md).
> is there a tutorial?
[a video tutorial (of a previous version) is available on YouTube](https://youtube.com/playlist?list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1), made by Spinning Square Waves.
> I've lost my song!
Furnace keeps backups of the songs you've worked on before. go to **file > restore backup**.
@ -354,6 +382,12 @@ Furnace keeps backups of the songs you've worked on before. go to **file > resto
**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.

View file

@ -1,4 +1,9 @@
# to-do
# to-do long term
- CSM macros
- finish auto-clone
- new pattern renderer - performance improvements
- new info header
- unlimited channels and chips
- fix possible issues when moving selection
- fix Metal intro crash

View file

@ -15,11 +15,11 @@ android {
}
minSdkVersion 21
targetSdkVersion 26
versionCode 192
versionName "0.6.1"
versionCode 214
versionName "0.6.5"
externalNativeBuild {
cmake {
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON"
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON", "-DWITH_LOCALE=ON", "-DUSE_MOMO=ON"
// abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
abiFilters 'arm64-v8a'
}

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.tildearrow.furnace"
android:versionCode="192"
android:versionName="0.6.1"
android:versionCode="214"
android:versionName="0.6.5"
android:installLocation="auto">
<!-- OpenGL ES 2.0 -->

View file

@ -0,0 +1 @@
../../../../../po/locale

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/a2600/twin.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/ay8910/AyMate.fur Normal file

Binary file not shown.

Binary file not shown.

BIN
demos/c64/Hellcharger.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/msx/Juice_Stand.fur Normal file

Binary file not shown.

Binary file not shown.

BIN
demos/msx/Port Sun.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/nes/Famitune1.fur Normal file

Binary file not shown.

Binary file not shown.

BIN
demos/nes/The East.fur Normal file

Binary file not shown.

BIN
demos/nes/infinity.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/quickstart.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/snes/analog.fur Normal file

Binary file not shown.

BIN
demos/snes/aurora.fur Normal file

Binary file not shown.

BIN
demos/snes/encjslt.fur Normal file

Binary file not shown.

Binary file not shown.

BIN
demos/snes/spd10.fur Normal file

Binary file not shown.

BIN
demos/snes/spd12.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -6,6 +6,10 @@ it has a large selection of features and sound chips. from the NES, SNES and Gen
every chip is emulated using many emulation cores, therefore the sound that Furnace produces is authentic to that of real hardware.
## quick start
if you just want to jump right in and get going, we recommended you go through the [quick start guide](quickstart.md) first. it should get you familiar enough with the program to comprehend the rest of the documentation.
## hexadecimal
Furnace uses hexadecimal (abbreviated as "hex") numbers frequently. see [this guide](hex.md) for a crash course.
@ -16,11 +20,7 @@ Furnace uses a music tracker interface. think of a table with music notes writte
for an introduction to a tracker interface, see [tracker concepts and terms](concepts.md) before using Furnace.
there's also a [glossary of common terms](glossary.md).
due to its nature of being feature-packed, it may be technical and somewhat difficult to get around. therefore we added a [basic mode](../2-interface/basic-mode.md), which hides several advanced features.
it also has a flexible windowing system which you may move around and organize.
see [2-interface](../2-interface/README.md) and [3-pattern](../3-pattern/README.md) for more information.
Furnace uses a flexible windowing system which you may move around and organize. see [2-interface](../2-interface/README.md) and [3-pattern](../3-pattern/README.md) for more information.
once familiar with the tracker, look to [9-guides](../9-guides/README.md) for useful techniques.

View file

@ -51,6 +51,8 @@
**FM**: frequency modulation. this is a method of generating sound that uses one operator's amplitude to modify another operator's frequency.
- the FM in Yamaha chips is more accurately called _phase modulation,_ which uses a different method of computation to achieve similar results.
**.ftm**: FamiTracker Module.
**.fui**: a Furnace instrument file.
**.fur**: a Furnace module file.
@ -64,6 +66,8 @@
**interpolate**: to fill in the area between two values with a smooth ramp of values in between.
- some sample-based chips can interpolate, filtering out unwanted harmonics.
**.it**: Impulse Tracker module.
**ladder effect**: an inaccurate yet common term for the DAC distortion that affects some Yamaha FM chips.
**LFO**: low frequency oscillator. a wave with a slow period (often below hearing range) used to alter other sounds.
@ -105,6 +109,8 @@
**register**: a memory location within a sound chip. "register view" shows all the relevant memory of all chips in use.
**.s3m**: ScreamTracker 3 Module.
**sample** (1): a digitally recorded sound. usually stored as some variant of PCM.
- these can take up a lot of room depending on length and sample rate, thus older systems tend to use short, lower quality samples.
@ -140,4 +146,6 @@
**wavetable** (2): an ordered group of wavetables(1) used in sequence within a single instrument.
**.xm**: eXtended Module. the file format of songs made with FastTracker 2.
**.zsm**: ZSound Music. a VGM-like file meant specifically for the Commander X16 computer.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
doc/1-intro/qs-macro.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
doc/1-intro/qs-samplist.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Some files were not shown because too many files have changed in this diff Show more