# ADPCM

ADPCM stands for **Adaptive Differential Pulse Code Modulation**, which is quite a mouthful. It is a method for encoding audio that improves on DPCM by adapting the step size of the quantization.

The encoder keeps track of the current step size. The difference of consecutive input samples is linearly quantized as a multiple of the current step size. The absolute value of this quantized value is then used to decide whether to increase or decrease the step size for the next sample. This functions as a crude envelope follower.

The encoder and decoder have to keep in sync regarding the step size. To reduce accumulated error, ADPCM does the same thing that DPCM does — the encoder has an embedded model of the decoder, and the difference filter uses the output sample of the embedded decoder instead of the input sample. This is mathematically equivalent to a huge feedback loop that takes the output of the decoder and feeds it back into the encoder.