Skip to content

AMS Codec

The AMS (Amplitude Media Stream) codec is Amplitude's custom audio compression format. It provides a good balance between compression ratio, decode speed, and audio quality for game sound effects and music.

Overview

Property Value
Algorithm ADPCM (Adaptive Differential Pulse-Code Modulation)
Compression ~4:1 vs 16-bit PCM
Decode speed Very fast (single multiply-accumulate per sample)
Seeking Sample-accurate
Bit depth 16-bit equivalent

Encoding

Use the amac CLI tool to create AMS files:

# Basic encoding
amac -e input.wav output.ams

# High quality with increased look-ahead
amac -e -5 input.wav output.ams

# Disable noise shaping (faster encode, slightly lower quality)
amac -e -f input.wav output.ams

# Custom block size
amac -e -b 12 input.wav output.ams

Encoding Parameters

Parameter Default Description
Look-ahead level (-0…-8) -3 Look-ahead level for better prediction. Higher values improve quality at the cost of encode time.
Noise shaping (-f disables it) Enabled Applies noise shaping to push quantization error into less audible frequencies.
-b, --block-size-shift 0 (auto) Controls the ADPCM block size as a power-of-two shift. Must be in [8, 15]; 0 computes it automatically from channel count and sample rate.
-r, --resample Disabled Resamples the input to a target sample rate ([8000, 384000] Hz) before encoding.

See the amac reference for the full flag list.

Decoding

The AMS decoder is included in Amplitude by default. It is automatically selected for files with the .ams extension.

{
  "id": 1,
  "name": "compressed_sfx",
  "path": "sounds/explosion.ams"
}

File Format

The AMS file format consists of:

AMS Header
├── Magic number (4 bytes): "AMS\0"
├── Version (2 bytes)
├── Sample rate (4 bytes)
├── Channels (2 bytes)
├── Bits per sample (2 bytes)
├── Total frames (8 bytes)
├── Block size (4 bytes)
├── Look-ahead (4 bytes)
│
ADPCM Blocks
├── Block 1: predictor state + compressed samples
├── Block 2: predictor state + compressed samples
├── ...

Each block starts with a fresh predictor state, allowing sample-accurate seeking to any block boundary.

Performance

Operation Relative Cost
AMS decode ~1.5× faster than MP3 decode
AMS decode ~10× faster than Vorbis decode
AMS encode ~5× faster than Vorbis encode

The decode speed makes AMS ideal for games with many simultaneous sounds or tight CPU budgets.

Quality

AMS is a lossy format. The quality is comparable to:

  • IMA ADPCM (similar algorithm, but AMS uses improved prediction)
  • Low-bitrate MP3 (~96–128 kbps for music)

AMS is not suitable for:

  • Professional music mastering (use uncompressed WAV)
  • Content requiring transparent quality (use FLAC or WAV)
  • Heavy transient material (drums, impacts may show artifacts)

When to Use AMS

Use Case Recommendation
Sound effects (gunshots, UI) ✅ Excellent
Ambient loops ✅ Good
Music (mobile) ✅ Acceptable
Music (desktop/console) ⚠️ Consider FLAC or uncompressed
Voice/dialogue ✅ Good

Next Steps