From 5de2c2dc4bccb26833be7c789f0a9aed1b45e051 Mon Sep 17 00:00:00 2001 From: LTVA1 <87536432+LTVA1@users.noreply.github.com> Date: Wed, 1 Nov 2023 21:15:10 +0300 Subject: [PATCH] Update c64.md Update C64 instrument info --- doc/4-instrument/c64.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/doc/4-instrument/c64.md b/doc/4-instrument/c64.md index bd864b031..3f2b7e880 100644 --- a/doc/4-instrument/c64.md +++ b/doc/4-instrument/c64.md @@ -5,15 +5,13 @@ 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 logical AND mix of waves should occur, bit actually a weird bit mixing occurs (due to the hardware flaws; 6581 and 8580 models handle those "combined waves" differently). - 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. @@ -26,9 +24,8 @@ the C64 instrument editor consists of two tabs: "C64" to control various paramet - **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. + - Different filter modes can be selected simultaneously, e.g. low+high. The resulting sound would be as if input was passed through lowpass filter and then highpass filter (or vice versa, you get the idea). -- **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. @@ -37,12 +34,21 @@ 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 does nothing + - reset (0) = key off, if previous state was 1 it triggers envelope release, if previous state was 0 does nothing + - **test bit**: + - set (1) = channel immediately muted (if the channel is a source of ring mod and/or hard sync those stop working until you reset the bit) + - reset (0) = unmute channel, restore ring mod/hard sync functionality described above +- **Attack**: sets envelope attack speed. If you modify attack speed when 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 (e.g. 9->8 and 8->8 works, but if you go 8->9 channel immediately mutes itself). +- **Release**: sets envelope release speed. If you modify release speed when envelope is in release phase it immediately changes.