ADPCM (Adaptive Differential Pulse Code Modulation). Dictionary of Terms and Abbreviations in Radiocommunication



ADPCM (Adaptive Differential Pulse Code Modulation) – Adaptive Differential Pulse Code Modulation. ITU-standardized method for encoding an analog signal (speech) into digital form with a bandwidth of 32 Kbit/s (half the standard PCM bandwidth).

ADPCM is a method of encoding an audio signal that improves efficiency compared to conventional PCM (Pulse Code Modulation) by encoding not the absolute values of the signal but the differences between them, with the quantization step adapting to the dynamics of the signal.

1. Background: Why ADPCM is Needed

Conventional PCM stores each amplitude sample directly. For example, for 16-bit mono audio with an 8 kHz sampling rate:

In audio, adjacent samples are often similar. Instead of storing absolute values, one can store differences — this is the idea of DPCM. ADPCM is an improvement over DPCM that also adjusts the quantization step depending on the signal.

2. Main Concept of ADPCM

  1. Take the difference between the current sample and the predicted one.
  2. Quantize this difference with a variable step.
  3. Transmit the quantized index (usually 4 bits).
  4. The decoder reconstructs the signal using the same step adjustment algorithm.
   -----------¬
X> ¦ Difference¦ > Quantization > Code (4 bits)
   ¦(X - Pred) ¦
   L-----T-----
         v
     Step update

3. ADPCM Mathematics

Let:

Encoder

  1. Prediction: hx[n] = x[n-1] (simplest case).
  2. Difference: d[n] = x[n] - hx[n].
  3. Normalization: d_q = d[n] / Δ[n] > round to an integer.
  4. Encoding: store d_q in 4-bit form.
  5. Step adaptation:
    • If |d_q| is large — increase Δ[n+1].
    • If |d_q| is small — decrease Δ[n+1].

Decoder

  1. Read code d_q.
  2. Restore the difference: ~d = d_q x Δ[n].
  3. Find the restored sample: ~x[n] = hx[n] + ~d.
  4. Update step Δ[n+1] using the same algorithm.

4. Example

Initial data: 100, 102, 105, 107, 108
Initial step: Δ = 2
Predictor: previous value

nx[n]Preddd_q = d/ΔCodeΔ (new)
01001000000002
1102100+2100013
2105102+3100014
3107105+2100014
4108107+1000003

5. ADPCM Variants

6. Applications