diff --git a/doc/2-interface/menu-bar.md b/doc/2-interface/menu-bar.md
index 8fac9e659..02a028d67 100644
--- a/doc/2-interface/menu-bar.md
+++ b/doc/2-interface/menu-bar.md
@@ -8,6 +8,8 @@ the menu bar allows you to select five menus: file, edit, settings, window and h
- **open...**: opens the file picker, allowing you to select a song to open.
- **open recent**: contains a list of the songs you've opened before.
- **clear history**: this option erases the file history.
+
+
- **save**: saves the current song.
- opens the file picker if this is a new song, or a backup.
- **save as...**: opens the file picker, allowing you to save the song under a different name.
@@ -29,12 +31,16 @@ the menu bar allows you to select five menus: file, edit, settings, window and h
- Arcade (YM2151 + SegaPCM 5-channel compatibility)
- Neo Geo CD (DefleMask 1.0+)
- only use this option if you really need it. there are features which DefleMask does not support, like some effects and FM macros, so these will be lost.
+
+
- **export audio...**: export your song to a .wav file. see next section for more details.
- **export VGM...**: export your song to a .vgm file. see next section for more details.
- **export ZSM...**: export your song to a .zsm file. see next section for more details.
- only available when there's a YM2151 and/or VERA.
- **export command stream...**: export song data to a command stream file. see next section for more details.
- this option is for developers.
+
+
- **add chip...**: add a chip to the current song.
- **configure chip...**: set a chip's parameters.
- for a list of parameters, see [7-systems](../7-systems/README.md).
@@ -42,6 +48,8 @@ the menu bar allows you to select five menus: file, edit, settings, window and h
- **Preserve channel positions**: enable this option to make sure Furnace does not auto-arrange/delete channels to compensate for differing channel counts. this can be useful for doing ports, e.g. from Genesis to PC-98.
- **remove chip...**: remove a chip.
- **Preserve channel positions**: same thing as above.
+
+
- **restore backup**: restore a previously saved backup.
- Furnace keeps up to 5 backups of a song.
- the backup directory is located in:
@@ -49,6 +57,8 @@ the menu bar allows you to select five menus: file, edit, settings, window and h
- macOS: `~/Library/Application Support/Furnace/backups`
- Linux/other: `~/.config/furnace/backups`
- this directory grows in size as you use Furnace. remember to delete old backups periodically to save space.
+
+
- **exit**: I think you know what this does.
## export audio
@@ -130,7 +140,8 @@ it's not really useful, unless you're a developer and want to use a command stre
# edit
- **undo**: reverts the last action.
-- **redo**: repeats what you undid previously.
+- **redo**: repeats what you undid previously.
+
- **cut**: moves the current selection in the pattern view to clipboard.
- **copy**: copies the current selection in the pattern view to clipboard.
- **paste**: inserts the clipboard's contents in the cursor position.
@@ -147,11 +158,17 @@ it's not really useful, unless you're a developer and want to use a command stre
- if the selection is tall, it will select the entire column.
- if a column is already selected, it will select the entire channel.
- if a channel is already selected, it will select the entire pattern.
+
+
- **operation mask**: this is an advanced feature. see [this page](../3-pattern/opmask.md) for more information.
-- **input latch**: this is an advanced feature. see [this page](../3-pattern/inputlatch.md) for more information.
-- **note/octave up/down**: transposes notes in the current selection.
-- **values up/down**: changes values in the current selection by ±1 or ±16.
-- **transpose**: transpose notes or change values by a specific amount.
+- **input latch**: this is an advanced feature. see [this page](../3-pattern/inputlatch.md) for more information.
+
+- **note/octave up/down**: transposes notes in the current selection.
+
+- **values up/down**: changes values in the current selection by ±1 or ±16.
+
+- **transpose**: transpose notes or change values by a specific amount.
+
- **interpolate**: fills in gaps in the selection by interpolation between values.
- **change instrument**: changes the instrument number in a selection.
- **gradient/fade**: replace the selection with a "gradient" that goes from the beginning of the selection to the end.
@@ -162,18 +179,24 @@ it's not really useful, unless you're a developer and want to use a command stre
- use to change volume in a selection for example.
- **randomize**: replaces the selection with random values.
- does not affect the note column.
-- **invert values**: `00` becomes `FF`, `01` becomes `FE`, `02` becomes `FD` and so on.
+- **invert values**: `00` becomes `FF`, `01` becomes `FE`, `02` becomes `FD` and so on.
+
- **flip selection**: flips the selection so it is backwards.
- **collapse/expand amount**: allows you to specify how much to collapse/expand in the next options.
- **collapse**: shrinks the selected contents.
-- **expand**: expands the selected contents.
+- **expand**: expands the selected contents.
+
- **collapse pattern**: same as collapse, but affects the entire pattern.
-- **expand pattern**: same as expand, but affects the entire pattern.
+- **expand pattern**: same as expand, but affects the entire pattern.
+
- **collapse song**: same as collapse, but affects the entire song.
- it also changes speeds and pattern length to compensate.
- **expand song**: same as expand, but affects the entire song.
- it also changes speeds and pattern length to compensate.
-- **find/replace**: opens the Find/Replace window. see [this page](../3-pattern/find-replace.md) for more information.
+
+
+- **find/replace**: opens the Find/Replace window. see [this page](../3-pattern/find-replace.md) for more information.
+
- **clear**: allows you to mass-delete things like songs, instruments and the like.
# settings
@@ -201,10 +224,12 @@ it's not really useful, unless you're a developer and want to use a command stre
- **pattern manager**: shows/hides the Pattern Manager window.
- **chip manager**: shows/hides the Chip Manager window.
- **compatibility flags**: shows/hides the Compatibility Flags window.
-- **song comments**: shows/hides the Song Comments window.
-- **instrument editor**: shows/hides the Instrument Editor.
+- **song comments**: shows/hides the Song Comments window.
+
+- **instrument editor**: shows/hides the Instrument Editor
- **wavetable editor**: shows/hides the Wavetable Editor.
-- **sample editor**: shows/hides the Sample Editor.
+- **sample editor**: shows/hides the Sample Editor.
+
- **play/edit controls**: shows/hides the Play/Edit Controls.
- **piano/input pad**: shows/hides the Piano/Input Pad window.
- **oscilloscope (master)**: shows/hides the oscilloscope.
diff --git a/doc/3-pattern/effects.md b/doc/3-pattern/effects.md
index 6becb6c82..4f1aebbfb 100644
--- a/doc/3-pattern/effects.md
+++ b/doc/3-pattern/effects.md
@@ -7,17 +7,15 @@ 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 is a slide down.
- - If `y` is 0 then this is a slide up.
-- `F8xx`: **Single tick volume slide up.**
-- `F9xx`: **Single tick volume slide down.**
-- `F3xx`: **Fine volume slide up.** 64× slower than `0Axy`.
-- `F4xx`: **Fine volume slide down.** 64× slower than `0Axy`.
-- `FAxy`: **Fast volume slide.** 4× faster than `0Axy`.
- - If `x` is 0 then this is a slide down.
- - If `y` is 0 then this is a slide up.
+ - 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.
+- `F8xx`: **Single tick volume slide up.** adds `x` to volume on first tick only.
+- `F9xx`: **Single tick volume slide down.** subtracts `x` from volume on first tick only.
-- `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed, while `y` is the depth.
+- `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth.
- Tremolo is downward only.
- Maximum tremolo depth is -60 volume steps.
@@ -27,23 +25,24 @@ however, effects are continuous, which means you only need to type it once and t
- `01xx`: **Pitch slide up.**
- `02xx`: **Pitch slide down.**
- `F1xx`: **Single tick pitch slide up.**
-- `F2xx`: **Single tick pitch slide down.**
+- `F2xx`: **Single tick pitch slide down.**
-- `03xx`: **Portamento.** slides the current note's pitch to the specified note.
+- `03xx`: **Portamento.** slides the current note's pitch to the specified note. `x` is the slide speed.
- A note _must_ be present for this effect to work.
- `E1xy`: **Note slide up.** `x` is the speed, while `y` is how many semitones to slide up.
-- `E2xy`: **Note slide down.** `x` is the speed, while `y` is how many semitones to slide down.
+- `E2xy`: **Note slide down.** `x` is the speed, while `y` is how many semitones to slide down.
+
- `EAxx`: **Toggle legato.** while on, notes instantly change the pitch of the currrently playing sound instead of starting it over.
- `00xy`: **Arpeggio.** after using this effect the channel will rapidly switch between semitone values of `note`, `note + x` and `note + y`.
-- `E0xx`: **Set arpeggio speed.** this sets the number of ticks between arpeggio values.
+- `E0xx`: **Set arpeggio speed.** this sets the number of ticks between arpeggio values. default is 1.
- `04xy`: **Vibrato.** changes pitch to be "wavy" with a sine LFO. `x` is the speed, while `y` is the depth.
- Maximum vibrato depth is ±1 semitone.
- `E3xx`: **Set vibrato direction.** `xx` may be one of the following:
- - `00`: Up and down.
+ - `00`: Up and down. default.
- `01`: Up only.
- `02`: Down only.
-- `E4xx`: **Set vibrato range** in 1/16th of a semitone.
+- `E4xx`: **Set vibrato range** in 1/16th of a semitone.
## panning
@@ -51,28 +50,30 @@ not all chips support these effects.
- `08xy`: **Set panning.** changes stereo volumes independently. `x` is the left channel and `y` is the right one.
- `88xy`: **Set rear panning.** changes rear channel volumes independently. `x` is the rear left channel and `y` is the rear right one.
+- `81xx`: **Set volume of left channel** (from `00` to `FF`).
+- `82xx`: **Set volume of right channel** (from `00` to `FF`).
+- `89xx`: **Set volume of rear left channel** (from `00` to `FF`).
+- `8Axx`: **Set volume of rear right channel** (from `00` to `FF`).
- `80xx`: **Set panning (linear).** this effect behaves more like other trackers:
- `00` is left.
- `80` is center.
- `FF` is right.
-- `81xx`: **Set volume of left channel** (from `00` to `FF`).
-- `82xx`: **Set volume of right channel** (from `00` to `FF`).
-- `89xx`: **Set volume of rear left channel** (from `00` to `FF`).
-- `8Axx`: **Set volume of rear right channel** (from `00` to `FF`).
## time
- `09xx`: **Set speed/groove.** if no grooves are defined, this sets speed. If alternating speeds are active, this sets the first speed.
-- `0Fxx`: **Set speed 2.** during alternating speeds or a groove, this sets the second speed.
+- `0Fxx`: **Set speed 2.** during alternating speeds or a groove, this sets the second speed.
- `Cxxx`: **Set tick rate.** changes tick rate to `xxx` Hz (ticks per second).
- - `xxx` may be from `000` to `3ff`.
-- `F0xx`: **Set BPM.** changes tick rate according to beats per minute.
+ - `xxx` may be from `000` to `3FF`.
+- `F0xx`: **Set BPM.** changes tick rate according to beats per minute. range is `01` to `FF`.
-- `0Bxx`: **Jump to order.** this can be used to loop a song.
-- `0Dxx`: **Jump to next pattern.** this can be used to shorten the current order.
-- `FFxx`: **Stop song.** stops playback and ends the song.
+- `0Bxx`: **Jump to order.** `x` is the order to play after the current row.
+ - this marks the end of a loop with order `x` as the loop start.
+- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order.
+ - this can be used to shorten the current order.
+- `FFxx`: **Stop song.** stops playback and ends the song. `x` is ignored.
## note