diff --git a/doc/2-interface/README.md b/doc/2-interface/README.md index cb1588dde..465d0f872 100644 --- a/doc/2-interface/README.md +++ b/doc/2-interface/README.md @@ -13,6 +13,7 @@ primary topics: - [play/edit controls](play-edit-controls.md) - [instrument/wavetable/sample list](asset-list.md) - [song information](song-info.md) +- [effect list](effect-list.md) - [pattern view](../3-pattern/README.md) - [instrument editor](../4-instrument/README.md) - [wavetable editor](../5-wave/README.md) diff --git a/doc/2-interface/effect-list.md b/doc/2-interface/effect-list.md new file mode 100644 index 000000000..1f76f5051 --- /dev/null +++ b/doc/2-interface/effect-list.md @@ -0,0 +1,10 @@ +# effect list + +![effect list window](effect-list.png) + +this window provides a list of the effects that are available. + +for more details about these effects, see [the effects page](../3-pattern/effects.md). + +- **Chip at cursor**: the currently selected chip. the list only shows available effects for this chip. +- menu button: opens a small list of effect categories. toggle each to change whether they're shown in the list. diff --git a/doc/2-interface/effect-list.png b/doc/2-interface/effect-list.png new file mode 100644 index 000000000..dd5d0cc8b Binary files /dev/null and b/doc/2-interface/effect-list.png differ diff --git a/doc/3-pattern/effects.md b/doc/3-pattern/effects.md index 91e311473..5b1e6397a 100644 --- a/doc/3-pattern/effects.md +++ b/doc/3-pattern/effects.md @@ -71,8 +71,8 @@ not all chips support these effects. - `0Bxx`: **Jump to order.** `x` is the order to play after the current row. - this marks the end of a loop with order `x` as the loop start. -- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order. - - this can be used to shorten the current order. +- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order. `x` is the row at which to start playing the next pattern. + - this can be used to shorten the current order as though it had a different pattern length. - `FFxx`: **Stop song.** stops playback and ends the song. `x` is ignored. ## note diff --git a/doc/7-systems/amiga.md b/doc/7-systems/amiga.md index ee197a90a..0d3d688c0 100644 --- a/doc/7-systems/amiga.md +++ b/doc/7-systems/amiga.md @@ -18,6 +18,7 @@ imported MOD files use this chip, and will set A-4 tuning to 436. # info +- this chip uses the [Generic Sample](../4-instrument/amiga.md) instrument editor. - the maximum rate for sample playback is technically 31469Hz but anything higher than 28867Hz will sound glitchy on hardware. - sample lengths and loop will be set to an even number. - samples can't be longer than 131070. \ No newline at end of file diff --git a/doc/7-systems/ay8910.md b/doc/7-systems/ay8910.md index 0b9d759a4..6d1838bd4 100644 --- a/doc/7-systems/ay8910.md +++ b/doc/7-systems/ay8910.md @@ -47,7 +47,10 @@ as of Furnace 0.6pre7, AY-3-8910 supports software sample playback, where all 3 - `2Fxx`: **write to I/O port B.** - this changes the port's mode to "write". make sure you have connected something to it. -# chip config +# info + +- this chip uses the [AY-3-8910](../4-instrument/ay8910.md) instrument editor. + ## AY derivative modes AY-3-810 was an absurdly popular chip that was blessed with many third-party clones, licensed or not. diff --git a/doc/7-systems/ay8930.md b/doc/7-systems/ay8930.md index 1a926ebce..ef7121372 100644 --- a/doc/7-systems/ay8930.md +++ b/doc/7-systems/ay8930.md @@ -55,3 +55,7 @@ as of Furnace 0.6pre7, AY8930 supports software PCM, where all 3 channels can pl - `x` is the numerator. - `y` is the denominator. - if `x` or `y` are 0 this will disable auto-envelope mode. + +# info + +- this chip uses the [AY8930](../4-instrument/8930.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/bubblesystem.md b/doc/7-systems/bubblesystem.md index c04aa098d..0ead7540a 100644 --- a/doc/7-systems/bubblesystem.md +++ b/doc/7-systems/bubblesystem.md @@ -11,3 +11,7 @@ Furnace emulates this configuration as a "chip" with 32×16 wavetables. # effects - `10xx`: **change wave.** + +# info + +- this chip uses the [Konami SCC/ Bubble System WSG](../4-instrument/scc.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/c64.md b/doc/7-systems/c64.md index 7627f3d9b..e001f557b 100644 --- a/doc/7-systems/c64.md +++ b/doc/7-systems/c64.md @@ -57,3 +57,7 @@ two versions of aforementioned chip exist - 6581 (original chip) and 8580 (impro - `6`: disable channel 3 (`y` is `0` or `1`) - `3xxx`: **set duty cycle.** `xxx` range is `000` to `FFF`. - `4xxx`: **set cutoff.** `xxx` range is `000` to `7FF`. + +# info + +- this chip uses the [C64](../4-instrument/c64.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/dac.md b/doc/7-systems/dac.md index 60bdd96c0..118c4b25e 100644 --- a/doc/7-systems/dac.md +++ b/doc/7-systems/dac.md @@ -7,3 +7,7 @@ with it, you can emulate PCM DACs found in Williams arcade boards, Sound Blaster # effects none yet. + +# info + +- this chip uses the [Generic Sample](../4-instrument/amiga.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/es5506.md b/doc/7-systems/es5506.md index 436aca0c7..cc476cef2 100644 --- a/doc/7-systems/es5506.md +++ b/doc/7-systems/es5506.md @@ -39,3 +39,7 @@ it supports a whopping 32 channels of 16-bit PCM and: - `8Axx`: **set panning (rear right channel).** - `9xxx`: **set sample offset.** resets sample position to `xxx * 0x100`. - `DFxx`: **set sample playback direction.** + +# info + +- this chip uses the [ES5506](../4-instrument/es5506.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/fds.md b/doc/7-systems/fds.md index 8105d107f..411f2b47f 100644 --- a/doc/7-systems/fds.md +++ b/doc/7-systems/fds.md @@ -25,3 +25,7 @@ it also offers an additional 6-bit, 64-byte wavetable sound channel with (somewh - 6: -2 - 7: -1 - why is this mapping so unnatural? because that's how DefleMask does it (yeah, as you may have guessed this effect is mostly for compatibility reasons)... + +# info + +- this chip uses the [FDS](../4-instrument/fds.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/game-boy.md b/doc/7-systems/game-boy.md index eed8241af..fae7e288d 100644 --- a/doc/7-systems/game-boy.md +++ b/doc/7-systems/game-boy.md @@ -21,6 +21,10 @@ with stereo sound, two pulse channels, a wave channel and a noise channel, it pa - set to `0` to disable it. - `14xx`: **set sweep direction.** `0` is up and `1` is down. +# info + +- this chip uses the [Game Boy](../4-instrument/game-boy.md) instrument editor. + # links - [Gameboy sound hardware](https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware) - detailed technical information diff --git a/doc/7-systems/genesis.md b/doc/7-systems/genesis.md new file mode 100644 index 000000000..5215fb101 --- /dev/null +++ b/doc/7-systems/genesis.md @@ -0,0 +1,61 @@ +# Sega Genesis/Mega Drive + +a video game console that showed itself as the first true rival to Nintendo's video game market near-monopoly in the US during the '80's. + +this console is powered by two sound chips: the [Yamaha YM2612](ym2612.md) and [a derivative of the SN76489](sms.md). + +# effects + +- `10xy`: **set LFO parameters.** + - `x` toggles the LFO. + - `y` sets its speed. +- `11xx`: **set feedback of channel.** +- `12xx`: **set operator 1 level.** +- `13xx`: **set operator 2 level.** +- `14xx`: **set operator 3 level.** +- `15xx`: **set operator 4 level.** +- `16xy`: **set multiplier of operator.** + - `x` is the operator (1-4). + - `y` is the multiplier. +- `17xx`: **enable PCM channel.** + - this only works on channel 6. + - _this effect is here for compatibility reasons!_ it is otherwise recommended to use Sample type instruments (which automatically enable PCM mode when used). +- `18xx`: **toggle extended channel 3 mode.** + - `0` disables it and `1` enables it. + - only in extended channel 3 chip. +- `19xx`: **set attack of all operators.** +- `1Axx`: **set attack of operator 1.** +- `1Bxx`: **set attack of operator 2.** +- `1Cxx`: **set attack of operator 3.** +- `1Dxx`: **set attack of operator 4.** +- `20xy`: **set PSG noise mode.** + - `x` controls whether to inherit frequency from PSG channel 3. + - `0`: use one of 3 preset frequencies (`C`: A-2; `C#`: A-3; `D`: A-4). + - `1`: use frequency of PSG channel 3. + - `y` controls whether to select noise or thin pulse. + - `0`: thin pulse. + - `1`: noise. + + + +# system modes + +## 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. + +## CSM + +CSM is short for "Composite Sinusoidal Modeling". CSM works by sending key-on and key-off commands to channel 3 at a specific frequency, controlled by the added "CSM Timer" channel. this can be used to create vocal formants (speech synthesis!) or other complex effects. + +CSM is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU). + +## DualPCM + +[info here.](ym2612.md) + +## Sega CD + +this isn't a mode so much as a chip configuration. it adds the [Ricoh RF5C68](ricoh.md) found in the Sega CD add-on, providing 8 channels of PCM. diff --git a/doc/7-systems/k007232.md b/doc/7-systems/k007232.md index f5571e1e2..3da1d3af0 100644 --- a/doc/7-systems/k007232.md +++ b/doc/7-systems/k007232.md @@ -9,3 +9,7 @@ it has 7 bit digital output per each channel and no volume register on chip, so # effects - nothing for now. + +# info + +- this chip uses the [K007232](../4-instrument/k007232.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/k056320.md b/doc/7-systems/k056320.md index bf6595823..541f42ba2 100644 --- a/doc/7-systems/k056320.md +++ b/doc/7-systems/k056320.md @@ -7,3 +7,7 @@ the 056320 is a sample-based chip that featured in a number of Konami arcade gam # effects - `DFxx`: Set sample playback direction. `0` is normal; `1` is reverse. + +# info + +- this chip uses the [K056320](../4-instrument/k056320.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/lynx.md b/doc/7-systems/lynx.md index 24f32634f..6e17b1a16 100644 --- a/doc/7-systems/lynx.md +++ b/doc/7-systems/lynx.md @@ -17,3 +17,7 @@ the Atari Lynx has a 6502-based CPU with a sound part (this chip is known as MIK - `3xxx`: **load LFSR.** this is a bitmask with values ranging from `000` to `FFF`. - for it to work, duty macro in instrument editor must be set to some value. without it LFSR will not be fed with any bits. + +# info + +- this chip uses the [Atari Lynx](../4-instrument/lynx.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/mmc5.md b/doc/7-systems/mmc5.md index a838dfe88..1531381d7 100644 --- a/doc/7-systems/mmc5.md +++ b/doc/7-systems/mmc5.md @@ -10,3 +10,7 @@ additionally, it offers an 8-bit DAC which can be used to play samples. only one - `12xx`: **set duty cycle or noise mode of channel.** - may be `0` through `3` for the pulse channels. + +# info + +- this chip uses the [NES](../4-instrument/nes.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/msm5232.md b/doc/7-systems/msm5232.md index 0f28cb786..edcd281cc 100644 --- a/doc/7-systems/msm5232.md +++ b/doc/7-systems/msm5232.md @@ -24,3 +24,7 @@ Furnace implements this chip in a way that allows the following features: - only in internal (capacitor-based) envelope mode. - `13xx`: **set group decay.** range is `0` to `11`. - only in internal (capacitor-based) envelope mode. + +# info + +- this chip uses the [MSM5232](../4-instrument/msm5232.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/msm6258.md b/doc/7-systems/msm6258.md index a7b8a21fd..1d56e756c 100644 --- a/doc/7-systems/msm6258.md +++ b/doc/7-systems/msm6258.md @@ -18,3 +18,7 @@ MSM6258 is an extremely basic ADPCM sound codec. it has no variable frequency ra | 4.096 MHz | 8000 Hz | | 8 MHz | 15625 Hz | | 8.192 MHz | 16000 Hz | + +# info + +- this chip uses the [MSM6258](../4-instrument/msm6258.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/msm6295.md b/doc/7-systems/msm6295.md index c130854ea..3c5c26230 100644 --- a/doc/7-systems/msm6295.md +++ b/doc/7-systems/msm6295.md @@ -6,9 +6,14 @@ an upgrade from 6258 - it provides 4 ADPCM channels, at max 32 KHz (still no var - `20xx`: **set chip output rate.** -# chip config + +# info + +- this chip uses the [MSM6295](../4-instrument/msm6295.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. + ## chip clock rates -like MSM6258, MSM295 is an extremely basic ADPCM sound codec. it has no variable frequency rate, it depends on clock rate of a chip itself. Furnace supports following rates: + +like MSM6258, MSM6295 is an extremely basic ADPCM sound codec. it has no variable frequency rate, it depends on clock rate of a chip itself. Furnace supports following rates: | clock rate | sampling rate | |--------------------|---------------| diff --git a/doc/7-systems/n163.md b/doc/7-systems/n163.md index e6645637d..f99465651 100644 --- a/doc/7-systems/n163.md +++ b/doc/7-systems/n163.md @@ -38,3 +38,7 @@ if the waveform changes (e.g. ins change, wave macro or wave synth), or the **lo - the length is determined by the wave's width (it will be snapped to a multiple of 4 if it isn't). - make sure to use `21xx` first! - `21xx`: **set position for 20xx.** + +# info + +- this chip uses the [Namco 163](../4-instrument/n163.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/namco.md b/doc/7-systems/namco.md index 54d8b964f..21cfa7b28 100644 --- a/doc/7-systems/namco.md +++ b/doc/7-systems/namco.md @@ -8,3 +8,7 @@ everything starts with Namco WSG, which is a simple 3-channel wavetable with no - `10xx`: **change waveform.** - `11xx`: **toggle noise mode.** _warning:_ only on C30. + +# info + +- this chip uses the [Namco WSG](../4-instrument/namco.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/nes.md b/doc/7-systems/nes.md index 2b81c2a87..4c11d3a27 100644 --- a/doc/7-systems/nes.md +++ b/doc/7-systems/nes.md @@ -56,7 +56,10 @@ also known as Famicom. it is a five-channel sound generator: first two channels - only works in DPCM mode. - see table below for possible values. -# tables + +# info + +- this chip uses the [NES](../4-instrument/nes.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. ## short noise frequencies (NTSC) diff --git a/doc/7-systems/opl.md b/doc/7-systems/opl.md index 5f7034cb9..6dfdc04bf 100644 --- a/doc/7-systems/opl.md +++ b/doc/7-systems/opl.md @@ -78,3 +78,7 @@ afterwards everyone moved to Windows and software mixed PCM streaming... - `5Bxy`: **set KSR of operator.** - `x` is the operator from 1 to 4; the last 2 operators only work in 4-op mode. a value of `0` means "all operators". - `y` determines whether KSR is on. + +# info + +- this chip uses the [FM (OPL)](../4-instrument/fm-opl.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/opll.md b/doc/7-systems/opll.md index c5dd4ff6d..91295e9ec 100644 --- a/doc/7-systems/opll.md +++ b/doc/7-systems/opll.md @@ -65,3 +65,7 @@ the YM2413 is equipped with the following features: - `5Bxy`: **set KSR of operator.** - `x` is the operator, either 1 or 2. a value of `0` means "all operators". - `y` determines whether KSR is on. + +# info + +- this chip uses the [FM (OPLL)](../4-instrument/fm-opll.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/opz.md b/doc/7-systems/opz.md index 1abef5c45..df49c2ea6 100644 --- a/doc/7-systems/opz.md +++ b/doc/7-systems/opz.md @@ -113,3 +113,7 @@ no plans have been made for TX81Z MIDI passthrough, because: - `5Dxx`: **set D2R/SR of operator 2.** - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** + +# info + +- this chip uses the [FM (OPZ)](../4-instrument/opz.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/pce.md b/doc/7-systems/pce.md index 80f4af109..f4953787f 100644 --- a/doc/7-systems/pce.md +++ b/doc/7-systems/pce.md @@ -20,3 +20,7 @@ furthermore, it has some PCM and LFO! - `13xx`: **set LFO speed.** - `17xx`: **toggle PCM mode.** - _this effect is here for compatibility reasons_; it is otherwise recommended to use Sample type instruments (which automatically enable PCM mode when used). + +# info + +- this chip uses the [PC Engine](../4-instrument/pce.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/pcspkr.md b/doc/7-systems/pcspkr.md index a6a55ba65..59f2f4663 100644 --- a/doc/7-systems/pcspkr.md +++ b/doc/7-systems/pcspkr.md @@ -29,3 +29,7 @@ oh, and of course you also need the beeper to be present in your machine. some l # effects ha! effects... + +# info + +- this chip uses the [Beeper](../4-instrument/beeper.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/pet.md b/doc/7-systems/pet.md index 9b7e3b5bf..9d3188da2 100644 --- a/doc/7-systems/pet.md +++ b/doc/7-systems/pet.md @@ -9,3 +9,7 @@ some of these didn't even have sound... # effects - `10xx`: **set waveform.** `xx` is a bitmask. + +# info + +- this chip uses the [PET](../4-instrument/pet.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/pokemini.md b/doc/7-systems/pokemini.md index 142d49658..f82d2ba50 100644 --- a/doc/7-systems/pokemini.md +++ b/doc/7-systems/pokemini.md @@ -5,3 +5,7 @@ the Pokémon Mini is a ridiculously small handheld system from 2001. its single # effects none. + +# info + +- this chip uses the [Pokémon Mini/QuadTone](../4-instrument/quadtone.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/pokey.md b/doc/7-systems/pokey.md index 20d75f1ea..e92417edb 100644 --- a/doc/7-systems/pokey.md +++ b/doc/7-systems/pokey.md @@ -35,3 +35,7 @@ a sound and input chip developed by Atari for their 8-bit computers (Atari 400, - `12xx`: **toggle two-tone mode.** - when enabled, channel 2 modulates channel 1. I don't know how, but it does. - only on ASAP core. + +# info + +- this chip uses the [POKEY](../4-instrument/pokey.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/pv1000.md b/doc/7-systems/pv1000.md index 43abbfea9..2ac6e953e 100644 --- a/doc/7-systems/pv1000.md +++ b/doc/7-systems/pv1000.md @@ -5,3 +5,7 @@ released only in Japan, this console was pulled after only a few weeks on the ma # effects - `10xx`: **set ring modulation.** amplitude modulation by the previous channel's output. `0` turns it off and `1` turns it on. + +# info + +- this chip uses the [PV-1000](../4-instrument/pv1000.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/qsound.md b/doc/7-systems/qsound.md index 07651a721..76391b10b 100644 --- a/doc/7-systems/qsound.md +++ b/doc/7-systems/qsound.md @@ -17,3 +17,7 @@ there are also 3 ADPCM channels. ADPCM samples are fixed to 8012 Hz. - `11xx`: **set echo level.** - `12xx`: **toggle QSound algorithm.** on by default. - `3xxx`: **set echo delay buffer length.** + +# info + +- this chip uses the [QSound](../4-instrument/qsound.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/ricoh.md b/doc/7-systems/ricoh.md index 518326022..8a7a22287 100644 --- a/doc/7-systems/ricoh.md +++ b/doc/7-systems/ricoh.md @@ -6,3 +6,6 @@ YM2612's sidekick - poor man's SNES DSP. 8-channel PCM sample-based synthesizer none so far. +# info + +- this chip uses the [RF5C68](../4-instrument/ricoh.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/saa1099.md b/doc/7-systems/saa1099.md index 6b2624e40..2c6f72bb0 100644 --- a/doc/7-systems/saa1099.md +++ b/doc/7-systems/saa1099.md @@ -27,3 +27,7 @@ this was used by the Game Blaster and SAM Coupé. it's pretty similar to the AY- - `111`: up loop (reverse saw) - bit 0 sets whether the right output will mirror the left one. - this effect affects either the first 3 or last 3 channels, depending on where it is placed. + +# info + +- this chip uses the [SAA1099](../4-instrument/saa.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/scc.md b/doc/7-systems/scc.md index 19a0736c8..3d7cdde23 100644 --- a/doc/7-systems/scc.md +++ b/doc/7-systems/scc.md @@ -9,3 +9,7 @@ the SCC+ fixes this issue though (while being compatible with SCC games). # effects - `10xx`: **change wave.** + +# info + +- this chip uses the [Konami SCC/Bubble System WSG](../4-instrument/scc.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/segapcm.md b/doc/7-systems/segapcm.md index 3272699d3..0fc92f0fe 100644 --- a/doc/7-systems/segapcm.md +++ b/doc/7-systems/segapcm.md @@ -15,3 +15,7 @@ Furnace also has a five channel version of this chip, but it only exists for Def - `20xx`: **set PCM frequency.** - `xx` is a 256th fraction of 31250Hz. - this effect exists mostly for DefleMask compatibility; it is otherwise recommended to use Sample type instruments. + +# info + +- this chip uses the [SegaPCM](../4-instrument/segapcm.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/sm8521.md b/doc/7-systems/sm8521.md index a5a6e024c..e670116d5 100644 --- a/doc/7-systems/sm8521.md +++ b/doc/7-systems/sm8521.md @@ -15,9 +15,13 @@ the sound-related features and quirks of the SM8521 are as follows: - a low bit-depth output (which means it distorts a lot). - it phase resets when you switch waves - 12-bit pitch with a wide frequency range -- a software-controlled D/A register that (potentially) requires all other registers to be stopped to play. due to this, it is currently, it is not implemented in Furnace as of version 0.6pre4. +- a software-controlled D/A register that (potentially) requires all other registers to be stopped to play. due to this, it is currently not implemented in Furnace as of version 0.6pre4. ## effect commands - `10xx`: **set waveform.** - `xx` is a value between 0 and 255 that sets the waveform of the channel you place it on. + +# info + +- this chip uses the [SM8521](../4-instrument/sm8521.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/sms.md b/doc/7-systems/sms.md index 528de4207..8ec6135f0 100644 --- a/doc/7-systems/sms.md +++ b/doc/7-systems/sms.md @@ -1,4 +1,4 @@ -# TI SN76489 (e.g. sega Master System) +# TI SN76489 (e.g. Sega Master System) a relatively simple sound chip made by Texas Instruments. a derivative of it is used in Sega's Master System, the predecessor to Genesis. @@ -14,7 +14,11 @@ the original iteration of the SN76489 used in the TI-99/4A computer, the SN94624 - `0`: thin pulse. - `1`: noise. -# chip config + +# info + +- this chip uses the [SN76489/Sega PSG](../4-instrument/psg.md) instrument editor. + ## SN7 versions SN7 was extremely popular due to low cost. Therefore, it was cloned and copied to no end, often with minor differences between each other. Furnace supports several of these: - SN94624, can only produce tones as low as 100Hz, and is clocked at 447 KHz. diff --git a/doc/7-systems/snes.md b/doc/7-systems/snes.md index 9888291c6..e12ef8fa0 100644 --- a/doc/7-systems/snes.md +++ b/doc/7-systems/snes.md @@ -67,7 +67,9 @@ Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) i - _Note:_ Be sure the sum of all coefficients is between -128 and 127. sums outside that may result in overflow and therefore clicking. - see [SnesLab](https://sneslab.net/wiki/FIR_Filter) for a full explanation and examples. -# tables +# info + +- this chip uses the [SNES](../4-instrument/snes.md) instrument editor. ## ADSR diff --git a/doc/7-systems/soundunit.md b/doc/7-systems/soundunit.md index 5b4838133..378d9303c 100644 --- a/doc/7-systems/soundunit.md +++ b/doc/7-systems/soundunit.md @@ -54,3 +54,7 @@ it has the following capabilities: - bit 0-6: speed - bit 7: up direction - `4xxx`: **set cutoff.** range is `0` to `FFF`. + +# info + +- this chip uses the [Sound Unit](../4-instrument/soundunit.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/t6w28.md b/doc/7-systems/t6w28.md index 886ea63b4..accd56675 100644 --- a/doc/7-systems/t6w28.md +++ b/doc/7-systems/t6w28.md @@ -9,3 +9,7 @@ this chip was used in Neo Geo Pocket. - `20xx`: **set noise mode.** - `0`: thin pulse. - `1`: noise. + +# info + +- this chip uses the [T6W28](../4-instrument/t6w28.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/ted.md b/doc/7-systems/ted.md index e1349a55b..a8c5cf48f 100644 --- a/doc/7-systems/ted.md +++ b/doc/7-systems/ted.md @@ -8,3 +8,7 @@ pitch range is limited as well, akin to that of SN76489, and volume control is g # effects none so far. + +# info + +- this chip uses the [TED](../4-instrument/ted.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/tia.md b/doc/7-systems/tia.md index d4cf06b38..b56b97801 100644 --- a/doc/7-systems/tia.md +++ b/doc/7-systems/tia.md @@ -29,9 +29,11 @@ Furnace isn't complete without this one... -# tables +# info -pitch number can be used for absolute notes in arpeggio macros. +- this chip uses the [TIA](../4-instrument/tia.md) instrument editor. + +- pitch number can be used for absolute notes in arpeggio macros. ## shape 1 diff --git a/doc/7-systems/vera.md b/doc/7-systems/vera.md index e89744a9d..2d684b43f 100644 --- a/doc/7-systems/vera.md +++ b/doc/7-systems/vera.md @@ -15,3 +15,7 @@ currently Furnace does not support the PCM channel's stereo mode, though (except - `22xx`: **set duty cycle.** range is `0` to `3F`. - `EExx`: **ZSM synchronization event.** - Where `xx` is the event payload. This has no effect in how the music is played in Furnace, but the ZSMKit library for the Commander X16 interprets these events inside ZSM files and optionally triggers a callback routine. This can be used, for instance, to cause game code to respond to beats or at certain points in the music. + +# info + +- this chip uses the [VERA](../4-instrument/vera.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/vic20.md b/doc/7-systems/vic20.md index e5126c182..2177d661c 100644 --- a/doc/7-systems/vic20.md +++ b/doc/7-systems/vic20.md @@ -16,3 +16,7 @@ these channels are not referred as "square" wave channels since a technique to p ## effect commands - `10xx`: **switch waveform.** range is `00` to `0F`. + +# info + +- this chip uses the [VIC](../4-instrument/vic.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/virtual-boy.md b/doc/7-systems/virtual-boy.md index 9ef6c909b..327238d5d 100644 --- a/doc/7-systems/virtual-boy.md +++ b/doc/7-systems/virtual-boy.md @@ -41,3 +41,7 @@ additionally, channel 5 offers a modulation/sweep unit. the former is similar to - `15xx`: **set modulation wave.** - `xx` points to a wavetable. range is `0` to `FF`. - this is an alternative to setting the modulation wave through the instrument. + +# info + +- this chip uses the [Virtual Boy](../4-instrument/virtual-boy.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/vrc6.md b/doc/7-systems/vrc6.md index d652cc26c..35b402d39 100644 --- a/doc/7-systems/vrc6.md +++ b/doc/7-systems/vrc6.md @@ -16,3 +16,7 @@ these effects only are effective in the pulse channels. - `12xx`: **set duty cycle.** range is `0` to `7`. - `17xx`: **toggle PCM mode.** + +# info + +- this chip uses the [VRC](../4-instrument/vrc6.md), [VRC (saw)](../4-instrument/vrc6.md), and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/wonderswan.md b/doc/7-systems/wonderswan.md index d4bff7c1e..c3f73ddc8 100644 --- a/doc/7-systems/wonderswan.md +++ b/doc/7-systems/wonderswan.md @@ -19,3 +19,7 @@ it has 4 wavetable channels. some of them have additional capabilities: - 1-32: enable and set period. - `13xx`: **setup sweep amount.** channel 3 only. - `17xx`: **toggle PCM mode.** channel 2 only. + +# info + +- this chip uses the [WonderSwan](../4-instrument/wonderswan.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/x1-010.md b/doc/7-systems/x1-010.md index 5f110aba5..9bc757447 100644 --- a/doc/7-systems/x1-010.md +++ b/doc/7-systems/x1-010.md @@ -45,3 +45,7 @@ in Furnace, you can enable the envelope shape split mode. when it is set, its wa - `x` is the numerator. - `y` is the denominator. - if `x` or `y` are 0 this will disable auto-envelope mode. + +# info + +- this chip uses the [X1-010](../4-instrument/x1_010.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/ym2151.md b/doc/7-systems/ym2151.md index f9bd87511..c08df4250 100644 --- a/doc/7-systems/ym2151.md +++ b/doc/7-systems/ym2151.md @@ -68,3 +68,7 @@ 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.** + +# info + +- this chip uses the [FM (OPM)](../4-instrument/fm-opm.md) instrument editor. \ No newline at end of file diff --git a/doc/7-systems/ym2203.md b/doc/7-systems/ym2203.md index f79f95d24..31ebee605 100644 --- a/doc/7-systems/ym2203.md +++ b/doc/7-systems/ym2203.md @@ -100,7 +100,11 @@ several variants of this chip were released as well, with more features. - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# system modes + +# info + +- this chip uses the [FM (OPN)](../4-instrument/fm-opn.md) and [AY-3-8910/SSG](../4-instrument/ay8910.md) instrument editor. + ## extended channel 3 in ExtCh mode, channel 3 is split into one column for each of its four operators and feedback 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. diff --git a/doc/7-systems/ym2608.md b/doc/7-systems/ym2608.md index 16f3cc7e1..8a2588b22 100644 --- a/doc/7-systems/ym2608.md +++ b/doc/7-systems/ym2608.md @@ -100,7 +100,11 @@ the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built- - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# system modes + +# info + +- this chip uses the [FM (OPN)](../4-instrument/fm-opn.md), [Generic Sample](../4-instrument/amiga.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. + ## 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. diff --git a/doc/7-systems/ym2610.md b/doc/7-systems/ym2610.md index 02a630b0e..ef0a760df 100644 --- a/doc/7-systems/ym2610.md +++ b/doc/7-systems/ym2610.md @@ -98,7 +98,10 @@ its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and [2 differen - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# system modes +# info + +- this chip uses the [FM (OPN)](../4-instrument/fm-opn.md), [Generic Sample](../4-instrument/amiga.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. + ## 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. diff --git a/doc/7-systems/ym2610b.md b/doc/7-systems/ym2610b.md index 2911c2671..ad592e495 100644 --- a/doc/7-systems/ym2610b.md +++ b/doc/7-systems/ym2610b.md @@ -97,8 +97,12 @@ it is backward compatible with the original chip. - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** -# system modes +# info + +- this chip uses the [FM (OPN)](../4-instrument/fm-opn.md), [Generic Sample](../4-instrument/amiga.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. + ## 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. diff --git a/doc/7-systems/ym2612.md b/doc/7-systems/ym2612.md index 5a20dae0d..4ea666ca9 100644 --- a/doc/7-systems/ym2612.md +++ b/doc/7-systems/ym2612.md @@ -1,6 +1,7 @@ # Yamaha YM2612 -one of two chips that powered the Sega Genesis. it is a six-channel, four-operator FM synthesizer. channel #6 can be used for PCM playback. alternate modes for the chip are described below the effects list. +one of two chips that powered the Sega Genesis. it is a six-channel, four-operator FM synthesizer. channel #6 can be turned into 8-bit PCM player, that via software mixing, thanks to Z80 sound CPU, can play more than one channel of straight-shot samples at once. +as of Furnace 0.6pre5, Furnace offers DualPCM, a Z80 driver that splits channel 6 into two individual PCM channels with variable pitch. using the console's Z80 processor, these are mixed together in software and streamed to channel 6 in PCM mode 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 @@ -66,8 +67,9 @@ one of two chips that powered the Sega Genesis. it is a six-channel, four-operat - `5Exx`: **set D2R/SR of operator 3.** - `5Fxx`: **set D2R/SR of operator 4.** +# info -# system modes +- this chip uses the [FM (OPN)](../4-instrument/fm-opn.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. ## extended channel 3 @@ -83,4 +85,4 @@ 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. +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. \ No newline at end of file diff --git a/doc/7-systems/ymu759.md b/doc/7-systems/ymu759.md index 339848321..c9156afa9 100644 --- a/doc/7-systems/ymu759.md +++ b/doc/7-systems/ymu759.md @@ -15,3 +15,7 @@ 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 + +- this chip uses the [FM (OPL)](../4-instrument/fm-opl.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/ymz280b.md b/doc/7-systems/ymz280b.md index b3a82b868..693b8c1d4 100644 --- a/doc/7-systems/ymz280b.md +++ b/doc/7-systems/ymz280b.md @@ -7,3 +7,7 @@ it has 16-level stereo panning, up to 16-bit PCM and up to 16MB of external PCM # effects none so far. + +# info + +- this chip uses the [YMZ280B](../4-instrument/ymz280b.md) and [Generic Sample](../4-instrument/amiga.md) instrument editors. \ No newline at end of file diff --git a/doc/7-systems/zxbeep.md b/doc/7-systems/zxbeep.md index e724e0943..7b5061438 100644 --- a/doc/7-systems/zxbeep.md +++ b/doc/7-systems/zxbeep.md @@ -14,3 +14,7 @@ not really - very soon talented programmers found out ways to output much more t - `xx` is the sample number. - overlay drums are 1-bit and always play at 55930Hz (NTSC) or 55420Hz (PAL). - the maximum length is 2048! + +# info + +- this chip uses the [Beeper](../4-instrument/beeper.md), [Generic Sample](../4-instrument/amiga.md), and [Pokémon Mini/QuadTone](../4-instrument/quadtone.md) instrument editors. \ No newline at end of file diff --git a/doc/8-advanced/chanosc-gradient.png b/doc/8-advanced/chanosc-gradient.png index 26bdb2581..357bbf764 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 4e3962ced..f58ae2960 100644 --- a/doc/8-advanced/chanosc.md +++ b/doc/8-advanced/chanosc.md @@ -8,6 +8,11 @@ right-clicking within the view will change it to the configuration view shown ab - **Columns**: arranges oscilloscopes into this many columns. - **Size (ms)**: sets what length of audio is visible in each oscilloscope. - **Center waveform**: does its best to latch the waveform to the channel's note frequency and centers the display. +- **Automatic columns**: sets the number of columns based on the number of channels. + - **Off**: use the Columns setting. + - **Mode 1**: always fewer columns than rows. + - **Mode 2**: bias slightly toward more columns. + - **Mode 3**: always more columns than rows. - **Amplitude**: scales amplitude for all oscilloscopes. - **Gradient**: see below. - the color selector sets the color for all waveforms. right-clicking on it pops up an option dialog: @@ -19,6 +24,7 @@ right-clicking within the view will change it to the configuration view shown ab - `%C`: channel short name - `%d`: channel number (starting from 0) - `%D`: channel number (starting from 1) + - `%n`: channel note - `%i`: instrument name - `%I`: instrument number (decimal) - `%x`: instrument number (hex) diff --git a/doc/8-advanced/chanosc.png b/doc/8-advanced/chanosc.png index 2f90435a8..06dce19c1 100644 Binary files a/doc/8-advanced/chanosc.png and b/doc/8-advanced/chanosc.png differ