diff --git a/android/app/build.gradle b/android/app/build.gradle index 1b65f4ba2..5c7b1e31f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -15,8 +15,8 @@ android { } minSdkVersion 21 targetSdkVersion 26 - versionCode 173 - versionName "0.6pre12" + versionCode 174 + versionName "0.6pre13" externalNativeBuild { cmake { arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8d52bb0c3..3fa5d55db 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ diff --git a/doc/1-intro/README.md b/doc/1-intro/README.md index dc9af5efc..cd0376e99 100644 --- a/doc/1-intro/README.md +++ b/doc/1-intro/README.md @@ -24,6 +24,6 @@ see [2-interface](../2-interface/README.md) and [3-pattern](../3-pattern/README. once familiar with the tracker, look to [9-guides](../9-guides/README.md) for useful techniques. -# tutorial? +## tutorial? [Furnace Tutorials](https://youtube.com/playlist?list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1): video tutorials created by Spinning Square Waves. be noted that these may not apply to the current version. diff --git a/doc/1-intro/concepts.md b/doc/1-intro/concepts.md index 773301907..43361d49b 100644 --- a/doc/1-intro/concepts.md +++ b/doc/1-intro/concepts.md @@ -7,7 +7,7 @@ the **[pattern view](../3-pattern/README.md)** is similar to spreadsheet that displays the following: - each labeled column represents a **channel** of sound provided by the chips in use. -- each **note** starts a sound playing. Within a channel, only one note can play at a time. +- each **note** starts a sound playing. within a channel, only one note can play at a time. - each note is assigned an **[instrument](../4-instrument/README.md)** which describes what it will sound like. - an **effect** is a command that changes some aspect of playback. it can alter note pitch, volume, timing, and more. - an instrument **macro** is an automated sequence of effects that applies to every note of that instrument. diff --git a/doc/1-intro/hex.md b/doc/1-intro/hex.md index 16a28bc24..d433a38a8 100644 --- a/doc/1-intro/hex.md +++ b/doc/1-intro/hex.md @@ -41,7 +41,7 @@ hex | decimal 40 | 64 ``` -# hex to decimal +## hex to decimal for example, take hexadecimal number `AA`: @@ -67,7 +67,7 @@ now for hexadecimal number `4C5F`: = 19551 ``` -# decimal to hex +## decimal to hex if it's less than 16, just memorize the table at the top of this document. @@ -96,7 +96,7 @@ now for decimal number `69420`: = 10F2C ``` -# hex-decimal table +## hex to decimal table hex | `0` | `1` | `2` | `3` | `4` | `5` | `6` | `7` | `8` | `9` | `A` | `B` | `C` | `D` | `E` | `F` -----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----: diff --git a/doc/2-interface/asset-list.md b/doc/2-interface/asset-list.md index 738983023..cc94312d4 100644 --- a/doc/2-interface/asset-list.md +++ b/doc/2-interface/asset-list.md @@ -1,4 +1,8 @@ -# instrument list +# asset list + +an "asset" refers to an instrument, wavetable or sample. + +## instrument list ![instruments window](instruments.png) @@ -29,7 +33,7 @@ assets may be dragged from folder to folder and even rearranged within folders w right-clicking on a folder allows one to rename or delete it. deleting a folder does not remove the instruments in it. -# wavetable list +## wavetable list ![wavetables window](wavetables.png) @@ -41,7 +45,7 @@ wavetables are saved as Furnace wavetable (.fuw) files. - **save wavetable as .dmw...**: saves the selected wavetable in DefleMask format. - **save raw wavetable...**: saves the selected wavetable as raw data. -# sample list +## sample list ![samples window](samples.png) diff --git a/doc/2-interface/control-edit.png b/doc/2-interface/control-edit.png index e3e2d177a..f7f3e9384 100644 Binary files a/doc/2-interface/control-edit.png and b/doc/2-interface/control-edit.png differ diff --git a/doc/2-interface/control-metronome.png b/doc/2-interface/control-metronome.png index 51822c0e4..0aa230aa6 100644 Binary files a/doc/2-interface/control-metronome.png and b/doc/2-interface/control-metronome.png differ diff --git a/doc/2-interface/control-play-pattern.png b/doc/2-interface/control-play-pattern.png index a11f0aab2..b9bec627f 100644 Binary files a/doc/2-interface/control-play-pattern.png and b/doc/2-interface/control-play-pattern.png differ diff --git a/doc/2-interface/control-play-repeat.png b/doc/2-interface/control-play-repeat.png index fc2865902..b2ae8dd95 100644 Binary files a/doc/2-interface/control-play-repeat.png and b/doc/2-interface/control-play-repeat.png differ diff --git a/doc/2-interface/control-play.png b/doc/2-interface/control-play.png index c258b5fd8..88c16d2c8 100644 Binary files a/doc/2-interface/control-play.png and b/doc/2-interface/control-play.png differ diff --git a/doc/2-interface/control-repeat.png b/doc/2-interface/control-repeat.png index 2a6a96add..ed925f389 100644 Binary files a/doc/2-interface/control-repeat.png and b/doc/2-interface/control-repeat.png differ diff --git a/doc/2-interface/control-step.png b/doc/2-interface/control-step.png index e2d86be34..2d5a68b97 100644 Binary files a/doc/2-interface/control-step.png and b/doc/2-interface/control-step.png differ diff --git a/doc/2-interface/control-stop.png b/doc/2-interface/control-stop.png index e124c60d2..d6e6f340b 100644 Binary files a/doc/2-interface/control-stop.png and b/doc/2-interface/control-stop.png differ diff --git a/doc/2-interface/controls-classic.png b/doc/2-interface/controls-classic.png index 7ffa10503..d5512c65c 100644 Binary files a/doc/2-interface/controls-classic.png and b/doc/2-interface/controls-classic.png differ diff --git a/doc/2-interface/controls-compact.png b/doc/2-interface/controls-compact.png index 7d9c7cca2..eb4c5d06f 100644 Binary files a/doc/2-interface/controls-compact.png and b/doc/2-interface/controls-compact.png differ diff --git a/doc/2-interface/controls-split.png b/doc/2-interface/controls-split.png index 89ae53c7c..6ba03a5e9 100644 Binary files a/doc/2-interface/controls-split.png and b/doc/2-interface/controls-split.png differ diff --git a/doc/2-interface/controls-vertical.png b/doc/2-interface/controls-vertical.png index 6dfd57706..c648910e0 100644 Binary files a/doc/2-interface/controls-vertical.png and b/doc/2-interface/controls-vertical.png differ diff --git a/doc/2-interface/menu-bar.md b/doc/2-interface/menu-bar.md index 16012eb46..bb3a520cb 100644 --- a/doc/2-interface/menu-bar.md +++ b/doc/2-interface/menu-bar.md @@ -4,7 +4,7 @@ the menu bar allows you to select from five menus: file, edit, settings, window items in _italic_ don't appear in basic mode and are only available in advanced mode. -# file +## file - **new...**: creates a new song. - **open...**: opens the file picker, allowing you to select a song to open. @@ -52,7 +52,7 @@ items in _italic_ don't appear in basic mode and are only available in advanced - **exit**: closes Furnace. -## export audio +### export audio this option allows you to export your song in .wav format. I know I know, no .mp3 or .ogg export yet, but you can use a converter. @@ -70,7 +70,7 @@ and three export choices: - **multiple files (one per channel)**: exports the output of each channel to .wav files. - useful for usage with a channel visualizer such as corrscope. -## export VGM +### export VGM this option allows exporting to a VGM (Video Game Music) file. these can be played back with VGMPlay (for example). @@ -104,7 +104,7 @@ the following settings exist: click on **click to export** to begin exporting. -## export ZSM +### export ZSM ZSM (ZSound Music) is a format designed for the Commander X16 to allow hardware playback. it may contain data for either YM2151 or VERA chips. @@ -120,7 +120,7 @@ the following settings are available: click on **Begin Export** to... you know. -## export command stream +### export command stream this option exports a text or binary file which contains a dump of the internal command stream produced when playing the song. @@ -129,7 +129,7 @@ it's not really useful, unless you're a developer and want to use a command stre - **export (binary)**: exports in Furnace's own command stream format (FCS). see `export-tech.md` in `papers/` for details. - **export (text)**: exports the command stream as a text file. only useful for analysis, really. -# edit +## edit - **...**: does nothing except prevent accidental clicks on later menu items if the menu is too tall to fit on the program window. @@ -191,7 +191,7 @@ it's not really useful, unless you're a developer and want to use a command stre - **clear**: opens a window that allows you to mass-delete things like songs, unused instruments, and the like. -# settings +## settings - **full screen**: expands the Furnace window so it covers your screen. - **lock layout**: prevents you from dragging/resizing docked windows, or docking more. @@ -200,7 +200,7 @@ it's not really useful, unless you're a developer and want to use a command stre - **reset layout**: resets the workspace to its defaults. - **settings...**: shows the Settings window. these are detailed in [settings.md]. -# window +## window all these menu items show or hide their associated windows. @@ -228,7 +228,7 @@ all these menu items show or hide their associated windows. - [log viewer](../8-advanced/log-viewer.md) - [stats](../8-advanced/stats.md) -# help +## help - **effect list**: displays the effect list. - **debug menu**: this menu contains various debug utilities. @@ -244,6 +244,6 @@ at the end of the menu bar, more information may be shown: - instrument number and name. - volume in decimal, hex, and percentage. - effect type and description. -- during playback, the current values of the following will be listed:\ - > speed/groove @ tick rate (BPM) | order | row | elapsed time. +- during playback, these values will be displayed: + - `speed/groove @ tick rate (BPM) | order | row | elapsed time` - if any changes or edits have been made but not yet saved, "modified" will appear. diff --git a/doc/2-interface/settings.md b/doc/2-interface/settings.md index 5d62fd8e0..66b70d7d2 100644 --- a/doc/2-interface/settings.md +++ b/doc/2-interface/settings.md @@ -173,17 +173,10 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o ### Cores -- **Arcade/YM2151 core**\ - **Genesis/YM2612 core**\ - **SN76489 core**\ - **NES core**\ - **FDS core**\ - **SID core**\ - **POKEY core**\ - **OPN/OPNA/OPNB cores**: - - **Playback Core(s)**: core(s) to use for playback. - - **Render Core(s)**: core(s) to use when exporting audio. - - all of these are covered in the [guide to choosing emulation cores](../9-guides/emulation-cores.md). +- **Playback Core(s)**: core(s) to use for playback. +- **Render Core(s)**: core(s) to use when exporting audio. + +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 page](../7-systems/pcspkr.md). @@ -205,7 +198,7 @@ a list of keybinds is displayed. the settings for note input keybinds operate differently. each entry in the list of keybinds is made of the following: - **Key**: key assignment. - **Type**: type of note input. left-click cycles through "Note", "Note off", "Note release", and "Macro release". - - _note:_ the list is sorted by type. on changing a key's type, it will instantly move to its new sorting position! + - note: the list is sorted by type. on changing a key's type, it will instantly move to its new sorting position! - **Value**: number of semitones above C at the current octave. only appears for note type binds. - **Remove**: removes the keybind from the list. @@ -311,16 +304,12 @@ below all the binds, select a key from the dropdown list to add it. it will appe ### Text -- **Main font**: overall interface font.\ - **Header font**: font for section headers.\ - **Pattern font** font for the pattern view, the order list, and related. +- **Main font**: overall interface font. +- **Header font**: font for section headers. +- **Pattern font** font for the pattern view, the order list, and related. - if "Custom...", a file path selector will appear. - **Size**: font size. -- **Display Japanese characters**\ - **Display Chinese (Simplified) characters**\ - **Display Chinese (Traditional) characters**\ - **Display Korean characters** - - only toggle these options if you have enough graphics memory. +- **Display Japanese characters**, **Display Chinese (Simplified) characters**, **Display Chinese (Traditional) characters** and **Display Korean characters**: only toggle these options if you have enough graphics memory. - these are a temporary solution until dynamic font atlas is implemented in Dear ImGui. ### Program diff --git a/doc/2-interface/song-info.md b/doc/2-interface/song-info.md index 9bb82e2f9..1ead4f879 100644 --- a/doc/2-interface/song-info.md +++ b/doc/2-interface/song-info.md @@ -9,7 +9,7 @@ all of this metadata will be included in a VGM export. this isn't the case for a - _**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 this window allows one to create **subsongs** - multiple individual songs within a single file. each song has its own order list and patterns, but all songs within a file share the same chips, samples, and so forth. @@ -19,7 +19,7 @@ this window allows one to create **subsongs** - multiple individual songs within - **Name**: title of the current subsong. - the box at the bottom can store any arbitrary text, like a separate "Comments" box for the current subsong. -# speed +## speed there are multiple ways to set the tempo of a song. @@ -45,7 +45,8 @@ _**Divider**:_ Changes the effective tick rate. a tick rate of 60Hz and a diviso **Highlight**: sets the pattern row highlights: - the first value represents the number of rows per beat. - the second value represents the number of rows per measure. -- these don't have to line up with the music's actual beats and measures. set them as preferred for tracking. _Note:_ These values are used for the metronome and calculating BPM. +- these don't have to line up with the music's actual beats and measures. set them as preferred for tracking. + - note: these values are used for the metronome and calculating BPM. **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.) diff --git a/doc/2-interface/window.png b/doc/2-interface/window.png index 0bc4e239b..fa46ccc53 100644 Binary files a/doc/2-interface/window.png and b/doc/2-interface/window.png differ diff --git a/doc/3-pattern/README.md b/doc/3-pattern/README.md index 2f76c8042..f619ce287 100644 --- a/doc/3-pattern/README.md +++ b/doc/3-pattern/README.md @@ -51,23 +51,23 @@ right-clicking the `++` toggles the visualizer, which is active only during play to rename and/or hide channels, open [the Channels window](../8-advanced/channels.md) via the window menu. -# input +## input -## note 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** (OFF) turns off the last played note in that channel (key off for FM/hardware envelope; note cut otherwise). -- **note release** (===) triggers macro release (and in FM/hardware envelope channels it also triggers key off). -- **macro release** (REL) does the same as above, but does not trigger key off in FM/hardware envelope channels. +- **note off** (`OFF`) turns off the last played note in that channel (key off for FM/hardware envelope; note cut otherwise). +- **note release** (`===`) triggers macro release (and in FM/hardware envelope channels it also triggers key off). +- **macro release** (`REL`) does the same as above, but does not trigger key off in FM/hardware envelope channels. - **toggle edit** enables and disables editing. when editing is enabled, the cursor's row will be shaded red. -## instrument/volume input +### 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 +### effect input works like the instrument/volume input. @@ -80,7 +80,7 @@ here's [a list of effect types](effects.md). -# keyboard shortcuts +## keyboard shortcuts these are the default key functions. all keys are configurable in the Keyboard tab of the Settings window. diff --git a/doc/3-pattern/effects.md b/doc/3-pattern/effects.md index a31e29495..10eda981a 100644 --- a/doc/3-pattern/effects.md +++ b/doc/3-pattern/effects.md @@ -7,8 +7,8 @@ however, effects are continuous, which means you only need to type it once and t ## volume - `0Axy`: **Volume slide.** - - If `x` is 0 then this slides volume down by `y` each tick. - - If `y` is 0 then this slides volume up by `x` each tick. + - if `x` is 0 then this slides volume down by `y` each tick. + - if `y` is 0 then this slides volume up by `x` each tick. - `FAxy`: **Fast volume slide.** same as `0Axy` above but 4× faster. - `F3xx`: **Fine volume slide up.** same as `0Ax0` but 64× slower. - `F4xx`: **Fine volume slide down.** same as `0A0x` but 64× slower. @@ -16,8 +16,8 @@ however, effects are continuous, which means you only need to type it once and t - `F9xx`: **Single tick volume slide down.** subtracts `x` from volume on first tick only. - --- - `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth. - - Tremolo is downward only. - - Maximum tremolo depth is -60 volume steps. + - tremolo is downward only. + - maximum tremolo depth is -60 volume steps. ## pitch @@ -38,11 +38,11 @@ however, effects are continuous, which means you only need to type it once and t - `E0xx`: **Set arpeggio speed.** this sets the number of ticks between arpeggio values. default is 1. - --- - `04xy`: **Vibrato.** changes pitch to be "wavy" with a sine LFO. `x` is the speed, while `y` is the depth. - - Maximum vibrato depth is ±1 semitone. + - maximum vibrato depth is ±1 semitone. - `E3xx`: **Set vibrato direction.** `xx` may be one of the following: - - `00`: Up and down. default. - - `01`: Up only. - - `02`: Down only. + - `00`: up and down. default. + - `01`: up only. + - `02`: down only. - `E4xx`: **Set vibrato range** in 1/16th of a semitone. ## panning @@ -63,7 +63,7 @@ not all chips support these effects. ## time -- `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. - --- - `Cxxx`: **Set tick rate.** changes tick rate to `xxx` Hz (ticks per second). @@ -79,20 +79,21 @@ not all chips support these effects. ## note - `0Cxx`: **Retrigger.** repeats current note every `xx` ticks. - - This effect is not continuous; it must be entered on every row. -- `ECxx`: **Note cut.** ends current note after `xx` ticks. For FM instruments, it's equivalent to a "key off". + - this effect is not continuous; it must be entered on every row. +- `ECxx`: **Note cut.** ends current note after `xx` ticks. for FM instruments, it's equivalent to a "key off". - `EDxx`: **Note delay.** delays note by `x` ticks. ## other - `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 LEGACY sample mode bank.** selects sample bank. used only for compatibility. - does not apply on Amiga. - `EExx`: **Send external command.** - this effect is currently incomplete. -- `F5xx`: **Disable macro.**\ - `F6xx`: **Enable macro.** see macro table at the end of this document for possible values. +- `F5xx`: **Disable macro.** +- `F6xx`: **Enable macro.** + - see macro table at the end of this document for possible values. additionally, [each chip has its own effects](../7-systems/README.md). diff --git a/doc/4-instrument/README.md b/doc/4-instrument/README.md index 0c7074b39..dd24c7260 100644 --- a/doc/4-instrument/README.md +++ b/doc/4-instrument/README.md @@ -68,56 +68,56 @@ the following instrument types are available: - [C140](c140.md) - for use with C140 sample chip. - [C219](c219.md) - for use with C219 sample chip. -# macros +## macros -Macros are incredibly versatile tools for automating instrument parameters. +macros are incredibly versatile tools for automating instrument parameters. -After creating an instrument, open the Instrument Editor and select the "Macros" tab. There may be multiple macro tabs to control individual FM operators and such. +after creating an instrument, open the Instrument Editor and select the "Macros" tab. there may be multiple macro tabs to control individual FM operators and such. ![macro view](macroview.png) -The very first numeric entry sets the visible width of the bars in sequence-type macros. The scrollbar affects the view of all macros at once. There's a matching scrollbar at the bottom underneath all the macros. +the very first numeric entry sets the visible width of the bars in sequence-type macros. the scrollbar affects the view of all macros at once. there's a matching scrollbar at the bottom underneath all the macros. -Each macro has two buttons on the left. -- Macro type (explained below). -- Timing editor, which pops up a small dialog: - - Step Length (ticks): Determines how many ticks pass before each change of value. Default is 1. - - Delay: Delays the start of the macro until this many ticks have passed. Default is 0. - - The button is highlighted if either of these is set differently from default. +each macro has two buttons on the left. +- macro type (explained below). +- timing editor, which pops up a small dialog: + - **Step Length (ticks)**: determines how many ticks pass before each change of value. default is 1. + - **Delay**: delays the start of the macro until this many ticks have passed. default is 0. + - the button is highlighted if either of these is set differently from default. ## macro types -Every macro can be defined though one of three methods, selectable with the leftmost button under the macro type label: +every macro can be defined though one of three methods, selectable with the leftmost button under the macro type label: - ![sequence](macro-button-seq.png) **Sequence:** displayed as a bar graph, this is a sequence of numeric values. - ![ADSR](macro-button-ADSR.png) **ADSR:** this is a traditional ADSR envelope, defined by the rate of increase and decrease of value over time. - ![LFO](macro-button-LFO.png) **LFO:** the Low Frequency Oscillator generates a repeating wave of values. -Some macros are "bitmap" style. They represent a number of "bits" that can be toggled individually, and the values listed represent the sum of which bits are turned on. +some macros are "bitmap" style. they represent a number of "bits" that can be toggled individually, and the values listed represent the sum of which bits are turned on. ### sequence ![sequence macro editor](macro-seq.png) -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. +the values of the macro can be drawn in the "bar graph" box. -Just beneath the box is a shorter bar that controls looping. -- Click to set the start point of a loop; the end point is the last value or release point. It appears as half-height bars. Right-click to remove the loop. -- Shift-click to set the release point. When played, the macro will hold here until the note is released. It appears as a full-height bar. Right-click to remove the release point. +just beneath the box is a shorter bar that controls looping. +- click to set the start point of a loop; the end point is the last value or release point. it appears as half-height bars. right-click to remove the loop. +- shift-click to set the release point. when played, the macro will hold here until the note is released. it appears as a full-height bar. right-click to remove the release point. -Finally, the sequence of values can be directly edited in the text box at the bottom. -- The loop start is entered as a `|`. -- The release point is entered as a `/`. -- In arpeggio macros, a value starting with a `@` is an absolute note (instead of a relative shift). No matter the note entered in the pattern, `@` values will be played at that exact note. This is especially useful for noise instruments with preset periods. +finally, the sequence of values can be directly edited in the text box at the bottom. +- the loop start is entered as a `|`. +- the release point is entered as a `/`. +- in arpeggio macros, a value starting with a `@` is an absolute note (instead of a relative shift). no matter the note entered in the pattern, `@` values will be played at that exact note. this is especially useful for noise instruments with preset periods. ### ADSR ![ADSR macro editor](macro-ADSR.png) - **Bottom** and **Top** determine the range of outputs generated by the macro. (Bottom can be larger than Top to invert the envelope!) All outputs will be between these two values. -- Attack, Decay, Sustain, SusDecay, and Release accept inputs between 0 to 255. These are scaled to the distance between Bottom and Top. +- attack, Decay, Sustain, SusDecay, and Release accept inputs between 0 to 255. these are scaled to the distance between Bottom and Top. - **Attack** is how much the value moves toward Top with each tick. - **Hold** sets how many ticks to stay at Top before Decay. - **Decay** is how much the value moves to the Sustain level. @@ -135,24 +135,24 @@ Finally, the sequence of values can be directly edited in the text box at the bo - **Bottom** and **Top** determine the range of values generated by the macro. (Bottom can be larger than Top to invert the waveform!) - **Speed** is how quickly the values change - the frequency of the oscillator. - **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. -# wavetable +## wavetable -This tab appears for PC Engine, FDS, Namco WSG, and other wavetable-based instruments. +this tab appears for PC Engine, FDS, Namco WSG, and other wavetable-based instruments. ![wavetable tab](wavetable.png) -When **Enable synthesizer** is off, the wavetable used for the instrument may be selected by creating a Waveform macro with a single value. +when **Enable synthesizer** is off, the wavetable used for the instrument may be selected by creating a Waveform macro with a single value. -To use the wavetable synthesizer, refer to [the wavetable synthesizer section](wavesynth.md). +to use the wavetable synthesizer, refer to [the wavetable synthesizer section](wavesynth.md). -# sample +## sample -This tab appears for Generic PCM DAC, Amiga and SNES. +this tab appears for Generic PCM DAC, Amiga and SNES. ![sample tab](sample-map.png) diff --git a/doc/4-instrument/adpcm-a.md b/doc/4-instrument/adpcm-a.md index c45658e44..55d96f860 100644 --- a/doc/4-instrument/adpcm-a.md +++ b/doc/4-instrument/adpcm-a.md @@ -1,6 +1,6 @@ # ADPCM-A instrument editor -The ADPCM-A instrument editor contains two tabs: Sample and Macros. +the ADPCM-A instrument editor contains two tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/adpcm-b.md b/doc/4-instrument/adpcm-b.md index 9f569bf7d..75579e4c9 100644 --- a/doc/4-instrument/adpcm-b.md +++ b/doc/4-instrument/adpcm-b.md @@ -1,6 +1,6 @@ # ADPCM-B instrument editor -The ADPCM-B instrument editor contains three tabs: Sample and Macros. +the ADPCM-B instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/ay8910.md b/doc/4-instrument/ay8910.md index 296aa9c38..b47e46444 100644 --- a/doc/4-instrument/ay8910.md +++ b/doc/4-instrument/ay8910.md @@ -1,6 +1,6 @@ # AY-3-8910 instrument editor -The AY-3-8910 instrument editor consists of two tabs. +the AY-3-8910 instrument editor consists of two tabs. ## Sample diff --git a/doc/4-instrument/ay8930.md b/doc/4-instrument/ay8930.md index 8c7120137..7bec40073 100644 --- a/doc/4-instrument/ay8930.md +++ b/doc/4-instrument/ay8930.md @@ -1,6 +1,6 @@ # AY8930 instrument editor -The AY8930 instrument editor consists of two tabs. +the AY8930 instrument editor consists of two tabs. ## Sample diff --git a/doc/4-instrument/c140.md b/doc/4-instrument/c140.md index 0c2f124e7..65331b34f 100644 --- a/doc/4-instrument/c140.md +++ b/doc/4-instrument/c140.md @@ -1,6 +1,6 @@ # Namco C140 instrument editor -The Namco C140 instrument editor contains three tabs: Sample and Macros. +the Namco C140 instrument editor contains two tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/c219.md b/doc/4-instrument/c219.md index 7ed3aca89..0b8b3586f 100644 --- a/doc/4-instrument/c219.md +++ b/doc/4-instrument/c219.md @@ -1,6 +1,6 @@ # Namco C219 instrument editor -The Namco C219 instrument editor contains three tabs: Sample and Macros. +the Namco C219 instrument editor contains two tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/c64.md b/doc/4-instrument/c64.md index 4683d3963..bd864b031 100644 --- a/doc/4-instrument/c64.md +++ b/doc/4-instrument/c64.md @@ -1,6 +1,6 @@ # C64 SID instrument editor -The C64 instrument editor consists of two tabs: "C64" to control various parameters of sound channels, and "Macros" containing several macros. +the C64 instrument editor consists of two tabs: "C64" to control various parameters of sound channels, and "Macros" containing several macros. ## C64 diff --git a/doc/4-instrument/es5506.md b/doc/4-instrument/es5506.md index 8f5de6afe..891cf484f 100644 --- a/doc/4-instrument/es5506.md +++ b/doc/4-instrument/es5506.md @@ -1,6 +1,6 @@ # Ensoniq ES5506 instrument editor -The ES5506 instrument editor contains three tabs: Sample, ES5506 and Macros. +the ES5506 instrument editor contains three tabs: Sample, ES5506 and Macros. ## Sample diff --git a/doc/4-instrument/fds.md b/doc/4-instrument/fds.md index e27861e48..fb72dddc6 100644 --- a/doc/4-instrument/fds.md +++ b/doc/4-instrument/fds.md @@ -1,6 +1,6 @@ # FDS instrument editor -The FDS instrument editor contains three tabs: FDS, Wavetable and Macros. +the FDS instrument editor contains three tabs: FDS, Wavetable and Macros. ## FDS diff --git a/doc/4-instrument/fm-opl.md b/doc/4-instrument/fm-opl.md index 00bf51f85..f3e1c6d0b 100644 --- a/doc/4-instrument/fm-opl.md +++ b/doc/4-instrument/fm-opl.md @@ -1,6 +1,6 @@ # OPL FM synthesis instrument editor -The OPL FM editor is divided into 7 tabs: +the OPL FM editor is divided into 7 tabs: - **FM**: for controlling the basic parameters of FM sound source. - **Macros (FM)**: for macros controlling algorithm and feedback. @@ -14,47 +14,47 @@ The OPL FM editor is divided into 7 tabs: the OPL synthesizers are nominally two-operator (OPL3 supports 4-operator mode on up to six channels), meaning it takes two oscillators to produce a single sound. -These apply to the instrument as a whole: -- **Algorithm (ALG)**: Determines how operators are connected to each other (0-1 range and OPL1 and OPL2; 0-3 range on OPL3 4op mode). - - 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. -- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself (0 to 7). +these apply to the instrument as a whole: +- **Algorithm (ALG)**: determines how operators are connected to each other (0-1 range and OPL1 and OPL2; 0-3 range on OPL3 4op mode). + - 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. +- **Feedback (FB)**: determines how many times operator 1 returns its output to itself (0 to 7). -- **4-op**: Enables 4-operator FM instrument editor mode (only on OPL3). -- **Drums**: Enables OPL drum mode editor. +- **4-op**: enables 4-operator FM instrument editor mode (only on OPL3). +- **Drums**: enables OPL drum mode editor. -These apply to each operator: -- The crossed-arrows button can be dragged to rearrange operators. -- **Amplitude Modulation (AM)**: Makes the operator affected by LFO tremolo. -- **Sustain flag (SUS)**: When enabled, value of Sustain Level is in effect. -- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack (0 to 15). -- **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 to 15). -- **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 to 15). -- **Release Rate (RR)**: Determines the rate at which the sound disappears after note off. The higher the value, the shorter the release (0 to 15). -- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 63 (decimal) the smallest. A change of one unit is about 0.75 dB. -- **Key Scale Level (KSL)**: Also known as "Level Scale". Determines the degree to which the amplitude decreases according to the pitch. +these apply to each operator: +- the crossed-arrows button can be dragged to rearrange operators. +- **Amplitude Modulation (AM)**: makes the operator affected by LFO tremolo. +- **Sustain flag (SUS)**: when enabled, value of Sustain Level is in effect. +- **Attack Rate (AR)**: determines the rising time for the sound. the bigger the value, the faster the attack (0 to 15). +- **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 to 15). +- **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 to 15). +- **Release Rate (RR)**: determines the rate at which the sound disappears after note off. the higher the value, the shorter the release (0 to 15). +- **Total Level (TL)**: represents the envelope’s highest amplitude, with 0 being the largest and 63 (decimal) the smallest. a change of one unit is about 0.75 dB. +- **Key Scale Level (KSL)**: also known as "Level Scale". determines the degree to which the amplitude decreases according to the pitch. ![FM ADSR chart](FM-ADSRchart.png) -- **Key Scale Rate (KSR)**: Also known as "Rate Scale". Determines the degree to which the envelope execution speed increases according to the pitch. -- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch (0-15 range but be noted that 11, 13 and 14 have no effect!). -- **Waveform Select (WS)**: Changes the waveform of the operator (OPL2 and OPL3 only, 0-3 range on OPL2 and 0-7 on OPL3). -- **Vibrato (VIB)**: Makes the operator affected by LFO vibrato. +- **Key Scale Rate (KSR)**: also known as "Rate Scale". determines the degree to which the envelope execution speed increases according to the pitch. +- **Frequency Multiplier (MULT)**: determines the operator frequency in relation to the pitch (0-15 range but be noted that 11, 13 and 14 have no effect!). +- **Waveform Select (WS)**: changes the waveform of the operator (OPL2 and OPL3 only, 0-3 range on OPL2 and 0-7 on OPL3). +- **Vibrato (VIB)**: makes the operator affected by LFO vibrato. ## macros -Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled: +macros define the sequence of values passed to the given parameter. via macro, along with the previously mentioned parameters, the following can be controlled: ## FM Macros -All parameters are listed above. +all parameters are listed above. ## OP1-OP4 Macros -All parameters are listed above. +all parameters are listed above. ## Macros @@ -65,6 +65,6 @@ All parameters are listed above. - **Relative**: when enabled, pitch changes are relative to the current pitch. - **Phase Reset**: restarts all operators and resets the waveform to its start. -# OPL (drums) instrument editor +## OPL (drums) instrument editor this is similar to the OPL instrument editor, but sets the parameters of snare, tom, top and hi-hat directly once a drums instrument is activated. diff --git a/doc/4-instrument/fm-opll.md b/doc/4-instrument/fm-opll.md index efe6100b2..3c91ee348 100644 --- a/doc/4-instrument/fm-opll.md +++ b/doc/4-instrument/fm-opll.md @@ -1,6 +1,6 @@ # OPLL FM synthesis instrument editor -The OPLL FM editor is divided into 5 tabs: +the OPLL FM editor is divided into 5 tabs: - **FM**: for controlling the basic parameters of FM sound source. - **Macros (FM)**: for macros controlling algorithm, waveform and feedback. @@ -16,10 +16,10 @@ however, unlike the other FM chips, only one custom patch may be set at a time, but don't worry! there also are 15 preset patches that you may select at any time. these apply to the instrument as a whole: -- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself (0 to 7). +- **Feedback (FB)**: determines how many times operator 1 returns its output to itself (0 to 7). - **Sustain (SUS)**: enables the sustain flag (sets the release rate to 5). -- **DC (half-sine carrier)**: Sets the waveform produced by carrier operator to half-sine. -- **DM (half-sine modulator)**: Sets the waveform produced by modulator operator to half-sine. +- **DC (half-sine carrier)**: sets the waveform produced by carrier operator to half-sine. +- **DM (half-sine modulator)**: sets the waveform produced by modulator operator to half-sine. - **preset dropdown**: selects OPLL preset instrument. - this is the selector for the preset patches I mentioned before. - once a preset patch is selected, only the volume is configurable. @@ -28,35 +28,35 @@ these apply to the instrument as a whole: if you select the special Drums patch, you may use the instrument in Drums mode of OPLL. an extra setting also appears: - **Fixed frequency mode**: allows you to set a fixed frequency for the drum channels. -These apply to each operator: -- The crossed-arrows button can be dragged to rearrange operators. -- **Amplitude Modulation (AM)**: Makes the operator affected by LFO tremolo. -- **Envelope generator sustain flag (EGS)**: When enabled, value of Sustain Level is in effect. -- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack (0 to 15). -- **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 to 15). -- **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 to 15). -- **Release Rate (RR)**: Determines the rate at which the sound disappears after note off. The higher the value, the shorter the release (0 to 15). -- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 63 (decimal) the smallest. A change of one unit is about 0.75 dB. +these apply to each operator: +- the crossed-arrows button can be dragged to rearrange operators. +- **Amplitude Modulation (AM)**: makes the operator affected by LFO tremolo. +- **Envelope generator sustain flag (EGS)**: when enabled, value of Sustain Level is in effect. +- **Attack Rate (AR)**: determines the rising time for the sound. the bigger the value, the faster the attack (0 to 15). +- **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 to 15). +- **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 to 15). +- **Release Rate (RR)**: determines the rate at which the sound disappears after note off. the higher the value, the shorter the release (0 to 15). +- **Total Level (TL)**: represents the envelope’s highest amplitude, with 0 being the largest and 63 (decimal) the smallest. a change of one unit is about 0.75 dB. - in the case of the second operator, it goes from 0 to 15 instead. -- **Key Scale Level (KSL)**: Also known as "Level Scale". Determines the degree to which the amplitude decreases according to the pitch. +- **Key Scale Level (KSL)**: also known as "Level Scale". determines the degree to which the amplitude decreases according to the pitch. ![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. -- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch. (0-10, 12, 15 range) -- **Vibrato (VIB)**: Makes the operator affected by LFO vibrato. +- **Envelope Scale (KSR)**: also known as "Key Scale". determines the degree to which the envelope execution speed increases according to the pitch. +- **Frequency Multiplier (MULT)**: determines the operator frequency in relation to the pitch. (0-10, 12, 15 range) +- **Vibrato (VIB)**: makes the operator affected by LFO vibrato. ## macros -Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled: +macros define the sequence of values passed to the given parameter. via macro, along with the previously mentioned parameters, the following can be controlled: ## FM Macros -All parameters are listed above. +all parameters are listed above. ## OP1-OP4 Macros -All parameters are listed above. +all parameters are listed above. ## Macros @@ -68,6 +68,6 @@ All parameters are listed above. - **Phase Reset**: restarts all operators and resets the waveform to its start. -# links +## 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. +[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. diff --git a/doc/4-instrument/fm-opm.md b/doc/4-instrument/fm-opm.md index dc5c7f922..fe822b428 100644 --- a/doc/4-instrument/fm-opm.md +++ b/doc/4-instrument/fm-opm.md @@ -1,6 +1,6 @@ # FM (OPM) instrument editor -The FM editor is divided into 7 tabs: +the FM editor is divided into 7 tabs: - **FM**: for controlling the basic parameters of FM sound source. - **Macros (FM)**: for macros controlling algorithm, feedback and LFO. @@ -14,53 +14,53 @@ The FM editor is divided into 7 tabs: OPM is 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 to 7). -- **Algorithm (ALG)**: Determines how operators are connected to each other (0 to 7). - - 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. +these apply to the instrument as a whole: +- **Feedback (FB)**: determines how many times operator 1 returns its output to itself (0 to 7). +- **Algorithm (ALG)**: determines how operators are connected to each other (0 to 7). + - 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 > Freq (FMS)**: Determines how much will LFO have an effect in frequency (0 to 7). -- **LFO > Amp (AMS)**: Determines how much will LFO have an effect in volume (0 to 3). +- **LFO > Freq (FMS)**: determines how much will LFO have an effect in frequency (0 to 7). +- **LFO > Amp (AMS)**: determines how much will LFO have an effect in volume (0 to 3). - only applies to operators which have AM turned on. -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 volume affected by LFO. -- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack (0 to 31). -- **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 to 31). -- **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 to 15). -- **Decay Rate 2 (D2R) / 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 to 31). -- **Release Rate (RR)**: Determines the rate at which the sound disappears after note off. The higher the value, the shorter the release (0 to 15). -- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. A change of one unit is about 0.75 dB. +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 volume affected by LFO. +- **Attack Rate (AR)**: determines the rising time for the sound. the bigger the value, the faster the attack (0 to 31). +- **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 to 31). +- **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 to 15). +- **Decay Rate 2 (D2R) / 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 to 31). +- **Release Rate (RR)**: determines the rate at which the sound disappears after note off. the higher the value, the shorter the release (0 to 15). +- **Total Level (TL)**: represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. a change of one unit is about 0.75 dB. ![FM ADSR chart](FM-ADSRchart.png) -- **Envelope Scale (RS/KS)**: Also known as "Key Scale" or "Rate Scale". Determines the degree to which the envelope execution speed increases according to the pitch (0 to 3). -- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch (0 to 15). -- **Fine Detune (DT)**: Shifts the pitch a little (0 to 7). -- **Coarse Detune (DT2)**: Shifts the pitch by tens of cents (0 to 3). +- **Envelope Scale (RS/KS)**: also known as "Key Scale" or "Rate Scale". determines the degree to which the envelope execution speed increases according to the pitch (0 to 3). +- **Frequency Multiplier (MULT)**: determines the operator frequency in relation to the pitch (0 to 15). +- **Fine Detune (DT)**: shifts the pitch a little (0 to 7). +- **Coarse Detune (DT2)**: shifts the pitch by tens of cents (0 to 3). ## macros -Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled: +macros define the sequence of values passed to the given parameter. via macro, along with the previously mentioned parameters, the following can be controlled: ## FM Macros - **AM Depth**: amplitude modulation depth. - **PM Depth**: pitch modulation depth. - **LFO Speed**: LFO frequency. -- **LFO Shape**: LFO shape. Choose between saw, square, triangle, and random. +- **LFO Shape**: LFO shape. choose between saw, square, triangle, and random. - **OpMask**: toggles each operator. ## OP1-OP4 Macros -All parameters are listed above. +all parameters are listed above. ## Macros @@ -73,6 +73,6 @@ All parameters are listed above. - **Phase Reset**: restarts all operators and resets the waveform to its start. -# links +## 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. +[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. diff --git a/doc/4-instrument/fm-opn.md b/doc/4-instrument/fm-opn.md index 9dc2cd77d..c78b93b19 100644 --- a/doc/4-instrument/fm-opn.md +++ b/doc/4-instrument/fm-opn.md @@ -1,6 +1,6 @@ # FM (OPN) instrument editor -The FM editor is divided into 7 tabs: +the FM editor is divided into 7 tabs: - **FM**: for controlling the basic parameters of FM sound source. - **Macros (FM)**: for macros controlling algorithm, feedback and LFO. @@ -14,43 +14,43 @@ The FM editor is divided into 7 tabs: OPN is four-operator, meaning it takes four oscillators to produce a single sound. -These apply to the instrument as a whole: -- **Algorithm (ALG)**: Determines how operators are connected to each other (0 to 7). - - 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. -- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself (0 to 7). +these apply to the instrument as a whole: +- **Algorithm (ALG)**: determines how operators are connected to each other (0 to 7). + - 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. +- **Feedback (FB)**: determines how many times operator 1 returns its output to itself (0 to 7). -- **LFO > Freq (FMS)**: Determines how much will LFO have an effect in frequency (0 to 7). -- **LFO > Amp (AMS)**: Determines how much will LFO have an effect in volume (0 to 3). +- **LFO > Freq (FMS)**: determines how much will LFO have an effect in frequency (0 to 7). +- **LFO > Amp (AMS)**: determines how much will LFO have an effect in volume (0 to 3). - only applies to operators which have AM turned on. - does not apply to YM2203. -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's volume affected by LFO. +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's volume affected by LFO. - does not apply to YM2203. -- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack (0 to 31). -- **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 to 31). -- **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 to 15). -- **Decay Rate 2 (D2R) / 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 to 31). -- **Release Rate (RR)**: Determines the rate at which the sound disappears after note off. The higher the value, the shorter the release (0 to 15). -- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. A change of one unit is about 0.75 dB. -- **Hardware Envelope Generator (SSG-EG)**: Executes the built-in envelope, inherited from AY-3-8910 PSG. Speed of execution is controlled via Decay Rate. +- **Attack Rate (AR)**: determines the rising time for the sound. the bigger the value, the faster the attack (0 to 31). +- **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 to 31). +- **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 to 15). +- **Decay Rate 2 (D2R) / 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 to 31). +- **Release Rate (RR)**: determines the rate at which the sound disappears after note off. the higher the value, the shorter the release (0 to 15). +- **Total Level (TL)**: represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. a change of one unit is about 0.75 dB. +- **Hardware Envelope Generator (SSG-EG)**: executes the built-in envelope, inherited from AY-3-8910 PSG. speed of execution is controlled via Decay Rate. ![FM ADSR chart](FM-ADSRchart.png) -- **Envelope Scale (RS/KS)**: Also known as "Key Scale" or "Rate Scale". Determines the degree to which the envelope execution speed increases according to the pitch (0 to 3). -- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch (0 to 15). -- **Fine Detune (DT)**: Shifts the pitch a little (0 to 7). +- **Envelope Scale (RS/KS)**: also known as "Key Scale" or "Rate Scale". determines the degree to which the envelope execution speed increases according to the pitch (0 to 3). +- **Frequency Multiplier (MULT)**: determines the operator frequency in relation to the pitch (0 to 15). +- **Fine Detune (DT)**: shifts the pitch a little (0 to 7). ## macros -Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled: +macros define the sequence of values passed to the given parameter. via macro, along with the previously mentioned parameters, the following can be controlled: ## FM Macros @@ -59,17 +59,17 @@ Macros define the sequence of values passed to the given parameter. Via macro, a ## OP1-OP4 Macros -All parameters are listed above. +all parameters are listed above. ## Macros -- **Arpeggio**: Pitch change sequence in semitones. +- **Arpeggio**: pitch change sequence in semitones. - **Panning**: toggles output on left and right channels. - **Pitch**: fine pitch. - **Relative**: when enabled, pitch changes are relative to the current pitch. -- **Phase Reset**: Restarts all operators and resets the waveform to its start. +- **Phase Reset**: restarts all operators and resets the waveform to its start. -# links +## 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. +[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. diff --git a/doc/4-instrument/fm-opz.md b/doc/4-instrument/fm-opz.md index 85439dd7e..5a15d5f30 100644 --- a/doc/4-instrument/fm-opz.md +++ b/doc/4-instrument/fm-opz.md @@ -1,6 +1,6 @@ # FM (OPM) instrument editor -The FM editor is divided into 7 tabs: +the FM editor is divided into 7 tabs: - **FM**: for controlling the basic parameters of FM sound source. - **Macros (FM)**: for macros controlling algorithm, feedback and LFO @@ -14,36 +14,36 @@ The FM editor is divided into 7 tabs: OPZ is four-operator, meaning it takes four oscillators to produce a single sound. -These apply to the instrument as a whole: -- **Algorithm (ALG)**: Determines how operators are connected to each other (0 to 7). - - 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. -- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself (0 to 7). +these apply to the instrument as a whole: +- **Algorithm (ALG)**: determines how operators are connected to each other (0 to 7). + - 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. +- **Feedback (FB)**: determines how many times operator 1 returns its output to itself (0 to 7). -- **LFO > Freq (FMS/PMS)**: Determines how much will LFO have an effect in frequency (0 to 7). -- **LFO > Amp (AM)**: Determines how much will LFO have an effect in volume (0 to 3). -- **LFO2 > Freq (FMS/PMS2)**: Determines how much will the second LFO have an effect in frequency (0 to 7). -- **LFO2 > Amp (AMS2)**: Determines how much will the second LFO have an effect in volume (0 to 3). +- **LFO > Freq (FMS/PMS)**: determines how much will LFO have an effect in frequency (0 to 7). +- **LFO > Amp (AM)**: determines how much will LFO have an effect in volume (0 to 3). +- **LFO2 > Freq (FMS/PMS2)**: determines how much will the second LFO have an effect in frequency (0 to 7). +- **LFO2 > Amp (AMS2)**: determines how much will the second LFO have an effect in volume (0 to 3). - **Request from TX81Z**: if a Yamaha TX81Z is plugged in as MIDI input and output device, this sends a SysEx to the device in order to fetch its current voice. -These apply to each operator: -- The crossed-arrows button can be dragged to rearrange operators. -- **Amplitude Modulation (AM)**: Makes the operator's volume affected by LFO. -- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack (0 to 31). -- **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 to 31). -- **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 to 15). -- **Decay Rate 2 (D2R) / 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 to 31). -- **Release Rate (RR)**: Determines the rate at which the sound disappears after note off. The higher the value, the shorter the release (0 to 15). -- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. A change of one unit is about 0.75 dB. +these apply to each operator: +- the crossed-arrows button can be dragged to rearrange operators. +- **Amplitude Modulation (AM)**: makes the operator's volume affected by LFO. +- **Attack Rate (AR)**: determines the rising time for the sound. the bigger the value, the faster the attack (0 to 31). +- **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 to 31). +- **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 to 15). +- **Decay Rate 2 (D2R) / 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 to 31). +- **Release Rate (RR)**: determines the rate at which the sound disappears after note off. the higher the value, the shorter the release (0 to 15). +- **Total Level (TL)**: represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. a change of one unit is about 0.75 dB. ![FM ADSR chart](FM-ADSRchart.png) -- **Envelope Scale (RS/KS)**: Also known as "Key Scale" or "Rate Scale". Determines the degree to which the envelope execution speed increases according to the pitch (0 to 3). -- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch (0 to 15). +- **Envelope Scale (RS/KS)**: also known as "Rate Scale" or "Key Scale". determines the degree to which the envelope execution speed increases according to the pitch (0 to 3). +- **Frequency Multiplier (MULT)**: determines the operator frequency in relation to the pitch (0 to 15). - **Fine Frequency Multiplier (Fine)**: a fine control for MULT. - **Envelope Generator Shift (EGS)**: adds a "handicap" to the envelope. in other words, the minimum volume of the operator. - 0: no change @@ -52,9 +52,9 @@ These apply to each operator: - 3: -48dB - does not apply for OP4. - **Reverb (REV)**: not a true reverb. extends release time, giving a slight reverb-like effect to the operator. -- **Fine Detune (DT)**: Shifts the pitch a little (0 to 7). -- **Waveform Select (WS)**: Changes the waveform of the operator (OPL2 and OPL3 only, 0-3 range on OPL2 and 0-7 on OPL3). -- **Coarse Detune (DT2)**: Shifts the pitch by tens of cents (0 to 3). +- **Fine Detune (DT)**: shifts the pitch a little (0 to 7). +- **Waveform Select (WS)**: changes the waveform of the operator (OPL2 and OPL3 only, 0-3 range on OPL2 and 0-7 on OPL3). +- **Coarse Detune (DT2)**: shifts the pitch by tens of cents (0 to 3). #### I am familiar with Yamaha TX81Z. where's LS and KVS? @@ -69,18 +69,18 @@ each operator has a Fixed Frequency mode. once enabled, the operator runs at the ## macros -Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled: +macros define the sequence of values passed to the given parameter. via macro, along with the previously mentioned parameters, the following can be controlled: ## FM Macros - **AM Depth**: amplitude modulation depth. - **PM Depth**: pitch modulation depth. - **LFO Speed**: LFO frequency. -- **LFO Shape**: LFO shape. Choose between saw, square, triangle, and random. +- **LFO Shape**: LFO shape. choose between saw, square, triangle, and random. - **AM Depth 2**: amplitude modulation depth (second LFO). - **PM Depth 2**: pitch modulation depth (second LFO). - **LFO2 Speed**: LFO 2 frequency. -- **LFO2 Shape**: LFO 2 shape. Choose between saw, square, triangle, and random. +- **LFO2 Shape**: LFO 2 shape. choose between saw, square, triangle, and random. ## OP1-OP4 Macros @@ -88,15 +88,15 @@ most parameters are listed above. ## Macros -- **Arpeggio**: Pitch change sequence in semitones. +- **Arpeggio**: pitch change sequence in semitones. - **Noise Frequency**: specifies the noise frequency. - this only applies to operator 4 of channel 8! - **Panning**: toggles output on left and right channels. - **Pitch**: fine pitch. - **Relative**: when enabled, pitch changes are relative to the current pitch. -- **Phase Reset**: Restarts all operators and resets the waveform to its start. Effectively the same as a `0Cxx` retrigger. +- **Phase Reset**: restarts all operators and resets the waveform to its start. effectively the same as a `0Cxx` retrigger. -# links +## 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. +[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. diff --git a/doc/4-instrument/ga20.md b/doc/4-instrument/ga20.md index 55d34d299..4affe54f9 100644 --- a/doc/4-instrument/ga20.md +++ b/doc/4-instrument/ga20.md @@ -1,6 +1,6 @@ # Irem GA20 instrument editor -The GA20 instrument editor contains three tabs: Sample and Macros. +the GA20 instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/game-boy.md b/doc/4-instrument/game-boy.md index fffd20dc5..50b30b5b1 100644 --- a/doc/4-instrument/game-boy.md +++ b/doc/4-instrument/game-boy.md @@ -1,6 +1,6 @@ # Game Boy instrument editor -Game Boy instrument editor consists of three tabs: one controlling envelope of sound channels, another for the wave synth and macro tab containing several macros. +the Game Boy instrument editor consists of three tabs: one controlling envelope of sound channels, another for the wave synth and macro tab containing several macros. ## Game Boy @@ -12,7 +12,7 @@ Game Boy instrument editor consists of three tabs: one controlling envelope of s - **Length**: envelope decay/attack duration (0 to 7) - **Sound Length**: cuts off channel after specified length, overriding the Length value. -- **Direction**: Up makes the envelope an attack. Down makes it decay. +- **Direction**: up makes the envelope an attack. down makes it decay. - note: for attack to have effect, start at a lower volume. - **Hardware Sequence**: this allows you to define a sequence of hardware envelope changes for creating complex envelopes. see the next section for more information. diff --git a/doc/4-instrument/instrument-editor-top.png b/doc/4-instrument/instrument-editor-top.png index 138a117fe..5aa3f7289 100644 Binary files a/doc/4-instrument/instrument-editor-top.png and b/doc/4-instrument/instrument-editor-top.png differ diff --git a/doc/4-instrument/instrument-wavetable.png b/doc/4-instrument/instrument-wavetable.png index 4710b6680..8be2d9e8a 100644 Binary files a/doc/4-instrument/instrument-wavetable.png and b/doc/4-instrument/instrument-wavetable.png differ diff --git a/doc/4-instrument/k007232.md b/doc/4-instrument/k007232.md index add9cfa14..a260abeff 100644 --- a/doc/4-instrument/k007232.md +++ b/doc/4-instrument/k007232.md @@ -1,6 +1,6 @@ # Konami K007232 instrument editor -The K007232 instrument editor contains three tabs: Sample and Macros. +the K007232 instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/k053260.md b/doc/4-instrument/k053260.md index dd6b4ecad..0cfb62084 100644 --- a/doc/4-instrument/k053260.md +++ b/doc/4-instrument/k053260.md @@ -1,6 +1,6 @@ # K053260 instrument editor -The K053260 instrument editor contains three tabs: Sample and Macros. +the K053260 instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/lynx.md b/doc/4-instrument/lynx.md index 5665596e1..e4bb3bc78 100644 --- a/doc/4-instrument/lynx.md +++ b/doc/4-instrument/lynx.md @@ -22,17 +22,17 @@ note that using samples on Lynx is CPU expensive! ## audio generation description -Atari Lynx generates sound using a 12-bit linear feedback shift register with configurable tap. Nine separate bits can be enabled to be the source of feedback: 0, 1, 2, 3, 4, 5, 7, 10 and 11. To generate _any_ sound at least one bit _must_ be enabled. +Atari Lynx generates sound using a 12-bit linear feedback shift register with configurable tap. nine separate bits can be enabled to be the source of feedback: 0, 1, 2, 3, 4, 5, 7, 10 and 11. to generate _any_ sound at least one bit _must_ be enabled. ### square wave -The LFSR is shifted at the rate define by sound pitch and generates square wave by setting channel output value to +volume or -volume, depending on the bit shifted in. +the LFSR is shifted at the rate define by sound pitch and generates square wave by setting channel output value to +volume or -volume, depending on the bit shifted in. ### triangle wave -Alternatively when "int" bit is set sound wave is generated by adding or subtracting volume from output effectively producing triangle wave. +alternatively when "int" bit is set sound wave is generated by adding or subtracting volume from output effectively producing triangle wave. #### how triangle wave works? -Hint: To obtain triangle set bits "int" and "11" in "Duty/Int" sequence and set volume to about 22. -By enabling 11th tap bit the value shifted in is negated after 11 bit is shifted in hence the volume is added for 11 cycles and then subtracted for 11 cycles. +hint: to obtain triangle set bits "int" and "11" in "Duty/Int" sequence and set volume to about 22. +by enabling 11th tap bit the value shifted in is negated after 11 bit is shifted in hence the volume is added for 11 cycles and then subtracted for 11 cycles. diff --git a/doc/4-instrument/macro-button-ADSR.png b/doc/4-instrument/macro-button-ADSR.png index 6529a72ca..f76ed6585 100644 Binary files a/doc/4-instrument/macro-button-ADSR.png and b/doc/4-instrument/macro-button-ADSR.png differ diff --git a/doc/4-instrument/macro-button-LFO.png b/doc/4-instrument/macro-button-LFO.png index 8ad9c24b3..93da266cd 100644 Binary files a/doc/4-instrument/macro-button-LFO.png and b/doc/4-instrument/macro-button-LFO.png differ diff --git a/doc/4-instrument/macro-button-seq.png b/doc/4-instrument/macro-button-seq.png index dd316c205..933a5476f 100644 Binary files a/doc/4-instrument/macro-button-seq.png and b/doc/4-instrument/macro-button-seq.png differ diff --git a/doc/4-instrument/msm5232.md b/doc/4-instrument/msm5232.md index 4b362abe0..31c10320e 100644 --- a/doc/4-instrument/msm5232.md +++ b/doc/4-instrument/msm5232.md @@ -1,6 +1,6 @@ # MSM5232 instrument editor -The instrument editor for MSM5232 consists of these macros: +the instrument editor for MSM5232 consists of these macros: - **Volume**: volume sequence. - only has effect when the envelope mode of a group is set to External. diff --git a/doc/4-instrument/msm6258.md b/doc/4-instrument/msm6258.md index a40a64d3d..695ad467f 100644 --- a/doc/4-instrument/msm6258.md +++ b/doc/4-instrument/msm6258.md @@ -1,6 +1,6 @@ # MSM6258 instrument editor -The MSM6258 instrument editor contains two tabs: Sample and Macros. +the MSM6258 instrument editor contains two tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/msm6295.md b/doc/4-instrument/msm6295.md index c297d8871..8b01b94dd 100644 --- a/doc/4-instrument/msm6295.md +++ b/doc/4-instrument/msm6295.md @@ -1,6 +1,6 @@ # MSM6295 instrument editor -The MSM6295 instrument editor contains two tabs: Sample and Macros. +the MSM6295 instrument editor contains two tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/n163.md b/doc/4-instrument/n163.md index aec09964b..f07de82a1 100644 --- a/doc/4-instrument/n163.md +++ b/doc/4-instrument/n163.md @@ -1,6 +1,6 @@ # Namco 163 instrument editor -The Namco 163 instrument editor consists of three tabs: "Namco 163" for control of various waveform parameters, "Wavetable" for control of the wave synth and "Macro" containing several macros. +the Namco 163 instrument editor consists of three tabs: "Namco 163" for control of various waveform parameters, "Wavetable" for control of the wave synth and "Macro" containing several macros. ## Namco 163 diff --git a/doc/4-instrument/nes.md b/doc/4-instrument/nes.md index b6356a283..53c8560f6 100644 --- a/doc/4-instrument/nes.md +++ b/doc/4-instrument/nes.md @@ -1,6 +1,6 @@ # NES instrument editor -The instrument editor for NES consists of these macros: +the instrument editor for NES consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/pce.md b/doc/4-instrument/pce.md index e7845ae89..658988840 100644 --- a/doc/4-instrument/pce.md +++ b/doc/4-instrument/pce.md @@ -1,6 +1,6 @@ # NEC PC Engine instrument editor -The PCE instrument editor contains three tabs: Sample, Wavetable and Macros. +the PCE instrument editor contains three tabs: Sample, Wavetable and Macros. ## Sample diff --git a/doc/4-instrument/pet.md b/doc/4-instrument/pet.md index e5604dc9f..a8ab1e8f3 100644 --- a/doc/4-instrument/pet.md +++ b/doc/4-instrument/pet.md @@ -1,6 +1,6 @@ # Commodore PET instrument editor -The PET instrument editor consists of these macros: +the PET instrument editor consists of these macros: - **Volume**: volume sequence (on/off). - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/pokey.md b/doc/4-instrument/pokey.md index c4267887e..8b3ac7fc4 100644 --- a/doc/4-instrument/pokey.md +++ b/doc/4-instrument/pokey.md @@ -1,6 +1,6 @@ # Atari POKEY instrument editor -The instrument editor for POKEY consists of these macros: +the instrument editor for POKEY consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/psg.md b/doc/4-instrument/psg.md index 418595c82..6b09e534f 100644 --- a/doc/4-instrument/psg.md +++ b/doc/4-instrument/psg.md @@ -1,6 +1,6 @@ # Sega PSG instrument editor -The instrument editor for Sega PSG (SMS, and other TI SN76489 derivatives) consists of these macros: +the instrument editor for Sega PSG (SMS, and other TI SN76489 derivatives) consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/pv1000.md b/doc/4-instrument/pv1000.md index 13c7bb76c..b3aa474e6 100644 --- a/doc/4-instrument/pv1000.md +++ b/doc/4-instrument/pv1000.md @@ -1,6 +1,6 @@ # PV-1000 instrument editor -The instrument editor for the Casio PV-1000 consists of these macros: +the instrument editor for the Casio PV-1000 consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/qsound.md b/doc/4-instrument/qsound.md index c925cbf95..3e2f54ed5 100644 --- a/doc/4-instrument/qsound.md +++ b/doc/4-instrument/qsound.md @@ -1,6 +1,6 @@ # Capcom QSound instrument editor -The QSound instrument editor contains three tabs: Sample and Macros. +the QSound instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/rf5c68.md b/doc/4-instrument/rf5c68.md index 94f07b8c5..6df2bac80 100644 --- a/doc/4-instrument/rf5c68.md +++ b/doc/4-instrument/rf5c68.md @@ -1,6 +1,6 @@ # Ricoh RF5C68 instrument editor -The RF5C68 instrument editor contains three tabs: Sample and Macros. +the RF5C68 instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/saa.md b/doc/4-instrument/saa.md index c62ff8f16..79e2b3a7f 100644 --- a/doc/4-instrument/saa.md +++ b/doc/4-instrument/saa.md @@ -1,6 +1,6 @@ # Philips SAA1099 instrument editor -The SAA1099 instrument editor consists of these macros: +the SAA1099 instrument editor consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/sample-map.png b/doc/4-instrument/sample-map.png index fb1f9b51e..03e12c2cf 100644 Binary files a/doc/4-instrument/sample-map.png and b/doc/4-instrument/sample-map.png differ diff --git a/doc/4-instrument/scc.md b/doc/4-instrument/scc.md index 79ad7193e..ca26f2c69 100644 --- a/doc/4-instrument/scc.md +++ b/doc/4-instrument/scc.md @@ -1,6 +1,6 @@ # Konami SCC/Bubble System WSG instrument editor -The SCC/Bubble System WSG instrument editor consists of two tabs. +the SCC/Bubble System WSG instrument editor consists of two tabs. ## Wavetable diff --git a/doc/4-instrument/segapcm.md b/doc/4-instrument/segapcm.md index d4ee091f5..e02653138 100644 --- a/doc/4-instrument/segapcm.md +++ b/doc/4-instrument/segapcm.md @@ -1,6 +1,6 @@ # SegaPCM instrument editor -The SegaPCM instrument editor contains three tabs: Sample and Macros. +the SegaPCM instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/4-instrument/sm8521.md b/doc/4-instrument/sm8521.md index 62892262d..93f925709 100644 --- a/doc/4-instrument/sm8521.md +++ b/doc/4-instrument/sm8521.md @@ -1,6 +1,6 @@ # SM8521 instrument editor -The SM8521 instrument editor contains two tabs: Wavetable and Macros. +the SM8521 instrument editor contains two tabs: Wavetable and Macros. ## Wavetable diff --git a/doc/4-instrument/snes.md b/doc/4-instrument/snes.md index 150430c81..0df51be56 100644 --- a/doc/4-instrument/snes.md +++ b/doc/4-instrument/snes.md @@ -27,7 +27,7 @@ if envelope is off: - **Direct**: direct gain from 0 to 127. - **Decrease (linear)**: linear gain from -0 to -31. - **Decrease (logarithmic)**: exponential gain from -0 to -31. - - note: using decrease modes will not produce any sound unless a Gain macro is set. The first tick must be the initial gain, and the second tick must be the decrease gain value. gain values are as described in the Macros section below. + - note: using decrease modes will not produce any sound unless a Gain macro is set. the first tick must be the initial gain, and the second tick must be the decrease gain value. gain values are as described in the Macros section below. - **Increase (linear)**: linear gain from +0 to +31. - **Increase (bent line)**: inverse exponential gain from +0 to +31. - **Gain**: value of gain. diff --git a/doc/4-instrument/t6w28.md b/doc/4-instrument/t6w28.md index cbcc7bc75..8343733bd 100644 --- a/doc/4-instrument/t6w28.md +++ b/doc/4-instrument/t6w28.md @@ -1,6 +1,6 @@ # T6W28 instrument editor -The instrument editor for T6W28 consists of these macros: +the instrument editor for T6W28 consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/tia.md b/doc/4-instrument/tia.md index d82ed7c78..a08ec0a3a 100644 --- a/doc/4-instrument/tia.md +++ b/doc/4-instrument/tia.md @@ -1,6 +1,6 @@ # Atari TIA instrument editor -The TIA instrument editor consists of these macros: +the TIA instrument editor consists of these macros: - **Volume**: volume sequence. - **Arpeggio**: pitch sequence. diff --git a/doc/4-instrument/vic.md b/doc/4-instrument/vic.md index b3edcf03e..40d31603a 100644 --- a/doc/4-instrument/vic.md +++ b/doc/4-instrument/vic.md @@ -1,6 +1,6 @@ # Commodore VIC instrument editor -The VIC instrument editor consists of these macros: +the VIC instrument editor consists of these macros: - **Volume**: volume sequence. - note: global! affects entire chip. diff --git a/doc/4-instrument/virtual-boy.md b/doc/4-instrument/virtual-boy.md index b5d2043a2..c36e2a0f6 100644 --- a/doc/4-instrument/virtual-boy.md +++ b/doc/4-instrument/virtual-boy.md @@ -1,6 +1,6 @@ # Virtual Boy instrument editor -The Virtual Boy instrument editor contains three tabs: Virtual Boy, Wavetable and Macros. +the Virtual Boy instrument editor contains three tabs: Virtual Boy, Wavetable and Macros. ## Virtual Boy diff --git a/doc/4-instrument/vrc6.md b/doc/4-instrument/vrc6.md index 1ac9b690c..64691282d 100644 --- a/doc/4-instrument/vrc6.md +++ b/doc/4-instrument/vrc6.md @@ -1,6 +1,6 @@ # VRC6 instrument editor -The VRC6 (regular) instrument editor consists of two tabs. +the VRC6 (regular) instrument editor consists of two tabs. ## Sample @@ -17,7 +17,7 @@ note that using samples on VRC6 is CPU expensive! - **Duty**: specifies duty cycle for pulse wave channels. - **Pitch**: fine pitch. -# VRC6 (saw) instrument editor +## VRC6 (saw) instrument editor this channel has its own instrument type, a one-of-a-kind thing in Furnace that was decided as a compromise during a debate. diff --git a/doc/4-instrument/wavesynth.md b/doc/4-instrument/wavesynth.md index 635ea48aa..44b2c938a 100644 --- a/doc/4-instrument/wavesynth.md +++ b/doc/4-instrument/wavesynth.md @@ -1,10 +1,10 @@ # wavetable synthesizer -Within the "Wavetable" tab of the instrument editor, Furnace allows you to modulate or combine 1 or 2 waves to create unique "animated" sounds. Think of it like a VST or a plugin, as it's basically an extension of regular wavetable soundchips that still allow it to run on real hardware. +within the "Wavetable" tab of the instrument editor, Furnace allows you to modulate or combine 1 or 2 waves to create unique "animated" sounds. think of it like a VST or a plugin, as it's basically an extension of regular wavetable soundchips that still allow it to run on real hardware. -This is accomplished by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. This allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples. +this is accomplished by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. this allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples. -Unfortunately, on some chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them sound smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. On certain frequencies, this can be avoided, but not on most, unfortunately. +unfortunately, on some chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them sound smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. on certain frequencies, this can be avoided, but not on most, unfortunately. ![instrument wavetable tab](instrument-wavetable.png) diff --git a/doc/4-instrument/wavetable.png b/doc/4-instrument/wavetable.png index 2b7e4ac5e..64589ae04 100644 Binary files a/doc/4-instrument/wavetable.png and b/doc/4-instrument/wavetable.png differ diff --git a/doc/4-instrument/wsg.md b/doc/4-instrument/wsg.md index a7449a2b7..5c32f50b2 100644 --- a/doc/4-instrument/wsg.md +++ b/doc/4-instrument/wsg.md @@ -1,6 +1,6 @@ # Namco WSG instrument editor -The Namco WSG/C15/C30 instrument editor consists of two tabs: Wavetable and Macros. +the Namco WSG/C15/C30 instrument editor consists of two tabs: Wavetable and Macros. ## Wavetable diff --git a/doc/4-instrument/ymz280b.md b/doc/4-instrument/ymz280b.md index e35cf210e..3dc935d5e 100644 --- a/doc/4-instrument/ymz280b.md +++ b/doc/4-instrument/ymz280b.md @@ -1,6 +1,6 @@ # YMZ280B instrument editor -The YMZ280B instrument editor contains three tabs: Sample and Macros. +the YMZ280B instrument editor contains three tabs: Sample and Macros. ## Sample diff --git a/doc/5-wave/README.md b/doc/5-wave/README.md index 931abc849..fc0957ad5 100644 --- a/doc/5-wave/README.md +++ b/doc/5-wave/README.md @@ -22,7 +22,7 @@ Seta X1-010 | 128 | 256 | Amiga | ≤256 | 256 | -# wavetable editor +## wavetable editor ![wavetable editor](wave-editor.png) @@ -49,7 +49,7 @@ controls across the bottom line: - `+` / `±`: toggle text input as unsigned/signed. also adjusts waveform display. - text input: waveform data as an editable numeric sequence. also called "MML stream". -## waveform utilifies +## waveform utilities these provide different ways of creating or altering a waveform. diff --git a/doc/5-wave/wave-editor-FM.png b/doc/5-wave/wave-editor-FM.png index 2fd255d31..8461ed718 100644 Binary files a/doc/5-wave/wave-editor-FM.png and b/doc/5-wave/wave-editor-FM.png differ diff --git a/doc/5-wave/wave-editor-shapes.png b/doc/5-wave/wave-editor-shapes.png index 6fbffa028..f0e197fbc 100644 Binary files a/doc/5-wave/wave-editor-shapes.png and b/doc/5-wave/wave-editor-shapes.png differ diff --git a/doc/5-wave/wave-editor-tools.png b/doc/5-wave/wave-editor-tools.png index aea9ab457..e45a4b556 100644 Binary files a/doc/5-wave/wave-editor-tools.png and b/doc/5-wave/wave-editor-tools.png differ diff --git a/doc/5-wave/wave-editor.png b/doc/5-wave/wave-editor.png index 570a915fb..1239c1378 100644 Binary files a/doc/5-wave/wave-editor.png and b/doc/5-wave/wave-editor.png differ diff --git a/doc/6-sample/README.md b/doc/6-sample/README.md index c0410d954..3b975077f 100644 --- a/doc/6-sample/README.md +++ b/doc/6-sample/README.md @@ -65,7 +65,7 @@ due to limitations in some of those sound chips, some restrictions exist: furthermore, many of these chips have a limited amount of sample memory. check memory usage in window > statistics. -# the sample editor +## the sample editor you can edit your samples in Furnace's sample editor, which can be accessed by clicking on `window` (at the top of the screen) then clicking on `sample editor`, or by double-clicking a sample in the sample list. @@ -81,10 +81,10 @@ in there, you can modify certain data pertaining to your sample, such as the: - top-left drop-down box: sample slot. - **Open**: replaces current sample. - - Right-clicking brings up a menu: + - right-clicking brings up a menu: - **import raw...**: brings up a file selector, then presents a dialog to choose the format of the selected file. - **Save**: saves current sample to disk. - - Right-clicking brings up a menu: + - right-clicking brings up a menu: - **save raw...**: brings up a file selector, then saves the sample as raw data. - **Name**: name in sample list. - button to left of **Info**: collapses and expands the info section. diff --git a/doc/6-sample/sample-editor.png b/doc/6-sample/sample-editor.png index 74a8b922f..155f2ce10 100644 Binary files a/doc/6-sample/sample-editor.png and b/doc/6-sample/sample-editor.png differ diff --git a/doc/7-systems/README.md b/doc/7-systems/README.md index ef2e89813..a8387d85e 100644 --- a/doc/7-systems/README.md +++ b/doc/7-systems/README.md @@ -59,7 +59,7 @@ some systems have alternate chips, such as the Sega Genesis having a YM2612 or Y -# chips +## chips this is the full list of chips that Furnace supports. diff --git a/doc/7-systems/amiga.md b/doc/7-systems/amiga.md index e0846879b..af6bfb67f 100644 --- a/doc/7-systems/amiga.md +++ b/doc/7-systems/amiga.md @@ -6,7 +6,7 @@ in this very computer music trackers were born... imported MOD files use this chip, and will set A-4 tuning to 436. -# effects +## effects - `10xx`: **toggle low-pass filter.** `0` turns it off and `1` turns it on. - `11xx`: **toggle amplitude modulation with the next channel.** @@ -16,7 +16,7 @@ imported MOD files use this chip, and will set A-4 tuning to 436. - `13xx`: **change wave.** - only works when "Mode" is set to "Wavetable" in the instrument. -# info +## info this chip uses the [Generic Sample](../4-instrument/sample.md) instrument editor. diff --git a/doc/7-systems/ay8910.md b/doc/7-systems/ay8910.md index 01e87e2f3..853395496 100644 --- a/doc/7-systems/ay8910.md +++ b/doc/7-systems/ay8910.md @@ -8,7 +8,7 @@ the AY-3-8914 variant was used in Intellivision, which is pretty much an AY with Furnace is capable of doing software sample playback on AY-3-8910, where all 3 channels can play 4-bit PCM samples (at the cost of a very high CPU usage). -# effects +## effects - `20xx`: **set channel mode.** - `0`: square @@ -61,6 +61,6 @@ AY-3-810 was an absurdly popular chip that was blessed with many third-party clo - Yamaha YM2149 was an AY-3-8910 clone released in 1983. it's almost identical to AY with minor differences being: higher hardware envelope step resolution (16 vs 32), half-clock mode when voltage level is low, much stronger DC offset and cleaner, but softer output. - Sunsoft 5B is YM2149 clone with half-clock mode forced on. -# info +## info this chip uses the [AY-3-8910](../4-instrument/ay8910.md) instrument editor. diff --git a/doc/7-systems/ay8930.md b/doc/7-systems/ay8930.md index bd6af8631..ce94aa2b1 100644 --- a/doc/7-systems/ay8930.md +++ b/doc/7-systems/ay8930.md @@ -9,7 +9,7 @@ emulation of this chip in Furnace is now complete thanks to community efforts an Furnace is able to do software PCM on AY8930, where all 3 channels can play 5-bit PCM samples (at the cost of a very high CPU usage). -# effects +## effects - `12xx`: **set channel duty cycle.** - `0`: 3.125% @@ -56,6 +56,6 @@ Furnace is able to do software PCM on AY8930, where all 3 channels can play 5-bi - `y` is the denominator. - if `x` or `y` are 0 this will disable auto-envelope mode. -# info +## info this chip uses the [AY8930](../4-instrument/ay8930.md) instrument editor. diff --git a/doc/7-systems/bubblesystem.md b/doc/7-systems/bubblesystem.md index 6b7826206..5a589407b 100644 --- a/doc/7-systems/bubblesystem.md +++ b/doc/7-systems/bubblesystem.md @@ -8,10 +8,10 @@ another AY-3-8910 IO is used for reading sound hardware status. Furnace emulates this configuration as a "chip" with 32×16 wavetables. -# effects +## effects - `10xx`: **change wave.** -# info +## info this chip uses the [Konami SCC/Bubble System WSG](../4-instrument/scc.md) instrument editor. diff --git a/doc/7-systems/c140.md b/doc/7-systems/c140.md index b18aa84d7..97509b32f 100644 --- a/doc/7-systems/c140.md +++ b/doc/7-systems/c140.md @@ -1,6 +1,6 @@ # Namco C140 -Namco C140 is a 24-channel custom PCM sound chip manufactured jointly by Fujitsu and Namco. It was first used in Namco System 2 arcade family starting in 1987. +the Namco C140 is a 24-channel custom PCM sound chip manufactured jointly by Fujitsu and Namco. it was first used in Namco System 2 arcade family starting in 1987. this chip features: @@ -8,10 +8,10 @@ this chip features: - accepts either raw 12-bit PCM or 8-bit µ-law compressed PCM samples - 21.4 kHz sampling rate -# effects +## effects none! -# info +## info this chip uses the [C140](../4-instrument/c140.md) instrument editor. diff --git a/doc/7-systems/c219.md b/doc/7-systems/c219.md index 2d2e2292e..44d0cafd0 100644 --- a/doc/7-systems/c219.md +++ b/doc/7-systems/c219.md @@ -7,13 +7,13 @@ this chip features: - stereo soft panning - accepts either 8-bit PCM or proprietary 8-bit µ-law compressed PCM samples -# effects +## effects - `11xx`: **set noise mode.** - `12xy`: **set invert mode.** - if `x` is 1 or higher, surround is enabled. - if `y` is 1 or higher, invert is enabled. -# info +## info this chip uses the [C219](../4-instrument/c219.md) instrument editor. diff --git a/doc/7-systems/c64.md b/doc/7-systems/c64.md index 04035df58..28a69671b 100644 --- a/doc/7-systems/c64.md +++ b/doc/7-systems/c64.md @@ -6,7 +6,7 @@ very popular in Europe and mostly due to the demoscene, which stretched the mach two versions of aforementioned chip exist - 6581 (original chip) and 8580 (improved version with working waveform mixing and somewhat more consistent filter curves). -# effects +## effects - `10xx`: **change wave.** the following values are accepted: - `00`: nothing @@ -58,6 +58,6 @@ two versions of aforementioned chip exist - 6581 (original chip) and 8580 (impro - `3xxx`: **set duty cycle.** `xxx` range is `000` to `FFF`. - `4xxx`: **set cutoff.** `xxx` range is `000` to `7FF`. -# info +## info this chip uses the [C64](../4-instrument/c64.md) instrument editor. diff --git a/doc/7-systems/dac.md b/doc/7-systems/dac.md index 279476778..7639495ea 100644 --- a/doc/7-systems/dac.md +++ b/doc/7-systems/dac.md @@ -4,10 +4,10 @@ a sample channel, with freely selectable rate, mono/stereo and bit depth setting with it, you can emulate PCM DACs found in Williams arcade boards, Sound Blasters, MSX TurboR, Atari STe, NEC PC-9801-86, among others. -# effects +## effects none yet. -# info +## info this chip uses the [Generic Sample](../4-instrument/sample.md) instrument editor. diff --git a/doc/7-systems/es5506.md b/doc/7-systems/es5506.md index 3b2c2b0a2..d6ddb9d79 100644 --- a/doc/7-systems/es5506.md +++ b/doc/7-systems/es5506.md @@ -10,7 +10,7 @@ it has a whopping 32 channels of 16-bit PCM and: - internal volume multiplication and stereo panning - hardware support for short envelopes -# effects +## effects - `10xx`: **set waveform.** - `11xx`: **set filter mode.** values are `0` through `3`. @@ -41,6 +41,6 @@ it has a whopping 32 channels of 16-bit PCM and: - resets sample position to `xxx * 0x100`. - `DFxx`: **set sample playback direction.** -# info +## info this chip uses the [ES5506](../4-instrument/es5506.md) instrument editor. diff --git a/doc/7-systems/fds.md b/doc/7-systems/fds.md index 08a870765..6df219cd3 100644 --- a/doc/7-systems/fds.md +++ b/doc/7-systems/fds.md @@ -5,7 +5,7 @@ as it name implies, it allowed people to play games on specialized floppy disks it also offers an additional 6-bit, 64-byte wavetable sound channel with (somewhat limited) FM capabilities, which is what Furnace supports. -# effects +## effects - `10xx`: **change wave.** - `11xx`: **set modulation depth.** @@ -26,6 +26,6 @@ it also offers an additional 6-bit, 64-byte wavetable sound channel with (somewh - 7: -1 - **do not use this effect.** it only exists for compatibility reasons -# info +## info this chip uses the [FDS](../4-instrument/fds.md) instrument editor. diff --git a/doc/7-systems/ga20.md b/doc/7-systems/ga20.md index 151ee19a4..dc2bac6c6 100644 --- a/doc/7-systems/ga20.md +++ b/doc/7-systems/ga20.md @@ -4,12 +4,12 @@ it is a 4 channel PCM sound source used by Irem in their arcades in late 1980s a the sound chip itself is rather unremarkable, having 8-bit volume and pitch control and no stereo panning... -# effects +## effects none let's be honest. Furnace has too many chips and a great portion of them are sample chips that do the same task: playing back samples. -# info +## info this chip uses the [GA20](../4-instrument/ga20.md) instrument type. diff --git a/doc/7-systems/game-boy.md b/doc/7-systems/game-boy.md index d9f252be9..5550e5fba 100644 --- a/doc/7-systems/game-boy.md +++ b/doc/7-systems/game-boy.md @@ -4,7 +4,7 @@ the Game Boy is one of the most successful portable game systems ever made. it has stereo sound, two pulse channels, a wave channel and a noise channel. -# effects +## effects - `10xx`: **change wave.** - `11xx`: **set noise length.** @@ -21,11 +21,11 @@ it has stereo sound, two pulse channels, a wave channel and a noise channel. - set to `0` to disable it. - `14xx`: **set sweep direction.** `0` is up and `1` is down. -# info +## 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 diff --git a/doc/7-systems/genesis.md b/doc/7-systems/genesis.md index 3a6be9225..d1775e574 100644 --- a/doc/7-systems/genesis.md +++ b/doc/7-systems/genesis.md @@ -4,7 +4,7 @@ a video game console that showed itself as the first true rival to Nintendo's vi this console is powered by two sound chips: the [Yamaha YM2612](ym2612.md) and [a derivative of the SN76489](sms.md). -# effects +## effects - `10xy`: **set LFO parameters.** - `x` toggles the LFO. @@ -38,7 +38,7 @@ this console is powered by two sound chips: the [Yamaha YM2612](ym2612.md) and [ -# system modes +## system modes ## extended channel 3 diff --git a/doc/7-systems/k007232.md b/doc/7-systems/k007232.md index c8c872f59..ca2efdbb2 100644 --- a/doc/7-systems/k007232.md +++ b/doc/7-systems/k007232.md @@ -6,12 +6,12 @@ its sample format is unique; the topmost bit is the end marker, and the low 7 bi it has 7 bit digital output per each channel and no volume register on chip, so it needs external logic to control channel volume. -# effects +## effects nothing. yeah. -# info +## info this chip uses the [K007232](../4-instrument/k007232.md) instrument editor. diff --git a/doc/7-systems/k056320.md b/doc/7-systems/k056320.md index 7d7d0f658..5c03c87f0 100644 --- a/doc/7-systems/k056320.md +++ b/doc/7-systems/k056320.md @@ -2,12 +2,12 @@ this chip 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. -# info +## info this chip uses the [K053260](../4-instrument/k053260.md) instrument editor. diff --git a/doc/7-systems/lynx.md b/doc/7-systems/lynx.md index 72efcfcee..c6b6e9ed8 100644 --- a/doc/7-systems/lynx.md +++ b/doc/7-systems/lynx.md @@ -15,11 +15,11 @@ the Atari Lynx has a 6502-based CPU with a sound part (this chip is known as MIK - four 8-bit DACs (Digital to Analog Converter), one for each voice. this allows for sample playback (at the cost of CPU time and memory). - a variety of pitches to choose from, and they go from 32Hz to "above the range of human hearing", according to Atari. -# effects +## effects - `3xxx`: **load LFSR.** this is a bitmask with values ranging from `000` to `FFF`. - for it to work, duty macro in instrument editor must be set to some value. without it LFSR will not be fed with any bits. -# info +## info this chip uses the [Atari Lynx](../4-instrument/lynx.md) instrument editor. diff --git a/doc/7-systems/mmc5.md b/doc/7-systems/mmc5.md index 5d255bdaa..0b54cc866 100644 --- a/doc/7-systems/mmc5.md +++ b/doc/7-systems/mmc5.md @@ -6,11 +6,11 @@ it has two pulse channels which are very similar to the ones found in the NES, b additionally, it offers an 8-bit DAC which can be used to play samples. only one game is known to use it, though. -# effects +## effects - `12xx`: **set duty cycle or noise mode of channel.** - may be `0` through `3` for the pulse channels. -# info +## info this chip uses the [NES](../4-instrument/nes.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/msm5232.md b/doc/7-systems/msm5232.md index 17ee9ee03..3408e00e9 100644 --- a/doc/7-systems/msm5232.md +++ b/doc/7-systems/msm5232.md @@ -14,7 +14,7 @@ Furnace implements this chip in a way that allows the following features: - global fine tune - global vibrato (some arcade boards played with the clock input to simulate vibrato) -# effects +## effects - `10xy`: **set group control.** - `x` sets sustain mode. @@ -25,6 +25,6 @@ Furnace implements this chip in a way that allows the following features: - `13xx`: **set group decay.** range is `0` to `11`. - only in internal (capacitor-based) envelope mode. -# info +## info this chip uses the [MSM5232](../4-instrument/msm5232.md) instrument editor. diff --git a/doc/7-systems/msm6258.md b/doc/7-systems/msm6258.md index c25224abd..1b632aae2 100644 --- a/doc/7-systems/msm6258.md +++ b/doc/7-systems/msm6258.md @@ -3,7 +3,7 @@ a single-channel ADPCM sound source developed by OKI. it allows max sample rate of 15.6 KHz... with no variable pitch. most prominent use of this chip was Sharp X68000 computer, where it was paired with Yamaha YM2151. Furnace's implementation is MSM6258V, a CPU driven variant that is unlimited by amount of sample data, being able to be fed from the system's RAM. -# effects +## effects - `20xx`: **set frequency divider (0 to 2).** - `0`: /512 @@ -13,9 +13,7 @@ Furnace's implementation is MSM6258V, a CPU driven variant that is unlimited by - `0`: full - `1`: half -# chip config - -## chip clock rates +## chip config MSM6258 is an extremely basic ADPCM sound codec. it has no variable frequency rate; it depends on clock rate of a chip itself. Furnace supports the following rates: @@ -26,6 +24,6 @@ MSM6258 is an extremely basic ADPCM sound codec. it has no variable frequency ra | 8 MHz | 15625 Hz | | 8.192 MHz | 16000 Hz | -# info +## info this chip uses the [MSM6258](../4-instrument/msm6258.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/msm6295.md b/doc/7-systems/msm6295.md index 8e6fa1bdb..580a4c127 100644 --- a/doc/7-systems/msm6295.md +++ b/doc/7-systems/msm6295.md @@ -1,18 +1,17 @@ # OKI MSM6295 -an upgrade from 6258 - it provides 4 ADPCM channels, at max 32 KHz (still no variable pitch though). between late '80s and late '90s, it was one of the most common, if not _the_ most common soundchip used in arcade machines (Capcom, Toaplan, Kaneko, Atari, Tecmo, the list can go on and on...). Without bankswitching, the chip supports 256kB of sample RAM and can hold up to 127 samples at once. +an upgrade from 6258 - it provides 4 ADPCM channels, at max 32 KHz (still no variable pitch though). between late '80s and late '90s, it was one of the most common, if not _the_ most common soundchip used in arcade machines (Capcom, Toaplan, Kaneko, Atari, Tecmo, the list can go on and on...). without bankswitching, the chip supports 256kB of sample RAM and can hold up to 127 samples at once. -# effects +## effects - `20xx`: **set chip output rate.** - `0`: /132 - `1`: /165 -# info +## info this chip uses the [MSM6295](../4-instrument/msm6295.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. - ## chip clock 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: diff --git a/doc/7-systems/n163.md b/doc/7-systems/n163.md index af1bffbee..ecd2611e8 100644 --- a/doc/7-systems/n163.md +++ b/doc/7-systems/n163.md @@ -1,4 +1,4 @@ -# Namco 163 (also called N163, Namco C163, Namco 106 (sic), Namco 160 or Namco 129) +# Namco 163 (also called N163, Namco C163, Namco 106 [_sic_], Namco 160 or Namco 129) this is one of Namco's NES mappers, with up to 8 wavetable channels. @@ -8,7 +8,7 @@ wavetables are variable in size and may be allocated anywhere in RAM. at least 1 Namco 163 uses time-division multiplexing for its output. this means that only one channel is output per sample (like OPLL and OPN2). therefore, its sound quality gets worse as more channels are activated. -# waveform load position versus waveform position +## waveform load position versus waveform position in Furnace, waveform **load** position/length is different from the waveform position/length. @@ -22,7 +22,7 @@ the waveform pos/len macros only change the pos/len, and not the **load** one. if the waveform changes (e.g. ins change, wave macro or wave synth), or the **load** pos/len changes, the wave is written to memory. -# effects +## effects - `10xx`: **set waveform for playback.** - `11xx`: **set waveform position in RAM for playback.** @@ -39,6 +39,6 @@ if the waveform changes (e.g. ins change, wave macro or wave synth), or the **lo - make sure to use `21xx` first! - `21xx`: **set position for 20xx.** -# info +## info this chip uses the [Namco 163](../4-instrument/n163.md) instrument editor. diff --git a/doc/7-systems/namco.md b/doc/7-systems/namco.md index f4f977bc4..2cfc72b3a 100644 --- a/doc/7-systems/namco.md +++ b/doc/7-systems/namco.md @@ -4,11 +4,11 @@ a family of wavetable synth sound chips used by Namco in their arcade machines ( everything starts with Namco WSG, which is a simple 3-channel wavetable with no extra frills. C15 is a much more advanced sound source with 8 channels, and C30 adds stereo output and noise mode. -# effects +## effects - `10xx`: **change waveform.** - `11xx`: **toggle noise mode.** _warning:_ only on C30. -# info +## info this chip uses the [Namco WSG](../4-instrument/wsg.md) instrument editor. diff --git a/doc/7-systems/nes.md b/doc/7-systems/nes.md index 201aa70d3..b782009f3 100644 --- a/doc/7-systems/nes.md +++ b/doc/7-systems/nes.md @@ -4,7 +4,7 @@ the console from Nintendo that plays Super Mario Bros. and helped revive the ago also known as Famicom. it is a five-channel sound generator: first two channels play pulse wave with three different duty cycles, third is a fixed-volume triangle channel, fourth is a noise channel (can work in both pseudo-random and periodic modes) and fifth is a (D)PCM sample channel. -# effects +## effects - `11xx`: **write to delta modulation counter.** range is `00` to `7F`. - this may be used to attenuate the triangle and noise channels; at `7F`, they will be at about 57% volume. @@ -31,7 +31,7 @@ also known as Famicom. it is a five-channel sound generator: first two channels - `1`: length counter. volume represents output volume. - `2`: looping envelope. volume represents envelope duration. - `3`: constant volume. default value. volume represents output volume. - - Pulse and noise channels only. + - pulse and noise channels only. - you may need to apply a phase reset (using the macro) to make the envelope effective. - `16xx`: **set length counter.** - see table below for possible values. @@ -57,11 +57,10 @@ also known as Famicom. it is a five-channel sound generator: first two channels - see table below for possible values. -# info +## info this chip uses the [NES](../4-instrument/nes.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. - ## short noise frequencies (NTSC) note | arpeggio | fundamental | MIDI note | pitch diff --git a/doc/7-systems/opl.md b/doc/7-systems/opl.md index 24850e10c..31ff80b67 100644 --- a/doc/7-systems/opl.md +++ b/doc/7-systems/opl.md @@ -14,7 +14,7 @@ the OPL3 (Yamaha YMF262) added 9 more channels, 4 more waveforms, rudimentary 4- afterwards everyone moved to Windows and software mixed PCM streaming... -# effects +## effects - `10xx`: **set AM depth.** the following values are accepted: - `0`: 1dB (shallow) @@ -27,7 +27,7 @@ afterwards everyone moved to Windows and software mixed PCM streaming... - only in 4-op mode (OPL3). - `15xx`: **set operator 4 level.** - only in 4-op mode (OPL3). -- `16xy`: **sSet multiplier of operator.** +- `16xy`: **set multiplier of operator.** - `x` is the operator (1-4; last 2 operators only in 4-op mode). - `y` is the multiplier. - `17xx`: **set vibrato depth.** @@ -79,6 +79,6 @@ afterwards everyone moved to Windows and software mixed PCM streaming... - `x` is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of `0` means "all operators". - `y` determines whether KSR is on. -# info +## info this chip uses the [FM (OPL)](../4-instrument/fm-opl.md) instrument editor. diff --git a/doc/7-systems/opll.md b/doc/7-systems/opll.md index 9af19d7a1..1ed9fb64d 100644 --- a/doc/7-systems/opll.md +++ b/doc/7-systems/opll.md @@ -7,7 +7,7 @@ OPLL also spawned a few derivative chips, the best known of these is: - Yamaha YM2423, same chip as YM2413, just a different patch set... - Yamaha YMF281, ditto..... -# technical specifications +## technical specifications the YM2413 is equipped with the following features: @@ -25,7 +25,7 @@ the YM2413 is equipped with the following features: - modulator and carrier key scaling - built-in hardware vibrato support -# effects +## effects - `11xx`: **set feedback of channel.** - `12xx`: **set operator 1 level.** @@ -64,7 +64,7 @@ the YM2413 is equipped with the following features: - `x` is the operator, either 1 or 2. a value of `0` means "all operators". - `y` determines whether KSR is on. -# info +## info this chip uses the [FM (OPLL)](../4-instrument/fm-opll.md) instrument editor. diff --git a/doc/7-systems/opz.md b/doc/7-systems/opz.md index 3b9c14fc0..6aad70c52 100644 --- a/doc/7-systems/opz.md +++ b/doc/7-systems/opz.md @@ -23,7 +23,7 @@ no plans have been made for TX81Z MIDI passthrough, because: - the TX81Z is very slow to process a note on/off or parameter change event. - the TL range has been reduced to 0-99, but the chip goes from 0-127. -# effects +## effects - `10xx`: **set noise frequency of channel 8 operator 4.** `00` disables noise while `01` to `20` enable it. - `11xx`: **set feedback of channel.** @@ -114,6 +114,6 @@ no plans have been made for TX81Z MIDI passthrough, because: - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# info +## info this chip uses the [FM (OPZ)](../4-instrument/fm-opz.md) instrument editor. diff --git a/doc/7-systems/pce.md b/doc/7-systems/pce.md index f9232e394..24cbfcf05 100644 --- a/doc/7-systems/pce.md +++ b/doc/7-systems/pce.md @@ -7,7 +7,7 @@ a console from NEC that, depending on a region: it has 6 wavetable channels and the last two ones also double as noise channels. furthermore, it has some PCM and LFO! -# effects +## effects - `10xx`: **change wave.** - `11xx`: **toggle noise mode.** only available in the last two channels. @@ -21,6 +21,6 @@ furthermore, it has some PCM and LFO! - `17xx`: **toggle LEGACY sample mode.** - **this effect exists only for compatibility reasons! its use is NOT recommented. use Sample type instruments instead.** -# info +## info this chip uses the [PC Engine](../4-instrument/pce.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/pcspkr.md b/doc/7-systems/pcspkr.md index 62e0ccf58..23009f915 100644 --- a/doc/7-systems/pcspkr.md +++ b/doc/7-systems/pcspkr.md @@ -2,7 +2,7 @@ 40 years of one square beep - and still going! single channel, no volume control... -# real output +## real output so far this is the only chip in Furnace which has a real hardware output option. to enable it, select file > configure chip... > PC Speaker > Use system beeper. @@ -26,10 +26,10 @@ you may configure the output method by going in Settings > Emulation > PC Speake real hardware output only works on BIOS/UEFI (non-Mac) x86-based machines! attempting to do this under any other device **will not work**, or may even brick the device (if using `/dev/port` or `outb()`)! oh, and of course you also need the beeper to be present in your machine. some laptops connect the beeper output to the built-in speakers (or the audio output jack), and some other don't do this at all. -# effects +## effects ha! effects... -# info +## info this chip uses the [Beeper](../4-instrument/beeper.md) instrument editor. diff --git a/doc/7-systems/pet.md b/doc/7-systems/pet.md index df45a99f1..472bb2ec8 100644 --- a/doc/7-systems/pet.md +++ b/doc/7-systems/pet.md @@ -6,11 +6,11 @@ maybe no better than a computer terminal, but somebody discovered a way to updat some of these didn't even have sound... -# effects +## effects - `10xx`: **set waveform.** - `xx` is a bitmask. -# info +## info this chip uses the [PET](../4-instrument/pet.md) instrument editor. diff --git a/doc/7-systems/pokemini.md b/doc/7-systems/pokemini.md index a1156b912..49e6cfbc3 100644 --- a/doc/7-systems/pokemini.md +++ b/doc/7-systems/pokemini.md @@ -2,10 +2,10 @@ the Pokémon Mini is a ridiculously small handheld system from 2001. its single pulse channel has only three volume steps (full, half, and off)... but variable pulse width. -# effects +## effects none. -# info +## info this chip uses the [Pokémon Mini/QuadTone](../4-instrument/pokemini.md) instrument editor. diff --git a/doc/7-systems/pokey.md b/doc/7-systems/pokey.md index 31832e580..eff37cd8c 100644 --- a/doc/7-systems/pokey.md +++ b/doc/7-systems/pokey.md @@ -2,7 +2,7 @@ a sound and input chip developed by Atari for their 8-bit computers (Atari 400, 800, XL/XE and so on). 4 channels of signature Atari sounds. -# effects +## effects - `10xx`: **set waveform.** - 0: harsh noise (poly5+17) @@ -36,6 +36,6 @@ a sound and input chip developed by Atari for their 8-bit computers (Atari 400, - when enabled, channel 2 modulates channel 1. I don't know how, but it does. - only on ASAP core. -# info +## info this chip uses the [POKEY](../4-instrument/pokey.md) instrument editor. diff --git a/doc/7-systems/pv1000.md b/doc/7-systems/pv1000.md index b05a389b2..1031af815 100644 --- a/doc/7-systems/pv1000.md +++ b/doc/7-systems/pv1000.md @@ -2,12 +2,12 @@ released only in Japan, this console was pulled after only a few weeks on the market. it has only 3 square waves with 6-bit pitch resolution and no bass. -# effects +## effects - `10xx`: **set ring modulation.** - amplitude modulation by the previous channel's output. - `0` turns it off and `1` turns it on. -# info +## info this chip uses the [PV-1000](../4-instrument/pv1000.md) instrument editor. diff --git a/doc/7-systems/qsound.md b/doc/7-systems/qsound.md index 204bbb688..55b05b8dc 100644 --- a/doc/7-systems/qsound.md +++ b/doc/7-systems/qsound.md @@ -10,7 +10,7 @@ the QSound chip also has a small echo buffer, somewhat similar to the SNES, alth there are also 3 ADPCM channels. ADPCM samples are fixed to 8012Hz. -# effects +## effects - `10xx`: **set echo feedback level.** - this effect will apply to all channels. @@ -19,6 +19,6 @@ there are also 3 ADPCM channels. ADPCM samples are fixed to 8012Hz. - on by default. - `3xxx`: **set echo delay buffer length.** -# info +## info this chip uses the [QSound](../4-instrument/qsound.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/ricoh.md b/doc/7-systems/ricoh.md index d283a3cd3..1b9fc4a53 100644 --- a/doc/7-systems/ricoh.md +++ b/doc/7-systems/ricoh.md @@ -2,10 +2,10 @@ YM2612's sidekick - poor man's SNES DSP. 8-channel PCM sample-based synthesizer used in Sega CD, Fujitsu FM Towns and some of Sega's arcade machines. supports up to 64KB of sample data. -# effects +## effects none so far. -# info +## info this chip uses the [RF5C68](../4-instrument/rf5c68.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/saa1099.md b/doc/7-systems/saa1099.md index 8036ec71e..7284b563c 100644 --- a/doc/7-systems/saa1099.md +++ b/doc/7-systems/saa1099.md @@ -4,7 +4,7 @@ this was used by the Game Blaster and SAM Coupé. it's pretty similar to the AY- - an instrument with envelope settings is placed on channel 2 or channel 5 - an instrument that is used as an "envelope output" is placed on channel 3 or channel 6 (you may want to disable wave output on the output channel) -# effects +## effects - `10xy`: **set channel mode.** - `x` toggles noise. @@ -28,6 +28,6 @@ this was used by the Game Blaster and SAM Coupé. it's pretty similar to the AY- - bit 0 sets whether the right output will mirror the left one. - this effect affects either the first 3 or last 3 channels, depending on where it is placed. -# info +## info this chip uses the [SAA1099](../4-instrument/saa.md) instrument editor. diff --git a/doc/7-systems/scc.md b/doc/7-systems/scc.md index 8e5b01475..9ad30cf94 100644 --- a/doc/7-systems/scc.md +++ b/doc/7-systems/scc.md @@ -6,10 +6,10 @@ it was used in (of course) several Konami games, which had better audio quality the only problem? the waveform of the fourth channel is shared with the fifth one due to not enough memory in the chip! the SCC+ fixes this issue though (while being compatible with SCC games). -# effects +## effects - `10xx`: **change wave.** -# info +## info this chip uses the [Konami SCC/Bubble System WSG](../4-instrument/scc.md) instrument editor. diff --git a/doc/7-systems/segapcm.md b/doc/7-systems/segapcm.md index bdadbea59..a42e84366 100644 --- a/doc/7-systems/segapcm.md +++ b/doc/7-systems/segapcm.md @@ -6,16 +6,16 @@ yep, that's right! 16 channels of PCM! a chip used in the Sega OutRun/X/Y arcade boards. eventually the MultiPCM surpassed it with 28 channels, and later they joined the software mixing gang. -# 5-channel SegaPCM +## 5-channel SegaPCM Furnace also has a five channel version of this chip, but it only exists for DefleMask compatibility reasons (which doesn't expose the other channels for rather arbitrary reasons). -# effects +## effects - `20xx`: **set PCM frequency.** - `xx` is a 256th fraction of 31250Hz. - this effect exists mostly for DefleMask compatibility; it is otherwise recommended to use Sample type instruments. -# info +## info this chip uses the [SegaPCM](../4-instrument/segapcm.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/sm8521.md b/doc/7-systems/sm8521.md index 42fa7e982..24649afec 100644 --- a/doc/7-systems/sm8521.md +++ b/doc/7-systems/sm8521.md @@ -4,7 +4,7 @@ the SM8521 is the CPU and sound chip of the Game.com, a handheld console release ultimately, most of the games for the Game.com ended up being failures in the eyes of reviewers, thus giving the Game.com a pretty bad reputation. this was one of the reasons that the Game.com only ended up selling at least 300,000 units. for these reasons and more, the Game.com ended up being discontinued in 2000. -however, for its time, it was a pretty competitively priced system. the Game Boy Color was to be released in a year for $79.95, while the Game.com was released for $69.99; and its later model, the Pocket Pro, was released in mid-1999 for $29.99 due to the Game.com's apparent significant decrease in value. +however, for its time, it was a pretty competitively priced system. the Game Boy Color was to be released in a year for $79.95, while the Game.com was released for $69.99; its later model, the Pocket Pro, was released in mid-1999 for $29.99 due to the Game.com's apparent significant decrease in value. in fact, most games never used the wavetable/noise mode of the chip. Sonic Jam, for example, uses a sine wave with a software-controlled volume envelope on the DAC channel (see below for more information on the DAC channel). @@ -17,11 +17,11 @@ the sound-related features and quirks of the SM8521 are as follows: - 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 not implemented in Furnace. -## effect commands +## effects - `10xx`: **set waveform.** - `xx` is a value between 0 and 255 that sets the waveform of the channel you place it on. -# info +## info this chip uses the [SM8521](../4-instrument/sm8521.md) instrument editor. diff --git a/doc/7-systems/sms.md b/doc/7-systems/sms.md index b6d2190d8..889d82e25 100644 --- a/doc/7-systems/sms.md +++ b/doc/7-systems/sms.md @@ -2,7 +2,7 @@ a relatively simple sound chip made by Texas Instruments. a derivative of it is used in Sega's Master System, the predecessor to Genesis. it has three square wave channels and one noise channel... not really. -nominal mode of SN76489 has 3 square wave channels, with noise channel having only 3 preset frequencies to use (absurdly low, very low, low). to use more pitches, one can enable a mode which "steals" the frequency from square wave channel 3. by doing that, SN76489 becomes effectively a 3 channel sound chip. In addition, periodic noise mode can be enabled, with same caveats. +nominal mode of SN76489 has 3 square wave channels, with noise channel having only 3 preset frequencies to use (absurdly low, very low, low). to use more pitches, one can enable a mode which "steals" the frequency from square wave channel 3. by doing that, SN76489 becomes effectively a 3 channel sound chip. in addition, periodic noise mode can be enabled, with same caveats. the original iteration of the SN76489 used in the TI-99/4A computer, the SN94624, could only produce tones as low as 100Hz, and was clocked at 447 KHz. all later versions (such as the one in the Master System and Genesis) had a clock divider but ran on a faster clock... except for the SN76494, which can play notes as low as 13670 Hz (A -1). consequently, its pitch accuracy for higher notes is compromised. @@ -20,7 +20,7 @@ SN7 was extremely popular due to low cost. therefore, it was cloned and copied t - NCR8496, different noise invert mask. - PSSJ3, literally identical to the former. it just swaps "high" and "low" signals in the output, which results in no audible difference. -# effects +## effects - `20xy`: **set noise mode.** - `x` controls whether to inherit frequency from channel 3. @@ -31,6 +31,6 @@ SN7 was extremely popular due to low cost. therefore, it was cloned and copied t - `1`: noise. -# info +## info this chip uses the [SN76489/Sega PSG](../4-instrument/psg.md) instrument editor. diff --git a/doc/7-systems/snes.md b/doc/7-systems/snes.md index 9800e4526..cf518a0d9 100644 --- a/doc/7-systems/snes.md +++ b/doc/7-systems/snes.md @@ -20,7 +20,7 @@ some notable features of the DSP are: Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) in order to create more 'animated' sounds, using less memory than regular samples. -# effects +## effects - `10xx`: **set waveform.** - `11xx`: **toggle noise mode.** @@ -37,37 +37,31 @@ Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) i - `16xx`: **set gain.** `00` to `7F` if direct, `00` to `1F` otherwise. - `18xx`: **enable echo buffer.** - `19xx`: **set echo delay.** range is `0` to `F`. -- `1Axx`: **set left echo channel volume.**\ - `1Bxx`: **set right echo channel volume.**\ - `1Cxx`: **set echo feedback.** +- `1Axx`: **set left echo channel volume.** +- `1Bxx`: **set right echo channel volume.** +- `1Cxx`: **set echo feedback.** - all of these are signed numbers. - `00` to `7F` for 0 to 127. - `80` to `FF` for -128 to -1. - - setting these to -128 is not recommended as it may cause echo output to overflow and therefore click. + - setting these to -128 is not recommended as it may cause echo output to overflow and therefore click. - `1Dxx`: **set noise generator frequency.** range is `00` to `1F`. see noise frequencies chart below. -- `1Exx`: **set left dry / global volume.**\ - `1Fxx`: **set right dry / global volume.** +- `1Exx`: **set left dry / global volume.** +- `1Fxx`: **set right dry / global volume.** - these do not affect echo. -- `20xx`: **set attack.** range is `0` to `F`.\ - `21xx`: **set decay.** range is `0` to `7`.\ - `22xx`: **set sustain.** range is `0` to `7`.\ - `23xx`: **set release.** range is `00` to `1F`. +- `20xx`: **set attack.** range is `0` to `F`. +- `21xx`: **set decay.** range is `0` to `7`. +- `22xx`: **set sustain.** range is `0` to `7`. +- `23xx`: **set release.** range is `00` to `1F`. - these four are only used in ADSR envelope mode. see ADSR chart below. -- `30xx`: **set echo filter coefficient 0.**\ - `31xx`: **set echo filter coefficient 1.**\ - `32xx`: **set echo filter coefficient 2.**\ - `33xx`: **set echo filter coefficient 3.**\ - `34xx`: **set echo filter coefficient 4.**\ - `35xx`: **set echo filter coefficient 5.**\ - `36xx`: **set echo filter coefficient 6.**\ - `37xx`: **set echo filter coefficient 7.** - - all of these are signed numbers. - - `00` to `7F` for 0 to 127. - - `80` to `FF` for -128 to -1. - - _Note:_ be sure the sum of all coefficients is between -128 and 127. sums outside that may result in overflow and therefore clicking. +- `3xyy`: **set echo filter coefficient.** + - `x` is the coefficient from 0 to 7. + - `yy` is the value (signed number). + - `00` to `7F` for 0 to 127. + - `80` to `FF` for -128 to -1. + - 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. -# info +## info this chip uses the [SNES](../4-instrument/snes.md) instrument editor. @@ -173,8 +167,6 @@ value | freq. | value | freq. reference: [Super Famicom Development Wiki](https://wiki.superfamicom.org/spc700-reference#dsp-register:-flg-1318) - - -# resources +## resources - [SNES-format BRR samples](https://www.smwcentral.net/?p=stion&s=brrsamples) at SMW Central diff --git a/doc/7-systems/soundunit.md b/doc/7-systems/soundunit.md index 2e83c53de..9291ebc9d 100644 --- a/doc/7-systems/soundunit.md +++ b/doc/7-systems/soundunit.md @@ -12,7 +12,7 @@ it has the following capabilities: - volume, frequency and cutoff sweep units (per-channel) - phase reset timer (per-channel) -# effects +## effects - `10xx`: **set waveform.** - `0`: pulse wave @@ -55,6 +55,6 @@ it has the following capabilities: - bit 7: up direction - `4xxx`: **set cutoff.** range is `0` to `FFF`. -# info +## info this chip uses the [Sound Unit](../4-instrument/su.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/t6w28.md b/doc/7-systems/t6w28.md index 26d7d977c..5d6af1871 100644 --- a/doc/7-systems/t6w28.md +++ b/doc/7-systems/t6w28.md @@ -4,12 +4,12 @@ an enhanced SN76489 derivative. same 4 channels, but with stereo (soft panning!) this chip was used in Neo Geo Pocket. -# effects +## effects - `20xx`: **set noise mode.** - `0`: thin pulse. - `1`: noise. -# info +## info this chip uses the [T6W28](../4-instrument/t6w28.md) instrument editor. diff --git a/doc/7-systems/ted.md b/doc/7-systems/ted.md index 4333fcea6..d9cbca996 100644 --- a/doc/7-systems/ted.md +++ b/doc/7-systems/ted.md @@ -5,10 +5,10 @@ also called 7360/8360, TED stands for Text Editing Device. it's both a video and 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 +## effects none so far. -# info +## info this chip uses the [TED](../4-instrument/ted.md) instrument editor. diff --git a/doc/7-systems/tia.md b/doc/7-systems/tia.md index 9e6d9cfa6..6d95c8ae2 100644 --- a/doc/7-systems/tia.md +++ b/doc/7-systems/tia.md @@ -7,7 +7,7 @@ only 2 channels and 31 frequencies?! Furnace isn't complete without this one... -# effects +## effects - `10xx`: **select shape.** - `0`: nothing @@ -29,14 +29,13 @@ Furnace isn't complete without this one... -# info +## info this chip uses the [TIA](../4-instrument/tia.md) instrument editor. +the arp macro's fixed mode operates differently, writing the direct pitch to the chip. here's a list of pitches. -- pitch number can be used for absolute notes in arpeggio macros. - -## shape 1 +### shape 1 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -73,7 +72,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 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 +### shapes 2 and 3 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -110,7 +109,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 30 | 2.2 | | | 2.2 | 31 | 2.1 | | | 2.1 -## shapes 4, 5 +### shapes 4 and 5 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -147,7 +146,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 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 +### shapes 6, 7, 9 and 10 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -184,7 +183,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 30 | 32.7 | C-1 | 0.0 | 32.5 | C-1 | -11 | 31 | 31.7 | B-0 | +44 | 31.5 | B-0 | +33 -## shape 8 +### shape 8 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -221,7 +220,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 30 | 2.0 | | | 2.0 | 31 | 1.9 | | | 1.9 -## shapes 12, 13 +### shapes 12 and 13 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -258,7 +257,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 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 +### shapes 14 and 15 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: @@ -295,4 +294,4 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 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) \ No newline at end of file +reference: [Atari 2600 VCS Sound Frequency and Waveform Guide](http://7800.8bitdev.org/index.php/Atari_2600_VCS_Sound_Frequency_and_Waveform_Guide) diff --git a/doc/7-systems/vera.md b/doc/7-systems/vera.md index be2044afc..98de3b440 100644 --- a/doc/7-systems/vera.md +++ b/doc/7-systems/vera.md @@ -1,11 +1,11 @@ # VERA -this is a video and sound generator chip used in the Commander X16, a modern 8-bit computer created by The 8-Bit Guy. +this is a video and sound generator chip used in the Commander X16, a modern 8-bit computer created by the 8-Bit Guy. it has 16 channels of pulse/triangle/saw/noise and one stereo PCM channel. currently Furnace does not support the PCM channel's stereo mode, though (except for panning). -# effects +## effects - `20xx`: **set waveform.** - `0`: pulse @@ -17,6 +17,6 @@ currently Furnace does not support the PCM channel's stereo mode, though (except - `EExx`: **ZSM synchronization event.** - `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 +## info this chip uses the [VERA](../4-instrument/vera.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/vic20.md b/doc/7-systems/vic20.md index 55880ccd4..064ce233f 100644 --- a/doc/7-systems/vic20.md +++ b/doc/7-systems/vic20.md @@ -17,6 +17,6 @@ these channels are not referred as "square" wave channels since a technique to p - `10xx`: **switch waveform.** range is `00` to `0F`. -# info +## info this chip uses the [VIC](../4-instrument/vic.md) instrument editor. diff --git a/doc/7-systems/virtual-boy.md b/doc/7-systems/virtual-boy.md index 8dc11da98..6aa260188 100644 --- a/doc/7-systems/virtual-boy.md +++ b/doc/7-systems/virtual-boy.md @@ -8,7 +8,7 @@ its sound generation chip is called Virtual Sound Unit (VSU), a wavetable chip t additionally, channel 5 offers a modulation/sweep unit. the former is similar to FDS' but has much reduced speed control. -# effects +## effects - `10xx`: **set waveform.** - `11xx`: **set noise length.** range is `0` to `7`. @@ -42,6 +42,6 @@ additionally, channel 5 offers a modulation/sweep unit. the former is similar to - `xx` points to a wavetable. range is `0` to `FF`. - this is an alternative to setting the modulation wave through the instrument. -# info +## info this chip uses the [Virtual Boy](../4-instrument/virtual-boy.md) instrument editor. diff --git a/doc/7-systems/vrc6.md b/doc/7-systems/vrc6.md index ace59636d..174a4d348 100644 --- a/doc/7-systems/vrc6.md +++ b/doc/7-systems/vrc6.md @@ -10,7 +10,7 @@ for that reason, the sawtooth channel has its own instrument type. setting volum pulse wave duty cycle is 8-level. it can be ignored and it has potential for DAC at this case: volume register in this mode is DAC output and it can be PCM playback through this mode. Furnace supports this routine for PCM playback, but it consumes a lot of CPU time in real hardware (even if conjunction with VRC6's integrated IRQ timer). -# effects +## effects these effects only are effective in the pulse channels. @@ -18,6 +18,6 @@ these effects only are effective in the pulse channels. - `17xx`: **toggle LEGACY sample mode.** - **this effect exists only for compatibility reasons! its use is NOT recommented. use Sample type instruments instead.** -# info +## info this chip uses the [VRC6](../4-instrument/vrc6.md), [VRC6 (saw)](../4-instrument/vrc6.md), and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/wonderswan.md b/doc/7-systems/wonderswan.md index ebd833fd4..24d71ecc0 100644 --- a/doc/7-systems/wonderswan.md +++ b/doc/7-systems/wonderswan.md @@ -8,7 +8,7 @@ it has 4 wavetable channels. some of them have additional capabilities: - the third one has hardware sweep - the fourth one also does noise -# effects +## effects - `10xx`: **change wave**. - `11xx`: **setup noise mode.** channel 4 only. @@ -19,6 +19,6 @@ it has 4 wavetable channels. some of them have additional capabilities: - 1-32: enable and set period. - `13xx`: **setup sweep amount.** channel 3 only. -# info +## info this chip uses the [WonderSwan](../4-instrument/wonderswan.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/x1-010.md b/doc/7-systems/x1-010.md index b356f82ab..ae7d55bc5 100644 --- a/doc/7-systems/x1-010.md +++ b/doc/7-systems/x1-010.md @@ -10,7 +10,7 @@ wavetable playback needs to paired with envelope, similar to AY PSG, but shapes in Furnace, this chip can be configured for original arcade mono output or stereo output - it simulates early 'incorrect' emulation on some mono hardware, but it is also based on the assumption that each channel is connected to each output. -# waveform types +## waveform types this chip supports 2 types of waveforms, needs to be paired to external 8 KB RAM to access these features: @@ -23,7 +23,7 @@ these are stored at the upper half of RAM at common case. both waveforms are 128 bytes (fixed size), freely allocated at each half of RAM except the channel register area: each half can store total 32/31 waveforms at once. in Furnace, you can enable the envelope shape split mode. when it is set, its waveform will be split to the left and right halves for each output. each max size is 128 bytes, total 256 bytes. -# effects +## effects - `10xx`: **change wave.** - `11xx`: **change envelope shape.** also wavetable. @@ -47,6 +47,6 @@ in Furnace, you can enable the envelope shape split mode. when it is set, its wa - `y` is the denominator. - if `x` or `y` are 0 this will disable auto-envelope mode. -# info +## info this chip uses the [X1-010](../4-instrument/x1_010.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/ym2151.md b/doc/7-systems/ym2151.md index 7b3421de4..287a47d52 100644 --- a/doc/7-systems/ym2151.md +++ b/doc/7-systems/ym2151.md @@ -6,7 +6,7 @@ it also was present on several pinball machines and synthesizers of the era, and in most arcade boards the chip was used in combination with a PCM chip, like [SegaPCM](segapcm.md) or [OKI's line of ADPCM chips](msm6295.md). -# effects +## effects - `10xx`: **set noise frequency of channel 8 operator 4.** `00` disables noise while `01` to `20` enables it. - `11xx`: **set feedback of channel.** @@ -69,6 +69,6 @@ in most arcade boards the chip was used in combination with a PCM chip, like [Se - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# info +## info this chip uses the [FM (OPM)](../4-instrument/fm-opm.md) instrument editor. diff --git a/doc/7-systems/ym2203.md b/doc/7-systems/ym2203.md index 652a01396..a05cb84cf 100644 --- a/doc/7-systems/ym2203.md +++ b/doc/7-systems/ym2203.md @@ -9,7 +9,7 @@ this chip was used in the NEC PC-88/PC-98 series of computers, the Fujitsu FM-7A several variants of this chip were released as well, with more features. -# effects +## effects - `11xx`: **set feedback of channel.** - `12xx`: **set operator 1 level.** @@ -106,7 +106,7 @@ in ExtCh mode, channel 3 is split into one column for each of its four operators all four operators are still combined according to the algorithm in use. for example, algorithm 7 acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with algorithm 0, placing a note in any operator triggers that operator alone. -# info +## info this chip uses the [FM (OPN)](../4-instrument/fm-opn.md) and [AY-3-8910/SSG](../4-instrument/ay8910.md) instrument editor. diff --git a/doc/7-systems/ym2608.md b/doc/7-systems/ym2608.md index 13808e620..c7306eec3 100644 --- a/doc/7-systems/ym2608.md +++ b/doc/7-systems/ym2608.md @@ -6,7 +6,7 @@ it was one of the available sound chips for the NEC PC-88VA and later models of the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built-in drums have been replaced with 6 sample channels. -# effects +## effects - `10xy`: **set LFO parameters.** - `x` toggles the LFO. @@ -101,11 +101,12 @@ the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built- - `5Fxx`: **set D2R/SR of operator 4.** ## extended channel 3 + in ExtCh mode, channel 3 is split into one column for each of its four operators. feedback and LFO levels are shared. the frequency of each operator may be controlled independently with notes and effects. this can be used for more polyphony or more complex sounds. all four operators are still combined according to the algorithm in use. for example, algorithm 7 acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with algorithm 0, placing a note in any operator triggers that operator alone. -# info +## info this chip uses the [FM (OPN)](../4-instrument/fm-opn.md), [Generic Sample](../4-instrument/sample.md), [AY-3-8910/SSG](../4-instrument/ay8910.md), [ADPCM-A](../4-instrument/adpcm-a.md), and [ADPCM-B](../4-instrument/adpcm-b.md) instrument editors. diff --git a/doc/7-systems/ym2610.md b/doc/7-systems/ym2610.md index 326494954..63b1358f5 100644 --- a/doc/7-systems/ym2610.md +++ b/doc/7-systems/ym2610.md @@ -4,7 +4,7 @@ originally an arcade board, but SNK shortly adapted it to a rather expensive vid its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and [2 different format ADPCM](https://wiki.neogeodev.org/index.php?title=ADPCM) in a single package! -# effects +## effects - `10xy`: **set LFO parameters.** - `x` toggles the LFO. @@ -99,11 +99,12 @@ its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and [2 differen - `5Fxx`: **set D2R/SR of operator 4.** ## extended channel 2 + in ExtCh mode, channel 2 is split into one column for each of its four operators. feedback and LFO levels are shared. the frequency of each operator may be controlled independently with notes and effects. this can be used for more polyphony or more complex sounds. all four operators are still combined according to the algorithm in use. for example, algorithm 7 acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with algorithm 0, placing a note in any operator triggers that operator alone. -# info +## info this chip uses the [FM (OPN)](../4-instrument/fm-opn.md), [Generic Sample](../4-instrument/sample.md), [AY-3-8910/SSG](../4-instrument/ay8910.md), [ADPCM-A](../4-instrument/adpcm-a.md), and [ADPCM-B](../4-instrument/adpcm-b.md) instrument editors. diff --git a/doc/7-systems/ym2610b.md b/doc/7-systems/ym2610b.md index 15f1760ba..a62548cad 100644 --- a/doc/7-systems/ym2610b.md +++ b/doc/7-systems/ym2610b.md @@ -3,7 +3,7 @@ YM2610B is basically YM2610 with 2 extra FM channels used at some 90s Taito arcade hardware. it is backward compatible with the original chip. -# effects +## effects - `10xy`: **set LFO parameters.** - `x` toggles the LFO. @@ -103,7 +103,7 @@ in ExtCh mode, channel 3 is split into one column for each of its four operators all four operators are still combined according to the algorithm in use. for example, algorithm 7 acts as four independent sine waves. algorithm 4 acts as two independent 2op sounds. even with algorithm 0, placing a note in any operator triggers that operator alone. -# info +## info this chip uses the [FM (OPN)](../4-instrument/fm-opn.md), [Generic Sample](../4-instrument/sample.md), [AY-3-8910/SSG](../4-instrument/ay8910.md), [ADPCM-A](../4-instrument/adpcm-a.md), and [ADPCM-B](../4-instrument/adpcm-b.md) instrument editors. diff --git a/doc/7-systems/ym2612.md b/doc/7-systems/ym2612.md index 4576672f0..595c9c460 100644 --- a/doc/7-systems/ym2612.md +++ b/doc/7-systems/ym2612.md @@ -18,7 +18,7 @@ CSM is beyond the scope of this documentation. for more information, see this [b ## DualPCM thanks to the Z80 sound CPU, DualPCM can play two samples at once! this mode splits channel 6 into two individual PCM channels with variable pitch. these are mixed together in software and streamed to channel 6 with a mix rate of 13750 Hz. VGM export requires the "direct stream mode" option to be enabled, and resulting files will be very large. -# effects +## effects - `10xy`: **set LFO parameters.** - `x` toggles the LFO. @@ -83,7 +83,7 @@ thanks to the Z80 sound CPU, DualPCM can play two samples at once! this mode spl - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# info +## info this chip uses the [FM (OPN)](../4-instrument/fm-opn.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/ymu759.md b/doc/7-systems/ymu759.md index 0a87d6160..268e08021 100644 --- a/doc/7-systems/ymu759.md +++ b/doc/7-systems/ymu759.md @@ -5,9 +5,9 @@ it is also known as MA-2. sadly Yamaha didn't care about these chips too much, and the register specs were completely unavailable, which means the YMU759 is totally unsupported and unemulated besides Yamaha's official emulator for it built into MidRadio. -Furnace 0.6 loads DefleMask modules written for this system; however, it doesn't support any of its effects and is simulated using the OPL core. +Furnace is able to load DefleMask modules written for this system; however, it doesn't support any of its effects and is simulated using the OPL core. -# effects +## effects since this chip is so abandoned, there isn't any support for it. @@ -16,6 +16,6 @@ even DefleMask dropped support for the chip in version 0.11, which just shows ho hey, at least it was the spark that ignited the idea of DefleMask. -# info +## info this chip uses the [FM (OPL)](../4-instrument/fm-opl.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/ymz280b.md b/doc/7-systems/ymz280b.md index 6a1668742..170251a88 100644 --- a/doc/7-systems/ymz280b.md +++ b/doc/7-systems/ymz280b.md @@ -4,10 +4,10 @@ it has 16-level stereo panning, up to 16-bit PCM and up to 16MB of external PCM data. -# effects +## effects none so far. -# info +## info this chip uses the [YMZ280B](../4-instrument/ymz280b.md) and [Generic Sample](../4-instrument/sample.md) instrument editors. diff --git a/doc/7-systems/zxbeep.md b/doc/7-systems/zxbeep.md index 719ad400b..b721d8233 100644 --- a/doc/7-systems/zxbeep.md +++ b/doc/7-systems/zxbeep.md @@ -2,12 +2,12 @@ rather than having a dedicated sound synthesizer, early ZX Spectrum models had one piezo beeper, controlled by Z80 CPU and ULA chip. its capabilities should be on par with an IBM PC speaker... right? -not really - very soon talented programmers found out ways to output much more than one square wave channel. a lot of ZX beeper routines do exist, but as of 0.6 Furnace supports two engines: +not really - very soon talented programmers found out ways to output much more than one square wave channel. a lot of ZX beeper routines do exist, but Furnace only supports two engines: - a Follin/SFX-like engine with 6 channels of narrow pulse wave and click drums. - QuadTone: PWM-driven engine with 4ch of pulse wave with freely variable duty cycles and 1-bit PCM drums. -# effects +## effects - **`12xx`**: set pulse width. - **`17xx`**: trigger overlay drum. @@ -15,6 +15,6 @@ not really - very soon talented programmers found out ways to output much more t - overlay drums are 1-bit and always play at 55930Hz (NTSC) or 55420Hz (PAL). - the maximum length is 2048! -# info +## info this chip uses the [Beeper](../4-instrument/beeper.md), [Generic Sample](../4-instrument/sample.md), and [Pokémon Mini/QuadTone](../4-instrument/pokemini.md) instrument editors. diff --git a/doc/8-advanced/channels.png b/doc/8-advanced/channels.png index e51815ebd..31afb7c6c 100644 Binary files a/doc/8-advanced/channels.png and b/doc/8-advanced/channels.png differ diff --git a/doc/8-advanced/chanosc-gradient.png b/doc/8-advanced/chanosc-gradient.png index cd255d523..0a413d266 100644 Binary files a/doc/8-advanced/chanosc-gradient.png and b/doc/8-advanced/chanosc-gradient.png differ diff --git a/doc/8-advanced/chanosc.md b/doc/8-advanced/chanosc.md index 631fa5d09..b811add81 100644 --- a/doc/8-advanced/chanosc.md +++ b/doc/8-advanced/chanosc.md @@ -49,13 +49,13 @@ in this mode, the color selector is replaced by a square field onto which circul - **Spread**: the size of the solid center of the circle. increasing it fills more of the circle with the target color. - **Background**: sets background color for entire field. -- **X Axis**: determines what the horizontal maps to, from left to right.\ - **Y Axis**: determines what the vertical maps to, from bottom to top. these can be set to the following: +- **X Axis**: determines what the horizontal maps to, from left to right. +- **Y Axis**: determines what the vertical maps to. from bottom to top. these can be set to the following: - **None (0%)**: stays at the left or bottom. - **None (50%)**: stays at the center. - **None (100%)**: stays at the right or top. - **Frequency**: changes color with note frequency. - **Volume**: changes color with volume. - **Channel**: changes color based on channel number. - - **Brightness**: {{document this}} + - **Brightness**: currently does nothing. - **Note Trigger**: changes color when a new note is played. diff --git a/doc/8-advanced/chanosc.png b/doc/8-advanced/chanosc.png index 2d05dbdf1..8128b1d8e 100644 Binary files a/doc/8-advanced/chanosc.png and b/doc/8-advanced/chanosc.png differ diff --git a/doc/8-advanced/chip-manager-change.png b/doc/8-advanced/chip-manager-change.png index 0def9180b..4e9a29f2c 100644 Binary files a/doc/8-advanced/chip-manager-change.png and b/doc/8-advanced/chip-manager-change.png differ diff --git a/doc/8-advanced/chip-manager-move.png b/doc/8-advanced/chip-manager-move.png index 022eae230..46925f76d 100644 Binary files a/doc/8-advanced/chip-manager-move.png and b/doc/8-advanced/chip-manager-move.png differ diff --git a/doc/8-advanced/chip-manager-remove.png b/doc/8-advanced/chip-manager-remove.png index aea34d9c4..3e80749d4 100644 Binary files a/doc/8-advanced/chip-manager-remove.png and b/doc/8-advanced/chip-manager-remove.png differ diff --git a/doc/8-advanced/chip-manager.png b/doc/8-advanced/chip-manager.png index 690777795..fbc5045c2 100644 Binary files a/doc/8-advanced/chip-manager.png and b/doc/8-advanced/chip-manager.png differ diff --git a/doc/8-advanced/clock.png b/doc/8-advanced/clock.png index 47ca4fd60..20f906e5c 100644 Binary files a/doc/8-advanced/clock.png and b/doc/8-advanced/clock.png differ diff --git a/doc/8-advanced/comments.md b/doc/8-advanced/comments.md index 2c53bf7c1..ebb05d700 100644 --- a/doc/8-advanced/comments.md +++ b/doc/8-advanced/comments.md @@ -2,7 +2,6 @@ ![comments dialog](comments.png) -comments, credits, or any arbitrary text may be entered here.\ -it has no effect on the song. +comments, credits, or any arbitrary text may be entered here. it has no effect on the song. -there is no word wrap; long lines must be broken manually with the Enter key. \ No newline at end of file +there is no word wrap; long lines must be broken manually with the Enter key. diff --git a/doc/8-advanced/comments.png b/doc/8-advanced/comments.png index dec7c26a0..e102d7fad 100644 Binary files a/doc/8-advanced/comments.png and b/doc/8-advanced/comments.png differ diff --git a/doc/8-advanced/find-find.png b/doc/8-advanced/find-find.png index 8f061ebe5..1d5e05ba9 100644 Binary files a/doc/8-advanced/find-find.png and b/doc/8-advanced/find-find.png differ diff --git a/doc/8-advanced/find-replace.md b/doc/8-advanced/find-replace.md index 872abb1c3..613865c3c 100644 --- a/doc/8-advanced/find-replace.md +++ b/doc/8-advanced/find-replace.md @@ -2,59 +2,76 @@ Furnace has a powerful find-and-replace function that can take the repetitive work out of mass editing. -# find +## find ![find dialog](find-find.png) all data that can be found within a pattern can be searched for here. -- a find term contains: - - **Note**: note.\ - **Ins**: instrument.\ - **Volume**: volume.\ - **Effect**: effect type.\ - **Value**: effect value. all of these have the following choices for what data will be found: - - **ignore**: ignore this. - - **equals**: match the given value exactly. - - **not equal**: match everything but the given value. - - **between**: match anything between and including the given values. - - **not between**: match anything outside the given range of values. - - **any**: match all values. - - **none**: match blanks only. - - **-**: remove find term. if only one find term exists, it is cleared. - - **Add effect**: adds another Effect and Value to the term, each set representing additional effects columns. - - **Remove effect**: removes last Effect and Value from the term. -- **+**: adds another find term. -- **Search range**: restricts the find to the whole **Song**, the current **Selection**, or the currently viewed **Pattern**. -- **Confine to channels**: restricts the find to the selected channels and the channels between them. +a query contains: + +- **Note**: note. +- **Ins**: instrument. +- **Volume**: volume. +- **Effect**: effect type. +- **Value**: effect value. + +all of these have the following choices for what data will be found: + +- **ignore**: ignore this. +- **equals**: match the given value exactly. +- **not equal**: match everything but the given value. +- **between**: match anything between and including the given values. +- **not between**: match anything outside the given range of values. +- **any**: match all values. +- **none**: match blanks only. + +the following options also are available: + +- **-**: remove query. if only one query exists, it is cleared. +- **Add effect**: adds another Effect and Value to the query, each set representing additional effects columns. +- **Remove effect**: removes last Effect and Value from the query. +- **+**: adds another query. + +- **Search range**: restricts search range to the whole **Song**, the current **Selection**, or the currently viewed **Pattern**. +- **Confine to channels**: restricts to the selected channels and the channels between them. - **Match effect position**: chooses how the order of effect types and effect values will matter when finding them. - **No**: no attention is paid to what order the effects appear in. - **Lax**: matches effects if they appear in the same order as selected above. - **Strict**: effects may only match in their correponding effects columns. -- **Find**: finds everything that matches the terms and displays it in a list. - - the **order**, **row**, and **channel** columns are as they say. - - the **go** column of buttons will snap the pattern cursor to the location of the find. -# replace +- **Find**: finds everything that matches the query and displays it in a list. + - the **order**, **row**, and **channel** columns are as they say. + - the **go** column of buttons will take you to the location of the result. + +## replace ![replace dialog](find-replace.png) -- the replacement term contains: - - **Note**: note.\ - **Ins**: instrument.\ - **Volume**: volume.\ - **Effect**: effect type.\ - **Value**: effect value. all of these have the following choices for how they alter the found data: - - **set**: changes found data to this value. - - **add**: adds this value to the found data. it may be negative for subtraction. notes are calculated in semitones. - - **add (overflow)**: as "add" above, but values will wrap around; for example, adding 13 to `FF` will result in `0C`. - - **scale**: multiply value to this percentage; for example, scaling `1A` by `150` results in `27`. not available for "note". - - **clear**: erases data. - - **Add effect**: adds another Effect and Value to be replaced according to how they were found. - - **Remove effect**: removes last Effect and Value. +you may select any of these to replace: + +- **Note**: note. +- **Ins**: instrument. +- **Volume**: volume. +- **Effect**: effect type. +- **Value**: effect value. + +all of these have the following choices for how they alter matches: + +- **set**: changes matched data to this value. +- **add**: adds this value to matched data. it may be negative for subtraction. notes are calculated in semitones. +- **add (overflow)**: as "add" above, but values will wrap around; for example, adding 13 to `FF` will result in `0C`. +- **scale**: multiply value to this percentage; for example, scaling `1A` by `150` results in `27`. not available for "note". +- **clear**: erases matched data. + +the following options also are available: + +- **Add effect**: adds another Effect and Value to be replaced according to how they were found. +- **Remove effect**: removes last Effect and Value. - **Effect replace mode**: - **Replace matches only**: replaces only the effect columns that match. - **Replace matches, then free spaces**: replaces matched effects; if there are effect columns without data, those will be filled in with the additional effect replacements. - **Clear effects**: overwrites effect data with replacement effects. - **Insert in free spaces**: replaces nothing; replacement effects are inserted in free effects columns when available. -- **Replace**: finds everything from the "Find" tab and replaces it as directed. + +- **Replace**: performs the query specified in the Find tab and replaces it as directed. diff --git a/doc/8-advanced/find-replace.png b/doc/8-advanced/find-replace.png index 77f46f6ef..a9206beae 100644 Binary files a/doc/8-advanced/find-replace.png and b/doc/8-advanced/find-replace.png differ diff --git a/doc/8-advanced/grooves.md b/doc/8-advanced/grooves.md index 60762c561..38775c5ab 100644 --- a/doc/8-advanced/grooves.md +++ b/doc/8-advanced/grooves.md @@ -26,9 +26,9 @@ a single `09xx` command will switch to the matching numbered groove pattern. this is a non-exhaustive list of grooves and their equivalent BPM. -_note:_ this table assumes a song's tick rate setting is left at its default value for the chosen engine speed: 60 for NTSC, or 50 for PAL. +note: this table assumes a song's tick rate setting is left at its default value for the chosen engine speed: 60 for NTSC, or 50 for PAL. -bPM NTSC | BPM PAL | groove | | BPM NTSC | BPM PAL | groove +BPM NTSC | BPM PAL | groove | | BPM NTSC | BPM PAL | groove --------:|--------:|:-----------------------|-|---------:|--------:|:---------------------- 100.00 | 83.33 | 9 | | 168.75 | 140.63 | 6, 5, 5 102.86 | 85.71 | 9, 9, 9, 8 | | 171.43 | 142.86 | 6, 5, 5, 5 diff --git a/doc/8-advanced/grooves.png b/doc/8-advanced/grooves.png index 2130dad39..e38e944f0 100644 Binary files a/doc/8-advanced/grooves.png and b/doc/8-advanced/grooves.png differ diff --git a/doc/8-advanced/log-viewer.png b/doc/8-advanced/log-viewer.png index aa0076508..820ea1761 100644 Binary files a/doc/8-advanced/log-viewer.png and b/doc/8-advanced/log-viewer.png differ diff --git a/doc/8-advanced/mixer-mixer.png b/doc/8-advanced/mixer-mixer.png index 249c6fbed..01dfdc5c7 100644 Binary files a/doc/8-advanced/mixer-mixer.png and b/doc/8-advanced/mixer-mixer.png differ diff --git a/doc/8-advanced/mixer-patchbay.png b/doc/8-advanced/mixer-patchbay.png index 52ca7ab3e..ff36d9d07 100644 Binary files a/doc/8-advanced/mixer-patchbay.png and b/doc/8-advanced/mixer-patchbay.png differ diff --git a/doc/8-advanced/pattern-manager.png b/doc/8-advanced/pattern-manager.png index b64b9d291..3ac440cb6 100644 Binary files a/doc/8-advanced/pattern-manager.png and b/doc/8-advanced/pattern-manager.png differ diff --git a/doc/8-advanced/piano.png b/doc/8-advanced/piano.png index ee04dd442..9b2b7b4c3 100644 Binary files a/doc/8-advanced/piano.png and b/doc/8-advanced/piano.png differ diff --git a/doc/8-advanced/register.png b/doc/8-advanced/register.png index 76ec9894f..a456608db 100644 Binary files a/doc/8-advanced/register.png and b/doc/8-advanced/register.png differ diff --git a/doc/8-advanced/stats.png b/doc/8-advanced/stats.png index aabafa50e..6e4ec92a0 100644 Binary files a/doc/8-advanced/stats.png and b/doc/8-advanced/stats.png differ diff --git a/doc/9-guides/README.md b/doc/9-guides/README.md index 4ccd69966..66748e615 100644 --- a/doc/9-guides/README.md +++ b/doc/9-guides/README.md @@ -7,6 +7,6 @@ this is collection of user-contributed Furnace guides which may be useful during - [using OPLL patch macro](opllswitching.md) - [using AY/SAA hardware envelope](envelope.md) -# other resources +## other resources - [FM Synthesis of Real Instruments](http://www.javelinart.com/FM_Synthesis_of_Real_Instruments.pdf): an in-depth tutorial on creating FM patches from scratch. diff --git a/papers/clipboard-format.md b/papers/clipboard-format.md index 891ed1112..095c543da 100644 --- a/papers/clipboard-format.md +++ b/papers/clipboard-format.md @@ -6,7 +6,7 @@ when copying pattern data from Furnace, it's stored in the clipboard as plain te org.tildearrow.furnace - Pattern Data (144) ``` -this top line of text is always the same except for the number in parentheses, which is the internal build number. for example, 0.6pre12 is `173`. +this top line of text is always the same except for the number in parentheses, which is the internal build number. for example, 0.6pre13 is `174`. the second line is a number between 0 and 18 (decimal) which indicates which column the clip starts from. - `0`: note. diff --git a/papers/format.md b/papers/format.md index 46bceaab1..399db9b20 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 174: Furnace 0.6pre13 - 173: Furnace 0.6pre12 - 172: Furnace 0.6pre11 - 171: Furnace 0.6pre10 diff --git a/res/Info.plist b/res/Info.plist index 770c11e76..8277023ba 100644 --- a/res/Info.plist +++ b/res/Info.plist @@ -15,17 +15,17 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 0.6pre12 + 0.6pre13 CFBundleName Furnace CFBundlePackageType APPL CFBundleShortVersionString - 0.6pre12 + 0.6pre13 CFBundleSignature ???? CFBundleVersion - 0.6pre12 + 0.6pre13 NSHumanReadableCopyright NSHighResolutionCapable diff --git a/res/docpdf/make_paper.py b/res/docpdf/make_paper.py index 84ac03952..e15f278db 100644 --- a/res/docpdf/make_paper.py +++ b/res/docpdf/make_paper.py @@ -131,20 +131,46 @@ if __name__ == "__main__": code { font-family: 'IBM Plex Mono'; } + ul { + padding-left: 4pt; + margin-right: 4pt; + list-style-type: none; + } + li:before { + content: '-'; + padding-right: 3pt; + } h1 { hyphens: none; text-align: left; } h2 { hyphens: none; - text-align: left; + text-align: center; font-size: 36pt; margin: 0; padding: 0 0 4pt 10pt; border-style: none none double none; border-width: 0 0 6pt 0; } - h3,h4,h5,h6 { + h3 { + hyphens: none; + text-align: left; + font-size: 20pt; + margin: 0; + padding: 0 0 2pt 10pt; + border-style: none none solid none; + border-width: 0 0 2pt 0; + border-color: #999; + } + h4 { + hyphens: none; + text-align: left; + font-size: 15pt; + margin: 0; + padding: 0 0 2pt 4pt; + } + h5,h6 { hyphens: none; text-align: left; } @@ -207,7 +233,7 @@ if __name__ == "__main__": } @page { size: a4; - margin: 14mm 2cm 3cm 2cm; + margin: 14mm 16mm 3cm 16mm; } @page:left { @bottom-left { diff --git a/src/engine/engine.h b/src/engine/engine.h index 1404a3a54..3b1d8d2fd 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -58,8 +58,8 @@ class DivWorkPool; #define DIV_UNSTABLE -#define DIV_VERSION "0.6pre12" -#define DIV_ENGINE_VERSION 173 +#define DIV_VERSION "0.6pre13" +#define DIV_ENGINE_VERSION 174 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index d734037a4..84d3561b6 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4886,7 +4886,7 @@ bool FurnaceGUI::loop() { } break; case GUI_FILE_SAMPLE_OPEN: { - String errs="there were some errors while loading wavetables:\n"; + String errs="there were some errors while loading samples:\n"; bool warn=false; for (String i: fileDialog->getFileName()) { DivSample* s=e->sampleFromFile(i.c_str());