Synth Channel Features
Each synth channel has:-
Two phase accumulator based oscillators: One for tone and one for noise LFSR clocking
- Frequency range: 0.001Hz to ~15kHz at default clock speed
-
5 waveform types (can be enabled in any combination):
- Pulse (with 16-bit pulse width control)
- Triangle
- Sawtooth
- Noise
- Special wave (58 different types including all OPL3 and OPZ waveforms, their clipped versions, cubed variations, and more)
-
Noise generation: From 30-bit LFSR
- Like C64, eight bits form 8-bit noise signal
- Adjustable feedback (any bit can be feedback bit)
- Some configurations produce tonal noise that Furnace automatically detects and tunes
- 1-bit noise mode available for AY-style noise
-
5 waveform mixing modes:
- 8580 SID (combined waves; bitwise AND with noise and special wave)
- Bitwise AND
- Bitwise OR
- Bitwise XOR
- Sum of oscillators’ signals
- Hard sync: Each channel can have any other channel as sync source (even itself)
-
Ring modulation: Each channel can have any other channel as modulation source (even itself)
- Self-modulation effectively squares the signal
-
Phase modulation: Each channel can have any other channel as modulation source (even itself)
- Self-modulation creates feedback-like effect
- Channel output after filters is used as modulation source
- ADSR envelope with sustain rate setting (decay speed during sustain phase)
-
4 independent filters:
- Each filter has its own cutoff, resonance, output volume, mode, on/off, and distortion
- Can be connected to channel’s ADSR output
- Output can be routed to final channel output
- Full connection matrix between filter outputs and inputs
- Distortion: Asymmetrical with hyperbolic tangent (positive) and exponential (negative)
- Filters can be chained for flexible subtractive synthesis or increased slope (12 dB/octave per filter)
- Multiple modes can be selected simultaneously (e.g., low+high = bandstop/notch)
- Adjustable feedback: Saves two previous outputs and adds them to accumulator before computing waveform
- Fine stereo panning control
- Channel inversion: Left and right signals can be inverted for “surround” sound
Wave Channel
The wave channel has all the above features except waveform generation, feedback, and noise generator.Effects
-
1xxx: Set filter 1 cutoff (range:000toFFF) -
2xxx: Set filter 2 cutoff (range:000toFFF) -
3xxx: Set filter 3 cutoff (range:000toFFF) -
4xxx: Set filter 4 cutoff (range:000toFFF) -
5xxx: Set duty cycle (range:000toFFF) -
60xx: Change wave (lower 5 bits)- Bit 0: Triangle
- Bit 1: Saw
- Bit 2: Pulse
- Bit 3: Noise
- Bit 4: Special wave
-
61xx: Change special wave (range:00to39) -
62xx: Modulation control (lower 3 bits)- Bit 0: Ring modulation
- Bit 1: Oscillator sync
- Bit 2: Phase modulation
-
63xy: Reset duty cyclex≠ 0: On new notey≠ 0: Now
-
64xx: Set ring modulation source channel (00to07, where07is self-modulation) -
65xx: Set hard sync source channel (00to06) -
66xx: Set phase modulation source channel (00to06) -
67xx: Set attack (range:00toFF) -
68xx: Set decay (range:00toFF) -
69xx: Set sustain level (range:00toFF) -
6Axx: Set sustain rate (range:00toFF) -
6Bxx: Set release (range:00toFF) -
6Cxx: Set waveform mix mode (range:00to04) -
6Dxx: Set noise LFSR feedback bits (low byte) (range:00toFF) -
6Exx: Set noise LFSR feedback bits (medium byte) (range:00toFF) -
6Fxx: Set noise LFSR feedback bits (high byte) (range:00toFF) -
70xx: Set noise LFSR feedback bits (highest bits) (range:00to3F) -
71xx: Set filter 1 resonance (range:00toFF) -
72xx: Set filter 2 resonance (range:00toFF) -
73xx: Set filter 3 resonance (range:00toFF) -
74xx: Set filter 4 resonance (range:00toFF) -
75xx: Set noise/wave channel mode (range:00to01)- Synth channels:
00= normal noise,01= 1-bit noise - Wave channel:
00= wavetable,01= streamed PCM sample
- Synth channels:
-
76xx: Set filter 1 output volume (range:00toFF) -
77xx: Set filter 2 output volume (range:00toFF) -
78xx: Set filter 3 output volume (range:00toFF) -
79xx: Set filter 4 output volume (range:00toFF) -
7Axx: Set filter 1 distortion (range:00toFF) -
7Bxx: Set filter 2 distortion (range:00toFF) -
7Cxx: Set filter 3 distortion (range:00toFF) -
7Dxx: Set filter 4 distortion (range:00toFF) -
7Exx: Set feedback (range:00toFF) -
7Fxx: Channel inversion control (lower 2 bits)- Bit 0: Invert right channel
- Bit 1: Invert left channel
-
A0xy: Set filter modex: Filter number (0-3)y(lower 3 bits):- Bit 0: Low pass
- Bit 1: Band pass
- Bit 2: High pass
-
A1xy: Set filter connectionx: Filter number (0-3)y(lower 2 bits):- Bit 0: Connect filter input to channel’s ADSR output
- Bit 1: Connect filter output to final channel output
-
A2xy: Set filter connection matrix rowx: Filter number (0-3)y(lower 4 bits):- Bit 0: Connect to filter 1 output
- Bit 1: Connect to filter 2 output
- Bit 2: Connect to filter 3 output
- Bit 3: Connect to filter 4 output
-
A3xy: Enable filterx: Filter number (0-3)y:0(disabled) or1(enabled)
-
A4xx: Pulse width slide up (xxis speed;A400stops) -
A5xx: Pulse width slide down (xxis speed;A500stops) -
A6xx: Filter 1 cutoff slide up (xxis speed;A600stops) -
A7xx: Filter 1 cutoff slide down (xxis speed;A700stops) -
A8xx: Filter 2 cutoff slide up (xxis speed;A800stops) -
A9xx: Filter 2 cutoff slide down (xxis speed;A900stops) -
AAxx: Filter 3 cutoff slide up (xxis speed;AA00stops) -
ABxx: Filter 3 cutoff slide down (xxis speed;AB00stops) -
ACxx: Filter 4 cutoff slide up (xxis speed;AC00stops) -
ADxx: Filter 4 cutoff slide down (xxis speed;AD00stops) -
AExx: Tone phase reset (xxis tick number) -
AFxx: Noise phase reset (xxis tick number) -
B0xx: Envelope reset (xxis tick number) -
B1xy: Filter cutoff scaling controlx: Filter number (0-3)y(lower 2 bits):- Bit 0: Enable cutoff scaling
- Bit 1: Inverse cutoff scaling
-
B2xy: Filter resonance scaling controlx: Filter number (0-3)y(lower 2 bits):- Bit 0: Enable resonance scaling
- Bit 1: Inverse resonance scaling
Chip Configuration
Quarter clock speed: Make chip run at quarter the default clock rate (1MHz is default)- Lowers CPU load almost 4 times
- Filters may become unstable or have different timbre at high cutoff/resonance
- Only affects playback mode; not applied when rendering to audio file
