Bitcrusher

Reduces bit depth and sample rate: 2^bits levels, sample-and-hold with jitter, optional triangular dither.

  • Effect
  • Since 0.2.0
  • lo-fi
  • distortion
  • bitcrusher
  • decimate
  • dither

Open in TuneToys

Bitcrusher as the Patch draws it, at default values: inlets on the left, outlets on the right.

Bitcrusher makes a sound lo-fi by quantizing it to fewer levels and sampling it less often, the grit of early samplers and game consoles.

What it does#

A sample-and-hold clock running at Rate captures every channel at once, like the converter of an old sampler. Each capture is rounded to a two's-complement grid of 2^Bits levels from -1 up to one step below full scale, and the held value plays until the next capture. Silence stays silent at any bit depth. Jitter varies each hold period randomly, from a generator seeded by the node's path so every host and replay agrees. Dither adds triangular noise of one step before rounding, which trades the harsh, signal-dependent distortion of a coarse grid for a steady hiss.

Graphical preview#

The screen compares a quiet 1 kHz sine with its crushed output over 4 ms, including Mix. Drag the inner right rail for Bits and the outer rail for Rate, or focus either handle and use the arrow keys (Shift for fine adjustment). This is an example of the nominal clock and quantizer; Jitter and Dither are not drawn. The same face is available in node cards, Properties and Frames.

When to use it#

Use it for lo-fi drums, chiptune leads and aliased, metallic textures. For smooth saturation use Drive; follow the crusher with a State-variable filter low-pass to tame the aliasing.

Ports#

PortDirectionSignalLanes
audioInputAudioInferred from the cable
audioOutputAudioInferred from the cable

Parameters#

ParameterLabelRangeDefaultUnitScaleNotes
bitsBits1 to 248linearQuantizer resolution: 2^bits levels across full scale, silence stays silent. Fractional values give intermediate steps.
rate_hzRate50 to 9600012000HzlogSample-and-hold rate. At or above the engine rate every sample passes.
jitterJitter0 to 10linearRandom variation of each hold period, up to half a period either way at 1.
ditherDither0 to 10linearAdds triangular dither of one step before quantizing. It sounds as noise on silence, so its tail is infinite. Choices: 0 Off, 1 On.
mixMix0 to 11linearDry/wet blend.

Bits (bits)#

The quantizer resolution, from 1 to 24. Whole values give exactly 2^bits levels: 1 bit is two levels, 8 bits is 256. Fractional values give intermediate step sizes, so the depth can be swept smoothly.

Rate (rate_hz)#

The sample-and-hold rate, from 50 Hz to 96 kHz. Each held value lasts the engine rate divided by Rate samples; at or above the engine rate every sample passes.

Jitter (jitter)#

Random variation of each hold period, up to half a period either way at 1. It blurs the pitched whine that a steady low Rate adds.

Dither (dither)#

Off or On. On adds triangular dither of one step before rounding. Quiet details below one step survive as a noisy version of themselves instead of vanishing, and the dither keeps sounding on silence, so the node then reports an infinite tail.

Mix (mix)#

Dry and crushed blend.

Tips#

  • Lower Rate first for the aliasing character, then lower Bits for grit.
  • Very low bit depths are loud and harsh; turn Mix down or follow with a filter.

See also#

Drive, State-variable filter, Noise.

Help patches

Each help patch is an ordinary Toy that teaches one idea. The diagram shows the Patch; the preview shows its Frame. Open it in TuneToys to play and edit it.

1. Fewer bits, lower rate

beginner Teaches: bits, rate_hz, mix

A plucked sine crushed to fewer levels and a lower sample rate.

Patch: Oscillator audio output connected to Envelope audio input. Envelope audio output connected to Bitcrusher audio input. Bitcrusher audio output connected to Patch outputs audio input.
Connections as text
  • Oscillator audio output connected to Envelope audio input
  • Envelope audio output connected to Bitcrusher audio input
  • Bitcrusher audio output connected to Patch outputs audio input
  • A pure sine makes the steps easy to hear as new harmonics.
  • Bits sets how many levels remain; Rate sets how often a new value is held.
Frame preview: Fewer bits, lower rateFrame “Fewer bits, lower rate” with 5 elements: knob Bits, face Bitcrusher, text heading, knob Mix, knob Rate.5BitsfaceFEWER BITS, LOWER RATE1Mix6000 HzRate
Frame preview (static). Controls show their default values.

Open in TuneToys

2. Jitter and dither

intermediate Teaches: jitter, dither

A quiet plucked sine near the crusher's step size, with jitter and dither.

Patch: Oscillator audio output connected to Envelope audio input. Envelope audio output connected to Bitcrusher audio input. Bitcrusher audio output connected to Patch outputs audio input.
Connections as text
  • Oscillator audio output connected to Envelope audio input
  • Envelope audio output connected to Bitcrusher audio input
  • Bitcrusher audio output connected to Patch outputs audio input
  • At four bits the quiet decay vanishes into steps without dither.
  • Dither keeps it as hiss; Jitter blurs the whine of the slow hold clock.
Frame preview: Jitter and ditherFrame “Jitter and dither” with 3 elements: toggle Dither, text heading, knob Jitter.DitherJITTER AND DITHER0.4Jitter
Frame preview (static). Controls show their default values.

Open in TuneToys

  • Drive Four nonlinear shapers with DC removal, tone and latency-aligned filtered oversampling.
  • Filter Low-pass, high-pass, band-pass, notch, all-pass or morphing filter with resonance, 12/24 dB slopes, curve editing and output RTA.
  • Noise Deterministic white noise with independent channel and instance streams.

Edit this page on GitHub

esc

↑ ↓ move↩ open⌘↩ new tabesc close