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.

commodore-amigacustom-chipsaudiosoundcommodore1985–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

Channel Stereo Typical use
0 Left Melody/effects
1 Right Melody/effects
2 Right Bass/drums
3 Left Bass/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. Each Paula timer tick advances one sample:

Sample rate = Clock / Period

PAL clock:  3,546,895 Hz
NTSC clock: 3,579,545 Hz
Period PAL rate Note equivalent
124 28,604 Hz maximum DMA-driven rate
214 16,575 Hz
428 8,287 Hz C-2 base (ProTracker MOD reference)
856 4,143 Hz C-1

Channel registers

Each channel has dedicated registers:

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

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

Volume control

Value Level
0 Silent
64 Maximum
>64 Wraps (avoid)

Audio modulation

Paula supports hardware modulation between adjacent channel pairs (channel 0 modulates channel 1, channel 2 modulates channel 3). Mode is selected via ADKCON bits — set USE0V1/USE2V3 for amplitude modulation, USE0P1/USE2P3 for period modulation.

Mode ADKCON bit Effect
AM USE0V1 / USE2V3 Channel N’s output value drives channel N+1’s volume in real time
FM USE0P1 / USE2P3 Channel N’s output value drives channel N+1’s period in real time

Setting both bits for a pair routes the modulation source through both: the modulating channel does not output audio while it’s acting as a modulator. Rarely used in games but powerful for synthesis — particularly useful for vibrato (FM) and tremolo (AM) without CPU intervention.

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:

Function Purpose
Disk I/O Floppy drive data transfer
Serial RS-232 communication
Interrupts CIA 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