# SID2

a fictional chip created by LTVA. the idea is to fix [SID](c64.md) 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.

each channel now has its own independent filter. filter cutoff and resonance ranges were extended, as well as the frequency; finally, the chip can hit a 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))
- `17xx`: **pulse width slide up.**
  - `xx` is speed. if it is `00`, the slide is stopped.
- `18xx`: **pulse width slide down.**
  - `xx` is speed. if it is `00`, the slide is stopped.
- `19xx`: **filter cutoff slide up.**
  - `xx` is speed. if it is `00`, the slide is stopped.
- `1Axx`: **filter cutoff slide down.**
  - `xx` is speed. if it is `00`, the slide is stopped.
- `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.
