Merge branch 'master' into ymf289b

This commit is contained in:
tildearrow 2023-08-11 22:25:39 -05:00
commit b58fe36356
228 changed files with 8248 additions and 3664 deletions

View file

@ -283,6 +283,13 @@ if (USE_SDL2)
# If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses.
# This should probably go in a FAQ.
set(SDL_LIBC ON CACHE BOOL "Tell SDL that we want it to use our C runtime (required for proper static linking)" FORCE)
# https://github.com/tildearrow/furnace/issues/1237
# enabling this will result in SDL finding the Direct3D headers, forcing _WIN32_WINNT to an undesirable value (which makes the Wine headers define GetTickCount64)
if (SUPPORT_XP)
set(SDL_RENDER_D3D OFF CACHE BOOL "Enable the Direct3D render driver" FORCE)
endif()
add_subdirectory(extern/SDL EXCLUDE_FROM_ALL)
list(APPEND DEPENDENCIES_DEFINES HAVE_SDL2)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include)
@ -498,6 +505,8 @@ src/engine/platform/sound/sm8521.c
src/engine/platform/sound/d65modified.c
src/engine/platform/sound/ted-sound.c
src/engine/platform/oplAInterface.cpp
src/engine/platform/ym2608Interface.cpp
src/engine/platform/ym2610Interface.cpp
@ -589,6 +598,7 @@ src/engine/platform/ga20.cpp
src/engine/platform/sm8521.cpp
src/engine/platform/pv1000.cpp
src/engine/platform/k053260.cpp
src/engine/platform/ted.cpp
src/engine/platform/pcmdac.cpp
src/engine/platform/dummy.cpp

View file

@ -136,6 +136,7 @@ some people have provided packages for Unix/Unix-like distributions. here's a li
- **FreeBSD**: [a package in ports](https://www.freshports.org/audio/furnace/) is available courtesy of ehaupt (warning: 0.5.8!).
- **Nix**: [package](https://search.nixos.org/packages?channel=unstable&show=furnace&from=0&size=50&sort=relevance&type=packages&query=furnace) thanks to OPNA2608.
- **openSUSE**: [a package](https://software.opensuse.org/package/furnace) is available, courtesy of fpesari.
- **Void Linux**: [furnace](https://github.com/void-linux/void-packages/tree/master/srcpkgs/furnace) is available in the official repository.
---
# developer info

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/ay8910/vibe_zone.fur Normal file

Binary file not shown.

Binary file not shown.

BIN
demos/gameboy/dtect.fur Normal file

Binary file not shown.

BIN
demos/gameboy/freedom.fur Normal file

Binary file not shown.

Binary file not shown.

BIN
demos/gameboy/minos.fur Normal file

Binary file not shown.

BIN
demos/gameboy/spreadtro.fur Normal file

Binary file not shown.

BIN
demos/genesis/mm5_boss.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
demos/msx/21492413.fur Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -20,4 +20,10 @@ 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.
once familiar with the tracker, look to [9-guides](../9-guides/README.md) for useful techniques.
once familiar with the tracker, look to [9-guides](../9-guides/README.md) for useful techniques.
# links
[Furnace Tutorials](https://youtube.com/playlist?list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1): video tutorials created by Spinning Square Waves.

View file

@ -13,6 +13,7 @@ primary topics:
- [play/edit controls](play-edit-controls.md)
- [instrument/wavetable/sample list](asset-list.md)
- [song information](song-info.md)
- [effect list window](effect-list-window.md)
- [pattern view](../3-pattern/README.md)
- [instrument editor](../4-instrument/README.md)
- [wavetable editor](../5-wave/README.md)

View file

@ -33,6 +33,6 @@ Everything from the instrument list applies here also, with one major difference
![samples window](samples.png)
Everything from the wavetables list applies here also, with the addition of two buttons:
Everything from the wavetables list applies here also, with the addition of two buttons before the Delete button:
- **Preview**: Plays the selected sample at its default note.
- **Stop preview**: Stops the sample playback.

View file

@ -0,0 +1,10 @@
# effect list window
(for more details about these effects, see [the effects page](../3-pattern/effects.md))
![effect list window](effect-list.png)
this window provides a list of the effects that are available.
- **Chip at cursor**: the currently selected chip. the list only shows available effects for this chip.
- menu button: opens a small list of effect categories. toggle each to change whether they're shown in the list.

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -2,6 +2,8 @@
the menu bar allows you to select from five menus: file, edit, settings, window and help.
items in _italics_ don't appear in basic mode and are only available in advanced mode.
# file
- **new...**: create a new song.
@ -38,12 +40,12 @@ the menu bar allows you to select from five menus: file, edit, settings, window
- **export command stream...**: export song data to a command stream file. see next section for more details.
- this option is for developers.
- **add chip...**: add a chip to the current song.
- **configure chip...**: set a chip's parameters.
- _**add chip...**:_ add a chip to the current song.
- _**configure chip...**:_ set a chip's parameters.
- for a list of parameters, see [7-systems](../7-systems/README.md).
- **change chip...**: change a chip to another.
- _**change chip...**:_ change a chip to another.
- **Preserve channel positions**: enable this option to make sure Furnace does not auto-arrange/delete channels to compensate for differing channel counts. this can be useful for doing ports, e.g. from Genesis to PC-98.
- **remove chip...**: remove a chip.
- _**remove chip...**_: remove a chip.
- **Preserve channel positions**: same thing as above.
- **restore backup**: restore a previously saved backup.
@ -99,10 +101,10 @@ the following settings exist:
- some chips will not be available, either because VGM doesn't support these yet, or because you selected an old format version.
- **add pattern change hints**: this option adds a "hint" when a pattern change occurs. only useful if you're a developer.
- the format of the "hint" data block that gets written is: `67 66 FE ll ll ll ll 01 oo rr pp pp pp ...`
- ll: length, a 32-bit little-endian number
- oo: order
- rr: initial row (a 0Dxx effect is able to select a different row)
- pp: pattern index (one per channel)
- `ll`: length, a 32-bit little-endian number
- `oo`: order
- `rr`: initial row (a 0Dxx effect is able to select a different row)
- `pp`: pattern index (one per channel)
- **direct stream mode**: this option allows DualPCM to work. don't use this for other chips.
- may or may not play well with hardware VGM players.
@ -140,7 +142,7 @@ it's not really useful, unless you're a developer and want to use a command stre
- **cut**: moves the current selection in the pattern view to clipboard.
- **copy**: copies the current selection in the pattern view to clipboard.
- **paste**: inserts the clipboard's contents in the cursor position.
- **paste special...**: variants of the paste feature.
- _**paste special...**:_ variants of the paste feature.
- **paste mix**: inserts the clipboard's contents in the cursor position, but does not erase the occupied region.
- **paste mix (background)**: does the same thing as paste mix, but doesn't alter content which is already there.
- **paste with ins (foreground)**: same thing as paste mix, but changes the instrument.
@ -154,8 +156,8 @@ it's not really useful, unless you're a developer and want to use a command stre
- if a column is already selected, it will select the entire channel.
- if a channel is already selected, it will select the entire pattern.
- **operation mask**: toggles which columns will be affected by the listed operations. [more information here.](../8-advanced/opmask.md)
- **input latch**: determines which data are placed along with a note. [more information here.](../8-advanced/inputlatch.md)
- _**operation mask**:_ toggles which columns will be affected by the listed operations. [more information here.](../8-advanced/opmask.md)
- _**input latch**:_ determines which data are placed along with a note. [more information here.](../8-advanced/inputlatch.md)
- **note/octave up/down**: transposes notes in the current selection.
@ -188,7 +190,7 @@ it's not really useful, unless you're a developer and want to use a command stre
- **expand song**: same as expand, but affects the entire song.
- it also changes speeds and pattern length to compensate.
- **find/replace**: shows [the Find/Replace window](../8-advanced/find-replace.md).
- _**find/replace**:_ shows [the Find/Replace window](../8-advanced/find-replace.md).
- **clear**: allows you to mass-delete things like songs, instruments and the like.
@ -213,12 +215,12 @@ all these menu items show or hide their associated windows.
- [samples](../6-sample/README.md)
- [orders](order-list.md)
- [pattern](../3-pattern/README.md)
- [mixer](mixer.md)
- [grooves](grooves.md)
- [channels](channels.md)
- [pattern manager](pat-manager.md)
- [chip manager](chip-manager.md)
- [compatibility flags](compat-flags.md)
- _[mixer](mixer.md)_
- _[grooves](grooves.md)_
- _[channels](channels.md)_
- _[pattern manager](pat-manager.md)_
- _[chip manager](chip-manager.md)_
- _[compatibility flags](compat-flags.md)_
- [song comments](comments.md)
- [piano](piano.md)
@ -246,5 +248,5 @@ at the end of the menu bar, more information may be shown:
- volume in decimal, hex, and percentage.
- effect type and description.
- during playback, the current values of the following will be listed:\
speed/groove @ tick rate (BPM) | order | row | elapsed time.
> speed/groove @ tick rate (BPM) | order | row | elapsed time.
- if any changes or edits have been made but not yet saved, "modified" will appear.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -4,214 +4,179 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
# General
## General
- **Workspace layout**
- **Import**: reads a .ini layout file.
- **Export**: writes current layout to a .ini file.
- **Reset**: resets layout to default.
### Program
- **Render backend**
- changing this may help with performace issues.
- **Late render clear**
- **Power-saving mode**: saves power by lowering the frame rate to 2fps when idle.
- may cause issues under Mesa drivers!
- **Disable threaded input (restart after changing!)**: processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.
- however, crashes have been reported when threaded input is on. enable this option if that is the case.
- **Enable event delay**
- may cause issues with high-polling-rate mice when previewing notes.
### File
- **Use system file picker**: uses native OS file dialog instead of Furnace's.
- **Number of recent files**: number of files to show in the _open recent..._ menu.
- **Compress when saving**
- uses zlib to compress saved songs.
- **Save unused patterns**
- **Use new pattern format when saving**
- **Don't apply compatibility flags when loading .dmf**
- **Audio export loop/fade out time:**
- **Set to these values on start-up:**
- **Loops**: number of additional times to play through `0Bxx` song loop.
- **Fade out (seconds)**: length of fade out after final loop.
- **Remember last values**
### Chip
- **Initial system**: the system of chips loaded on starting Furnace.
- **Current system**: sets current chips as default.
- **Randomize**: set default to a random system.
- **Randomize**: sets default to a random system.
- this will not choose a random system at each start.
- **Reset to defaults**: sets default to "Sega Genesis/Mega Drive".
- **Name**: name for the default system. may be set to any text.
- system configuration: same as in the [chip manager](../8-advanced/chip-manager.md) and [mixer](../8-advanced/mixer.md).
- **Configure:**: same as in the [chip manager](../8-advanced/chip-manager.md) and [mixer](../8-advanced/mixer.md).
- **When creating new song**:
- **Display system preset selector**
- **Start with initial system**
- **Restart song when changing chip properties**
### Start-up
- **Play intro on start-up:**
- **No**: skips intro entirely.
- **Short**: shows silent title screen briefly.
- **Full (short when loading song)**: shows animated musical intro unless started with a song (command line, double-clicking a .fur file, etc.)
- **Full (always)**: always shows animated musical intro.
- **When creating new song**:
- **Display system preset selector**
- **Start with initial system**
- **Disable fade-in during start-up**
- **About screen party time**
- _warning:_ may cause epileptic seizures.
### Behavior
- **Double-click time (seconds)**: maximum time between mouse clicks to recognize them as a double-click.
- **Toggle channel solo on:** select which interactions with a channel header will toggle solo for that channel.
- **Push value when overwriting instead of clearing it**: in the order list and pattern editors, typing into an already-filled value will shift digits instead of starting fresh.
- if off: moving the cursor onto the value `A5` and typing a "B" results in `0B`.
- if on: with the cursor on the value `A5` and typing a "B" results in `5B`.
- **Move cursor up on backspace-delete**
- **Move cursor by edit step on delete**
- **Change current instrument when changing instrument column (absorb)**
- **Delete effect value when deleting effect**
- **Change order when scrolling outside of pattern bounds**:
- if off, the pattern edit cursor will stay locked within the current order.
- if on, moving the cursor past the edge of the previous or next order will move to that order.
- **Move cursor by edit step on insert (push)**
- **Move cursor to end of clipboard content when pasting**
- **Don't scroll when moving cursor**
- **Double click selects entire column**
- **Allow docking editors**
- **Don't raise pattern editor on click**
- **Focus pattern editor when selecting instrument**
- **Restart song when changing chip properties**
- **Use system file picker**: use native OS file dialog instead of Furnace's.
- **Only allow window movement when clicking on title bar**
- **Enable event delay**
- may cause issues with high-polling-rate mice when previewing notes.
- **Power-saving mode**
- saves power by lowering the frame rate to 2fps when idle.
- may cause issues under Mesa drivers!
- **Disable threaded input (restart after changing!)**
- threaded input processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.
- however, crashes have been reported when threaded input is on. enable this option if that is the case.
- **Remember window position**
- remembers the window's last position on start-up.
- **New instruments are blank**
- **Save unused patterns**
- **Compress when saving**
- use zlib to compress saved songs.
- **Cursor follows current order when moving it**
- applies when playback is stopped.
- **Audio export loop/fade out time:**
- **Set to these values on start-up:**
- **Loops**: number of additional times to play through `0Bxx` song loop.
- **Fade out (seconds)**: length of fade out after final loop.
- **Remember last values**
- **Note preview behavior:**
- **Never**
- **When cursor is in Note column**
- **When cursor is in Note column or not in edit mode**
- **Always**
- **Wrap pattern cursor horizontally:**
- **No**
- **Yes**
- **Yes, and move to next/prev row**
- **Wrap pattern cursor vertically:**
- **No**
- **Yes**
- **Yes, and move to next/prev pattern**
- **Cursor movement keys behavior:**
- **Move by one**
- **Move by Edit Step**
- **Effect input cursor behavior:**
- **Move down**
- **Move to effect value (otherwise move down)**
- **Move to effect value/next effect and wrap around**
- **Allow dragging selection:**
- **No**
- **Yes**
- **Yes (while holding Ctrl only)**
# Audio/MIDI
## Audio
- **Backend**: select SDL or JACK for audio output.
### Output
- **Backend**: selects SDL or JACK for audio output.
- only appears on Linux, or MacOS compiled with JACK support
- **Driver**
- **Device**: audio device for playback.
- **Sample rate**
- **Outputs**: select number of audio outputs created, up to 16.
- **Outputs**: number of audio outputs created, up to 16.
- only appears when Backend is JACK.
- **Channels**: number of output channels to use.
- **Buffer size**: size of buffer in both samples and milliseconds.
- **Quality**: selects quality of resampling. low quality reduces CPU load.
- **Metronome volume**
- **Low-latency mode (experimental!)**: reduces latency by running the engine faster than the tick rate. useful for live playback/jam mode.
- _warning:_ experimental! may produce glitches. only enable if your buffer size is small (10ms or less).
- **Force mono audio**
- **Software clipping**: clips output to nominal range (-1.0 to 1.0) before passing it to the audio device.
- this avoids activating Windows' built-in limiter.
- **want:** displays requested audio configuration.
- **got:** displays actual audio configuration returned by audio backend.
- **MIDI input**
- **MIDI output**
- **MIDI input settings**
- **Note input**
- **Velocity input**
- **Map MIDI channels to direct channels**
- **Map Yamaha FM voice data to instruments**
- **Program change is instrument selection**
- **Value input style**:
### Mixing
- **Quality**: selects quality of resampling. low quality reduces CPU load.
- **Software clipping**: clips output to nominal range (-1.0 to 1.0) before passing it to the audio device.
- this avoids activating Windows' built-in limiter.
### Metronome
- **Metronome volume**
## MIDI
### MIDI input
- **MIDI input**: input device.
- **Note input**
- **Velocity input**
- **Map MIDI channels to direct channels**
- **Map Yamaha FM voice data to instruments**
- **Program change is instrument selection**
- **Value input style**:
- **Disabled/custom**
- **Two octaves (0 is C-4, F is D#5)**
- **Raw (note number is value)**
- **Two octaves alternate (lower keys are 0-9, upper keys are A-F)**
- **Use dual control change (one for each nibble)**
- **CC of upper nibble**
- **CC of lower nibble**
- **Use 14-bit control change**
- **MSB CC**
- **LSB CC**
- **Use single control change**
- **Control**
- **Per-column control change**
- **Instrument**\
**Volume**\
**Effect `x` type**\
**Effect `x` value**
- **Disabled/custom**
- **Two octaves (0 is C-4, F is D#5)**
- **Raw (note number is value)**
- **Two octaves alternate (lower keys are 0-9, upper keys are A-F)**
- **Use dual control change (one for each nibble)**
- **CC of upper nibble**
- **CC of lower nibble**
- **Use 14-bit control change**
- **MSB CC**
- **LSB CC**
- **Use single control change**
- **Use single control change (imprecise)**
- **Control**
- **Per-column control change**
- **Instrument**\
**Volume**\
**Effect `x` type**\
**Effect `x` value**
- **Disabled/custom**
- **Use dual control change (one for each nibble)**
- **CC of upper nibble**
- **CC of lower nibble**
- **Use 14-bit control change**
- **MSB CC**
- **LSB CC**
- **Use single control change (imprecise)**
- **Control**
- **Volume curve**
- **Actions:**
- **`+`** button: adds a new action.
- window-with-arrow button: new action with learning! press a button or move a slider/knob/something on your device.
- each action has the following:
- **Type**
- **Channel**
- **Note/Control**
- **Velocity/Value**
- **Action**
- **Learn**
- **Remove**
- **Volume curve**
- **Actions:**
- **`+`** button: adds a new action.
- window-with-arrow button: new action with learning! press a button or move a slider/knob/something on your device.
- each action has the following:
- **Type**
- **Channel**
- **Note/Control**
- **Velocity/Value**
- **Action**
- **Learn**
- **Remove**
- **MIDI output settings**
- **Output mode:**
- **Off (use for TX81Z)**
- **Melodic**
- **Send Program Change**
- **Send MIDI clock**
- **Send MIDI timecode**
- **Timecode frame rate:**
- **Closest to Tick Rate**
- **Film (24fps)**
- **PAL (25fps)**
- **NTSC drop (29.97fps)**
- **NTSC non-drop (30fps)**
### MIDI output
# Emulation
- **Arcade/YM2151 core**
- **ymfm**
- **Nuked-OPM**
- **Genesis/YM2612 core**
- **Nuked-OPN2**
- **ymfm**
- **SN76489 core**
- **MAME**
- **Nuked-PSG Mod**
- **NES core**
- **puNES**
- **NSFplay**
- **FDS core**
- **puNES**
- **NSFplay**
- **SID core**
- **reSID**
- **reSIDfp**
- **POKEY core**
- **Atari800 (mzpokeysnd)**
- **ASAP (C++ port)**
- **OPN/OPNA/OPNB cores**
- **ymfm only**
- **Nuked-OPN2 (FM) + ymfm (SSG/ADPCM)**
- **MIDI output**: output device.
- **Output mode:**
- **Off (use for TX81Z)**
- **Melodic**
- **Send Program Change**
- **Send MIDI clock**
- **Send MIDI timecode**
- **Timecode frame rate:**
- **Closest to Tick Rate**
- **Film (24fps)**
- **PAL (25fps)**
- **NTSC drop (29.97fps)**
- **NTSC non-drop (30fps)**
- **PC Speaker strategy:**
- **evdev SND_TONE**
- **KIOCSOUND on /dev/tty1**
- **/dev/port**
- **KIOCSOUND on standard output**
- **outb()**
## Emulation
### Cores
- **Arcade/YM2151 core**\
**Genesis/YM2612 core**\
**SN76489 core**\
**NES core**\
**FDS core**\
**SID core**\
**POKEY core**\
**OPN/OPNA/OPNB cores**: all of these are covered in the [guide to choosing emulation cores](../9-guides/emulation-cores.md).
- **PC Speaker strategy**: this is covered in the [PC speaker system doc](../7-systems/pcspkr.md).
- **Sample ROMs:**
- **OPL4 YRW801 path**
@ -220,16 +185,124 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
# Appearance
## Keyboard
- **Render driver**
- **Automatic UI scaling factor**: automatically match the OS's UI scaling.
- **UI scaling factor**: only if "Automatic UI scaling factor" is off.
- **Main font**: if "Custom...", a file path selector will appear beneath.
- **Size**
- **Pattern font**: if "Custom...", a file path selector will appear beneath.
- **Size**
### Keyboard
- **Import**
- **Export**
- **Reset defaults**
- several categories of keybinds...
- click on a keybind then enter a key or key combination to change it
- right-click to clear the keybind
## Interface
### Layout
- **Workspace layout**
- **Import**: reads a .ini layout file.
- **Export**: writes current layout to a .ini file.
- **Reset**: resets layout to default.
- **Allow docking editors**
- **Remember window position**: remembers the window's last position on start-up.
- **Only allow window movement when clicking on title bar**
- **Play/edit controls layout:**
- **Classic**
- **Compact**
- **Compact (vertical)**
- **Split**
- **Position of buttons in Orders:**
- **Top**
- **Left**
- **Right**
### Mouse
- **Double-click time (seconds)**: maximum time between mouse clicks to recognize them as a double-click.
- **Don't raise pattern editor on click**
- **Focus pattern editor when selecting instrument**
- **Note preview behavior:**
- **Never**
- **When cursor is in Note column**
- **When cursor is in Note column or not in edit mode**
- **Always**
- **Allow dragging selection:**
- **No**
- **Yes**
- **Yes (while holding Ctrl only)**
- **Toggle channel solo on:** selects which interactions with a channel header will toggle solo for that channel.
- Right-click or double click
- Right-click
- Double-click
- **Double click selects entire column**
### Cursor behavior
- **Insert pushes entire channel row**
- **Pull delete affects entire channel row**
- **Push value when overwriting instead of clearing it**: in the order list and pattern editors, typing into an already-filled value will shift digits instead of starting fresh.
- if off: moving the cursor onto the value `A5` and typing a "B" results in `0B`.
- if on: moving the cursor onto the value `A5` and typing a "B" results in `5B`.
- **Effect input behavior:**
- **Move down**
- **Move to effect value (otherwise move down)**
- **Move to effect value/next effect and wrap around**
- **Delete effect value when deleting effect**
- **Change current instrument when changing instrument column (absorb)**
- **Remove instrument value when inserting note off/release**
- **Remove volume value when inserting note off/release**
### Cursor movement
- **Wrap horizontally:**
- **No**
- **Yes**
- **Yes, and move to next/prev row**
- **Wrap vertically:**
- **No**
- **Yes**
- **Yes, and move to next/prev pattern**
- **Yes, and move to next/prev pattern (wrap around)**
- **Cursor movement keys behavior:**
- **Move by one**
- **Move by Edit Step**
- **Move cursor by edit step on delete**
- **Move cursor by edit step on insert (push)**
- **Move cursor up on backspace-delete**
- **Move cursor to end of clipboard content when pasting**
### Scrolling
- **Change order when scrolling outside of pattern bounds**:
- **No**: the pattern edit cursor will stay locked within the current order.
- **Yes**: moving the cursor past the edge of the previous or next order will move to that order, but not past the start or end of a song.
- **Yes, and wrap around song**: as above, but will wrap from song end to start.
- **Cursor follows current order when moving it**
- applies when playback is stopped.
- **Don't scroll when moving cursor**
- **Move cursor with scroll wheel**
## Appearance
### Scaling
- **Automatic UI scaling factor**: automatically matches the OS's UI scaling.
- **UI scaling factor**: only appears if "Automatic UI scaling factor" is off.
- **Icon size**
### Text
- **Main font**: overall interface font.\
**Header font**: font for section headers.\
**Pattern font** font for the pattern view, the order list, and related.
- if "Custom...", a file path selector will appear.
- **Size**: font size.
- **Display Japanese characters**\
**Display Chinese (Simplified) characters**\
**Display Chinese (Traditional) characters**\
@ -237,25 +310,7 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
- only toggle these options if you have enough graphics memory.
- these are a temporary solution until dynamic font atlas is implemented in Dear ImGui.
- **Number of recent files**
- **Pattern view labels:**
- **Note off (3-char)**: default is `OFF`
- **Note release (3-char)**: default is `===`.
- **Macro release (3-char)**: default is `REL`.
- **Empty field (3-char)**: default is `...`.
- **Empty field (2-char)**: default is `..`.
- **Orders row number format:**
- **Decimal**
- **Hexadecimal**
- **Pattern row number format:**
- **Decimal**
- **Hexadecimal**
- **FM parameter names:**
- **Friendly**
- **Technical**
- **Technical (alternate)**
### Program
- **Title bar:**
- **Furnace**
@ -269,44 +324,41 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
- **File path**
- **Cursor details or file path**
- **Nothing**
- **Play/edit controls layout:**
- **Classic**
- **Compact**
- **Compact (vertical)**
- **Split**
- **Position of buttons in Orders:**
- **Top**
- **Left**
- **Right**
- **FM parameter editor layout:**
- **Modern**
- **Compact (2x2, classic)**
- **Compact (1x4)**
- **Compact (4x1)**
- **Alternate (2x2)**
- **Alternate (1x4)**
- **Alternate (4x1)**
- **Position of Sustain in FM editor:**
- **Between Decay and Sustain Rate**
- **After Release Rate**
- **Macro editor layout:**
- **Unified**
- **Mobile**
- **Grid**
- **Single (with list)**
- **Single (combo box)**
- **Namco 163 chip name**
### Orders
- **Channel colors:**
- **Single**
- **Channel type**
- **Instrument type**
- **Channel name colors:**
- **Single**
- **Channel type**
- **Instrument type**
- **Channel style:**
- **Highlight channel at cursor in Orders**
- **Orders row number format:**
- **Decimal**
- **Hexadecimal**
### Pattern
- **Center pattern view**: centers pattern horizontally in view.
- **Overflow pattern highlights**
- **Display previous/next pattern**
- **Pattern row number format:**
- **Decimal**
- **Hexadecimal**
- **Pattern view labels:**
- **Note off (3-char)**: default is `OFF`
- **Note release (3-char)**: default is `===`.
- **Macro release (3-char)**: default is `REL`.
- **Empty field (3-char)**: default is `...`.
- **Empty field (2-char)**: default is `..`.
- **Pattern view spacing after:** number of pixels of space between columns.
- **Note**
- **Instrument**
- **Volume**
- **Effect**
- **Effect value**
- **Single-digit effects for 00-0F**
- **Use flats instead of sharps**
- **Use German notation**: display `B` notes as `H`, and `A#` notes as `B`.
### Channel
- **Channel style:** sets the appearance of channel headers in pattern view.
- **Classic**
- **Line**
- **Round**
@ -328,60 +380,98 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
- **Regular**
- **Monospace**
- **Center channel name**
- **Channel colors:**
- **Single**
- **Channel type**
- **Instrument type**
- **Channel name colors:**
- **Single**
- **Channel type**
- **Instrument type**
### Assets
- **Unified instrument/wavetable/sample list**: combines all three types of assets into one list.
- the buttons act as appropriate to the currently selected asset or header.
- **Horizontal instrument list**: when there are more instruments than there is room to display them...
- if on, scroll horizontally through multiple columns.
- if off, scroll vertically in one long column.
- **Colorize instrument editor using instrument type**
- **Use separate colors for carriers/modulators in FM editor**
- **Unified instrument/wavetable/sample list**
- **Horizontal instrument list**
- **Use standard OPL waveform names**
- **Overflow pattern highlights**
- **Display previous/next pattern**
- **Use German notation**: display `B` notes as `H`, and `A#` notes as `B`.
- **Single-digit effects for 00-0F**
- **Center pattern view**: centers pattern horizontally in view.
- **Unsigned FM detune values**
- **Highlight channel at cursor in Orders**
- **About screen party time**
- _warning:_ may cause epileptic seizures.
- **Display instrument type menu when adding instrument**
- if turned off, the menu can still be opened by right-clicking the add button.
### Macro Editor
- **Macro editor layout:**
- **Unified**
- **Mobile**
- **Grid**
- **Single (with list)**
- **Single (combo box)**
- **Use classic macro editor vertical slider**
### Wave Editor
- **Use compact wave editor**
- **Use classic macro editor vertical slider**
### FM Editor
- **FM parameter names:**
- **Friendly**
- **Technical**
- **Technical (alternate)**
- **Use standard OPL waveform names**
- **FM parameter editor layout:**
- **Modern**
- **Compact (2x2, classic)**
- **Compact (1x4)**
- **Compact (4x1)**
- **Alternate (2x2)**
- **Alternate (1x4)**
- **Alternate (4x1)**
- **Position of Sustain in FM editor:**
- **Between Decay and Sustain Rate**
- **After Release Rate**
- **Use separate colors for carriers/modulators in FM editor**
- **Unsigned FM detune values**: uses the internal representation of detune values, such that detune amounts of -1, -2, and -3 are shown as 5, 6, and 7.
### Statistics
- **Chip memory usage unit:** unit for displaying memory usage in the Statistics window.
- **Bytes**
- **Kilobytes**
### Oscilloscope
- **Rounded corners**
- **Border**
- **Mono**: displays a single monaural waveform of all sound mixed together.
- if turned off, waves will be drawn on top of each other for each output channel.
- all colors are configurable via _Settings > Color > Color scheme > Oscilloscope > Wave (non-mono)._
- **Anti-aliased**: smoothes the lines of the waveform.
- slight performance cost and slightly buggy.
- **Fill entire window**: removes the gap between the waveform and the edge of the window.
- **Waveform goes out of bounds**: allows the waveform to draw past the top and bottom of the oscilloscope.
### Windows
- **Rounded window corners**
- **Rounded buttons**
- **Rounded menu corners**
- **Borders around widgets**
- **Disable fade-in during start-up**
- **Oscilloscope settings:**
- **Rounded corners**
- **Fill entire window**
- **Waveform goes out of bounds**
- **Border**
- **Pattern view spacing after:**
- **Note**
- **Instrument**
- **Volume**
- **Effect**
- **Effect value**
- **Color scheme**
- **Import**
- **Export**
- **Reset defaults**
- **General**
- **Color scheme type:**
- **Dark**
- **Light**
- **Frame shading**
- several more categories...
- **Borders around widgets**: draws thin borders on buttons, checkboxes, text widgets, and the like.
# Keyboard
## Color
### Color scheme
- **Import**
- **Export**
- **Reset defaults**
- several categories of keybinds...
- click on a keybind then enter a key or key combination to change it
- right-click to clear the keybind
- **General**
- **Color scheme type:**
- **Dark**
- **Light**
- **Frame shading**: applies a gradient effect to buttons and input boxes.
- several more categories...

View file

@ -1,13 +1,13 @@
# song info
- **Name**: The track's title.
- **Author**: List of contributors to a song. If the song is a cover of someone else's track, it's customary to list their name first, followed by `[cv. YourName]`.
- **Author**: List of contributors to a song. If the song is a cover of someone else's work, it's customary to list their name first, followed by `[cv. YourName]`.
- **Album**: The associated album name, the name of the game the song is from, or whatever.
- **System**: The game console or computer the track is designed for. This is automatically set when creating a new tune, but it can be changed to anything one wants. The **Auto** button will provide a guess based on the chips in use.
- **System**: The game console or computer the track is designed for. This is automatically set when creating a new tune, but in advanced mode, it can be changed to anything one wants. The **Auto** button will provide a guess based on the chips in use.
All of this metadata will be included in a VGM export. This isn't the case for a WAV export, however.
**Tuning (A-4)**: Set tuning based on the note A-4, which should be 440 in most cases. Opening an Amiga MOD will set it to 436 for hardware compatibility.
- _**Tuning (A-4)**:_ Set tuning based on the note A-4, which should be 440 in most cases. Opening an Amiga MOD will set it to 436 for hardware compatibility. Available only in advanced mode.
# subsongs
@ -23,6 +23,8 @@ This window allows one to create **subsongs** - multiple individual songs within
There are multiple ways to set the tempo of a song.
Items in _italics_ don't appear in basic mode and are only available in advanced mode.
**Tick Rate**: The frequency of ticks per second, thus the rate at which notes and effects are processed.
- All values are allowed for all chips, though most chips have hardware limitations that mean they should stay at either 60 (approximately NTSC) or 50 (exactly PAL).
- Clicking the Tick Rate button switches to a more traditional **Base Tempo** BPM setting.
@ -30,14 +32,14 @@ There are multiple ways to set the tempo of a song.
**Speed**: The number of ticks per row.
- Clicking the "Speed" button changes to more complex modes covered in the [grooves] page.
**Virtual Tempo**: Simulates any arbitrary tempo without altering the tick rate. It does this by adding or skipping ticks to approximate the tempo. The two numbers represent a ratio applied to the actual tick rate. Example:
_**Virtual Tempo**:_ Simulates any arbitrary tempo without altering the tick rate. It does this by adding or skipping ticks to approximate the tempo. The two numbers represent a ratio applied to the actual tick rate. Example:
- Set tick rate to 150 BPM (60 Hz) and speed to 6.
- Set the first virtual tempo number (numerator) to 200.
- Set the second virtual tempo number (denominator) to 150.
- The track will play at 200 BPM.
- The ratio doesn't have to match BPM numbers. Set the numerator to 4 and the denominator to 5, and the virtual BPM becomes 150 × 4/5 = 120.
**Divider**: Changes the effective tick rate. A tick rate of 60Hz and a divisor of 6 will result in ticks lasting a tenth of a second each!
_**Divider**:_ Changes the effective tick rate. A tick rate of 60Hz and a divisor of 6 will result in ticks lasting a tenth of a second each!
**Highlight**: Sets the pattern row highlights:
- The first value represents the number of rows per beat.
@ -46,4 +48,4 @@ There are multiple ways to set the tempo of a song.
**Pattern Length**: The length of each pattern in rows. This affects all patterns in the song, and every pattern must be the same length. (Individual patterns can be cut short by `0Bxx`, `0Dxx`, and `FFxx` commands.)
**Song Length**: How many orders are in the order list. Decreasing it will hide the orders at the bottom. Increasing it will restore those orders; increasing it further will add new orders of all `00` patterns.
_**Song Length**:_ How many orders are in the order list. Decreasing it will hide the orders at the bottom. Increasing it will restore those orders; increasing it further will add new orders of all `00` patterns.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -4,41 +4,85 @@ the pattern view allows you to edit the song.
![pattern view](pattern.png)
a pattern consists of columns ("channels") and rows.
a pattern consists of columns ("channels") and numbered rows.
each column has several subcolumns in this order:
1. note
2. instrument
3. volume
4. effect and effect value (several)
4. effects, split into effect type and effect value
all columns are represented in hexadecimal, except for the note column.
# managing channels
row highlights show beats and measures, and are configured in the [the Speed window](../2-interface/song-info.md).
you may mute channels, toggle solo mode, collapse channels or even hide them.
clicking on a channel name mutes that channel.
double-clicking or right-clicking it enables solo mode, in where only that channel will be audible.
clicking the `++` at the top left corner of the pattern view displays additional buttons for channel configuration:
![channel bar](channelbar.png)
to rename and/or hide channels, see the Channels window (window > channels).
![channels](channels.png)
# cursor and selection
## cursor and selection
you may change the cursor position by clicking anywhere on the pattern.
to select, press and hold the left mouse button. then drag the mouse and release the button to finish selection.
to select an area, press and hold the left mouse button. then drag the mouse and release the button to finish selection.
# keyboard layout
right-clicking within the pattern view brings up a pop-up menu with everything in the [edit menu](../2-interface/menu-bar.md) that makes sense for entering data or altering a selected area.
## shortcuts
## channel bar
using the channel bar, you may adjust several aspects of the channel display.
![channel bar](channelbar.png)
clicking on a channel name mutes that channel.
double-clicking or right-clicking it enables solo mode, in which only that channel will be audible.
clicking the `++` at the top left corner of the pattern view cycles through three channel bar view modes:
- **Compact**: shows only channel names.
- **Expanded**: as shown above. adds buttons:
- **-**: collapse visible columns. changes to **+** when columns are hidden; click to expand them.
- **<**: disables the last effect column and hides it. effects are not deleted...
- **>**: adds an effects column. if one previously existed, its contents will be preserved.
- **Pattern names**: adds a text field with which one can name the current pattern. pattern names are also visible when hovering over a pattern in the order list.
right-clicking the `++` toggles the visualizer, which is active only during playback.
to rename and/or hide channels, open [the Channels window](../8-advanced/channels.md) via the window menu.
# input
## note input
![keyboard](keyboard.png)
- pressing any of the respective keys will insert a note at the cursor's location, then advance to the next row (or otherwise according to the Edit Step.)
- **note off** turns off the last played note in that channel (key off for FM; note cut otherwise).
- **note release** triggers macro release (and in FM channels it also triggers key off).
- **macro release** does the same as above, but does not trigger key off in FM channels.
- **toggle edit** enables and disables editing. when editing is enabled, the cursor's row will be shaded red.
## instrument/volume input
type any hexadecimal number (0-9 and A-F). the cursor will move by the Edit Step when a suitable value is entered.
## effect input
works like the instrument/volume input.
each effect column has two subcolumns: effect and effect value.
if the effect value is not present, it is treated as `00`.
most effects run until canceled using an effect of the same type with effect value `00`, with some exceptions.
here's [a list of effect types](effects.md).
# keyboard shortcuts
these are the default key functions. all keys are configurable in the Keyboard tab of the Settings window.
key | action
------------|-----------------------------------------------------------------
@ -68,27 +112,3 @@ Ctrl-F2 | transpose selection (+1 semitone)
Ctrl-F3 | transpose selection (-1 octave)
Ctrl-F4 | transpose selection (+1 octave)
Space | toggle note input (edit)
## note input
![keyboard](keyboard.png)
- pressing any of the respective keys will insert a note at the cursor's location, and then advance it by the Edit Step.
- note off turns off the last played note in that channel (key off on FM; note cut otherwise).
- note release triggers macro release (and in FM channels it also triggers key off).
- macro release does the same as above, but does not trigger key off in FM channels.
## instrument/volume input
type any hexadecimal number (0-9 and A-F). the cursor will move by the Edit Step when a suitable value is entered.
## effect input
works like the instrument/volume input.
each effect column has two subcolumns: effect and effect value.
if the effect value is not present, it is treated as `00`.
most effects run until canceled using an effect of the same type with effect value `00`, with some exceptions.
for a list of effects [click here](effects.md).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

View file

@ -14,7 +14,7 @@ however, effects are continuous, which means you only need to type it once and t
- `F4xx`: **Fine volume slide down.** same as `0A0x` but 64× slower.
- `F8xx`: **Single tick volume slide up.** adds `x` to volume on first tick only.
- `F9xx`: **Single tick volume slide down.** subtracts `x` from volume on first tick only.
- ---
- `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth.
- Tremolo is downward only.
- Maximum tremolo depth is -60 volume steps.
@ -26,16 +26,17 @@ however, effects are continuous, which means you only need to type it once and t
- `02xx`: **Pitch slide down.**
- `F1xx`: **Single tick pitch slide up.**
- `F2xx`: **Single tick pitch slide down.**
- `03xx`: **Portamento.** slides the current note's pitch to the specified note. `x` is the slide speed.
- A note _must_ be present for this effect to work.
- ---
- `03xx`: **Portamento.** slides the currently playing note's pitch toward the new note. `x` is the slide speed.
- a note _must_ be present with this effect for it to work.
- the effect stops automatically when it reaches the new note.
- `E1xy`: **Note slide up.** `x` is the speed, while `y` is how many semitones to slide up.
- `E2xy`: **Note slide down.** `x` is the speed, while `y` is how many semitones to slide down.
- `EAxx`: **Toggle legato.** while on, notes instantly change the pitch of the currrently playing sound instead of starting it over.
- ---
- `EAxx`: **Toggle legato.** while on, new notes instantly change the pitch of the currently playing sound instead of starting it over.
- `00xy`: **Arpeggio.** after using this effect the channel will rapidly switch between semitone values of `note`, `note + x` and `note + y`.
- `E0xx`: **Set arpeggio speed.** this sets the number of ticks between arpeggio values. default is 1.
- ---
- `04xy`: **Vibrato.** changes pitch to be "wavy" with a sine LFO. `x` is the speed, while `y` is the depth.
- Maximum vibrato depth is ±1 semitone.
- `E3xx`: **Set vibrato direction.** `xx` may be one of the following:
@ -54,7 +55,7 @@ not all chips support these effects.
- `82xx`: **Set volume of right channel** (from `00` to `FF`).
- `89xx`: **Set volume of rear left channel** (from `00` to `FF`).
- `8Axx`: **Set volume of rear right channel** (from `00` to `FF`).
- ---
- `80xx`: **Set panning (linear).** this effect behaves more like other trackers:
- `00` is left.
- `80` is center.
@ -64,15 +65,15 @@ not all chips support these effects.
- `09xx`: **Set speed/groove.** if no grooves are defined, this sets speed. If alternating speeds are active, this sets the first speed.
- `0Fxx`: **Set speed 2.** during alternating speeds or a groove, this sets the second speed.
- ---
- `Cxxx`: **Set tick rate.** changes tick rate to `xxx` Hz (ticks per second).
- `xxx` may be from `000` to `3FF`.
- `F0xx`: **Set BPM.** changes tick rate according to beats per minute. range is `01` to `FF`.
- ---
- `0Bxx`: **Jump to order.** `x` is the order to play after the current row.
- this marks the end of a loop with order `x` as the loop start.
- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order.
- this can be used to shorten the current order.
- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order. `x` is the row at which to start playing the next pattern.
- this can be used to shorten the current order as though it had a different pattern length.
- `FFxx`: **Stop song.** stops playback and ends the song. `x` is ignored.
## note
@ -86,12 +87,12 @@ not all chips support these effects.
- `9xxx`: **Set sample position.** jumps current sample to position `xxx * 0x100`.
- Not all chips support this effect.
- `EBxx`: **Set sample bank.**
- Does not apply on Amiga.
- `EBxx`: **Set LEGACY sample mode bank.** selects sample bank. used only for compatibility.
- does not apply on Amiga.
- `EExx`: **Send external command.**
- This effect is currently incomplete.
- `F5xx`: **Disable macro.** see macro table at the end of this document for possible values.
- `F6xx`: **Enable macro.**
- this effect is currently incomplete.
- `F5xx`: **Disable macro.**\
`F6xx`: **Enable macro.** see macro table at the end of this document for possible values.
additionally, [each chip has its own effects](../7-systems/README.md).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View file

@ -1,11 +1,3 @@
# instrument list
![instrument list](list.png)
click on an instrument to select it.
double-click to open the instrument editor.
# instrument editor
every instrument can be renamed and have its type changed.
@ -66,14 +58,16 @@ Some macros are "bitmap" style. They represent a number of "bits" that can be to
The number between the macro type label and the macro type button is the macro length in steps. The `-` and `+` buttons change the length of the macro. Start out by adding at least a few steps.
The values of the macro can be drawn in the "bar graph box". Just beneath the box is shorter bar graph.
- Click to set the start point of a loop; the end point is the last value or release point. Right-click to remove the loop.
- Shift-click to set the release point. When played, the macro will hold here until the note is released. Right-click to remove the release point.
The values of the macro can be drawn in the "bar graph" box.
Just beneath the box is a shorter bar that controls looping.
- Click to set the start point of a loop; the end point is the last value or release point. It appears as half-height bars. Right-click to remove the loop.
- Shift-click to set the release point. When played, the macro will hold here until the note is released. It appears as a full-height bar. Right-click to remove the release point.
Finally, the sequence of values can be directly edited in the text box at the bottom.
- The loop start is entered as a `|`.
- The release point is entered as a `/`.
- In arpeggio macros, a value starting with a `@` is an absolute note (instead of a relative shift). No matter the note played, `@` values will be played at that exact note. This is especially useful for noise instruments with preset periods.
- In arpeggio macros, a value starting with a `@` is an absolute note (instead of a relative shift). No matter the note entered in the pattern, `@` values will be played at that exact note. This is especially useful for noise instruments with preset periods.
### ADSR
@ -100,15 +94,29 @@ Finally, the sequence of values can be directly edited in the text box at the bo
- **Phase** is which part of the waveform the macro will start at, measured in 1/1024 increments.
- **Shape** is the waveform used. Triangle is the default, and Saw and Square are exactly as they say.
# samples
# wavetable
This tab appears for PC Engine, FDS, Namco WSG, and other wavetable-based instruments.
![wavetable tab](wavetable.png)
When **Enable synthesizer** is off, the only option is to select a wavetable entry with the text entry box beneath the **Wave 1** preview.
To use the wavetable synthesizer, refer to the bottom part of [the wavetable documentation](../5-wave/README.md).
# sample
This tab appears for Generic PCM, SNES, Amiga, and other sample-based instruments.
![](sample-map.png)
![sample tab](sample-map.png)
- **Initial Sample**: the sample that the instrument will use.
- **Use wavetable**: instead of samples, use wavetables. this causes the [Wavetables](../5-wave/README.md) tab to appear next to Sample.
- depending on the system and use of the wavetable synthesizer, this may or may not be reproducible on hardware.
- **Use sample map**: assigns a sample to each note.
- samples will be played at their default pitch.
- to set a note's sample, click the list entry in the `#` column then type the number of the sample.
- to set a note's sample, click the list entry in the "#" column then type the number of the sample.
- to set the pitch at which a sample is played, click the list entry in the "note" column and press the key for the new note.

View file

@ -1,47 +1,77 @@
# FM synthesis instrument editor
FM editor is divided into 7 tabs:
The FM editor is divided into 7 tabs:
- **FM**: for controlling the basic parameters of FM sound source.
- **Macros (FM)**: for macros controlling algorithm, feedback and LFO
- **Macros (OP1)**: for macros controlling FM paramets of operator 1
- **Macros (OP2)**: for macros controlling FM paramets of operator 2
- **Macros (OP3)**: for macros controlling FM paramets of operator 3
- **Macros (OP4)**: for macros controlling FM paramets of operator 4
- **Macros**: for miscellaneous macros controlling volume, argeggio and YM2151 noise generator.
- **Macros (OP1)**: for macros controlling FM parameters of operator 1
- **Macros (OP2)**: for macros controlling FM parameters of operator 2
- **Macros (OP3)**: for macros controlling FM parameters of operator 3
- **Macros (OP4)**: for macros controlling FM parameters of operator 4
- **Macros**: for miscellaneous macros controlling volume, arpeggio, and YM2151 noise generator.
## FM
FM synthesizers Furnace supports are four-operator, meaning it takes four oscillators to produce a single sound. Each operator is controlled by a dozen sliders:
The FM synthesizers Furnace supports are four-operator, meaning it takes four oscillators to produce a single sound.
These apply to the instrument as a whole:
- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself. (0-7 range)
- **Algorithm (AL)**: Determines how operators are connected to each other. (0-7 range)
- Left-click pops up a small "operators changes with volume?" dialog where each operator can be toggled to scale with volume level.
- Right-click to switch to a preview display of the waveform generated on a new note:
- Left-click restarts the preview.
- Middle-click pauses and unpauses the preview.
- Right-click returns to algorithm view.
- **LFO Frequency Sensitivity**: Determines the amount of LFO frequency changes. (0-7 range)
- **LFO Amplitude Sensitivity (AM)**: Determines the amount of LFO amplitude changes. (0-3 range)
These apply to each operator:
- The crossed-arrows button can be dragged to rearrange operators.
- The **OP1**, **OP2**, **OP3**, and **OP4** buttons enable or disable those operators.
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO.
- **Hardware Envelope Generator (SSG-EG)**: Executes the built-in envelope, inherited from AY-3-8910 PSG. Speed of execution is controlled via Decay Rate. YM2610/YM2612 sound source only.
- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack. (0-31 range)
- **Decay Rate (DR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. It's the initial amplitude decay rate. (0-31 range)
- **Secondary Decay Rate (DR2)/Sustain Rate (SR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. This is the long "tail" of the sound that continues as long as the key is depressed. (0-31 range)
- **Sustain Level (SL)**: Determines the point at which the sound ceases to decay and changes to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. (0-15 range)
- **Secondary Decay Rate (DR2) / Sustain Rate (SR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. This is the long "tail" of the sound that continues as long as the key is depressed. (0-31 range)
- **Release Rate (RR)**: Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. (0-15 range)
- **Sustain Level(SL)**: Determines the point at which the sound ceases to decay and changes to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. (0-15 range)
- **Total Level (TL)**: Represents the envelopes highest amplitude, with 0 being the largest and 127 (decimal) the smallest. A change of one unit is about 0.75 dB.
- **Envelope Scale (KSR)**: A parameter that determines the degree to which the envelope execution speed increases according to the pitch. (0-3 range)
![FM ADSR chart](FM-ADSRchart.png)
- **Envelope Scale (KSR)**: Also known as "Key Scale". Determines the degree to which the envelope execution speed increases according to the pitch. (0-3 range)
- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch. (0-15 range)
- **Fine Detune (DT)**: Shifts the pitch a little (0-7 range)
- **Coarse Detune (DT2)**: Shifts the pitch by tens of cents (0-3 range) WARNING: this parameter affects only YM2151 sound source!!!
- **Hardware Envelope Generator (SSG-EG)**: Executes the built-in envelope, inherited from AY-3-8910 PSG. Speed of execution is controlled via Decay Rate. WARNING: this parameter affects only YM2610/YM2612 sound source!!!
- **Algorithm (AL)**: Determines how operators are connected to each other. (0-7 range)
- **Feedback (FB)**: Determines the amount of signal whick operator 1 returns to itself. (0-7 range)
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO.
- **LFO Frequency Sensitivity**: Determines the amount of LFO frequency changes. (0-7 range)
- **LFO Amplitude Sensitivity (AM)**: Determines the amount of LFO frequency changes. (0-3 range)
- **Fine Detune (DT)**: Shifts the pitch a little. (0-7 range)
- **Coarse Detune (DT2)**: Shifts the pitch by tens of cents. (0-3 range) YM2151 sound source only.
## macros
Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled:
## FM Macros
- **AM Depth**: amplitude modulation depth. YM2151 sound source only.
- **PM Depth**: pitch modulation depth. YM2151 sound source only.
- **LFO Speed**: LFO frequency.
- **LFO Shape**: LFO shape. Choose between saw, square, triangle, and random.
- **OpMask**: toggles each operator.
## OP1-OP4 Macros
All parameters are listed above.
## Macros
Macros define the sequence of values passed to the given parameter. Via macro, aside previously mentioned parameters, the following can be controlled:
- **LFO Frequency**
- **LFO Waveform**: _WARNING:_ this parameter affects only YM2151 sound source!
- **Amplitude Modulation Depth**: _WARNING:_ this parameter affects only YM2151 sound source!
- **Frequency Modulation Depth**: _WARNING:_ this parameter affects only YM2151 sound source!
- **Arpeggio Macro**: Pitch change sequence in semitones. Two modes are available:
- **Absolute** (default): Executes the pitch with absolute change based on the pitch of the actual note.
- **Fixed**: Executes at the pitch specified in the sequence regardless of the note pitch.
- **Arpeggio**: Pitch change sequence in semitones.
- **Noise Frequency**: specifies the noise frequency in noise mode of YM2151's Channel 8 Operator 4 special mode.
- **Panning**: toggles output on left and right channels.
- **Pitch**: fine pitch.
- **Relative**: pitch changes are relative to the current pitch, not the note's base pitch.
- **Phase Reset**: Restarts all operators and resets the waveform to its start. Effectively the same as a `0Cxx` retrigger.
Looping: You can loop the execution of part of a sequence. Left-click anywhere on the Loop line at the bottom of the editor to create a loop. You can move the start and end points of the loop by dragging both ends of the loop. Rigkt-click to remove the loop.
# links
[FM instrument tutorial](https://www.youtube.com/watch?v=wS8edjurjDw): A great starting point to learn how create and work with FM sounds. This was made for DefleMask, but all the same principles apply.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

View file

@ -5,11 +5,11 @@ The Namco 163 instrument editor consists of two tabs: "Namco 163" for control of
## Namco 163
- **Load waveform**: if enabled, a waveform will be loaded when this instrument plays.
- if it isn't then only the offset/length change.
- if it isn't then only the position/length change.
- **Waveform**: determines the waveform that will be loaded.
- only appears when Load waveform is enabled.
- **Per-channel wave offset/length**: when enabled, the offset/length settings are split per channel.
- **Offset**: determines the waveform position in RAM.
- **Per-channel wave position/length**: when enabled, the position/length settings are split per channel.
- **Position**: determines the waveform position in RAM.
- **Length**: determines the waveform length in RAM.
## Macros

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

11
doc/4-instrument/ted.md Normal file
View file

@ -0,0 +1,11 @@
# TED instrument editor
TED instrument editor consists of these macros:
- **Volume**: volume sequence. **global!**
- **Arpeggio**: pitch sequence
- **Square/Noise**: select whether square, noise or nothing will be output
- noise only available on channel 2
- if square and noise are enabled, square takes precedence.
- **Pitch**: "fine" pitch
- **Phase Reset**: trigger restart of waveform. **global!**

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View file

@ -2,19 +2,19 @@
Wavetable synthesizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape.
Each chip has its own maximum size, shown in the following table. If a larger wave is defined for these chips, it will be squashed to fit within the constraints of the chips. Some hardware doesn't work well with the wavetable synthesizer (described below); these systems are marked in the "synth?" column.
Each chip has its own maximum size, shown in the following table. If a larger wave is defined for these chips, it will be squashed to fit within the constraints of the chips. Some hardware doesn't work well with the wavetable synthesizer (described below); these systems are marked in the "notes" column.
system | width | height | synth?
system | width | height | notes
--------------------|------:|:-------|:------
Bubble System | 32 | 16 |
Game Boy | 32 | 16 |
Game Boy | 32 | 16 | phase reset on waveform change (clicking)
SM8521 | 32 | 16 |
Namco WSG | 32 | 16 | RAM only
WonderSwan | 32 | 16 |
Namco 163 | ≤128 | 16 |
Namco 163 | ≤240 | 16 | limits differ depending on channel count
SNES | ≤256 | 16 |
PC Engine | 32 | 32 |
Virtual Boy | 32 | 64 | no
PC Engine | 32 | 32 | phase reset on waveform change (clicking)
Virtual Boy | 32 | 64 | wavesynth unsupported
Famicom Disk System | 64 | 64 |
Konami SCC | 32 | 256 |
Seta X1-010 | 128 | 256 |

View file

@ -32,17 +32,16 @@ the following sound chips have sample support:
- Ensoniq OTTO/ES5506
- Yamaha PCMD8/YMZ280B
- MMC5 (last channel only)
- SNES/S-DSP
## compatible sample mode
## compatible sample mode (LEGACY)
effect `17xx` enables/disables compatible sample mode whether supported (e.g. on Sega Genesis or PC Engine).
**use of this mode is discouraged in favor of Sample type instruments.**
effect `17xx` enables/disables compatible sample mode where supported (e.g. on Sega Genesis or PC Engine).
in this mode, samples are mapped to notes in an octave from C to B, allowing you to use up to 12 samples.
if you need to use more samples, you may change the sample bank using effect `EBxx`.
use of this mode is discouraged in favor of Sample type instruments.
## notes
due to limitations in some of those sound chips, some restrictions exist:

View file

@ -1,56 +1,122 @@
# sound chips
# systems
this is a list of sound chips that Furnace supports, including effects.
this is a list of some of the systems that Furnace supports, as shown in the new file dialog. each chip links to a page with information and a list of supported effects.
some systems have alternate chips, such as the Sega Genesis having a YM2612, a YM3438, or YMF276 depending on the model. this list shows the default configuration.
- **Sega Genesis**: [YM3438](ym2612.md), [SN76489](sms.md)
- **Sega Genesis (with Sega CD)**: [YM3438](ym2612.md), [SN76489](sms.md), [RF5C164](ricoh.md)
<!-- -->
- **Sega Master System**: [SN76489](sms.md)
- **Sega Master System (with FM expansion)**: [SN76489](sms.md), [YM2413](opll.md)
<!-- -->
- **NES**: [2A03](nes.md)
- **Famicom with Konami VRC6**: [2A03](nes.md), [VRC6](vrc6.md)
- **Famicom with Konami VRC7**: [2A03](nes.md), [VRC7](opl.md)
- **Famicom with MMC5**: [2A03](nes.md), [MMC5](mmc5.md)
- **Famicom with Sunsoft 5B**: [2A03](nes.md), [5B](ay8910.md)
- **Famicom with Namco 163**: [2A03](nes.md), [N163](n163.md)
- **Famicom Disk System**: [2A03](nes.md), [FDS](fds.md)
<!-- -->
- **Game Boy**: [Game Boy](game-boy.md)
<!-- -->
- **SNES**: [SNES](snes.md)
<!-- -->
- **NEC PC Engine/TurboGrafx-16**: [HuC6280](pce.md)
<!-- -->
- **Commodore VIC-20**: [VIC](vic20.md)
<!-- -->
- **Commodore 64 (6581 SID)**: [MOS 6581](c64.md)
- **Commodore 64 (8580 SID)**: [MOS 8580](c64.md)
<!-- -->
- **Amiga**: [Amiga](amiga.md)
<!-- -->
- **Arcade (YM2151 and SegaPCM)**: [YM2151](ym2152.md), [SegaPCM](segapcm.md)
<!-- -->
- **Capcom CPS-1**: [YM2151](ym2152.md), [MSM6295](msm6295.md)
- **Capcom CPS-2 (QSound)**: [QSound](qsound.md)
<!-- -->
- **Neo Geo CD**: [YM2610](ym2610.md)
- **Neo Geo CD (extended channel 2)**: [YM2610](ym2610.md)
<!-- -->
- **Neo Geo Pocket**: [T6W28](t6w28.md), [DAC](dac.md)
<!-- -->
- **Atari 2600/7800**: [TIA](tia.md)
- **Atari 800**: [POKEY](pokey.md)
<!-- -->
- **Konami Bubble System**: [AY-3-8910](ay8910.md) × 2, [Konami WSG](bubblesystem.md)
<!-- -->
- **Sharp X68000**: [YM2151](ym2152.md), [MSM6258](msm6258.md)
<!-- -->
- **PC + Sound Blaster Pro**: [YM3812](opl.md) × 2, [DAC](dac.md), [PC Speaker](pcspkr.md)
<!-- -->
- **MSX**: [AY-3-8910](ay8910.md)
- **MSX + SCC**: [YM2149(F)](ay8910.md), [SCC](scc.md)
<!-- -->
- **Commander X16 (VERA only)**: [VERA](vera.md)
<!-- -->
- and many, many more!
# chips
this is the full list of chips that Furnace supports.
- [2A03](nes.md)
- [Amiga](amiga.md)
- [AY-3-8910](ay8910.md)
- [Microchip AY8930](ay8930.md)
- [Bubble System WSG](bubblesystem.md)
- [Casio PV-1000](pv1000.md)
- [Commodore 64](c64.md)
- [Commodore PET](pet.md)
- [Commodore VIC-20](vic20.md)
- [Generic PCM DAC](dac.md)
- [Famicom Disk System](fds.md)
- [Game Boy](game-boy.md)
- [Konami K007232](k007232.md)
- [Konami K056320](k056320.md)
- [AY-3-8910/8914/YM2149(F)/Sunsoft 5B](ay8910.md)
- [Microship AY8930](ay8930.md)
- [MOS 6581/8580 (SID)](c64.md)
- [Ensoniq ES5506](es5506.md)
- [Konami SCC](scc.md)
- [Konami VRC6](vrc6.md)
- [Atari Lynx](lynx.md)
- [FDS](fds.md)
- [Game Boy](game-boy.md)
- [Generic PCM DAC](dac.md)
- [Irem GA20](ga20.md)
- [Bubble System WSG](bubblesystem.md)
- [K007232](k007232.md)
- [K053260](k056320.md)
- [Lynx](lynx.md)
- [MMC5](mmc5.md)
- [MSM5232](msm5232.md)
- [MSM6258](msm6258.md)
- [MSM6295](msm6295.md)
- [Namco 163](n163.md)
- [Namco WSG](namco.md)
- [NES](nes.md)
- [Nintendo MMC5](mmc5.md)
- [OKI MSM5232](msm5232.md)
- [OKI MSM6258](msm6258.md)
- [OKI MSM6295](msm6295.md)
- [PC Engine/TurboGrafx-16](pce.md)
- [Namco WSG/C15/C30](namco.md)
- [HuC6280](pce.md)
- [PC Speaker](pcspkr.md)
- [Philips SAA1099](saa1099.md)
- [Pokémon mini](pokemini.md)
- [Capcom QSound](qsound.md)
- [Ricoh RF5C68](ricoh.md)
- [PET](pet.md)
- [Pokémon Mini](pokemini.md)
- [POKEY](pokey.md)
- [PV-1000](pv1000.md)
- [QSound](qsound.md)
- [RF5C68/RF5C164](ricoh.md)
- [SAA1099](saa1099.md)
- [SegaPCM](segapcm.md)
- [Seta/Allumer X1-010](x1-010.md)
- [SM8521](sm8521.md)
- [SN76489/Sega PSG](sms.md)
- [SNES](snes.md)
- [Atari 2600 (TIA)](tia.md)
- [tildearrow Sound Unit](soundunit.md)
- [TI SN76489](sms.md)
- [Toshiba T6W28](t6w28.md)
- [T6W28](t6w28.md)
- [TED](ted.md)
- [TIA](tia.md)
- [VERA](vera.md)
- [WonderSwan](wonderswan.md)
- [VIC](vic20.md)
- [Virtual Boy](virtual-boy.md)
- [Yamaha YM2413 (OPLL)](opll.md)
- [Yamaha OPL](opl.md)
- [Yamaha YM2151](ym2151.md)
- [Yamaha YM2203](ym2203.md)
- [Yamaha YM2414 (OPZ)](opz.md)
- [Yamaha YM2608](ym2608.md)
- [Neo Geo/YM2610](ym2610.md)
- [Taito Arcade/YM2610B](ym2610b.md)
- [Yamaha YM2612](ym2612.md)
- [Yamaha YMZ280B](ymz280b.md)
- [VRC6](vrc6.md)
- [WonderSwan](wonderswan.md)
- [X1-010](x1-010.md)
- [VRC7, Y8950, YM3526, YM3812 and YMF262 (OPL)](opl.md)
- [YM2413 (OPLL)](opll.md)
- [YM2414 (OPZ)](opz.md)
- [YM2151 (OPM)](ym2152.md)
- [YM2203 (OPN)](ym2203.md)
- [YM2608 (OPNA)](ym2608.md)
- [YM2610 (OPNB)](ym2610.md)
- [YM2610B (OPNB2)](ym2610b.md)
- [YM2612/YM3438 (OPN2)](ym2612.md)
- [YMZ280B](ymz280b.md)
- [ZX Spectrum Beeper](zxbeep.md)
Furnace also reads .dmf files with the [Yamaha YMU759](ymu759.md) system, but...

View file

@ -18,6 +18,8 @@ imported MOD files use this chip, and will set A-4 tuning to 436.
# info
this chip uses the [Generic Sample](../4-instrument/amiga.md) instrument editor.
- the maximum rate for sample playback is technically 31469Hz but anything higher than 28867Hz will sound glitchy on hardware.
- sample lengths and loop will be set to an even number.
- samples can't be longer than 131070.

View file

@ -47,7 +47,11 @@ as of Furnace 0.6pre7, AY-3-8910 supports software sample playback, where all 3
- `2Fxx`: **write to I/O port B.**
- this changes the port's mode to "write". make sure you have connected something to it.
# chip config
# info
this chip uses the [AY-3-8910](../4-instrument/ay8910.md) instrument editor.
## AY derivative modes
AY-3-810 was an absurdly popular chip that was blessed with many third-party clones, licensed or not.

View file

@ -55,3 +55,7 @@ as of Furnace 0.6pre7, AY8930 supports software PCM, where all 3 channels can pl
- `x` is the numerator.
- `y` is the denominator.
- if `x` or `y` are 0 this will disable auto-envelope mode.
# info
this chip uses the [AY8930](../4-instrument/8930.md) instrument editor.

View file

@ -11,3 +11,7 @@ Furnace emulates this configuration as a "chip" with 32×16 wavetables.
# effects
- `10xx`: **change wave.**
# info
this chip uses the [Konami SCC/ Bubble System WSG](../4-instrument/scc.md) instrument editor.

View file

@ -57,3 +57,7 @@ two versions of aforementioned chip exist - 6581 (original chip) and 8580 (impro
- `6`: disable channel 3 (`y` is `0` or `1`)
- `3xxx`: **set duty cycle.** `xxx` range is `000` to `FFF`.
- `4xxx`: **set cutoff.** `xxx` range is `000` to `7FF`.
# info
this chip uses the [C64](../4-instrument/c64.md) instrument editor.

View file

@ -7,3 +7,7 @@ with it, you can emulate PCM DACs found in Williams arcade boards, Sound Blaster
# effects
none yet.
# info
this chip uses the [Generic Sample](../4-instrument/amiga.md) instrument editor.

View file

@ -39,3 +39,7 @@ it supports a whopping 32 channels of 16-bit PCM and:
- `8Axx`: **set panning (rear right channel).**
- `9xxx`: **set sample offset.** resets sample position to `xxx * 0x100`.
- `DFxx`: **set sample playback direction.**
# info
this chip uses the [ES5506](../4-instrument/es5506.md) instrument editor.

View file

@ -25,3 +25,7 @@ it also offers an additional 6-bit, 64-byte wavetable sound channel with (somewh
- 6: -2
- 7: -1
- why is this mapping so unnatural? because that's how DefleMask does it (yeah, as you may have guessed this effect is mostly for compatibility reasons)...
# info
this chip uses the [FDS](../4-instrument/fds.md) instrument editor.

8
doc/7-systems/ga20.md Normal file
View file

@ -0,0 +1,8 @@
# Irem GA20
ga20 is a 4 channel PCM sound source used by Irem in their arcades in late 1980s and eraly 1990s, often paired with [Yamaha YM2151](ym2151.md). Soundchip itself is rather unremarkable, having 8-bit volume and pitch control, no stereo panning
# effects
none

View file

@ -21,6 +21,11 @@ with stereo sound, two pulse channels, a wave channel and a noise channel, it pa
- set to `0` to disable it.
- `14xx`: **set sweep direction.** `0` is up and `1` is down.
# info
this chip uses the [Game Boy](../4-instrument/game-boy.md) instrument editor.
# links
- [Gameboy sound hardware](https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware) - detailed technical information

View file

@ -9,3 +9,7 @@ it has 7 bit digital output per each channel and no volume register on chip, so
# effects
- nothing for now.
# info
this chip uses the [K007232](../4-instrument/k007232.md) instrument editor.

View file

@ -1,9 +1,13 @@
# Konami 056320
the 056320 is a sample-based chip that featured in a number of Konami arcade games, notably _Sunset Riders_ and _Teenage Mutant Ninja Turtles: Turtles in Time_. it has four channels of audio and stereo output, and can access up to 2MB of samples in 8-bit PCM or 4-bit ADPCM formats.
the 056320 is a sample-based chip that featured in a number of Konami arcade games, notably _Sunset Riders_ and _Teenage Mutant Ninja Turtles: Turtles in Time_. it has four channels of audio, 12-bit pitch resolution and stereo output, and can access up to 2MB of samples in 8-bit PCM or 4-bit ADPCM formats.
# effects
- `DFxx`: Set sample playback direction. `0` is normal; `1` is reverse.
# info
this chip uses the [K056320](../4-instrument/k056320.md) instrument editor.

View file

@ -17,3 +17,7 @@ the Atari Lynx has a 6502-based CPU with a sound part (this chip is known as MIK
- `3xxx`: **load LFSR.** this is a bitmask with values ranging from `000` to `FFF`.
- for it to work, duty macro in instrument editor must be set to some value. without it LFSR will not be fed with any bits.
# info
this chip uses the [Atari Lynx](../4-instrument/lynx.md) instrument editor.

View file

@ -10,3 +10,7 @@ additionally, it offers an 8-bit DAC which can be used to play samples. only one
- `12xx`: **set duty cycle or noise mode of channel.**
- may be `0` through `3` for the pulse channels.
# info
this chip uses the [NES](../4-instrument/nes.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -24,3 +24,7 @@ Furnace implements this chip in a way that allows the following features:
- only in internal (capacitor-based) envelope mode.
- `13xx`: **set group decay.** range is `0` to `11`.
- only in internal (capacitor-based) envelope mode.
# info
this chip uses the [MSM5232](../4-instrument/msm5232.md) instrument editor.

View file

@ -18,3 +18,7 @@ MSM6258 is an extremely basic ADPCM sound codec. it has no variable frequency ra
| 4.096 MHz | 8000 Hz |
| 8 MHz | 15625 Hz |
| 8.192 MHz | 16000 Hz |
# info
this chip uses the [MSM6258](../4-instrument/msm6258.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -6,9 +6,15 @@ an upgrade from 6258 - it provides 4 ADPCM channels, at max 32 KHz (still no var
- `20xx`: **set chip output rate.**
# chip config
# info
this chip uses the [MSM6295](../4-instrument/msm6295.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.
## chip clock rates
like MSM6258, MSM295 is an extremely basic ADPCM sound codec. it has no variable frequency rate, it depends on clock rate of a chip itself. Furnace supports following rates:
like MSM6258, MSM6295 is an extremely basic ADPCM sound codec. it has no variable frequency rate, it depends on clock rate of a chip itself. Furnace supports following rates:
| clock rate | sampling rate |
|--------------------|---------------|

View file

@ -38,3 +38,7 @@ if the waveform changes (e.g. ins change, wave macro or wave synth), or the **lo
- the length is determined by the wave's width (it will be snapped to a multiple of 4 if it isn't).
- make sure to use `21xx` first!
- `21xx`: **set position for 20xx.**
# info
this chip uses the [Namco 163](../4-instrument/n163.md) instrument editor.

View file

@ -8,3 +8,7 @@ everything starts with Namco WSG, which is a simple 3-channel wavetable with no
- `10xx`: **change waveform.**
- `11xx`: **toggle noise mode.** _warning:_ only on C30.
# info
this chip uses the [Namco WSG](../4-instrument/namco.md) instrument editor.

View file

@ -56,7 +56,11 @@ also known as Famicom. it is a five-channel sound generator: first two channels
- only works in DPCM mode.
- see table below for possible values.
# tables
# info
this chip uses the [NES](../4-instrument/nes.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.
## short noise frequencies (NTSC)

View file

@ -78,3 +78,7 @@ afterwards everyone moved to Windows and software mixed PCM streaming...
- `5Bxy`: **set KSR of operator.**
- `x` is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of `0` means "all operators".
- `y` determines whether KSR is on.
# info
this chip uses the [FM (OPL)](../4-instrument/fm-opl.md) instrument editor.

View file

@ -65,3 +65,7 @@ the YM2413 is equipped with the following features:
- `5Bxy`: **set KSR of operator.**
- `x` is the operator, either 1 or 2. a value of `0` means "all operators".
- `y` determines whether KSR is on.
# info
this chip uses the [FM (OPLL)](../4-instrument/fm-opll.md) instrument editor.

View file

@ -113,3 +113,7 @@ no plans have been made for TX81Z MIDI passthrough, because:
- `5Dxx`: **set D2R/SR of operator 2.**
- `5Exx`: **set D2R/SR of operator 3.**
- `5Fxx`: **set D2R/SR of operator 4.**
# info
this chip uses the [FM (OPZ)](../4-instrument/opz.md) instrument editor.

View file

@ -18,5 +18,9 @@ furthermore, it has some PCM and LFO!
- `03`: LFO enabled, shift 8.
- when LFO is enabled, channel 2 is muted and its output is passed to channel 1's frequency.
- `13xx`: **set LFO speed.**
- `17xx`: **toggle PCM mode.**
- _this effect is here for compatibility reasons_; it is otherwise recommended to use Sample type instruments (which automatically enable PCM mode when used).
- `17xx`: **toggle LEGACY sample mode.**
- **this effect exists only for compatibility reasons! its use is NOT recommented. use Sample type instruments instead.**
# info
this chip uses the [PC Engine](../4-instrument/pce.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -29,3 +29,7 @@ oh, and of course you also need the beeper to be present in your machine. some l
# effects
ha! effects...
# info
this chip uses the [Beeper](../4-instrument/beeper.md) instrument editor.

View file

@ -9,3 +9,7 @@ some of these didn't even have sound...
# effects
- `10xx`: **set waveform.** `xx` is a bitmask.
# info
this chip uses the [PET](../4-instrument/pet.md) instrument editor.

View file

@ -5,3 +5,7 @@ the Pokémon Mini is a ridiculously small handheld system from 2001. its single
# effects
none.
# info
this chip uses the [Pokémon Mini/QuadTone](../4-instrument/quadtone.md) instrument editor.

View file

@ -35,3 +35,7 @@ a sound and input chip developed by Atari for their 8-bit computers (Atari 400,
- `12xx`: **toggle two-tone mode.**
- when enabled, channel 2 modulates channel 1. I don't know how, but it does.
- only on ASAP core.
# info
this chip uses the [POKEY](../4-instrument/pokey.md) instrument editor.

View file

@ -5,3 +5,7 @@ released only in Japan, this console was pulled after only a few weeks on the ma
# effects
- `10xx`: **set ring modulation.** amplitude modulation by the previous channel's output. `0` turns it off and `1` turns it on.
# info
this chip uses the [PV-1000](../4-instrument/pv1000.md) instrument editor.

View file

@ -17,3 +17,7 @@ there are also 3 ADPCM channels. ADPCM samples are fixed to 8012 Hz.
- `11xx`: **set echo level.**
- `12xx`: **toggle QSound algorithm.** on by default.
- `3xxx`: **set echo delay buffer length.**
# info
this chip uses the [QSound](../4-instrument/qsound.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -6,3 +6,6 @@ YM2612's sidekick - poor man's SNES DSP. 8-channel PCM sample-based synthesizer
none so far.
# info
this chip uses the [RF5C68](../4-instrument/ricoh.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -27,3 +27,7 @@ this was used by the Game Blaster and SAM Coupé. it's pretty similar to the AY-
- `111`: up loop (reverse saw)
- bit 0 sets whether the right output will mirror the left one.
- this effect affects either the first 3 or last 3 channels, depending on where it is placed.
# info
this chip uses the [SAA1099](../4-instrument/saa.md) instrument editor.

View file

@ -9,3 +9,7 @@ the SCC+ fixes this issue though (while being compatible with SCC games).
# effects
- `10xx`: **change wave.**
# info
this chip uses the [Konami SCC/Bubble System WSG](../4-instrument/scc.md) instrument editor.

View file

@ -15,3 +15,7 @@ Furnace also has a five channel version of this chip, but it only exists for Def
- `20xx`: **set PCM frequency.**
- `xx` is a 256th fraction of 31250Hz.
- this effect exists mostly for DefleMask compatibility; it is otherwise recommended to use Sample type instruments.
# info
this chip uses the [SegaPCM](../4-instrument/segapcm.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -15,9 +15,13 @@ the sound-related features and quirks of the SM8521 are as follows:
- a low bit-depth output (which means it distorts a lot).
- it phase resets when you switch waves
- 12-bit pitch with a wide frequency range
- a software-controlled D/A register that (potentially) requires all other registers to be stopped to play. due to this, it is currently, it is not implemented in Furnace as of version 0.6pre4.
- a software-controlled D/A register that (potentially) requires all other registers to be stopped to play. due to this, it is currently not implemented in Furnace as of version 0.6pre4.
## effect commands
- `10xx`: **set waveform.**
- `xx` is a value between 0 and 255 that sets the waveform of the channel you place it on.
# info
this chip uses the [SM8521](../4-instrument/sm8521.md) instrument editor.

View file

@ -1,4 +1,4 @@
# TI SN76489 (e.g. sega Master System)
# TI SN76489 (e.g. Sega Master System)
a relatively simple sound chip made by Texas Instruments. a derivative of it is used in Sega's Master System, the predecessor to Genesis.
@ -14,7 +14,12 @@ the original iteration of the SN76489 used in the TI-99/4A computer, the SN94624
- `0`: thin pulse.
- `1`: noise.
# chip config
# info
this chip uses the [SN76489/Sega PSG](../4-instrument/psg.md) instrument editor.
## SN7 versions
SN7 was extremely popular due to low cost. Therefore, it was cloned and copied to no end, often with minor differences between each other. Furnace supports several of these:
- SN94624, can only produce tones as low as 100Hz, and is clocked at 447 KHz.

View file

@ -67,7 +67,10 @@ Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) i
- _Note:_ Be sure the sum of all coefficients is between -128 and 127. sums outside that may result in overflow and therefore clicking.
- see [SnesLab](https://sneslab.net/wiki/FIR_Filter) for a full explanation and examples.
# tables
# info
this chip uses the [SNES](../4-instrument/snes.md) instrument editor.
## ADSR

View file

@ -54,3 +54,7 @@ it has the following capabilities:
- bit 0-6: speed
- bit 7: up direction
- `4xxx`: **set cutoff.** range is `0` to `FFF`.
# info
this chip uses the [Sound Unit](../4-instrument/soundunit.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -9,3 +9,7 @@ this chip was used in Neo Geo Pocket.
- `20xx`: **set noise mode.**
- `0`: thin pulse.
- `1`: noise.
# info
this chip uses the [T6W28](../4-instrument/t6w28.md) instrument editor.

14
doc/7-systems/ted.md Normal file
View file

@ -0,0 +1,14 @@
# MOS Technology TED
also called 7360/8360, TED stands for Text Editing Device. it's both a video and audio chip of Commodore budget computers, like Plus/4 and 16.
its audio portion is pretty barren - only 2 channels. one can output square wave and other may be either square or noise.
pitch range is limited as well, akin to that of SN76489, and volume control is global.
# effects
none so far.
# info
this chip uses the [TED](../4-instrument/ted.md) instrument editor.

View file

@ -25,4 +25,274 @@ Furnace isn't complete without this one...
- `C`: low square
- `D`: low square
- `E`: low pure buzzy
- `F`: low reedy
- `F`: low reedy
# info
this chip uses the [TIA](../4-instrument/tia.md) instrument editor.
- pitch number can be used for absolute notes in arpeggio macros.
## shape 1
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 2096.0 | C-7 | +2 | 2080.0 | C-7 | -1
| 1 | 1048.0 | C-6 | +2 | 1040.0 | C-6 | -1
| 2 | 698.7 | F-5 | 0.0| 693.3 | F-5 | -1
| 3 | 524.0 | C-5 | +2 | 520.0 | C-5 | -1
| 4 | 419.2 | G#4 | +16 | 416.0 | G#4 | +3
| 5 | 349.3 | F-4 | 0.0| 346.7 | F-4 | -13
| 6 | 299.4 | D-4 | +33 | 297.1 | D-4 | +20
| 7 | 262.0 | C-4 | +3 | 260.0 | C-4 | -11
| 8 | 232.9 | A#3 | -2 | 231.1 | A#3 | -15
| 9 | 209.6 | G#3 | +15 | 208.0 | G#3 | +2
| 10 | 190.5 | F#3 | +50 | 189.1 | F#3 | +37
| 11 | 174.7 | F-3 | +1 | 173.3 | F-3 | -13
| 12 | 161.2 | E-3 | -39 | 160.0 | D#3 | +48
| 13 | 149.7 | D-3 | +33 | 148.6 | D-3 | +20
| 14 | 139.7 | C#3 | +13 | 138.7 | C#3 | +1
| 15 | 131.0 | C-3 | +3 | 130.0 | C-3 | -11
| 16 | 123.3 | B-2 | -3 | 122.4 | B-2 | -16
| 17 | 116.4 | A#2 | 0.0| 115.6 | A#2 | -14
| 18 | 110.3 | A-2 | +5 | 109.5 | A-2 | -8
| 19 | 104.8 | G#2 | +16 | 104.0 | G#2 | +3
| 20 | 99.8 | G-2 | +31 | 99.0 | G-2 | +17
| 21 | 95.3 | G-2 | -49 | 94.5 | F#2 | +36
| 22 | 91.1 | F#2 | -27 | 90.4 | F#2 | -40
| 23 | 87.3 | F-2 | 0.0| 86.7 | F-2 | -12
| 24 | 83.8 | E-2 | +29 | 83.2 | E-2 | +16
| 25 | 80.6 | E-2 | -39 | 80.0 | D#2 | +48
| 26 | 77.6 | D#2 | -5 | 77.0 | D#2 | -18
| 27 | 74.9 | D-2 | +34 | 74.3 | D-2 | +20
| 28 | 72.3 | D-2 | -27 | 71.7 | D-2 | -41
| 29 | 69.9 | C#2 | +15 | 69.3 | C#2 | 0
| 30 | 67.6 | C#2 | -44 | 67.1 | C-2 | +44
| 31 | 65.5 | C-2 | +3 | 65.0 | C-2 | -11
## shapes 2, 3
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 67.6 | C#2 | -44 | 67.1 | C-2 | +44
| 1 | 33.8 | C#1 | -42 | 33.5 | C-1 | +42
| 2 | 22.5 | F#0 | -46 | 22.4 | F-0 | +46
| 3 | 16.9 | C#0 | -44 | 16.8 | C-0 | +44
| 4 | 13.5 | | | 13.4
| 5 | 11.3 | | | 11.2
| 6 | 9.7 | | | 9.6
| 7 | 8.5 | | | 8.4
| 8 | 7.5 | | | 7.5
| 9 | 6.8 | | | 6.7
| 10 | 6.1 | | | 6.1
| 11 | 5.6 | | | 5.6
| 12 | 5.2 | | | 5.2
| 13 | 4.8 | | | 4.8
| 14 | 4.5 | | | 4.5
| 15 | 4.2 | | | 4.2
| 16 | 4.0 | | | 4.0
| 17 | 3.8 | | | 3.7
| 18 | 3.6 | | | 3.5
| 19 | 3.4 | | | 3.4
| 20 | 3.2 | | | 3.2
| 21 | 3.1 | | | 3.0
| 22 | 3.0 | | | 2.9
| 23 | 2.8 | | | 2.8
| 24 | 2.7 | | | 2.7
| 25 | 2.6 | | | 2.6
| 26 | 2.5 | | | 2.5
| 27 | 2.4 | | | 2.4
| 28 | 2.3 | | | 2.3
| 29 | 2.3 | | | 2.2
| 30 | 2.2 | | | 2.2
| 31 | 2.1 | | | 2.1
## shapes 4, 5
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 15720.0 | B-9 | -9 | 15600.0 | B-9 | -23
| 1 | 7860.0 | B-8 | -9 | 7800.0 | B-8 | -23
| 2 | 5240.0 | E-8 | -11 | 5200.0 | E-8 | -25
| 3 | 3930.0 | B-7 | -10 | 3900.0 | B-7 | -23
| 4 | 3144.0 | G-7 | +4 | 3120.0 | G-7 | -9
| 5 | 2620.0 | E-7 | -11 | 2600.0 | E-7 | -25
| 6 | 2245.7 | C#7 | +21 | 2228.6 | C#7 | +8
| 7 | 1965.0 | B-6 | -9 | 1950.0 | B-6 | -23
| 8 | 1746.7 | A-6 | -13 | 1733.3 | A-6 | -27
| 9 | 1572.0 | G-6 | +4 | 1560.0 | G-6 | -9
| 10 | 1429.1 | F-6 | +39 | 1418.2 | F-6 | +25
| 11 | 1310.0 | E-6 | -11 | 1300.0 | E-6 | -25
| 12 | 1209.2 | D-6 | +49 | 1200.0 | D-6 | +36
| 13 | 1122.9 | C#6 | +22 | 1114.3 | C#6 | +8
| 14 | 1048.0 | C-6 | +2 | 1040.0 | C-6 | -11
| 15 | 982.5 | B-5 | -10 | 975.0 | B-5 | -23
| 16 | 924.7 | A#5 | -15 | 917.6 | A#5 | -28
| 17 | 873.3 | A-5 | -14 | 866.7 | A-5 | -27
| 18 | 827.4 | G#5 | -7 | 821.1 | G#5 | -20
| 19 | 786.0 | G-5 | +4 | 780.0 | G-5 | -9
| 20 | 748.6 | F#5 | +20 | 742.9 | F#5 | +7
| 21 | 714.5 | F-5 | +39 | 709.1 | F-5 | +26
| 22 | 683.5 | F-5 | -38 | 678.3 | E-5 | +48
| 23 | 655.0 | E-5 | -12 | 650.0 | E-5 | -25
| 24 | 628.8 | D#5 | +18 | 624.0 | D#5 | +5
| 25 | 604.6 | D-5 | +49 | 600.0 | D-5 | +36
| 26 | 582.2 | D-5 | -16 | 577.8 | D-5 | -29
| 27 | 561.4 | C#5 | +21 | 557.1 | C#5 | +8
| 28 | 542.1 | C#5 | -40 | 537.9 | C-5 | +47
| 29 | 524.0 | C-5 | +2 | 520.0 | C-5 | -11
| 30 | 507.1 | B-4 | +45 | 503.2 | B-4 | +32
| 31 | 491.3 | B-4 | -9 | 487.5 | B-4 | -23
## shapes 6, 7, 9, 10
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 1014.2 | B-5 | +45 | 1006.5 | B-5 | +32
| 1 | 507.1 | B-4 | +45 | 503.2 | B-4 | +32
| 2 | 338.1 | E-4 | +43 | 335.5 | E-4 | +30
| 3 | 253.5 | B-3 | +45 | 251.6 | B-3 | +32
| 4 | 202.8 | G#3 | -42 | 201.3 | G-3 | +45
| 5 | 169.0 | E-3 | +43 | 167.7 | E-3 | +30
| 6 | 144.9 | D-3 | -23 | 143.8 | D-3 | -37
| 7 | 126.8 | B-2 | +42 | 125.8 | B-2 | +32
| 8 | 112.7 | A-2 | +42 | 111.8 | A-2 | +28
| 9 | 101.4 | G#2 | -41 | 100.6 | G-2 | +45
| 10 | 92.2 | F#2 | -6 | 91.5 | F#2 | -19
| 11 | 84.5 | E-2 | +43 | 83.9 | E-2 | +31
| 12 | 78.0 | D#2 | +4 | 77.4 | D#2 | -9
| 13 | 72.4 | D-2 | -24 | 71.9 | D-2 | -37
| 14 | 67.6 | C#2 | -44 | 67.1 | C-2 | +44
| 15 | 63.4 | B-1 | +46 | 62.9 | B-1 | +32
| 16 | 59.7 | A#1 | +41 | 59.2 | A#1 | +26
| 17 | 56.3 | A-1 | +39 | 55.9 | A-1 | +27
| 18 | 53.4 | G#1 | +48 | 53.0 | G#1 | +35
| 19 | 50.7 | G#1 | -41 | 50.3 | G-1 | +45
| 20 | 48.3 | G-1 | -25 | 47.9 | G-1 | -39
| 21 | 46.1 | F#1 | -4 | 45.7 | F#1 | -20
| 22 | 44.1 | F-1 | +16 | 43.8 | F-1 | +4
| 23 | 42.3 | E-1 | +44 | 41.9 | E-1 | +28
| 24 | 40.6 | E-1 | -26 | 40.3 | E-1 | -39
| 25 | 39.0 | D#1 | +4 | 38.7 | D#1 | -9
| 26 | 37.6 | D-1 | +41 | 37.3 | D-1 | +27
| 27 | 36.2 | D-1 | -24 | 35.9 | D-1 | -38
| 28 | 35.0 | C#1 | +19 | 34.7 | C#1 | +5
| 29 | 33.8 | C#1 | -42 | 33.5 | C-1 | +42
| 30 | 32.7 | C-1 | 0.0 | 32.5 | C-1 | -11
| 31 | 31.7 | B-0 | +44 | 31.5 | B-0 | +33
## shapes 8
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 61.5 | B-1 | -6| 61.1 | B-1 | -18
| 1 | 30.8 | B-0 | -6| 30.5 | B-0 | -22
| 2 | 20.5 | E-0 | -8| 20.4 | E-0 | -17
| 3 | 15.4 | | | 15.3
| 4 | 12.3 | | | 12.2
| 5 | 10.3 | | | 10.2
| 6 | 8.8 | | | 8.7
| 7 | 7.7 | | | 7.6
| 8 | 6.8 | | | 6.8
| 9 | 6.2 | | | 6.1
| 10 | 5.6 | | | 5.6
| 11 | 5.1 | | | 5.1
| 12 | 4.7 | | | 4.7
| 13 | 4.4 | | | 4.4
| 14 | 4.1 | | | 4.1
| 15 | 3.8 | | | 3.8
| 16 | 3.6 | | | 3.6
| 17 | 3.4 | | | 3.4
| 18 | 3.2 | | | 3.2
| 19 | 3.1 | | | 3.1
| 20 | 2.9 | | | 2.9
| 21 | 2.8 | | | 2.8
| 22 | 2.7 | | | 2.7
| 23 | 2.6 | | | 2.5
| 24 | 2.5 | | | 2.4
| 25 | 2.4 | | | 2.3
| 26 | 2.3 | | | 2.3
| 27 | 2.2 | | | 2.2
| 28 | 2.1 | | | 2.1
| 29 | 2.0 | | | 2.0
| 30 | 2.0 | | | 2.0
| 31 | 1.9 | | | 1.9
## shapes 12, 13
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 5240.0 | E-8 | -11 | 5200.0 | E-8 | -25
| 1 | 2620.0 | E-7 | -11 | 2600.0 | E-7 | -25
| 2 | 1746.6 | A-6 | -14 | 1733.3 | A-6 | -27
| 3 | 1310.0 | E-6 | -11 | 1300.0 | E-6 | -25
| 4 | 1048.0 | C-6 | +2 | 1040.0 | C-6 | -11
| 5 | 873.3 | A-5 | -14 | 866.7 | A-5 | -27
| 6 | 748.6 | F#5 | +20 | 742.9 | F#5 | +7
| 7 | 655.0 | E-5 | -12 | 650.0 | E-5 | -25
| 8 | 582.2 | D-5 | -16 | 577.8 | D-5 | -29
| 9 | 524.0 | C-5 | +2 | 520.0 | C-5 | -11
| 10 | 476.4 | A#4 | +39 | 472.7 | A#4 | +23
| 11 | 436.7 | A-4 | -13 | 433.3 | A-4 | -27
| 12 | 403.1 | G-4 | +48 | 400.0 | G-4 | +34
| 13 | 374.3 | F#4 | +20 | 371.4 | F#4 | +6
| 14 | 349.3 | F-4 | 0.0 | 346.7 | F-4 | -13
| 15 | 327.5 | E-4 | -11 | 325.0 | E-4 | -25
| 16 | 308.2 | D#4 | -17 | 305.9 | D#4 | -30
| 17 | 291.1 | D-4 | -16 | 288.9 | D-4 | -29
| 18 | 275.8 | C#4 | -9 | 273.7 | C#4 | -22
| 19 | 262.0 | C-4 | +3 | 260.0 | C-4 | -11
| 20 | 249.5 | B-3 | +18 | 247.6 | B-3 | +5
| 21 | 238.2 | A#3 | +37 | 236.4 | A#3 | +24
| 22 | 227.8 | A#3 | -40 | 226.1 | A-3 | +47
| 23 | 218.3 | A-3 | -14 | 216.7 | A-3 | -27
| 24 | 209.6 | G#3 | +15 | 208.0 | G#3 | +2
| 25 | 201.5 | G-3 | +47 | 200.0 | G-3 | +34
| 26 | 194.1 | G-3 | -17 | 192.6 | G-3 | -31
| 27 | 187.1 | F#3 | +19 | 185.7 | F#3 | +6
| 28 | 180.7 | F#3 | -41 | 179.3 | F-3 | +45
| 29 | 174.7 | F-3 | +1 | 173.3 | F-3 | -13
| 30 | 169.0 | E-3 | +43 | 167.7 | E-3 | +30
| 31 | 163.8 | E-3 | -11 | 162.5 | E-3 | -25
## shapes 14, 15
| pitch | NTSC | note | cent | PAL | note | cent
|------:|--------:|:----:|-----:|--------:|:----:|-----:
| 0 | 338.1 | E-4 | +43 | 335.5 | E-4 | +30
| 1 | 169.0 | E-3 | +43 | 167.7 | E-3 | +30
| 2 | 112.7 | A-2 | +42 | 111.8 | A-2 | +28
| 3 | 84.5 | E-2 | +43 | 83.9 | E-2 | +31
| 4 | 67.6 | C#2 | -44 | 67.1 | C-2 | +44
| 5 | 56.3 | A-1 | +39 | 55.9 | A-1 | +27
| 6 | 48.3 | G-1 | -25 | 47.9 | G-1 | -39
| 7 | 42.3 | E-1 | +44 | 41.9 | E-1 | +28
| 8 | 37.6 | D-1 | +41 | 37.3 | D-1 | +27
| 9 | 33.8 | C#1 | -42 | 33.5 | C-1 | +42
| 10 | 30.7 | B-0 | -11 | 30.5 | B-0 | -22
| 11 | 28.2 | A-0 | +44 | 28.0 | A-0 | +31
| 12 | 26.0 | G#0 | 0.0 | 25.8 | G#0 | -13
| 13 | 24.1 | G-0 | -29 | 24.0 | G-0 | -36
| 14 | 22.5 | F#0 | -46 | 22.4 | F-0 | +46
| 15 | 21.1 | E-0 | +42 | 21.0 | E-0 | +33
| 16 | 19.9 | D#0 | +42 | 19.7 | D#0 | +25
| 17 | 18.8 | D-0 | +40 | 18.6 | D-0 | +20
| 18 | 17.8 | C#0 | +45 | 17.7 | C#0 | +36
| 19 | 16.9 | C#0 | -44 | 16.8 | C-0 | +44
| 20 | 16.1 | C-0 | -30 | 16.0 | C-0 | -40
| 21 | 15.4 | | | 15.2
| 22 | 14.7 | | | 14.6
| 23 | 14.1 | | | 14
| 24 | 13.5 | | | 13.4
| 25 | 13.0 | | | 12.9
| 26 | 12.5 | | | 12.4
| 27 | 12.1 | | | 12
| 28 | 11.7 | | | 11.6
| 29 | 11.3 | | | 11.2
| 30 | 10.9 | | | 10.8
| 31 | 10.6 | | | 10.5
reference: [Atari 2600 VCS Sound Frequency and Waveform Guide](http://7800.8bitdev.org/index.php/Atari_2600_VCS_Sound_Frequency_and_Waveform_Guide)

View file

@ -15,3 +15,7 @@ currently Furnace does not support the PCM channel's stereo mode, though (except
- `22xx`: **set duty cycle.** range is `0` to `3F`.
- `EExx`: **ZSM synchronization event.**
- Where `xx` is the event payload. This has no effect in how the music is played in Furnace, but the ZSMKit library for the Commander X16 interprets these events inside ZSM files and optionally triggers a callback routine. This can be used, for instance, to cause game code to respond to beats or at certain points in the music.
# info
this chip uses the [VERA](../4-instrument/vera.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors.

View file

@ -16,3 +16,7 @@ these channels are not referred as "square" wave channels since a technique to p
## effect commands
- `10xx`: **switch waveform.** range is `00` to `0F`.
# info
this chip uses the [VIC](../4-instrument/vic.md) instrument editor.

View file

@ -41,3 +41,7 @@ additionally, channel 5 offers a modulation/sweep unit. the former is similar to
- `15xx`: **set modulation wave.**
- `xx` points to a wavetable. range is `0` to `FF`.
- this is an alternative to setting the modulation wave through the instrument.
# info
this chip uses the [Virtual Boy](../4-instrument/virtual-boy.md) instrument editor.

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