Bit Crusher (8-Bit Arcade) — User Guide
Digital degradation with true time-domain bit-depth quantization and sample-and-hold reduction, plus an alternate stepped spectral-shaping mode.
What this does
Time Domain mode is the actual bit crusher. It reduces amplitude resolution with a selectable quantizer and can hold each sample value for several samples, creating the stair-step timing and aliasing associated with sample-rate reduction.
Stepped Spectral Shaping is a different effect. It applies a staircase of gain values across a selected frequency range. It does not quantize spectral magnitude, phase, or spectral word length.
Quick start
- In Praat, select exactly one Sound.
- Run
Bit_Crusher__8-Bit_Arcade_.praat. - Choose a preset, or leave Manual for direct control.
- For classic bit crushing, use Time Domain mode and adjust Bit_depth and Sample_rate_reduction.
- Choose the output-level behavior and click OK.
Processing modes
Time Domain — bit crushing
The signal follows this path:
Bit_depth controls the amplitude grid. Lower values create larger amplitude steps and stronger quantization distortion.
Sample_rate_reduction is a whole-number hold factor. A value of 4 keeps one sample value for four original samples. The Sound object itself stays at its original sample rate; the displayed “effective SR” is the original rate divided by the hold factor.
Quantizer modes
| Mode | Behavior |
|---|---|
| Symmetric, zero-preserving | Recommended. Symmetric positive/negative codes with an exact zero. Uses 2^bits − 1 levels, so silence remains exactly silent. |
| Signed PCM | Uses exactly 2^bits signed codes including zero. The negative extreme reaches −1; the positive extreme is slightly below +1. |
| Legacy v0.3 | Preserves the older response for compatibility. It uses 2 × 2^bits + 1 levels and also contains zero. |
Stepped Spectral Shaping
The sound is transformed to a Spectrum. Inside Lower_frequency … Upper_frequency, each FFT bin is multiplied by a gain determined by its position in that range. The gain changes in discrete steps from 0 to 1.
outside selected range → × Outside_range_multiplier
The same gain is applied to the real and imaginary components, so the spectral phase is retained. FFT zero-padding is trimmed after resynthesis so the output returns to the input duration.
Presets
| Preset | Mode | Bit depth | Hold | Band limit |
|---|---|---|---|---|
| Manual | Uses the form values | Form value | Form value | Form value |
| Classic 8-bit | Time Domain | 8 | 1× | Off |
| Subtle (12-bit) | Time Domain | 12 | 1× | Off |
| Heavy (4-bit) | Time Domain | 4 | 2× | Off |
| Extreme (2-bit) | Time Domain | 2 | 4× | Off |
| Telephone | Time Domain | 8 | 4× | 300–3400 Hz |
| Crunch (6-bit) | Time Domain | 6 | 3× | Off |
Parameters
| Parameter | Default | Meaning |
|---|---|---|
| Preset | Manual | Selects Manual or one of six built-in Time Domain settings. |
| Mode | Time Domain | Actual bit crushing or stepped spectral gain shaping. |
| Bit_depth | 8 | Whole number from 1 to 24. Used only in Time Domain mode. |
| Sample_rate_reduction | 1 | Whole-number sample-and-hold factor. 1 = no hold reduction. |
| Quantizer_mode | Symmetric | Selects the amplitude-code mapping used by Time Domain mode. |
| Band_limit_before_crushing | Off | Applies a Hann band-pass before Time Domain quantization. Uses Lower/Upper frequency. |
| Lower_frequency | 200 Hz | Lower edge for spectral shaping, or for the optional pre-crush band limit. |
| Upper_frequency | 3000 Hz | Upper edge; values above Nyquist are clamped to Nyquist. |
| Quantization_steps | 2 | Whole number ≥1. In spectral mode this produces steps + 1 staircase gain levels. |
| Outside_range_multiplier | 0.5 | Gain applied outside the selected range in spectral mode. Must be ≥0. |
| Output_level_mode | None | Leave level unchanged, attenuate only above a ceiling, or normalize every non-silent result to the ceiling. |
| Ceiling_peak | 0.99 | Target used by Safety ceiling or Peak normalize. Valid range: >0 to 1. |
| Draw_visualization | On | Draws waveform comparison, zoom, and summary. |
| Play_after_processing | On | Plays the final Sound after processing. |
Output & visualization
- Name:
<source>_crushed_<preset>. - Duration: preserved.
- Sample rate: preserved.
- Channels: every source channel is processed independently and retained.
- Time domain: the original Sound start time is restored after processing.
Output level
| Mode | Behavior |
|---|---|
| None | No automatic level change. |
| Safety ceiling | Attenuates only when the current peak exceeds Ceiling_peak; quieter results are not boosted. |
| Peak normalize | Every non-silent result is scaled to Ceiling_peak, up or down. |
Visualization
The Picture window shows:
- the complete original and processed waveforms on a shared amplitude scale;
- a side-by-side zoom of the first up-to-50 ms, also on the same shared scale;
- a summary of the active mode, quantization or spectral settings, input/output peaks, output-level action, and channel count.
The visualization uses the final signal after the selected output-level stage.