copy SID2 docs from LTVA1/furnace

tweak them a bit for Furnace
This commit is contained in:
tildearrow 2024-04-25 22:55:30 -05:00
parent e1d58d97cb
commit bfebe15f06
2 changed files with 121 additions and 0 deletions

67
doc/4-instrument/sid2.md Normal file
View file

@ -0,0 +1,67 @@
# SID2 instrument editor
the SID2 instrument editor consists of two tabs: "SID2" to control various parameters of sound channels, and "Macros" containing several macros.
## SID2
- **Waveform**: allows selecting a waveform.
- more than one waveform can be selected at once. in that case a logical AND mix of waves will occur...
- although with default mix mode it does occur a bit wrong (like on 8580 SID chip). see below what happens when other modes are in use.
- noise is an exception. it cannot be used with any of the other waveforms.
- again, only when default mix mode is on.
- **Attack**: determines the rising time for the sound. the bigger the value, the slower the attack. (0 to 15).
- **Decay**: determines the diminishing time for the sound. the higher the value, the longer the decay (0 to 15).
- **Sustain**: sets the volume level at which the sound stops decaying and holds steady (0 to 15).
- **Release**: determines the rate at which the sound fades out after note off. the higher the value, the longer the release (0 to 15).
- **Duty**: specifies the width of a pulse wave (0 to 4095).
- **Ring Modulation**: when enabled, the channel's output will be multiplied with the previous channel's.
- **Oscillator Sync**: enables oscillator hard sync. as the previous channel's oscillator finishes a cycle, it resets the period of the channel's oscillator, forcing the latter to have the same base frequency. this can produce a harmonically rich sound, the timbre of which can be altered by varying the synchronized oscillator's frequency.
- **Enable filter**: when enabled, this instrument will go through the filter.
- **Initialize filter**: initializes the filter with the specified parameters:
- **Cutoff**: the filter's point in where frequencies are cut off (0 to 4095).
- **Resonance**: amplifies or focuses on the cutoff frequency, creating a secondary peak forms and colors the original pitch (0 to 255).
- **Filter mode**: sets the filter mode. you may pick one or more of the following:
- **low**: a low-pass filter. the lower the cutoff, the darker the sound.
- **high**: a high-pass filter. higher cutoff values result in a less "bassy" sound.
- **band**: a band-pass filter. cutoff determines which part of the sound is heard (from bass to treble).
- multiple filter modes can be selected simultaneously. for example, selecting both "low" and "high" results in a bandstop (notch) filter.
- **Noise Mode**: dictates how noise behaves.
- 0 means usual "white" noise.
- 1-3 provide different tonal waves (in other words, small excerpts of noise are looped, creating a wave with tonal sound). mode 1 provides more "pure" tonal sound while modes 2 and 3 provide harsh, rich sounds, which can be further modified by filtering them.
- when *only* noise wave is enabled, frequency calculation is altered in a way that this noise wave stays in tune, so wave can freely be used to play actual music.
- **Wave Mix Mode**: dictates how different waves on the same channel are mixed together.
- mode 0 does it the same way as on 8580 SID chip.
- mode 1 does a bitwise AND between all the enabled waves (including noise!).
- modes 2 and 3 operate in the same way, but they do bitwise OR and bitwise XOR.
- **Absolute Cutoff Macro**: when enabled, the cutoff macro will go from 0 to 4095, and it will be absolute (in other words, control the cutoff directly rather than being relative).
- **Absolute Duty Macro**: when enabled, the duty macro will go from 0 to 4095.
## Macros
- **Volume**: volume sequence.
- **Arpeggio**: pitch sequence.
- **Pitch**: fine pitch.
- **Duty**: pulse width sequence.
- **Waveform**: select the waveform used by instrument.
- **Phase Reset**: trigger restart of envelope.
- **Cutoff**: filter cutoff.
- **Filter Mode**: select the filter mode.
- **Filter Toggle**: turns filter on and off.
- **Resonance**: filter resonance sequence.
- **Special**: ring and oscillator sync selector, as well as:
- **gate bit**:
- set (1): key on. if previous state was 0 it triggers envelope start/restart; if previous state was 1, it does nothing.
- reset (0): key off. if previous state was 1 it triggers envelope release; if previous state was 0, it does nothing.
- **Attack**: sets envelope attack speed.
- if you modify attack speed when the envelope is in attack phase it immediately changes.
- **Decay**: sets envelope decay speed.
- if you modify decay speed when envelope is in decay phase it immediately changes.
- **Sustain**: sets envelope sustain level.
- if you modify sustain level when envelope is in sustain phase it immediately changes. note that, unlike SID chips, you can change sustain level in any direction (both 2->5 and 5->2 work and do not trigger envelope release).
- **Release**: sets envelope release speed.
- if you modify release speed when envelope is in release phase it immediately changes.
- **Noise Mode**: select the noise mode.
- **Wave Mix**: select the waveform mix mode.

54
doc/7-systems/sid2.md Normal file
View file

@ -0,0 +1,54 @@
# SID2
a fictional chip created by LTVA. the idea is to fix SID flaws and add more features, but not too much.
unlike SID, it has per-channel volume control, better ADSR envelope which doesn't have bugs, more waveform mixing modes and the ability to play tonal noise waves.
filter cutoff and resonance ranges were extended, as well as the frequency - finally the chip can hit B-7 note with default clock speed!
## effects
- `10xx`: **change wave.** lower 4 bits specify the wave:
- `bit 0`: triangle
- `bit 1`: saw
- `bit 2`: pulse
- `bit 3`: noise
- `11xx`: **set resonance.** `xx` may be a value between `00` and `FF`.
- `12xx`: **set filter mode.** the following values are accepted:
- `00`: filter off
- `01`: low pass
- `02`: band pass
- `03`: low+band pass
- `04`: high pass
- `05`: band reject/stop/notch
- `06`: high+band pass
- `07`: all pass
- `13xx`: **disable envelope reset for this channel.**
- `14xy`: **reset cutoff**:
- if `x` is not 0: on new note
- if `y` is not 0: now
- this effect is not necessary if the instrument's cutoff macro is absolute.
- `15xy`: **reset duty cycle**:
- if `x` is not 0: on new note
- if `y` is not 0: now
- this effect is not necessary if the instrument's duty macro is absolute.
- `16xy`: **change additional parameters.**
- `x` may be one of the following:
- `0`: attack (`y` from `0` to `F`)
- `1`: decay (`y` from `0` to `F`)
- `2`: sustain (`y` from `0` to `F`)
- `3`: release (`y` from `0` to `F`)
- `4`: ring modulation (`y` is `0` or `1`)
- `5`: oscillator sync (`y` is `0` or `1`)
- `6`: filter mode (`y` is `0` to `7`)
- `7`: waveform mix mode (`y` is `0` to `3`)
- `8`: noise mode (`y` is `0` to `3`)
- `9`: phase reset (`y` is a discarded parameter and does not matter)
- `A`: envelope key on/key off (`y` is `0` (trigger envelope release) or `1` (restart envelope again))
- `B`: filter on/off (`y` is `0` (disable filter) or `1` (enable filter))
- `3xxx`: **set duty cycle.** `xxx` range is `000` to `FFF`.
- `4xxx`: **set cutoff.** `xxx` range is `000` to `FFF`.
## info
this chip uses the [SID2](../4-instrument/sid2.md) instrument editor.