Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C64 docs update #1572

Merged
merged 8 commits into from
Nov 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions doc/3-pattern/effects.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,16 +154,16 @@ ex | FM | OPM | OPZ | OPLL | AY-3-8910 | AY8930 | Lynx
W | | LFO Shape | LFO Shape | Patch | Waveform | Waveform | | Waveform |
1 | | AMD | AMD | | | Duty | | FilterMode |
2 | | PMD | PMD | | Envelope | Envelope | | Resonance |
3 | LFOSpd | LFO Speed | LFO Speed | | AutoEnvNum | AutoEnvNum | | Special |
A | ALG | ALG | ALG | | AutoEnvDen | AutoEnvDen | | |
3 | LFOSpd | LFO Speed | LFO Speed | | AutoEnvNum | AutoEnvNum | | |
A | ALG | ALG | ALG | | AutoEnvDen | AutoEnvDen | | Cutoff |
B | FB | FB | FB | | | Noise AND | | |
C | FMS | FMS | FMS | | | Noise OR | | |
D | AMS | AMS | AMS | | | | | |
4 | OpMask | OpMask | | | | | | Test/Gate |
5 | | | AMD2 | | | | | |
6 | | | PMD2 | | | | | |
7 | | | LFO2Speed | | | | | |
8 | | | LFO2Shape | | | | | |
4 | OpMask | OpMask | | | | | | Special |
5 | | | AMD2 | | | | | Attack |
6 | | | PMD2 | | | | | Decay |
7 | | | LFO2Speed | | | | | Sustain |
8 | | | LFO2Shape | | | | | Release |

ex | SAA1099 | X1-010 | Namco 163 | FDS | Sound Unit | ES5506 | MSM6258 |
---|----------|------------|------------|-----------|------------|-----------|----------|
Expand Down
30 changes: 21 additions & 9 deletions doc/4-instrument/c64.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@ the C64 instrument editor consists of two tabs: "C64" to control various paramet
## C64

- **Waveform**: allows selecting a waveform.
- more than one waveform can be selected at once. in that case logical AND mix of waves will occur.
- more than one waveform can be selected at once. in that case a logical AND mix of waves will occur...
- due to hardware flaws, the mixing is a bit weird and sounds different between the 6581 and the 8580.
- noise is an exception. it cannot be used with any of the other waveforms.
- **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.

Expand All @@ -25,10 +24,9 @@ the C64 instrument editor consists of two tabs: "C64" to control various paramet
- **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).
- **ch3off**: mutes channel 3 when enabled. not sure why is this part of the chip's design, but it is.
- **ch3off**: mutes channel 3 when enabled. it was originally planned for usage with two registers where program could read current oscillator and envelope outputs, thus making vibrato and SFX generation easier. but who wanted to sacrifice one channel out of three! so aforementioned was just done in software, and the feature was never used.
- multiple filter modes can be selected simultaneously. for example, selecting both "low" and "high" results in a bandstop (notch) filter.
LTVA1 marked this conversation as resolved.
Show resolved Hide resolved

- **Volume Macro is Cutoff Macro**: turns the volume macro in the Macros tab into a filter cutoff macro.
- volume control is global (affects entire chip output), hence the option.
- **Absolute Cutoff Macro**: when enabled, the cutoff macro will go from 0 to 2047, 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.
- **Don't test before new note**: this option disables the one-tick hard reset and test bit before a new note.
Expand All @@ -37,12 +35,26 @@ the C64 instrument editor consists of two tabs: "C64" to control various paramet

- **Volume**: volume sequence.
- warning: volume sequence is global! this means it controls the chip's volume and therefore affects all channels.
- this macro becomes **Cutoff** when the **Volume Macro is Cutoff Macro** option is enabled in the C64 tab.
- **Arpeggio**: pitch sequence.
- **Duty**: pulse width sequence.
- **Waveform**: select the waveform used by instrument.
- **Pitch**: fine pitch.
- **Cutoff**: filter cutoff.
- **Filter mode**: select the filter mode.
- **Resonance**: filter resonance sequence.
- **Special**: ring and oscillator sync selector.
- **Test/Gate**: when on, the test bit is set, which mutes the channel.
- **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.
- **test bit**:
- set (1): immediately mute channel
- if the channel is a source of ring mod and/or hard sync, those stop working until the bit is reset.
tildearrow marked this conversation as resolved.
Show resolved Hide resolved
- reset (0): unmute channel and restore ring mod/hard sync.
- **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, although you can only go down. for example, 9-to-8 and 8-to-8 both work, but 8-to-9 immediately mutes the channel.
- **Release**: sets envelope release speed.
- if you modify release speed when envelope is in release phase it immediately changes.