lots of doc updates
This commit is contained in:
parent
489f56b913
commit
d5692318d6
|
@ -1,7 +1,7 @@
|
|||
# introduction
|
||||
|
||||
Furnace is a tool which allows you to create music using emulated sound chips from the 8/16-bit era.
|
||||
For a full list of soundchips that Furnace supports, please see [the list of systems](https://github.com/tildearrow/furnace/tree/master/papers/doc/7-systems).
|
||||
For a full list of soundchips that Furnace supports, please see [this list](https://github.com/tildearrow/furnace/tree/master/papers/doc/7-systems).
|
||||
|
||||
It has a music tracker interface. think of a piano roll, or a table that scrolls up and plays the notes.
|
||||
|
||||
|
|
|
@ -13,16 +13,16 @@ however, effects are continuous, which means you only need to type it once and t
|
|||
- `07xy`: tremolo. `x` is the speed, while `y` is the depth.
|
||||
- maximum tremolo depth is -60 volume steps.
|
||||
- `08xy`: set panning. `x` is the left channel and `y` is the right one.
|
||||
- not all systems support this effect.
|
||||
- not all chips support this effect.
|
||||
- `80xx`: set panning (linear). this effect behaves more like other trackers:
|
||||
- `00` is left.
|
||||
- `80` is center.
|
||||
- `FF` is right.
|
||||
- not all systems support this effect.
|
||||
- not all chips support this effect.
|
||||
- `81xx`: set volume of left channel (from `00` to `FF`).
|
||||
- not all systems support this effect.
|
||||
- not all chips support this effect.
|
||||
- `82xx`: set volume of right channel (from `00` to `FF`).
|
||||
- not all systems support this effect.
|
||||
- not all chips support this effect.
|
||||
- `09xx`: set speed 1.
|
||||
- `0Axy`: volume slide.
|
||||
- if `x` is 0 then this is a slide down.
|
||||
|
@ -34,7 +34,7 @@ however, effects are continuous, which means you only need to type it once and t
|
|||
- `0Fxx`: set speed 2.
|
||||
|
||||
- `9xxx`: set sample position to `xxx`\*0x100.
|
||||
- not all systems support this effect.
|
||||
- not all chips support this effect.
|
||||
|
||||
- `Cxxx`: change song Hz.
|
||||
- `xxx` may be from `000` to `3ff`.
|
||||
|
@ -72,4 +72,4 @@ however, effects are continuous, which means you only need to type it once and t
|
|||
- if `y` is 0 then this is a slide up.
|
||||
- `FFxx`: end of song/stop playback.
|
||||
|
||||
additionally each system has its own effects. [click here for more details](../7-systems/README.md).
|
||||
additionally each chip has its own effects. [click here for more details](../7-systems/README.md).
|
||||
|
|
|
@ -20,7 +20,7 @@ depending on the instrument type, there are currently 13 different types of an i
|
|||
- [AY8930](8930.md) - for use with Microchip AY8930 E-PSG sound source.
|
||||
- [Commodore 64](c64.md) - for use with Commodore 64 SID.
|
||||
- [SAA1099](saa.md) - for use with Philips SAA1099 PSG sound source.
|
||||
- [TIA](tia.md) - for use with Atari 2600 system.
|
||||
- [TIA](tia.md) - for use with Atari 2600 chip.
|
||||
- [AY-3-8910](ay8910.md) - for use with AY-3-8910 PSG sound source and SSG portion in YM2610.
|
||||
- [Amiga/sample](amiga.md) for controlling Amiga and other sample based synthsizers like YM2612's Channel 6 PCM mode, NES channel 5, Sega PCM, X1-010 and PC Engine's sample playback mode.
|
||||
- [Atari Lynx](lynx.md) - for use with Atari Lynx handheld console.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Wavetable synthesizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy.
|
||||
|
||||
Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these systems, it will be squashed to fit within the constraints of the system.
|
||||
Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these chips, it will be squashed to fit within the constraints of the chips.
|
||||
|
||||
## wavetable synthesizer
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# sound chips
|
||||
|
||||
this is a list of sound chips that Furnace supports, including each system's effects.
|
||||
this is a list of sound chips that Furnace supports, including effects.
|
||||
|
||||
- [Yamaha YM2612](ym2612.md)
|
||||
- [TI SN76489](sms.md)
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
this chip was used in many home computers (ZX Spectrum, MSX, Amstrad CPC, Atari ST, etc.), video game consoles (Intellivision and Vectrex), arcade boards and even slot machines!
|
||||
|
||||
It is a 3-channel PSG sound source. The chip's powerful sound comes from the envelope...
|
||||
it is a 3-channel square/noise/envelope sound generator. the chip's powerful sound comes from the envelope...
|
||||
|
||||
AY-3-8914 variant was used in Intellivision, it's basically original AY with 4 level envelope volume per channel and different register format.
|
||||
the AY-3-8914 variant was used in Intellivision, which is pretty much an AY with 4 level envelope volume per channel and different register format.
|
||||
|
||||
# effects
|
||||
|
||||
|
@ -43,4 +43,4 @@ AY-3-8914 variant was used in Intellivision, it's basically original AY with 4 l
|
|||
- `2Exx`: write to I/O port A.
|
||||
- this changes the port's mode to "write". make sure you have connected something to it.
|
||||
- `2Fxx`: write to I/O port B.
|
||||
- this changes the port's mode to "write". make sure you have connected something to it.
|
||||
- this changes the port's mode to "write". make sure you have connected something to it.
|
||||
|
|
|
@ -5,7 +5,7 @@ a backwards-compatible successor to the AY-3-8910, with increased volume resolut
|
|||
sadly, this soundchip has only ever observed minimal success, and has remained rather obscure since.
|
||||
it is known for being used in the Covox Sound Master, which didn't sell well either.
|
||||
|
||||
while emulation of this chip is mostly complete, hardware comparison hasn't been performed yet due to its scarcity. it also was emulated in a now-abandoned tracker with similar goal as Furnace, which sparked interest on the chip.
|
||||
emulation of this chip in Furnace is now complete thanks to community efforts and hardware testing, which an MSX board called Darky has permitted.
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ however, the K005289 is just part of the logic used for pitch and wavetable ROM
|
|||
waveform select and volume control are tied with single AY-3-8910 IO for both channels.
|
||||
another AY-3-8910 IO is used for reading sound hardware status.
|
||||
|
||||
Furnace emulates this configuration as single system with 32x16 wavetables.
|
||||
Furnace emulates this configuration as a "chip" with 32x16 wavetables.
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# Commodore 64
|
||||
|
||||
a home computer with a synthesizer-grade sound chip of which people took decades to master. Three oscillators with four selectable waveforms, ring modulation, oscillator sync, multimode filter, ADSR envelope...
|
||||
a home computer with a synthesizer-grade sound chip of which people took decades to master. three oscillators with four selectable waveforms, ring modulation, oscillator sync, multi-mode filter and ADSR envelope.
|
||||
|
||||
very popular in Europe and mostly due to the demoscene, which stretched the machine's limbs to no end.
|
||||
|
||||
Two revisions do exist - 6581 (original chip) and 8580 (improved version with working waveform mixing and somewhat more consistent filter curves)
|
||||
two versions of aforementioned chip exist - 6581 (original chip) and 8580 (improved version with working waveform mixing and somewhat more consistent filter curves).
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Generic PCM DAC
|
||||
|
||||
Realtek HD Audio's predecessor. It's just a 1/8/16-bit sample channel, with freely selectable rate and mono/stereo settings. With it, you can emulate PCM DACs found in Williams arcade boards, Sound Blasters, MSX TurboR, Atari STE, NEC PC-9801-86 etc.
|
||||
a sample channel, with freely selectable rate, mono/stereo and bit depth settings.
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -24,3 +24,4 @@ it also offers an additional 6-bit, 64-byte wavetable sound channel with (somewh
|
|||
- 5: -3
|
||||
- 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)...
|
||||
|
|
|
@ -19,9 +19,10 @@ this console is powered by two sound chips: the [Yamaha YM2612](ym2612.md) and [
|
|||
- `y` is the mutliplier.
|
||||
- `17xx`: enable PCM channel.
|
||||
- this only works on channel 6.
|
||||
- **this effect is there 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 system.
|
||||
- only in extended channel 3 chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -1,22 +1,20 @@
|
|||
# Atari Lynx/MIKEY
|
||||
|
||||
The Atari Lynx is a 16 bit handheld console developed by (obviously) Atari Corporation, and initially released in September of 1989, with the worldwide release being in 1990.
|
||||
the Atari Lynx is a 16 bit handheld console developed by (obviously) Atari Corporation, and initially released in September of 1989, with the worldwide release being in 1990.
|
||||
|
||||
The Lynx, while being an incredible handheld for the time (and a lot more powerful than a Game Boy), unfortunately meant nothing in the end due to the Lynx being a market failure, and ending up as one of the things that contributed to the downfall of Atari.
|
||||
while it was an incredible handheld for the time (and a lot more powerful than a Game Boy), it unfortunately meant nothing in the end due to the Lynx being a market failure, and ending up as one of the things that contributed to the downfall of Atari.
|
||||
|
||||
Although the Lynx is still getting (rather impressive) homebrew developed for it, it does not mean that the Lynx is a popular system at all.
|
||||
although the Lynx is still getting (rather impressive) homebrew developed for it, that does not mean the Lynx is a popular system at all.
|
||||
|
||||
The Atari Lynx's custom sound chip and CPU (MIKEY) is a 6502-based 8 bit CPU running at 16MHz, however this information is generally not useful in the context of Furnace.
|
||||
the Atari Lynx has a 6502-based CPU with a sound part (this chip is known as MIKEY). it has the following sound capabilities:
|
||||
- 4 channels of LFSR-based sound, which can be modulated with different frequencies (×0, ×1, ×2, ×3, ×4, ×5, ×7, ×10, and ×11) to create square waves and wavetable-like results.
|
||||
- likewise, when a lot of the modulators are activated, this can provide a "pseudo-white noise"-like effect, which can be useful for drums and sound effects.
|
||||
- hard stereo panning capabilities via the `08xx` effect command.
|
||||
- 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.
|
||||
|
||||
## Sound capabilities
|
||||
# effects
|
||||
|
||||
- The MIKEY has 4 channels of square wave-based sound, which can be modulated with different frequencies (×0, ×1, ×2, ×3, ×4, ×5, ×7, ×10, and ×11) to create wavetable-like results.
|
||||
- Likewise, when a lot of the modulators are activated, this can provide a "pseudo-white noise"-like effect, whoch can be useful for drums and sound effects.
|
||||
- The MIKEY also has hard stereo panning capabilities via the `08xx` effect command.
|
||||
- The MIKEY has four 8-bit DACs (Digital to Analog Converter) — one for each voice — that essentially mean you can play samples on the MIKEY (at the cost of CPU time and memory).
|
||||
- The MIKEY also has a variety of pitches to choose from, and they go from 32Hz to "above the range of human hearing", according to Atari.
|
||||
|
||||
## Effect commands
|
||||
- `3xxx`: Load LFSR (0 to FFF).
|
||||
- `3xxx`: Load LFSR (0 to FFF).
|
||||
- this is a bitmask.
|
||||
- for it to work, duty macro in instrument editor must be set to some value, without it LFSR will not be fed with any bits.
|
||||
- for it to work, duty macro in instrument editor must be set to some value. without it LFSR will not be fed with any bits.
|
||||
|
|
26
papers/doc/7-systems/msm5232.md
Normal file
26
papers/doc/7-systems/msm5232.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# OKI MSM5232
|
||||
|
||||
a rather primitive (but powerful) sound generator chip used in some arcade boards and even synthesizers (like Korg Poly-800).
|
||||
|
||||
it has 8 channels in 2 groups (of 4 channels each). each group can be configured with an envelope and the ability to produce 2', 4', 8' and/or 16' square/noise overtones on 8 outputs (four (2', 4', 8' and 16') per group).
|
||||
|
||||
however, this chip cannot entirely produce sound alone. it has to be paired with either an external envelope generator or capacitors to assist the internal envelope generator.
|
||||
|
||||
it also has no fine tune whatsoever. the frequency resolution is exactly a semitone.
|
||||
|
||||
Furnace implements this chip in a way that allows the following features:
|
||||
- internal (capacitors) or external (volume macro) envelope modes per group
|
||||
- the ability to change the volume of each output (this can be used to generate saw waves if you set each part/overtone's volume to exactly half of the previous one)
|
||||
- global fine tune
|
||||
- global vibrato (some arcade boards played with the clock input to simulate vibrato)
|
||||
|
||||
# effects
|
||||
|
||||
- `10xy`: set group control.
|
||||
- `x` sets sustain mode.
|
||||
- `y` is a 4-bit mask which toggles overtones.
|
||||
- `11xx`: set noise mode.
|
||||
- `12xx`: set group attack (0 to 5).
|
||||
- only in internal (capacitor-based) envelope mode.
|
||||
- `13xx`: set group decay (0 to 11).
|
||||
- only in internal (capacitor-based) envelope mode.
|
7
papers/doc/7-systems/msm6258.md
Normal file
7
papers/doc/7-systems/msm6258.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# OKI MSM6258
|
||||
|
||||
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.
|
||||
|
||||
# effects
|
||||
|
||||
...
|
7
papers/doc/7-systems/msm6295.md
Normal file
7
papers/doc/7-systems/msm6295.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# 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...)
|
||||
|
||||
# effects
|
||||
|
||||
- `20xx`: set chip output rate.
|
|
@ -1,25 +1,32 @@
|
|||
# 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. It has also 256 nibbles (128 bytes) of internal RAM, and both channel registers and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. At least 128 nibbles (64 bytes) can be dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback.
|
||||
this is one of Namco's NES mappers, with up to 8 wavetable channels.
|
||||
|
||||
it has 256 nibbles (128 bytes) of internal RAM which is shared between channel state and waves.
|
||||
|
||||
wavetables are variable in size and may be allocated anywhere in RAM. at least 128 nibbles (64 bytes) can be dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel.
|
||||
|
||||
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.
|
||||
|
||||
Furnace supports loading waveforms into RAM and waveform playback simultaneously, and channel limit is dynamically changeable with effect commands.
|
||||
You must load waveform to RAM first for playback, as its load behavior auto-updates when every waveform changes.
|
||||
Both waveform playback and load command works independently per each channel columns, (Global) commands don't care about the channel columns for work commands and its load behavior is independent with per-channel column load commands.
|
||||
|
||||
you must load waveform to RAM first for playback, as its load behavior auto-updates when every waveform changes.
|
||||
|
||||
both waveform playback and load command work independently per each channel columns.
|
||||
(Global) commands don't care about the channel columns for work commands and its load behavior is independent with per-channel column load commands.
|
||||
|
||||
# effects
|
||||
|
||||
- `10xx`: set waveform for playback.
|
||||
- `11xx`: set waveform position in RAM for playback. (single nibble unit)
|
||||
- `12xx`: set waveform length in RAM for playback. (04 to FC, 4 nibble unit)
|
||||
- `130x`: set playback waveform update behavior. (0: off, bit 0: update now, bit 1: update when every waveform is changed)
|
||||
- `11xx`: set waveform position in RAM for playback (single nibble unit).
|
||||
- `12xx`: set waveform length in RAM for playback (04 to FC, 4 nibble unit).
|
||||
- `130x`: set playback waveform update behavior (0: off, bit 0: update now, bit 1: update when every waveform is changed).
|
||||
- `14xx`: set waveform for load to RAM.
|
||||
- `15xx`: set waveform position for load to RAM. (single nibble unit)
|
||||
- `16xx`: set waveform length for load to RAM. (04 to FC, 4 nibble unit)
|
||||
- `170x`: set waveform load behavior. (0: off, bit 0: load now, bit 1: load when every waveform is changed)
|
||||
- `180x`: set channel limit (0 to 7, x + 1)
|
||||
- `15xx`: set waveform position for load to RAM (single nibble unit).
|
||||
- `16xx`: set waveform length for load to RAM (04 to FC, 4 nibble unit).
|
||||
- `170x`: set waveform load behavior (0: off, bit 0: load now, bit 1: load when every waveform is changed).
|
||||
- `180x`: set channel limit (0 to 7, x + 1).
|
||||
- `20xx`: (Global) set waveform for load to RAM.
|
||||
- `21xx`: (Global) set waveform position for load to RAM. (single nibble unit)
|
||||
- `22xx`: (Global) set waveform length for load to RAM. (04 to FC, 4 nibble unit)
|
||||
- `230x`: (Global) set waveform load behavior. (0: off, bit 0: load now, bit 1: load when every waveform is changed)
|
||||
- `21xx`: (Global) set waveform position for load to RAM (single nibble unit).
|
||||
- `22xx`: (Global) set waveform length for load to RAM (04 to FC, 4 nibble unit).
|
||||
- `230x`: (Global) set waveform load behavior (0: off, bit 0: load now, bit 1: load when every waveform is changed).
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
# Namco WSG | Namco C15 | Namco C30
|
||||
|
||||
a family of wavetable synth sound chips used by Namco in their arcade machines (Pacman and later). Waveforms are 4-bit, with 32-byte sample length.
|
||||
a family of wavetable synth sound chips used by Namco in their arcade machines (Pacman and later). waveforms are 4-bit, with 32-byte sample length.
|
||||
|
||||
Everything starts with Namco WSG, simple 3ch wavetable with no extra frills. C15 is much more advanced sound source with 8 channels. C30 adds stereo output and noise mode.
|
||||
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
|
||||
|
||||
-`10xx`: change waveform
|
||||
-`11xx`: toggle noise mode WARNING: only on C30
|
||||
|
||||
|
||||
|
||||
- `10xx`: change waveform.
|
||||
- `11xx`: toggle noise mode (WARNING: only on C30).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
the console from Nintendo that plays Super Mario Bros. and helped revive the agonizing video game market in the US during mid-80s.
|
||||
|
||||
also known as Famicom. It is a five-channel PSG: 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.
|
||||
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
|
||||
|
||||
|
@ -22,4 +22,4 @@ also known as Famicom. It is a five-channel PSG: first two channels play pulse w
|
|||
- `18xx`: set PCM channel mode.
|
||||
- `00`: PCM (software).
|
||||
- `01`: DPCM (hardware).
|
||||
- when in DPCM mode, samples will sound muffled (due to its nature), availables pitches are limited and loop point is ignored.
|
||||
- when in DPCM mode, samples will sound muffled (due to its nature), availables pitches are limited and loop point is ignored.
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
# OKI MSM6258 | OKI MSM6295
|
||||
|
||||
MSM6258 is 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.
|
||||
|
||||
MSM6295 is 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...)
|
||||
|
||||
# effects
|
||||
|
||||
- `20xx`: set chip output rate
|
|
@ -36,7 +36,7 @@ afterwards everyone moved to Windows and software mixed PCM streaming...
|
|||
- this effect applies to all channels.
|
||||
- `18xx`: toggle drums mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in drums system.
|
||||
- only in drums chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -33,7 +33,7 @@ the YM2413 is equipped with the following features:
|
|||
- `y` is the mutliplier.
|
||||
- `18xx`: toggle drums mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in drums system.
|
||||
- only in drums chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -19,3 +19,4 @@ furthermore, it has some PCM and LFO!
|
|||
- when LFO is enabled, channel 2 is muted and its output is passed to channel 1's frequency.
|
||||
- `13xx`: set LFO speed.
|
||||
- `17xx`: toggle PCM mode.
|
||||
- **this effect is there for compatibility reasons** - it is otherwise recommended to use Sample type instruments (which automatically enable PCM mode when used).
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
# real output
|
||||
|
||||
so far this is the only system in Furnace which has a real hardware output option.
|
||||
to enable it, select file > configure system... > PC Speaker > Use system beeper.
|
||||
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.
|
||||
|
||||
be noted that this will only work on Linux as Windows does not provide any user-space APIs to address the PC speaker directly!
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
# Capcom QSound (DL-1425)
|
||||
|
||||
This chip was used in Capcom's CP System Dash, CP System II and ZN arcade PCBs.
|
||||
this chip was used in Capcom's CP System Dash, CP System II and ZN arcade PCBs.
|
||||
|
||||
It supports 16 PCM channels and uses the patented (now expired) QSound stereo expansion algorithm, as the name implies.
|
||||
it supports 16 PCM channels and uses the patented (now expired) QSound stereo expansion algorithm, as the name implies.
|
||||
|
||||
Because the chip lacks sample interpolation, it's recommended that you try to play samples at around 24038 Hz to avoid aliasing. This is especially important for e.g. cymbals.
|
||||
because the chip lacks sample interpolation, it is recommended that you try to play samples at around 24038 Hz to avoid aliasing. this is especially important for e.g. cymbals.
|
||||
|
||||
The QSound chip also has a small echo buffer, somewhat similar to the SNES, although with a very basic (and non-adjustable) filter. It is however possible to adjust the feedback and length of the echo buffer. The initial values can be set in the "Configure system" dialog.
|
||||
the QSound chip also has a small echo buffer, somewhat similar to the SNES, although with a very basic (and non-adjustable) filter. it is however possible to adjust the feedback and length of the echo buffer (the initial values can be set in the "configure chip" option in the file menu or the chip manager).
|
||||
|
||||
There are also 3 ADPCM channels, however they cannot be used in Furnace yet. They have been reserved in case this feature is added later. ADPCM samples are limited to 8012 Hz.
|
||||
there are also 3 ADPCM channels, however they cannot be used in Furnace yet. they have been reserved in case this feature is added later. ADPCM samples are limited to 8012 Hz.
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Ricoh RF5C68
|
||||
|
||||
YM2612's sidekick - poor man's SPC-700. 8ch PCM sample-based synthesizer used in Sega Mega CD, Fujitsu FM Towns and some of Sega's arcade machines. Supports up to 64 Kbytes of external PCM data.
|
||||
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 external PCM data.
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
# Philips SAA1099
|
||||
|
||||
this was used by the Game Blaster and SAM Coupé. it's pretty similar to the AY-3-8910, but has stereo sound, twice the channels and two envelopes, both of which are highly flexible. The envelopes work like this:
|
||||
|
||||
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.
|
||||
- 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
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ a chip used in the Sega OutRun/X/Y arcade boards. eventually the MultiPCM surpas
|
|||
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
|
||||
|
||||
- `20xx`: set PCM frequency.
|
||||
- `xx` is a 256th fraction of 31250Hz.
|
||||
- this effect exists for mostly DefleMask compatibility - it is otherwise recommended to use Sample type instruments.
|
||||
|
|
|
@ -1,50 +1,77 @@
|
|||
# Super NES
|
||||
# Super Nintendo Entertainment System (SNES)/Super Famicom
|
||||
|
||||
The successor to NES to compete with Genesis. Now packing superior graphics and sample-based audio. Also known as Super Famicom in Japan.
|
||||
the successor to NES to compete with Genesis, packing superior graphics and sample-based audio.
|
||||
|
||||
Its audio subsystem, developed by Sony, features the DSP chip, SPC700 microcontroller and 64KB of dedicated SRAM used by both. This whole system itself is pretty much a separate computer that the main CPU needs to upload its program and samples to.
|
||||
its audio system, developed by Sony, features a DSP chip, SPC700 CPU and 64KB of dedicated SRAM used by both.
|
||||
this whole system itself is pretty much a separate computer that the main CPU needs to upload its program and samples to.
|
||||
|
||||
Furnace communicates with the DSP directly and provides a full 64KB of memory. This memory might be reduced excessively on ROM export to make up for playback engine and pattern data. As of version 0.6pre2, you can go to `window -> statistics` to see how much memory your samples are using.
|
||||
Furnace communicates with the DSP directly and provides a full 64KB of memory. this memory might be reduced excessively on ROM export to make up for playback engine and pattern data. you can go to window > statistics to see how much memory your samples are using.
|
||||
|
||||
Some notable features of the DSP are:
|
||||
- It has pitch modulation, meaning that you can use 2 channels to make a basic FM synth without eating up too much memory
|
||||
- It has a built in noise generator, useful for hihats, cymbals, rides, sfx, among other things.
|
||||
- It famously features per-channel echo, which unfortunately eats up a lot of memory but can be used to save channels in songs.
|
||||
- It can loop samples, but the loop points have to be multiples of 16.
|
||||
- It can invert the left and/or right channels, for surround sound.
|
||||
- It features ADSR, similar to the Commodore 64, but its functionality is closer to the OPL(L|1|2|3)'s implementation of ADSR.
|
||||
- It features an 8-tap FIR filter, which is basically a procedural low-pass filter that you can edit however you want.
|
||||
- 7-bit volume, per-channel.
|
||||
- Per-channel interpolation, which is basically a low-pass filter that gets affected by the pitch of the channel.
|
||||
some notable features of the DSP are:
|
||||
- pitch modulation, meaning that you can use 2 channels to make a basic FM synth without eating up too much memory.
|
||||
- a built in noise generator, useful for hi-hats, cymbals, rides, effects, among other things.
|
||||
- per-channel echo, which unfortunately eats up a lot of memory but can be used to save channels in songs.
|
||||
- an 8-tap FIR filter for the echo, which is basically a procedural low-pass filter that you can edit however you want.
|
||||
- sample loop, but the loop points have to be multiples of 16.
|
||||
- left/right channel invert for surround sound.
|
||||
- ADSR and gain envelope modes.
|
||||
- 7-bit volume per channel.
|
||||
- sample interpolation, which is basically a low-pass filter that gets affected by the pitch of the channel.
|
||||
|
||||
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. This, however, is not a hardware feature, and might be difficult to implement on real hardware.
|
||||
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. this however is not a hardware feature, and might be difficult to implement on real hardware.
|
||||
|
||||
# effects
|
||||
|
||||
Note: this chip has a signed left/right level. Which can be used for inverted (surround) stereo. A signed 8-bit value means 80 - FF = -128 - -1. Other values work normally. A value of -128 is not recommended as it could cause overflows.
|
||||
|
||||
- `10xx`: Set waveform.
|
||||
- `11xx`: Toggle noise generator mode.
|
||||
- `12xx`: Toggle echo on this channel.
|
||||
- `13xx`: Toggle pitch modulation.
|
||||
- `14xy`: Toggle inverting the left or right channels. (x: left, y: right)
|
||||
- `15xx`: Set envelope mode. (0: ADSR, 1: gain/direct, 2: decrement, 3: exponential, 4: increment, 5: bent)
|
||||
- `16xx`: Set gain. (00 to 7F if direct, 00 to 1F otherwise)
|
||||
- `18xx`: Enable echo buffer.
|
||||
- `19xx`: Set echo delay. (0 to F)
|
||||
- `1Axx`: Set left echo channel volume.
|
||||
- `1Bxx`: Set right echo channel volume.
|
||||
- `1Cxx`: Set echo feedback.
|
||||
- `1Dxx`: Set noise generator frequency. (00 to 1F)
|
||||
- `20xx`: Set attack (0 to F)
|
||||
- `21xx`: Set decay (0 to 7)
|
||||
- `22xx`: Set sustain (0 to 7)
|
||||
- `23xx`: Set release (00 to 1F)
|
||||
- `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
|
||||
- `10xx`: set waveform.
|
||||
- `11xx`: toggle noise mode.
|
||||
- `12xx`: toggle echo on this channel.
|
||||
- `13xx`: toggle pitch modulation.
|
||||
- `14xy`: toggle inverting the left or right channels (x: left, y: right).
|
||||
- `15xx`: set envelope mode.
|
||||
- 0: ADSR.
|
||||
- 1: gain (direct).
|
||||
- 2: linear decrement.
|
||||
- 3: exponential decrement.
|
||||
- 4: linear increment.
|
||||
- 5: bent line (inverse log) increment.
|
||||
- `16xx`: set gain (00 to 7F if direct, 00 to 1F otherwise).
|
||||
- `18xx`: enable echo buffer.
|
||||
- `19xx`: set echo delay
|
||||
- goes from 0 to F.
|
||||
- `1Axx`: set left echo channel volume.
|
||||
- this is a signed number.
|
||||
- 00 to 7F for 0 to 127.
|
||||
- 80 to FF for -128 to -1.
|
||||
- setting this to -128 is not recommended as it may cause echo output to overflow and therefore click.
|
||||
- `1Bxx`: set right echo channel volume.
|
||||
- this is a signed number.
|
||||
- 00 to 7F for 0 to 127.
|
||||
- 80 to FF for -128 to -1.
|
||||
- setting this to -128 is not recommended as it may cause echo output to overflow and therefore click.
|
||||
- `1Cxx`: set echo feedback.
|
||||
- this is a signed number.
|
||||
- 00 to 7F for 0 to 127.
|
||||
- 80 to FF for -128 to -1.
|
||||
- setting this to -128 is not recommended as it may cause echo output to overflow and therefore click.
|
||||
- `1Dxx`: set noise generator frequency (00 to 1F).
|
||||
- `20xx`: set attack (0 to F).
|
||||
- only in ADSR envelope mode.
|
||||
- `21xx`: set decay (0 to 7).
|
||||
- only in ADSR envelope mode.
|
||||
- `22xx`: set sustain (0 to 7).
|
||||
- only in ADSR envelope mode.
|
||||
- `23xx`: set release (00 to 1F).
|
||||
- only in ADSR envelope mode.
|
||||
- `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.
|
||||
- make sure the sum of these is between -128 or 127.
|
||||
- failure to comply may result in overflow and therefore clicking.
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
# tildearrow Sound Unit
|
||||
This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 8KB or 64KB of sample data, depending on the configuration used. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed.
|
||||
|
||||
a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow.
|
||||
|
||||
it has the following capabilities:
|
||||
- 8 channels of either waveform or sample
|
||||
- stereo sound
|
||||
- 8 waveforms (pulse, saw, sine, triangle, noise, periodic noise, XOR sine and XOR triangle)
|
||||
- 128 widths for the pulse wave
|
||||
- per-channel resonant filter
|
||||
- ring modulation
|
||||
- volume, frequency and cutoff sweep units (per-channel)
|
||||
- phase reset timer (per-channel)
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
# Commodore VIC-20
|
||||
|
||||
The Commodore VIC-20 was Commodore's major attempt at making a personal home computer, and is the percursor to the Commodore 64. The VIC-20 was also known as the VC-20 in Germany, and the VIC-1001 in Japan.
|
||||
the Commodore VIC-20 was Commodore's major attempt at making a personal home computer, and is the percursor to the Commodore 64.
|
||||
|
||||
It has 4 PSG voices that has a limited but wide tuning range, and like the SN76489, the last voice is dedicated to playing pseudo-white noise.
|
||||
it was also known as the VC-20 in Germany, and the VIC-1001 in Japan.
|
||||
|
||||
The 3 pulse wave channels also have different octaves that they can play notes on. The first channel is the bass channel, and it can play notes from octave 1. The next is the 'mid/chord' channel, and it plays notes from octave 2. And rather obviously, the 3rd pulse channel is typically the lead channel, can play notes from octave 3.
|
||||
it has 4 voices that have a limited but wide tuning range, and like the SN76489 and T6W28, the last voice is dedicated to playing noise.
|
||||
|
||||
the 3 pulse wave channels also have different octaves that they can play notes on:
|
||||
- the first channel is the bass channel, and it can play notes from octave 1.
|
||||
- the next is the 'mid/chord' channel, and it plays notes from octave 2.
|
||||
- and rather obviously, the 3rd pulse channel is typically the lead channel, can play notes from octave 3.
|
||||
|
||||
these channels are not referred as "square" wave channels since a technique to play 15 additional pulse-like waveforms has been discovered long after the VIC-20's release.
|
||||
|
||||
## effect commands
|
||||
|
||||
- `10xx` Switch waveform (`xx` from `00` to `0F`)
|
||||
- `10xx` Switch waveform (`xx` from `00` to `0F`)
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# Konami VRC6
|
||||
|
||||
the most popular expansion chip to the NES' sound system.
|
||||
the most popular expansion chip to the Famicom's sound system.
|
||||
|
||||
the chip has 2 pulse wave channels and one sawtooth channel.
|
||||
volume register is 4 bit for pulse wave and 6 bit for sawtooth, but sawtooth output is corrupted when volume register value is too high. because this register is actually an 8 bit accumulator, its output may wrap around.
|
||||
|
||||
For that reason, the sawtooth channel has it's own instrument type. Setting volume macro and pattern editor volume setting too high (above 42/2A) will distort the waveform.
|
||||
for that reason, the sawtooth channel has its own instrument type. setting volume macro and/or pattern editor volume setting too high (above 42/2A) may distort the waveform.
|
||||
|
||||
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).
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
# WonderSwan
|
||||
|
||||
A handheld console released only in Japan by Bandai. Designed by the same people behind Game Boy and Virtual Boy, it has lots of similar elements from those two systems in the sound department.
|
||||
a handheld console released only in Japan by Bandai, designed by the same people behind Game Boy and Virtual Boy.
|
||||
for this reason it has lots of similar elements from those two systems in the sound department.
|
||||
|
||||
It has 4 wavetable channels, channel #2 could play PCM, channel #3 has hardware sweep and channel #4 could play noise.
|
||||
it has 4 wavetable channels. some of them have additional capabilities:
|
||||
- the second channel could play samples
|
||||
- the third one has hardware sweep
|
||||
- the fourth one also does noise
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ the sound chip powering several arcade boards and the Sharp X1/X68000. Eight 4-o
|
|||
|
||||
it also was present on several pinball machines and synthesizers of the era, and later surpassed by the YM2414 (OPZ) present in the world-famous TX81Z.
|
||||
|
||||
in most arcade boards the chip was used in combination with a PCM chip, like [SegaPCM](segapcm.md) or OKI's line of [ADPCM](msm6258.md) [chips](msm6295.md).
|
||||
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](oki.md).
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ several variants of this chip were released as well, with more features.
|
|||
- `y` is the mutliplier.
|
||||
- `18xx`: toggle extended channel 3 mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in extended channel 3 system.
|
||||
- only in extended channel 3 chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -21,7 +21,7 @@ the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built-
|
|||
- `y` is the mutliplier.
|
||||
- `18xx`: toggle extended channel 3 mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in extended channel 3 system.
|
||||
- only in extended channel 3 chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -19,7 +19,7 @@ its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and 2 different
|
|||
- `y` is the mutliplier.
|
||||
- `18xx`: toggle extended channel 2 mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in extended channel 2 system.
|
||||
- only in extended channel 2 chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
@ -96,4 +96,4 @@ its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and 2 different
|
|||
- `5Cxx`: set D2R/SR of operator 1.
|
||||
- `5Dxx`: set D2R/SR of operator 2.
|
||||
- `5Exx`: set D2R/SR of operator 3.
|
||||
- `5Fxx`: set D2R/SR of operator 4.
|
||||
- `5Fxx`: set D2R/SR of operator 4.
|
||||
|
|
|
@ -18,7 +18,7 @@ it is backward compatible with the original chip.
|
|||
- `y` is the mutliplier.
|
||||
- `18xx`: toggle extended channel 3 mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in extended channel 3 system.
|
||||
- only in extended channel 3 chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -21,7 +21,7 @@ For 0.6pre1, Furnace can now support advanced YM2612 features that [Fractal](ht
|
|||
- this only works on channel 6.
|
||||
- `18xx`: toggle extended channel 3 mode.
|
||||
- 0 disables it and 1 enables it.
|
||||
- only in extended channel 3 system.
|
||||
- only in extended channel 3 chip.
|
||||
- `19xx`: set attack of all operators.
|
||||
- `1Axx`: set attack of operator 1.
|
||||
- `1Bxx`: set attack of operator 2.
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Yamaha YMZ280B (PCMD8)
|
||||
|
||||
8ch PCM/ADPCM sample-based synthesizer designed for use with arcade machines. Lived throughout mid to late 90s. It has 16-level stereo panning, up to 16-bit PCM and up to 16Mbytes of external PCM data.
|
||||
8-channel PCM/ADPCM sample-based sound chip designed for use with arcade machines. it lived throughout mid to late 90s.
|
||||
|
||||
it has 16-level stereo panning, up to 16-bit PCM and up to 16MB of external PCM data.
|
||||
|
||||
# effects
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# ZX Spectrum Speaker
|
||||
# ZX Spectrum beeper
|
||||
|
||||
Rather than having a dedicated sound synthesizer, early ZX Spectrum models had one piezo beeper, controlled by Z80 CPU and ULA chip. It's capabilities should be on par with an IBM PC speaker... right?
|
||||
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.6pre1 Furnace supports only one - Follin-like engine with 6 channels of narrow pulse wave and click drums.
|
||||
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 only a Follin/SFX-like engine with 6 channels of narrow pulse wave and click drums.
|
||||
|
||||
# effects
|
||||
|
||||
|
@ -10,4 +10,4 @@ Not really - very soon talented programmers found out ways to output much more t
|
|||
- `17xx`: trigger overlay drum.
|
||||
- `xx` is the sample number.
|
||||
- overlay drums are 1-bit and always play at 55930Hz (NTSC) or 55420Hz (PAL).
|
||||
- the maximum length is 2048!
|
||||
- the maximum length is 2048!
|
||||
|
|
Loading…
Reference in a new issue