# Differential pulse-code modulation
<!-- MICROSIMGEN:BEGIN v1.7 — generated by g08_place_microsims.py; three.js first (§15); do not hand-edit inside -->
## Microsims — p5.js
### Differential pulse-code modulation (p5.js) · `DPCM`
<div class="microsim-player">
<iframe src="https://editor.p5js.org/sciencenibber/full/96Qmg0ppt" width="100%" height="480" frameborder="0" loading="lazy" sandbox="allow-scripts allow-same-origin" title="Differential pulse-code modulation — p5.js microsim"></iframe>
</div>
*Quantize the difference from a prediction rather than the sample itself, exploiting correlation to save bits.*
**Open in the editor:** [▶ fork this sketch](https://editor.p5js.org/sciencenibber/sketches/96Qmg0ppt) · movement *I · Sampling, quantization & data conversion* · library `p5js`
### Related microsims
Live sims on neighbouring articles — 6 of them inside this article's own Wikipedia link tree:
- [[Analog_signal]] *(in tree)*
- [[Companding]] *(in tree)*
- [[Convolution]] *(in tree)*
- [[Data_compression]] *(in tree)*
- [[Delta_modulation]] *(in tree)*
- [[Discrete_cosine_transform]] *(in tree)*
*Sim hosted off-article; the article owns the reference, not the runtime (WIKI_RULES §10.4). Placed by `g08_place_microsims.py`.*
<!-- MICROSIMGEN:END -->
## Links (Wikipedia order)
<!-- injected from _registry/childlinks/Differential_pulse-code_modulation.json (2026-07-30T02:09:12Z) -->
`842_(compression_algorithm)` · `A-law_algorithm` · `Adaptive_Huffman_coding` · `Adaptive_coding` · `Adaptive_differential_pulse-code_modulation` · `Algebraic_code-excited_linear_prediction` · [[Analog_signal]] · `Arithmetic_coding` · `Asymmetric_numeral_systems` · `Audio_codec` · `Average_bitrate` · `Bell_Labs` · `Bit_rate` · `Brotli` · `Burrows–Wheeler_transform` · `Byte-pair_encoding` · `Bzip2` · `C._Chapin_Cutler` · `Canonical_Huffman_code` · `Chain_code` · `Chroma_subsampling` · `Code-excited_linear_prediction` · `Coding_tree_unit` · `Color_space` · [[Companding]] · `Compressed_data_structure` · `Compressed_suffix_array` · `Compression_artifact` · `Constant_bitrate` · `Context_mixing` · `Context_tree_weighting` · [[Convolution]] · [[Data_compression]] · `Data_compression_symmetry` · `Daubechies_wavelet` · `David_A._Huffman` · `Deblocking_filter` · `Deflate` · `Delta-sigma_modulation` · `Delta_encoding` · [[Delta_modulation]] · `Derivative` · `Dictionary_coder` · `Digital_signal_(signal_processing)` · [[Discrete_cosine_transform]] · `Discrete_sine_transform` · [[Discrete_wavelet_transform]] · `Display_resolution` · `Dynamic_Markov_compression` · [[Dynamic_range]] · `Elias_gamma_coding` · `Embedded_zerotrees_of_wavelet_transforms` · [[Entropy_(information_theory)]] · `Entropy_coding` · `Exponential-Golomb_coding` · `FM-index` · [[Fast_Fourier_transform]] · [[Feedback]] · `Fibonacci_coding` · `Film_frame` · `Fourier_transform` · `Fractal_compression` · `Frame_rate` · `Golomb_coding` · `Grammar-based_code` · `Huffman_coding` · `Hutter_Prize` · [[Image_compression]] · `Image_resolution` · `Incremental_encoding` · [[Information_theory]] · `Integral` · `Interlaced_video` · `Kolmogorov_complexity` · `LHA_(file_format)` · `LZ4_(compression_algorithm)` · `LZ77_and_LZ78` · `LZFSE` · `LZMA` · `LZRW` · `LZWL` · `LZX` · `Lapped_transform` · `Latency_(audio)` · `Lempel–Ziv–Oberhumer` · `Lempel–Ziv–Stac` · `Lempel–Ziv–Storer–Szymanski` · `Lempel–Ziv–Welch` · `Levenshtein_coding` · `Line_spectral_pairs` · `Linear_predictive_coding` · `Log_area_ratio` · `Lossless_compression` · `Lossy_compression` · `Macroblock` · `Mark_Adler` · `Modified_Huffman_coding` · `Modified_discrete_cosine_transform` · `Motion_compensation` · `Motion_estimation` · `Move-to-front_transform` · `Mu-law_algorithm` · [[Nyquist–Shannon_sampling_theorem]] · `PAQ` · `Peak_signal-to-noise_ratio` · `Phil_Katz` · `Pixel` · `Prediction_by_partial_matching` · `Prefix_code` · `Psychoacoustics` · `Pulse-code_modulation` · `Pyramid_(image_processing)` · `Quantization_(image_processing)` · [[Quantization_(signal_processing)]] · `Range_coding` · `Rate–distortion_theory` · `Re-Pair` · `Redundancy_(information_theory)` · `Run-length_encoding` · [[Sampling_(signal_processing)]] · `Sequitur_algorithm` · `Set_partitioning_in_hierarchical_trees` · `Shannon_coding` · `Shannon–Fano_coding` · `Shannon–Fano–Elias_coding` · [[Signal]] · `Silence_compression` · `Smallest_grammar_problem` · `Snappy_(compression)` · `Sound_quality` · [[Speech_coding]] · `Standard_test_image` · `Sub-band_coding` · `Texture_compression` · `Timeline_of_information_theory` · `Transform_coding` · `Tunstall_coding` · `Unary_coding` · `Universal_code_(data_compression)` · `Variable_bitrate` · `Video` · `Video_codec` · `Video_compression_picture_types` · `Video_quality` · `Warped_linear_predictive_coding` · `Wavelet_transform` · `Zstd`
> Signal Processing concept · part of the Signal Processing Portal · movement I · !73 計算 keisan.svg
<!-- RENDER-THUMB:START -->
!480
*Rendered from the live microsim (▶ motion).*
<!-- RENDER-THUMB:END -->
## See it next
[](Oversampling)
*→ Oversampling*
<!-- VISUAL-LINK:END -->
---
Back to Signal Processing Portal · the room · Semiotic gateway
<!-- REAL-GENERATIVE-MEDIA:START -->
## What it is
Differential pulse-code modulation (DPCM) is a signal-encoding technique that quantizes and transmits the difference between each sample and a predicted value rather than the absolute sample value.
## How it works / why it matters
Because successive samples of many signals (audio, images) are highly correlated, the prediction error is usually small, so DPCM can represent it with fewer bits than direct PCM for equivalent quality. An encoder forms a prediction from previously decoded samples, quantizes the residual, and the decoder reconstructs the signal by adding the residual back to its own prediction. Adaptive variants (ADPCM) adjust the quantizer step size or predictor coefficients to the signal, and delta modulation is the limiting one-bit case.
## Signs & universals
Instantiates: discretization · signal · amplitude · noise.
## Related
Builds on [[Quantization_(signal_processing)]] and [[Sampling_(signal_processing)]]; contrast with straight PCM. Related conversion topics include Oversampling and, in the reconstruction chain, Reconstruction filter. A Digital filter typically implements the predictor.
<!-- VISUAL-LINK:START -->
## From the Real GENERATIVE library
> Differential pulse-code modulation (DPCM) is a signal encoder that uses the baseline of pulse-code modulation (PCM) but adds some functionalities based on the prediction of the samples of the signal. The input can be an analog signal or a digital signal. ([Wikipedia](https://en.wikipedia.org/wiki/Differential_pulse-code_modulation))
<!-- REAL-GENERATIVE-MEDIA:END -->
<!-- CRAFT-LINK:START g12 -->
*Built to the [[WT!P5_js_Microsim_Master_Class|p5.js Master Class]].*
<!-- CRAFT-LINK:END -->
## Wikipedia : Wikitube
**Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Differential_pulse-code_modulation) : [Wikitube](https://en.wikitube.io/wiki/Differential_pulse-code_modulation)
## Previous hub tags
Tree parent: [[Information_theory]].
Legacy hubs: none.
---
*Sources: 1 legacy note. Minted wave 1, 2026-07-30 (v1.6 order).*