mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-20 11:35:10 +00:00
4d7c1c9e44
* docs update mentions of fractal, new chips documentation, and other minor stuff * add a link to the Fractal repo as suggested by @breakthetargets * better wording, less typos
59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
# 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...
|
|
|
|
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)
|
|
|
|
# effects
|
|
|
|
- `10xx`: change wave. the following values are accepted:
|
|
- `00`: nothing
|
|
- `01`: triangle
|
|
- `02`: saw
|
|
- `03`: triangle and saw
|
|
- `04`: pulse
|
|
- `05`: pulse and triangle
|
|
- `06`: pulse and saw
|
|
- `07`: pulse and triangle and saw
|
|
- `08`: noise
|
|
- `11xx`: set coarse cutoff. `xx` may be a value between 00 to 64.
|
|
- **this effect only exists for compatibility reasons, and its use is discouraged.**
|
|
- use effect `4xxx` instead.
|
|
- `12xx`: set coarse duty cycle. `xx` may be a value between 00 to 64.
|
|
- **this effect only exists for compatibility reasons, and its use is discouraged.**
|
|
- use effect `3xxx` instead.
|
|
- `13xx`: set resonance. `xx` may be a value between 00 and 0F.
|
|
- `14xx`: 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
|
|
- `15xx`: set envelope reset time.
|
|
- this is the amount of ticks the channel turns off before a note occurs in order to reset the envelope safely.
|
|
- if `xx` is 0 or higher than the song speed, the envelope will not reset.
|
|
- `1Axx`: disable envelope reset for this channel.
|
|
- `1Bxy`: 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.
|
|
- `1Cxy`: 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.
|
|
- `1Exy`: 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`: disable channel 3 (`y` is 0 or 1)
|
|
- `3xxx`: set duty cycle. `xxx` range is 000-FFF
|
|
- `4xxx`: set cutoff. `xxx` range is 000-7FF.
|