Merge branch 'master' of https://github.com/tildearrow/furnace into SID3
This commit is contained in:
commit
c50c2ea528
55 changed files with 252849 additions and 60493 deletions
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
**asset**: an instrument, wavetable or sample.
|
||||
|
||||
**bit**: a single binary on-off value.
|
||||
|
||||
**bitbang**: to achieve PCM sound by sending a rapid stream of volume commands to a non-PCM channel.
|
||||
|
||||
**bitmask**: a set of bits which represent individual single-bit toggles or groups representing small numbers. these are explained fully in the [hexadecimal primer](hex.md).
|
||||
|
|
@ -72,6 +74,8 @@
|
|||
|
||||
**LFO**: low frequency oscillator. a wave with a slow period (often below hearing range) used to alter other sounds.
|
||||
|
||||
**LFSR**: linear-feedback shift register. a method to generate pseudo-random noise that loops, also known as "periodic noise". within a sequence of on-off bits, it does math to combine the bits at specified locations called "taps", then shifts the whole sequence and adds the resulting bit on the end, guaranteeing a different state for the next pass. depending on the locations of the taps, different lengths of noise loops are generated; for short loops, this will affect their tone.
|
||||
|
||||
**macro**: a sequence of values automatically applied while a note plays.
|
||||
|
||||
**noise bass**: the technique of using a PSG's periodic noise generator with a very short period to create low-frequency sounds.
|
||||
|
|
@ -86,7 +90,7 @@
|
|||
|
||||
**period**: the length of a repeating waveform. as frequency rises, the period shortens.
|
||||
|
||||
**periodic noise**: an approximation of random noise generated algorithmically.
|
||||
**periodic noise**: an approximation of random noise generated algorithmically with an LFSR.
|
||||
- the period is the number of values generated until the algorithm repeats itself.
|
||||
|
||||
**phase reset**: to restart a waveform at its initial value.
|
||||
|
|
@ -128,6 +132,8 @@
|
|||
|
||||
**supersaw**: a sound made up of multiple saw waves at slightly different frequencies to achieve a chorusing effect.
|
||||
|
||||
**tap**: a specified bit location within an LFSR.
|
||||
|
||||
**tick rate**: the number of times per second that the sound engine moves forward. all notes and effects are quantized to this rate.
|
||||
- this usually corresponds to the frame rate the system uses for video, approximately 60 for NTSC and 50 for PAL.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,10 +13,12 @@ buttons from left to right:
|
|||
- right-clicking always brings up the menu.
|
||||
- **Duplicate**: duplicates the currently selected instrument.
|
||||
- **Open**: brings up a file dialog to load a file as a new instrument at the end of the list.
|
||||
- if the file is an instrument bank, a dialog will appear to select which instruments to load.
|
||||
- **Save**: brings up a file dialog to save the currently selected instrument.
|
||||
- instruments are saved as Furnace instrument (.fui) files.
|
||||
- right-clicking brings up a menu with the following options:
|
||||
- **save instrument as .dmp...**: saves the selected instrument in DefleMask format.
|
||||
- **save all instruments...**: saves all instruments to the selected folder as .fui files.
|
||||
- **Toggle folders/standard view**: enables (and disables) folder view, explained below.
|
||||
- **Move up**: moves the currently selected instrument up in the list. pattern data will automatically be adjusted to match.
|
||||
- **Move down**: same, but downward.
|
||||
|
|
@ -41,9 +43,10 @@ everything from the instrument list applies here also, with one major difference
|
|||
|
||||
wavetables are saved as Furnace wavetable (.fuw) files.
|
||||
|
||||
- right-clicking the Save button brings up a menu with the following options:
|
||||
- **save wavetable as .dmw...**: saves the selected wavetable in DefleMask format.
|
||||
- **save raw wavetable...**: saves the selected wavetable as raw data.
|
||||
right-clicking the Save button brings up a menu with the following options:
|
||||
- **save wavetable as .dmw...**: saves the selected wavetable in DefleMask format.
|
||||
- **save raw wavetable...**: saves the selected wavetable as raw data.
|
||||
- **save all wavetables...**: saves all wavetables to the selected folder as .fuw files.
|
||||
|
||||
## sample list
|
||||
|
||||
|
|
@ -57,6 +60,7 @@ samples are saved as standard wave (.wav) files.
|
|||
|
||||
right-clicking the Save button brings up a menu with the following options:
|
||||
- **save raw sample...**: saves the selected sample as raw data.
|
||||
- **save all samples...**: saves all samples to the selected folder as .wav files.
|
||||
|
||||
right-clicking a sample in the list brings up a menu:
|
||||
- **make instrument**: creates a new instrument which is set to use the selected sample.
|
||||
|
|
|
|||
|
|
@ -68,6 +68,13 @@ the following settings are available:
|
|||
- **loop**: enables loop. if disabled, the song won't loop.
|
||||
- **optimize size**: removes unnecessary commands to reduce size.
|
||||
|
||||
## ROM
|
||||
|
||||
depending on the system, this option may appear to allow you to export your song to a working ROM image or code that can be built into one. export options are explained in the system's accompanying documentation.
|
||||
|
||||
currently, only one system can be exported this way:
|
||||
- [Atari 2600 (TIunA)](../7-systems/tia.md)
|
||||
|
||||
## text
|
||||
|
||||
this option allows you to export your song as a text file.
|
||||
|
|
|
|||
|
|
@ -152,6 +152,7 @@ the keys in the "Global hotkeys" section can be used in any window, although not
|
|||
| Expand song | — |
|
||||
| Set note input latch | — |
|
||||
| Clear note input latch | — |
|
||||
| Absorb instrument/octave from status at cursor | — |
|
||||
| | |
|
||||
| **Instrument list** | |
|
||||
| Add instrument | `Insert` |
|
||||
|
|
|
|||
|
|
@ -93,6 +93,10 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o
|
|||
- **Export**: select an `.ini` file to save current settings.
|
||||
- **Factory Reset**: resets all settings to default and purges settings backups.
|
||||
|
||||
### Import
|
||||
|
||||
- **Use OPL3 instead of OPL2 for S3M import**: changes which system is used for the import of S3M files that contain FM channels.
|
||||
|
||||
## Audio
|
||||
|
||||
### Output
|
||||
|
|
|
|||
|
|
@ -15,9 +15,16 @@ however, effects are continuous (unless specified), which means you only need to
|
|||
- `F8xx`: **Single tick volume up.** adds `x` to volume.
|
||||
- `F9xx`: **Single tick volume down.** subtracts `x` from volume.
|
||||
- ---
|
||||
- `D3xx`: **Volume portamento.** slides volume toward the new value instead of jumping immediately. `x` is the speed of the slide.
|
||||
- `D4xx`: **Volume portamento (fast).** same as `D3xx` but 256× faster.
|
||||
- ---
|
||||
- `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.
|
||||
- ---
|
||||
- `D3xx`: **Volume portamento.** slides the volume to the one specified in the volume column. `x` is the slide speed.
|
||||
- a volume _must_ be present with this effect for it to work.
|
||||
- `D4xx`: **Volume portamento (fast).** like `D3xx` but four times faster.
|
||||
|
||||
## pitch
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,10 @@ the following options are available in the Chip Manager window:
|
|||
- DPCM: the default mode, playing 1-bit DPCM samples as supported by the hardware.
|
||||
- PCM: this mode provides crispier samples by writing the delta counter directly. uses a lot of CPU time in console.
|
||||
|
||||
## DPCM sample loop
|
||||
|
||||
due to hardware limitations, a loop in a DPCM sample must start on a multiple of 512 samples (512, 1024, 1536...) and have a length that is a multiple of 128 plus 8 samples (136, 264, 392...)
|
||||
|
||||
## short noise frequencies (NTSC)
|
||||
|
||||
note | arpeggio | fundamental | MIDI note | pitch
|
||||
|
|
|
|||
|
|
@ -27,13 +27,9 @@ Furnace isn't complete without this one...
|
|||
- `E`: low pure buzzy
|
||||
- `F`: low reedy
|
||||
|
||||
## ROM export
|
||||
|
||||
|
||||
## 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.
|
||||
a song can be exported to assembly code for use with the TIunA software driver for the Atari 2600. see [TIunA on GitHub](https://github.com/AYCEdemo/twin-tiuna) for explanations of the export options.
|
||||
|
||||
## chip config
|
||||
|
||||
|
|
@ -47,6 +43,12 @@ the following options are available in the Chip Manager window:
|
|||
- **Stereo**: output two channels on left and right.
|
||||
- **PAL**: run slower blah blah blah
|
||||
|
||||
## 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.
|
||||
|
||||
### shape 1
|
||||
|
||||
| pitch | NTSC | note | cent | PAL | note | cent
|
||||
|
|
|
|||
|
|
@ -68,9 +68,13 @@ in most arcade boards the chip was used in combination with a PCM chip, like [Se
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## info
|
||||
|
||||
|
|
|
|||
|
|
@ -99,9 +99,13 @@ several variants of this chip were released as well, with more features.
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 3
|
||||
|
||||
|
|
|
|||
|
|
@ -99,9 +99,13 @@ the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built-
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 3
|
||||
|
||||
|
|
|
|||
|
|
@ -97,9 +97,13 @@ its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and [2 differen
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 2
|
||||
|
||||
|
|
|
|||
|
|
@ -96,9 +96,13 @@ it is backward compatible with the original chip.
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 3
|
||||
|
||||
|
|
|
|||
|
|
@ -82,9 +82,13 @@ thanks to the Z80 sound CPU, DualPCM can play two samples at once! this mode spl
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## info
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue