mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-01 16:57:27 +00:00
0b0e6d5e13
SID3 will have data independent of C64 and SID2
142 lines
11 KiB
Markdown
142 lines
11 KiB
Markdown
# SID3 instrument editor
|
|
|
|
the SID3 editor is divided into 8 tabs:
|
|
|
|
- **SID3**: for controlling the basic parameters of SID3 sound source.
|
|
- **Wavetable**: for controlling the wavetable synth.
|
|
- **Sample**: for various sample settings.
|
|
- **Macros (Filter 1)**: for macros controlling parameters of filter 1.
|
|
- **Macros (Filter 2)**: for macros controlling parameters of filter 2.
|
|
- **Macros (Filter 3)**: for macros controlling parameters of filter 3.
|
|
- **Macros (Filter 4)**: for macros controlling parameters of filter 4.
|
|
- **Macros**: for other macros.
|
|
|
|
## Wavetable
|
|
|
|
this allows you to enable and configure the Furnace wavetable synthesizer. see [this page](wavesynth.md) for more information.
|
|
|
|
## Sample
|
|
|
|
for sample settings, see [the Sample instrument editor](sample.md).
|
|
|
|
the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample" one.
|
|
|
|
## SID3
|
|
|
|
- **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.
|
|
- **Special wave**: allows selecting a special wave. the wave preview is to the right.
|
|
- **Wavetable channel**: replaces and hides some macros and UI elements, and makes instrument operate with last wavetable/sample channel:
|
|
- **Waveform** macro now selects a wavetable
|
|
- **Duty**, **Special Wave**, **Feedback**, **Noise Phase Reset**, **Noise LFSR bits** and **Wave Mix** macros are hidden
|
|
- **1-Bit Noise** macro now controls wavetable/PCM mode (it becomes **Sample Mode** macro)
|
|
- **Inv. left** and **Inv. right**: invert the signal of corresponding stereo channels.
|
|
- **Attack**: determines the rising time for the sound. the bigger the value, the slower the attack. (0 to 255).
|
|
- **Decay**: determines the diminishing time for the sound. the higher the value, the longer the decay (0 to 255).
|
|
- **Sustain**: sets the volume level at which the sound stops decaying and holds or also decays, but with different speed (0 to 255).
|
|
- **Sustain rate**: sets the speed at which the sound decays after reaching sustain volume level. (0 to 255).
|
|
- **Release**: determines the rate at which the sound fades out after note off. the higher the value, the longer the release (0 to 255).
|
|
- **Wave Mix Mode**: dictates how different waves on the same channel are mixed together.
|
|
- **Duty**: specifies the width of a pulse wave (0 to 65535).
|
|
- **Feedback**: specifies the feedback level (0 to 255).
|
|
- **Reset duty on new note**: overwrite current duty value with the one that is specified in the instrument on new note.
|
|
- only useful when using relative duty macro.
|
|
- **Absolute Duty Macro**: when enabled, the duty macro will go from 0 to 65535 (in other words, control the duty directly rather than being relative).
|
|
- **Ring Modulation**: when enabled, the channel's output will be multiplied with the source channel's.
|
|
- **Oscillator Sync**: enables oscillator hard sync. as the source 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.
|
|
- **Phase Modulation**: when enabled, the channel's phase will be modified with the source channel's signal (signal is taken from filtered channel's output if filters are enabled).
|
|
- **Separate noise pitch**: when enabled, the noise frequency/pitch will be controllable via special macros: **Noise Arpeggio** and **Noise Pitch**.
|
|
|
|
Then follow controls for each of the 4 filters:
|
|
|
|
- **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 65535).
|
|
- **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.
|
|
- **Output volume**: sets the filter output volume (0 to 255).
|
|
- **Distortion level**: dictates how hard the signal is distorted (soft clipping). distortion is slightly asymmetrical (0 to 255).
|
|
- **Absolute Cutoff Macro**: when enabled, the cutoff macro will go from 0 to 65535, and it will be absolute.
|
|
- **Change cutoff with pitch**: when enabled, the cutoff will be scaled according to the frequency offset from specified note.
|
|
- **Decrease cutoff when pitch increases**: if this is enabled, filter cutoff will decrease if you increase the pitch. if this is disabled, filter cutoff will increase if you increase the pitch.
|
|
- **Cutoff change center note**: this note marks the center frequency at which no cutoff scaling is happening. the further you go from it in each direction, the more the cutoff scaling will be.
|
|
- **Cutoff change strength**: how much cutoff will be scaled.
|
|
- **Change resonance with pitch**: when enabled, the resonance will be scaled according to the frequency offset from specified note.
|
|
- **Decrease resonance when pitch increases**: if this is enabled, filter resonance will decrease if you increase the pitch. if this is disabled, filter resonance will increase if you increase the pitch.
|
|
- **Resonance change center note**: this note marks the center frequency at which no resonance scaling is happening. the further you go from it in each direction, the more the resonance scaling will be.
|
|
- **Resonance change strength**: how much resonance will be scaled.
|
|
- **Filters connection matrix**: controls routing of the filters' signals.
|
|
- **In**: this column connects the filters to ADSR sound output.
|
|
- next 4 columns make up the inter-filters connection matrix.
|
|
- **Out**: this column connects the filters' output to final channel output.
|
|
|
|
|
|
### special noise LFSR configurations
|
|
|
|
this table contains a list of LFSR configurations that are automatically detected and brought to tune by Furnace. a short description is given. number needs to be pasted into **Noise LFSR bits** macro. it is recommended to place a single bar in **Noise Phase Reset** macro for the consistency of the wave.
|
|
|
|
| LFSR config | Description |
|
|
|--------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------:|
|
|
| 524288 | wave very close to [SID2](sid2.md) noise mode 1 wave. tonal, without very harsh overtones. |
|
|
| 541065280 | wave resembling vocals, has two main tones at least 2 octaves apart |
|
|
| 2068 | wave very close to SID2 noise mode 3 wave. tonal but with harsh timbre. |
|
|
| 66 | wave very close to SID2 noise mode 2 wave. timbre is somewhere in-between SID2's noise mode 1 and noise mode 3 waves. |
|
|
|
|
if you find more interesting waves, please contact LTVA or tildearrow, so they can be added to Furnace frequency correction routine and to this table.
|
|
|
|
## Filter `x` macros
|
|
|
|
- **Cutoff**: filter `x` cutoff sequence.
|
|
- **Resonance**: filter `x` resonance sequence.
|
|
- **Filter toggle**: turns filter `x` on and off.
|
|
- **Filter mode**: select filter `x` mode.
|
|
- **Distortion level**: filter `x` distortion level sequence.
|
|
- **Output Volume**: filter `x` output volume sequence.
|
|
- **Channel Input Connection**: connect filter `x` to channel ADSR output.
|
|
- **Channel Output Connection**: connect filter `x` output to final channel output.
|
|
- **Connection Matrix Row**: connect other filters' outputs to filter `x` input.
|
|
|
|
## Macros
|
|
|
|
- **Volume**: volume sequence.
|
|
- **Arpeggio**: pitch sequence.
|
|
- **Pitch**: fine pitch.
|
|
- **Duty**: pulse width sequence.
|
|
- **Waveform**: select the waveform used by instrument.
|
|
- in wavetable channel mode controls the wavetable index.
|
|
- **Special Wave**: select the special wave used by instrument.
|
|
- **Noise Arpeggio**: noise pitch sequence.
|
|
- this macro is visible only if **Separate noise pitch** option is enabled. otherwise noise pitch is controlled by **Arpeggio** and **Pitch** macros.
|
|
- **Noise Pitch**: fine pitch.
|
|
- this macro is visible only if **Separate noise pitch** option is enabled.
|
|
- **Panning (left)**: output level for left channel.
|
|
- **Panning (right)**: output level for right channel.
|
|
- **Channel Inversion**: invert signal of left and right channels.
|
|
- **Key On/Off**: envelope release/start again control.
|
|
- **Special**: ring, oscillator sync and phase modulation selector.
|
|
- **Ring Mod Source**: ring modulation source channel.
|
|
- **Hard Sync Source**: oscillator sync source channel.
|
|
- **Phase Mod Source**: phase modulation source channel.
|
|
- **Feedback**: feedback sequence
|
|
- **Phase Reset**: trigger restart of waveform.
|
|
- **Noise Phase Reset**: trigger restart of noise accumulator and LFSR.
|
|
- **Envelope Reset**: trigger restart of envelope (unlike key on/off, envelope is forced to restart from 0 volume level no matter which volume it is outputting now).
|
|
- **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.
|
|
- **Sustain Rate**: sets envelope sustain rate.
|
|
- if you modify sustain rate when envelope is in sustain phase it immediately changes.
|
|
- **Release**: sets envelope release speed.
|
|
- if you modify release speed when envelope is in release phase it immediately changes.
|
|
- **Noise LFSR bits**: sets feedback bits of noise LFSR.
|
|
- **1-Bit Noise**: controls noise mode.
|
|
- in wavetable channel mode it's called **Sample Mode**, and macro controls wave/PCM mode of the last channel.
|
|
- **Wave Mix**: select the waveform mix mode.
|