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. # 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. # 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) 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) add_subdirectory(extern/SDL EXCLUDE_FROM_ALL)
list(APPEND DEPENDENCIES_DEFINES HAVE_SDL2) list(APPEND DEPENDENCIES_DEFINES HAVE_SDL2)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include) 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/d65modified.c
src/engine/platform/sound/ted-sound.c
src/engine/platform/oplAInterface.cpp src/engine/platform/oplAInterface.cpp
src/engine/platform/ym2608Interface.cpp src/engine/platform/ym2608Interface.cpp
src/engine/platform/ym2610Interface.cpp src/engine/platform/ym2610Interface.cpp
@ -589,6 +598,7 @@ src/engine/platform/ga20.cpp
src/engine/platform/sm8521.cpp src/engine/platform/sm8521.cpp
src/engine/platform/pv1000.cpp src/engine/platform/pv1000.cpp
src/engine/platform/k053260.cpp src/engine/platform/k053260.cpp
src/engine/platform/ted.cpp
src/engine/platform/pcmdac.cpp src/engine/platform/pcmdac.cpp
src/engine/platform/dummy.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!). - **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. - **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. - **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 # 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. 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) - [play/edit controls](play-edit-controls.md)
- [instrument/wavetable/sample list](asset-list.md) - [instrument/wavetable/sample list](asset-list.md)
- [song information](song-info.md) - [song information](song-info.md)
- [effect list window](effect-list-window.md)
- [pattern view](../3-pattern/README.md) - [pattern view](../3-pattern/README.md)
- [instrument editor](../4-instrument/README.md) - [instrument editor](../4-instrument/README.md)
- [wavetable editor](../5-wave/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) ![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. - **Preview**: Plays the selected sample at its default note.
- **Stop preview**: Stops the sample playback. - **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. 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 # file
- **new...**: create a new song. - **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. - **export command stream...**: export song data to a command stream file. see next section for more details.
- this option is for developers. - this option is for developers.
- **add chip...**: add a chip to the current song. - _**add chip...**:_ add a chip to the current song.
- **configure chip...**: set a chip's parameters. - _**configure chip...**:_ set a chip's parameters.
- for a list of parameters, see [7-systems](../7-systems/README.md). - 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. - **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. - **Preserve channel positions**: same thing as above.
- **restore backup**: restore a previously saved backup. - **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. - 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. - **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 ...` - 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 - `ll`: length, a 32-bit little-endian number
- oo: order - `oo`: order
- rr: initial row (a 0Dxx effect is able to select a different row) - `rr`: initial row (a 0Dxx effect is able to select a different row)
- pp: pattern index (one per channel) - `pp`: pattern index (one per channel)
- **direct stream mode**: this option allows DualPCM to work. don't use this for other chips. - **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. - 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. - **cut**: moves the current selection in the pattern view to clipboard.
- **copy**: copies 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**: 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**: 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 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. - **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 column is already selected, it will select the entire channel.
- if a channel is already selected, it will select the entire pattern. - 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) - _**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) - _**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. - **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. - **expand song**: same as expand, but affects the entire song.
- it also changes speeds and pattern length to compensate. - 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. - **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) - [samples](../6-sample/README.md)
- [orders](order-list.md) - [orders](order-list.md)
- [pattern](../3-pattern/README.md) - [pattern](../3-pattern/README.md)
- [mixer](mixer.md) - _[mixer](mixer.md)_
- [grooves](grooves.md) - _[grooves](grooves.md)_
- [channels](channels.md) - _[channels](channels.md)_
- [pattern manager](pat-manager.md) - _[pattern manager](pat-manager.md)_
- [chip manager](chip-manager.md) - _[chip manager](chip-manager.md)_
- [compatibility flags](compat-flags.md) - _[compatibility flags](compat-flags.md)_
- [song comments](comments.md) - [song comments](comments.md)
- [piano](piano.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. - volume in decimal, hex, and percentage.
- effect type and description. - effect type and description.
- during playback, the current values of the following will be listed:\ - 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. - 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** ### Program
- **Import**: reads a .ini layout file.
- **Export**: writes current layout to a .ini file. - **Render backend**
- **Reset**: resets layout to default. - 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. - **Initial system**: the system of chips loaded on starting Furnace.
- **Current system**: sets current chips as default. - **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. - this will not choose a random system at each start.
- **Reset to defaults**: sets default to "Sega Genesis/Mega Drive". - **Reset to defaults**: sets default to "Sega Genesis/Mega Drive".
- **Name**: name for the default system. may be set to any text. - **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:** - **Play intro on start-up:**
- **No**: skips intro entirely. - **No**: skips intro entirely.
- **Short**: shows silent title screen briefly. - **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 (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. - **Full (always)**: always shows animated musical intro.
- **When creating new song**: - **Disable fade-in during start-up**
- **Display system preset selector** - **About screen party time**
- **Start with initial system** - _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** - **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 - only appears on Linux, or MacOS compiled with JACK support
- **Driver**
- **Device**: audio device for playback. - **Device**: audio device for playback.
- **Sample rate** - **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. - only appears when Backend is JACK.
- **Channels**: number of output channels to use. - **Channels**: number of output channels to use.
- **Buffer size**: size of buffer in both samples and milliseconds. - **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. - **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). - _warning:_ experimental! may produce glitches. only enable if your buffer size is small (10ms or less).
- **Force mono audio** - **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. - **want:** displays requested audio configuration.
- **got:** displays actual audio configuration returned by audio backend. - **got:** displays actual audio configuration returned by audio backend.
- **MIDI input** ### Mixing
- **MIDI output**
- **MIDI input settings** - **Quality**: selects quality of resampling. low quality reduces CPU load.
- **Note input** - **Software clipping**: clips output to nominal range (-1.0 to 1.0) before passing it to the audio device.
- **Velocity input** - this avoids activating Windows' built-in limiter.
- **Map MIDI channels to direct channels**
- **Map Yamaha FM voice data to instruments** ### Metronome
- **Program change is instrument selection**
- **Value input style**: - **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** - **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)** - **Use dual control change (one for each nibble)**
- **CC of upper nibble** - **CC of upper nibble**
- **CC of lower nibble** - **CC of lower nibble**
- **Use 14-bit control change** - **Use 14-bit control change**
- **MSB CC** - **MSB CC**
- **LSB CC** - **LSB CC**
- **Use single control change** - **Use single control change (imprecise)**
- **Control** - **Control**
- **Per-column control change** - **Volume curve**
- **Instrument**\ - **Actions:**
**Volume**\ - **`+`** button: adds a new action.
**Effect `x` type**\ - window-with-arrow button: new action with learning! press a button or move a slider/knob/something on your device.
**Effect `x` value** - each action has the following:
- **Disabled/custom** - **Type**
- **Use dual control change (one for each nibble)** - **Channel**
- **CC of upper nibble** - **Note/Control**
- **CC of lower nibble** - **Velocity/Value**
- **Use 14-bit control change** - **Action**
- **MSB CC** - **Learn**
- **LSB CC** - **Remove**
- **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**
- **MIDI output settings** ### MIDI output
- **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)**
# Emulation - **MIDI output**: output device.
- **Arcade/YM2151 core** - **Output mode:**
- **ymfm** - **Off (use for TX81Z)**
- **Nuked-OPM** - **Melodic**
- **Genesis/YM2612 core** - **Send Program Change**
- **Nuked-OPN2** - **Send MIDI clock**
- **ymfm** - **Send MIDI timecode**
- **SN76489 core** - **Timecode frame rate:**
- **MAME** - **Closest to Tick Rate**
- **Nuked-PSG Mod** - **Film (24fps)**
- **NES core** - **PAL (25fps)**
- **puNES** - **NTSC drop (29.97fps)**
- **NSFplay** - **NTSC non-drop (30fps)**
- **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)**
- **PC Speaker strategy:**
- **evdev SND_TONE**
- **KIOCSOUND on /dev/tty1** ## Emulation
- **/dev/port**
- **KIOCSOUND on standard output** ### Cores
- **outb()**
- **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:** - **Sample ROMs:**
- **OPL4 YRW801 path** - **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** ### Keyboard
- **Automatic UI scaling factor**: automatically match the OS's UI scaling.
- **UI scaling factor**: only if "Automatic UI scaling factor" is off. - **Import**
- **Main font**: if "Custom...", a file path selector will appear beneath. - **Export**
- **Size** - **Reset defaults**
- **Pattern font**: if "Custom...", a file path selector will appear beneath. - several categories of keybinds...
- **Size** - 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** - **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 Japanese characters**\
**Display Chinese (Simplified) characters**\ **Display Chinese (Simplified) characters**\
**Display Chinese (Traditional) 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. - only toggle these options if you have enough graphics memory.
- these are a temporary solution until dynamic font atlas is implemented in Dear ImGui. - these are a temporary solution until dynamic font atlas is implemented in Dear ImGui.
- **Number of recent files** ### Program
- **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)**
- **Title bar:** - **Title bar:**
- **Furnace** - **Furnace**
@ -269,44 +324,41 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
- **File path** - **File path**
- **Cursor details or file path** - **Cursor details or file path**
- **Nothing** - **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:** - **Highlight channel at cursor in Orders**
- **Single** - **Orders row number format:**
- **Channel type** - **Decimal**
- **Instrument type** - **Hexadecimal**
- **Channel name colors:**
- **Single** ### Pattern
- **Channel type**
- **Instrument type** - **Center pattern view**: centers pattern horizontally in view.
- **Channel style:** - **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** - **Classic**
- **Line** - **Line**
- **Round** - **Round**
@ -328,60 +380,98 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
- **Regular** - **Regular**
- **Monospace** - **Monospace**
- **Center channel name** - **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** - **Colorize instrument editor using instrument type**
- **Use separate colors for carriers/modulators in FM editor** - **Display instrument type menu when adding instrument**
- **Unified instrument/wavetable/sample list** - if turned off, the menu can still be opened by right-clicking the add button.
- **Horizontal instrument list**
- **Use standard OPL waveform names** ### Macro Editor
- **Overflow pattern highlights**
- **Display previous/next pattern** - **Macro editor layout:**
- **Use German notation**: display `B` notes as `H`, and `A#` notes as `B`. - **Unified**
- **Single-digit effects for 00-0F** - **Mobile**
- **Center pattern view**: centers pattern horizontally in view. - **Grid**
- **Unsigned FM detune values** - **Single (with list)**
- **Highlight channel at cursor in Orders** - **Single (combo box)**
- **About screen party time** - **Use classic macro editor vertical slider**
- _warning:_ may cause epileptic seizures.
### Wave Editor
- **Use compact 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 window corners**
- **Rounded buttons** - **Rounded buttons**
- **Rounded menu corners** - **Rounded menu corners**
- **Borders around widgets** - **Borders around widgets**: draws thin borders on buttons, checkboxes, text widgets, and the like.
- **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...
# Keyboard ## Color
### Color scheme
- **Import** - **Import**
- **Export** - **Export**
- **Reset defaults** - **Reset defaults**
- several categories of keybinds... - **General**
- click on a keybind then enter a key or key combination to change it - **Color scheme type:**
- right-click to clear the keybind - **Dark**
- **Light**
- **Frame shading**: applies a gradient effect to buttons and input boxes.
- several more categories...

View File

@ -1,13 +1,13 @@
# song info # song info
- **Name**: The track's title. - **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. - **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. 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 # 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. 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. **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). - 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. - 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. **Speed**: The number of ticks per row.
- Clicking the "Speed" button changes to more complex modes covered in the [grooves] page. - 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 tick rate to 150 BPM (60 Hz) and speed to 6.
- Set the first virtual tempo number (numerator) to 200. - Set the first virtual tempo number (numerator) to 200.
- Set the second virtual tempo number (denominator) to 150. - Set the second virtual tempo number (denominator) to 150.
- The track will play at 200 BPM. - 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. - 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: **Highlight**: Sets the pattern row highlights:
- The first value represents the number of rows per beat. - 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.) **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) ![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: each column has several subcolumns in this order:
1. note 1. note
2. instrument 2. instrument
3. volume 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. 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. ## cursor and selection
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
you may change the cursor position by clicking anywhere on the pattern. 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 key | action
------------|----------------------------------------------------------------- ------------|-----------------------------------------------------------------
@ -68,27 +112,3 @@ Ctrl-F2 | transpose selection (+1 semitone)
Ctrl-F3 | transpose selection (-1 octave) Ctrl-F3 | transpose selection (-1 octave)
Ctrl-F4 | transpose selection (+1 octave) Ctrl-F4 | transpose selection (+1 octave)
Space | toggle note input (edit) 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. - `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. - `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. - `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. - `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth.
- Tremolo is downward only. - Tremolo is downward only.
- Maximum tremolo depth is -60 volume steps. - 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.** - `02xx`: **Pitch slide down.**
- `F1xx`: **Single tick pitch slide up.** - `F1xx`: **Single tick pitch slide up.**
- `F2xx`: **Single tick pitch slide down.** - `F2xx`: **Single tick pitch slide down.**
- ---
- `03xx`: **Portamento.** slides the current note's pitch to the specified note. `x` is the slide speed. - `03xx`: **Portamento.** slides the currently playing note's pitch toward the new note. `x` is the slide speed.
- A note _must_ be present for this effect to work. - 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. - `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. - `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`. - `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. - `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. - `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. - Maximum vibrato depth is ±1 semitone.
- `E3xx`: **Set vibrato direction.** `xx` may be one of the following: - `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`). - `82xx`: **Set volume of right channel** (from `00` to `FF`).
- `89xx`: **Set volume of rear left 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`). - `8Axx`: **Set volume of rear right channel** (from `00` to `FF`).
- ---
- `80xx`: **Set panning (linear).** this effect behaves more like other trackers: - `80xx`: **Set panning (linear).** this effect behaves more like other trackers:
- `00` is left. - `00` is left.
- `80` is center. - `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. - `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. - `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). - `Cxxx`: **Set tick rate.** changes tick rate to `xxx` Hz (ticks per second).
- `xxx` may be from `000` to `3FF`. - `xxx` may be from `000` to `3FF`.
- `F0xx`: **Set BPM.** changes tick rate according to beats per minute. range is `01` to `FF`. - `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. - `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. - 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. - `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. - 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. - `FFxx`: **Stop song.** stops playback and ends the song. `x` is ignored.
## note ## note
@ -86,12 +87,12 @@ not all chips support these effects.
- `9xxx`: **Set sample position.** jumps current sample to position `xxx * 0x100`. - `9xxx`: **Set sample position.** jumps current sample to position `xxx * 0x100`.
- Not all chips support this effect. - Not all chips support this effect.
- `EBxx`: **Set sample bank.** - `EBxx`: **Set LEGACY sample mode bank.** selects sample bank. used only for compatibility.
- Does not apply on Amiga. - does not apply on Amiga.
- `EExx`: **Send external command.** - `EExx`: **Send external command.**
- This effect is currently incomplete. - this effect is currently incomplete.
- `F5xx`: **Disable macro.** see macro table at the end of this document for possible values. - `F5xx`: **Disable macro.**\
- `F6xx`: **Enable 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). 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 # instrument editor
every instrument can be renamed and have its type changed. 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 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. The values of the macro can be drawn in the "bar graph" box.
- 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. 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. Finally, the sequence of values can be directly edited in the text box at the bottom.
- The loop start is entered as a `|`. - The loop start is entered as a `|`.
- The release point 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 ### 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. - **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. - **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. 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. - **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. - **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. - 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. - **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 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. - **FM**: for controlling the basic parameters of FM sound source.
- **Macros (FM)**: for macros controlling algorithm, feedback and LFO - **Macros (FM)**: for macros controlling algorithm, feedback and LFO
- **Macros (OP1)**: for macros controlling FM paramets of operator 1 - **Macros (OP1)**: for macros controlling FM parameters of operator 1
- **Macros (OP2)**: for macros controlling FM paramets of operator 2 - **Macros (OP2)**: for macros controlling FM parameters of operator 2
- **Macros (OP3)**: for macros controlling FM paramets of operator 3 - **Macros (OP3)**: for macros controlling FM parameters of operator 3
- **Macros (OP4)**: for macros controlling FM paramets of operator 4 - **Macros (OP4)**: for macros controlling FM parameters of operator 4
- **Macros**: for miscellaneous macros controlling volume, argeggio and YM2151 noise generator. - **Macros**: for miscellaneous macros controlling volume, arpeggio, and YM2151 noise generator.
## FM ## 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) - **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) - **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) - **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. - **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) - **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) - **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!!! - **Coarse Detune (DT2)**: Shifts the pitch by tens of cents. (0-3 range) YM2151 sound source only.
- **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) ## macros
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO.
- **LFO Frequency Sensitivity**: Determines the amount of LFO frequency changes. (0-7 range) Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled:
- **LFO Amplitude Sensitivity (AM)**: Determines the amount of LFO frequency changes. (0-3 range)
## 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
Macros define the sequence of values passed to the given parameter. Via macro, aside previously mentioned parameters, the following can be controlled: - **Arpeggio**: Pitch change sequence in semitones.
- **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.
- **Noise Frequency**: specifies the noise frequency in noise mode of YM2151's Channel 8 Operator 4 special mode. - **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 ## Namco 163
- **Load waveform**: if enabled, a waveform will be loaded when this instrument plays. - **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. - **Waveform**: determines the waveform that will be loaded.
- only appears when Load waveform is enabled. - only appears when Load waveform is enabled.
- **Per-channel wave offset/length**: when enabled, the offset/length settings are split per channel. - **Per-channel wave position/length**: when enabled, the position/length settings are split per channel.
- **Offset**: determines the waveform position in RAM. - **Position**: determines the waveform position in RAM.
- **Length**: determines the waveform length in RAM. - **Length**: determines the waveform length in RAM.
## Macros ## 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. 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 | Bubble System | 32 | 16 |
Game Boy | 32 | 16 | Game Boy | 32 | 16 | phase reset on waveform change (clicking)
SM8521 | 32 | 16 | SM8521 | 32 | 16 |
Namco WSG | 32 | 16 | RAM only Namco WSG | 32 | 16 | RAM only
WonderSwan | 32 | 16 | WonderSwan | 32 | 16 |
Namco 163 | ≤128 | 16 | Namco 163 | ≤240 | 16 | limits differ depending on channel count
SNES | ≤256 | 16 | SNES | ≤256 | 16 |
PC Engine | 32 | 32 | PC Engine | 32 | 32 | phase reset on waveform change (clicking)
Virtual Boy | 32 | 64 | no Virtual Boy | 32 | 64 | wavesynth unsupported
Famicom Disk System | 64 | 64 | Famicom Disk System | 64 | 64 |
Konami SCC | 32 | 256 | Konami SCC | 32 | 256 |
Seta X1-010 | 128 | 256 | Seta X1-010 | 128 | 256 |

View File

@ -32,17 +32,16 @@ the following sound chips have sample support:
- Ensoniq OTTO/ES5506 - Ensoniq OTTO/ES5506
- Yamaha PCMD8/YMZ280B - Yamaha PCMD8/YMZ280B
- MMC5 (last channel only) - 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. 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`. 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 ## notes
due to limitations in some of those sound chips, some restrictions exist: 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) - [Amiga](amiga.md)
- [AY-3-8910](ay8910.md) - [AY-3-8910/8914/YM2149(F)/Sunsoft 5B](ay8910.md)
- [Microchip AY8930](ay8930.md) - [Microship AY8930](ay8930.md)
- [Bubble System WSG](bubblesystem.md) - [MOS 6581/8580 (SID)](c64.md)
- [Casio PV-1000](pv1000.md) - [Ensoniq ES5506](es5506.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)
- [Konami SCC](scc.md) - [Konami SCC](scc.md)
- [Konami VRC6](vrc6.md) - [FDS](fds.md)
- [Atari Lynx](lynx.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 163](n163.md)
- [Namco WSG](namco.md) - [Namco WSG/C15/C30](namco.md)
- [NES](nes.md) - [HuC6280](pce.md)
- [Nintendo MMC5](mmc5.md)
- [OKI MSM5232](msm5232.md)
- [OKI MSM6258](msm6258.md)
- [OKI MSM6295](msm6295.md)
- [PC Engine/TurboGrafx-16](pce.md)
- [PC Speaker](pcspkr.md) - [PC Speaker](pcspkr.md)
- [Philips SAA1099](saa1099.md) - [PET](pet.md)
- [Pokémon mini](pokemini.md) - [Pokémon Mini](pokemini.md)
- [Capcom QSound](qsound.md) - [POKEY](pokey.md)
- [Ricoh RF5C68](ricoh.md) - [PV-1000](pv1000.md)
- [QSound](qsound.md)
- [RF5C68/RF5C164](ricoh.md)
- [SAA1099](saa1099.md)
- [SegaPCM](segapcm.md) - [SegaPCM](segapcm.md)
- [Seta/Allumer X1-010](x1-010.md) - [SM8521](sm8521.md)
- [SN76489/Sega PSG](sms.md)
- [SNES](snes.md) - [SNES](snes.md)
- [Atari 2600 (TIA)](tia.md)
- [tildearrow Sound Unit](soundunit.md) - [tildearrow Sound Unit](soundunit.md)
- [TI SN76489](sms.md) - [T6W28](t6w28.md)
- [Toshiba T6W28](t6w28.md) - [TED](ted.md)
- [TIA](tia.md)
- [VERA](vera.md) - [VERA](vera.md)
- [WonderSwan](wonderswan.md) - [VIC](vic20.md)
- [Virtual Boy](virtual-boy.md) - [Virtual Boy](virtual-boy.md)
- [Yamaha YM2413 (OPLL)](opll.md) - [VRC6](vrc6.md)
- [Yamaha OPL](opl.md) - [WonderSwan](wonderswan.md)
- [Yamaha YM2151](ym2151.md) - [X1-010](x1-010.md)
- [Yamaha YM2203](ym2203.md) - [VRC7, Y8950, YM3526, YM3812 and YMF262 (OPL)](opl.md)
- [Yamaha YM2414 (OPZ)](opz.md) - [YM2413 (OPLL)](opll.md)
- [Yamaha YM2608](ym2608.md) - [YM2414 (OPZ)](opz.md)
- [Neo Geo/YM2610](ym2610.md) - [YM2151 (OPM)](ym2152.md)
- [Taito Arcade/YM2610B](ym2610b.md) - [YM2203 (OPN)](ym2203.md)
- [Yamaha YM2612](ym2612.md) - [YM2608 (OPNA)](ym2608.md)
- [Yamaha YMZ280B](ymz280b.md) - [YM2610 (OPNB)](ym2610.md)
- [YM2610B (OPNB2)](ym2610b.md)
- [YM2612/YM3438 (OPN2)](ym2612.md)
- [YMZ280B](ymz280b.md)
- [ZX Spectrum Beeper](zxbeep.md) - [ZX Spectrum Beeper](zxbeep.md)
Furnace also reads .dmf files with the [Yamaha YMU759](ymu759.md) system, but... 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 # 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. - 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. - sample lengths and loop will be set to an even number.
- samples can't be longer than 131070. - 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.** - `2Fxx`: **write to I/O port B.**
- this changes the port's mode to "write". make sure you have connected something to it. - 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 derivative modes
AY-3-810 was an absurdly popular chip that was blessed with many third-party clones, licensed or not. 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. - `x` is the numerator.
- `y` is the denominator. - `y` is the denominator.
- if `x` or `y` are 0 this will disable auto-envelope mode. - 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 # effects
- `10xx`: **change wave.** - `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`) - `6`: disable channel 3 (`y` is `0` or `1`)
- `3xxx`: **set duty cycle.** `xxx` range is `000` to `FFF`. - `3xxx`: **set duty cycle.** `xxx` range is `000` to `FFF`.
- `4xxx`: **set cutoff.** `xxx` range is `000` to `7FF`. - `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 # effects
none yet. 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).** - `8Axx`: **set panning (rear right channel).**
- `9xxx`: **set sample offset.** resets sample position to `xxx * 0x100`. - `9xxx`: **set sample offset.** resets sample position to `xxx * 0x100`.
- `DFxx`: **set sample playback direction.** - `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 - 6: -2
- 7: -1 - 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)... - 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. - set to `0` to disable it.
- `14xx`: **set sweep direction.** `0` is up and `1` is down. - `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 # links
- [Gameboy sound hardware](https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware) - detailed technical information - [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 # effects
- nothing for now. - nothing for now.
# info
this chip uses the [K007232](../4-instrument/k007232.md) instrument editor.

View File

@ -1,9 +1,13 @@
# Konami 056320 # 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 # effects
- `DFxx`: Set sample playback direction. `0` is normal; `1` is reverse. - `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`. - `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. - 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.** - `12xx`: **set duty cycle or noise mode of channel.**
- may be `0` through `3` for the pulse channels. - 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. - only in internal (capacitor-based) envelope mode.
- `13xx`: **set group decay.** range is `0` to `11`. - `13xx`: **set group decay.** range is `0` to `11`.
- only in internal (capacitor-based) envelope mode. - 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 | | 4.096 MHz | 8000 Hz |
| 8 MHz | 15625 Hz | | 8 MHz | 15625 Hz |
| 8.192 MHz | 16000 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.** - `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 ## 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 | | 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). - 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! - make sure to use `21xx` first!
- `21xx`: **set position for 20xx.** - `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.** - `10xx`: **change waveform.**
- `11xx`: **toggle noise mode.** _warning:_ only on C30. - `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. - only works in DPCM mode.
- see table below for possible values. - 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) ## 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.** - `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". - `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. - `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.** - `5Bxy`: **set KSR of operator.**
- `x` is the operator, either 1 or 2. a value of `0` means "all operators". - `x` is the operator, either 1 or 2. a value of `0` means "all operators".
- `y` determines whether KSR is on. - `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.** - `5Dxx`: **set D2R/SR of operator 2.**
- `5Exx`: **set D2R/SR of operator 3.** - `5Exx`: **set D2R/SR of operator 3.**
- `5Fxx`: **set D2R/SR of operator 4.** - `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. - `03`: LFO enabled, shift 8.
- when LFO is enabled, channel 2 is muted and its output is passed to channel 1's frequency. - when LFO is enabled, channel 2 is muted and its output is passed to channel 1's frequency.
- `13xx`: **set LFO speed.** - `13xx`: **set LFO speed.**
- `17xx`: **toggle PCM mode.** - `17xx`: **toggle LEGACY sample mode.**
- _this effect is here for compatibility reasons_; it is otherwise recommended to use Sample type instruments (which automatically enable PCM mode when used). - **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 # effects
ha! 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 # effects
- `10xx`: **set waveform.** `xx` is a bitmask. - `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 # effects
none. 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.** - `12xx`: **toggle two-tone mode.**
- when enabled, channel 2 modulates channel 1. I don't know how, but it does. - when enabled, channel 2 modulates channel 1. I don't know how, but it does.
- only on ASAP core. - 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 # effects
- `10xx`: **set ring modulation.** amplitude modulation by the previous channel's output. `0` turns it off and `1` turns it on. - `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.** - `11xx`: **set echo level.**
- `12xx`: **toggle QSound algorithm.** on by default. - `12xx`: **toggle QSound algorithm.** on by default.
- `3xxx`: **set echo delay buffer length.** - `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. 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) - `111`: up loop (reverse saw)
- bit 0 sets whether the right output will mirror the left one. - 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. - 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 # effects
- `10xx`: **change wave.** - `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.** - `20xx`: **set PCM frequency.**
- `xx` is a 256th fraction of 31250Hz. - `xx` is a 256th fraction of 31250Hz.
- this effect exists mostly for DefleMask compatibility; it is otherwise recommended to use Sample type instruments. - 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). - a low bit-depth output (which means it distorts a lot).
- it phase resets when you switch waves - it phase resets when you switch waves
- 12-bit pitch with a wide frequency range - 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 ## effect commands
- `10xx`: **set waveform.** - `10xx`: **set waveform.**
- `xx` is a value between 0 and 255 that sets the waveform of the channel you place it on. - `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. 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. - `0`: thin pulse.
- `1`: noise. - `1`: noise.
# chip config
# info
this chip uses the [SN76489/Sega PSG](../4-instrument/psg.md) instrument editor.
## SN7 versions ## 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: 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. - 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. - _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. - 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 ## ADSR

View File

@ -54,3 +54,7 @@ it has the following capabilities:
- bit 0-6: speed - bit 0-6: speed
- bit 7: up direction - bit 7: up direction
- `4xxx`: **set cutoff.** range is `0` to `FFF`. - `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.** - `20xx`: **set noise mode.**
- `0`: thin pulse. - `0`: thin pulse.
- `1`: noise. - `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 - `C`: low square
- `D`: low square - `D`: low square
- `E`: low pure buzzy - `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`. - `22xx`: **set duty cycle.** range is `0` to `3F`.
- `EExx`: **ZSM synchronization event.** - `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. - 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 ## effect commands
- `10xx`: **switch waveform.** range is `00` to `0F`. - `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.** - `15xx`: **set modulation wave.**
- `xx` points to a wavetable. range is `0` to `FF`. - `xx` points to a wavetable. range is `0` to `FF`.
- this is an alternative to setting the modulation wave through the instrument. - 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