Skip to content
Hardware

Paula: The Amiga's Voice

Four channels of sample-based audio

Paula delivered four independent 8-bit audio channels with DMA playback—giving the Amiga the most capable sound system of its generation.

Amiga custom-chipsaudiosoundcommodore 1985–present

Overview

Paula was years ahead of its time. While other computers synthesised sound, the Amiga played back digital samples directly from memory. Four independent channels, stereo output, and variable sample rates enabled music and sound effects that rivalled dedicated audio hardware.

Fast facts

  • Chip: 8364 (unchanged across OCS/ECS/AGA).
  • Channels: 4 independent voices.
  • Sample depth: 8-bit signed.
  • Sample rate: variable, up to ~28 kHz per channel.
  • Output: stereo (channels 0+3 left, 1+2 right).

Audio architecture

ChannelStereoTypical use
0LeftMelody/effects
1RightMelody/effects
2RightBass/drums
3LeftBass/drums

DMA playback

Paula plays samples without CPU intervention:

  1. Set sample start address and length.
  2. Set period (sample rate).
  3. Set volume.
  4. Enable DMA—Paula handles the rest.

Sample rate calculation

The period register determines playback rate:

Sample rate = Clock / (Period × 2)

PAL clock:  3,546,895 Hz
NTSC clock: 3,579,545 Hz
PeriodPAL rateNote equivalent
12414,306 Hz
2148,287 Hz
4284,143 HzC-2 base
8562,072 HzC-1

Channel registers

Each channel has dedicated registers:

RegisterOffsetPurpose
AUDxLCH+$00Sample address high
AUDxLCL+$02Sample address low
AUDxLEN+$04Sample length (words)
AUDxPER+$06Period (sample rate)
AUDxVOL+$08Volume (0-64)
AUDxDAT+$0ASample data (direct write)

Base addresses: $DFF0A0 (ch0), $DFF0B0 (ch1), $DFF0C0 (ch2), $DFF0D0 (ch3).

Volume control

ValueLevel
0Silent
64Maximum
>64Wraps (avoid)

Audio modulation

Paula supports hardware modulation between channel pairs:

ModeEffect
AMChannel N modulates volume of N+1
FMChannel N modulates period of N+1

Rarely used in games but powerful for synthesis.

Interrupt generation

Paula generates interrupts when:

  • A sample finishes playing.
  • A new sample buffer is needed.

This enables double-buffering for seamless playback.

MOD format connection

The ProTracker MOD format maps directly to Paula:

  • 4 channels match Paula’s hardware.
  • Period values in MOD = Paula period registers.
  • Volume 0-64 matches Paula’s range.
  • Sample data plays without conversion.

Additional functions

Paula also handles:

FunctionPurpose
Disk I/OFloppy drive data transfer
SerialRS-232 communication
InterruptsCIA and internal interrupt routing

Programming example

; Play a sample on channel 0
    lea     $dff0a0,a0          ; Channel 0 base
    move.l  #sample,AUD0LCH(a0) ; Sample address
    move.w  #length/2,AUD0LEN(a0) ; Length in words
    move.w  #428,AUD0PER(a0)    ; Period (C-2)
    move.w  #64,AUD0VOL(a0)     ; Full volume
    move.w  #$8201,$dff096      ; Enable DMA

See also