RasterCore

Paula: The Amiga's Sonic Soul

:: SysOp

The 8-Bit DMA Revolution

In the landscape of 1980s computing, sound was often an afterthought. The IBM PC had a simple beeper; the C64 had the (admittedly brilliant) synthesizer-based SID chip. The Amiga, however, took a radically different approach with Paula (MOS Technology 8364). Instead of synthesizing waveforms from scratch, Paula was designed to play back digital recordings—samples.

Paula brought the concept of “Wavetable Synthesis” to the masses. It featured four independent channels of 8-bit Digital-to-Analog conversion (DAC), driven by Direct Memory Access (DMA). This meant the Amiga could sound like a piano, a drum kit, or a human voice, all simultaneously.

The Architecture of Sound

Paula’s four channels were hard-wired for stereo separation:

  • Channels 0 & 3: Left Speaker
  • Channels 1 & 2: Right Speaker

This hard-panning gave Amiga music a very wide, distinct stereo field (sometimes too wide, leading users to mix the signals to mono).

Key Technical Specs

  • Resolution: 8-bit signed linear PCM (Values -128 to +127).
  • Volume: 6 hardware volume levels (0-64).
  • Sampling Rate: Variable. Driven by the system clock (approx 3.5 MHz NTSC / 3.54 MHz PAL) divided by a period value.
  • Max Frequency: Roughly 28 kHz (Nyquist limit of the standard DMA fetch rate), though software tricks could push this higher.

The Variable Rate Engine

Unlike modern audio hardware which runs at a fixed rate (e.g., 44.1 kHz) and uses software interpolation to change pitch, Paula was a Variable Rate system.

To play a note at a higher pitch, Paula simply fetched the data bytes from RAM faster. To play a lower note, it fetched them slower. This resulted in zero CPU overhead for pitch shifting—it was all done in silicon. It also gave Amiga samples a characteristic “crispness” (or “crunchiness” at low notes) because there was no interpolation smoothing out the edges of the waveform.

Programming Paula: The Registers

Controlling Paula was done by writing to the custom chip registers. A sound was defined by three things: Where it is, how long it is, and how fast to play it.

; 68000 Assembly: Playing a Sample on Channel 0
; Registers typically relative to $DFF000

    ; 1. Define the Location (Pointer)
    ; Note: Samples must be in Chip RAM (first 512KB/1MB)
    move.l  #my_sample_data, AUD0LCH(a5)

    ; 2. Define the Length
    ; Note: Length is in WORDS (16-bit), not bytes! 
    ; A 1000-byte sample has a length of 500.
    move.w  #500, AUD0LEN(a5)

    ; 3. Define the Period (Pitch)
    ; Formula: Period = Clock_Constant / Frequency_Hz
    ; PAL Clock Constant = 3,546,895
    ; For Middle C (261.6 Hz): Period = 13558
    move.w  #13558, AUD0PER(a5)

    ; 4. Define Volume (0-64)
    move.w  #64, AUD0VOL(a5)

    ; 5. Start the DMA
    ; DMACON Register: Bit 15 (Set), Bit 0 (Audio Ch 0)
    move.w  #$8001, DMACON(a5)

Once triggered, Paula would fetch the sample data automatically. By default, when it reached the end of the length defined in AUD0LEN, it would loop back to the beginning of the pointer. This made creating looping instrument samples (like strings or flutes) trivial.

Modulation and Effects

While Paula was primarily a sample player, clever coding allowed for synthesis-like effects.

  • AM (Amplitude Modulation): One channel could modulate the volume of another.
  • FM (Frequency Modulation): One channel could modulate the period (pitch) of another.

This allowed the Amiga to produce metallic, bell-like tones similar to the Yamaha DX7 or AdLib cards, although this feature was rarely used in games compared to standard sampling.

The “LED” Filter

The Amiga 500 had a famous low-pass hardware filter connected to the audio output. It was designed to smooth out the harsh high-frequency noise of 8-bit aliases. The power LED on the A500 was actually wired to this filter circuit!

  • LED Bright: Filter OFF (Brighter sound, max 28kHz).
  • LED Dim: Filter ON (Muffled sound, cutoff around 7kHz). Newer games and demos often turned the filter off (by manipulating a CIA chip bit) to get crisp percussion, resulting in the power light dimming or flashing during disk loading.

Paula’s Other Jobs

Efficiency was key in the Amiga design, so Paula didn’t just handle audio. It was the system’s “Peripherals Controller.”

  1. Disk Drive: Paula contained the logic for reading raw MFM data from the floppy drive. The CPU had to decode the sectors, but Paula handled the high-speed bitstream.
  2. Serial Port: The UART for RS-232 communications was inside Paula.
  3. Potentiometers: Paula read the analog resistance values from the game port (used for analog joysticks or the mouse buttons).

Legacy of the MOD Format

Paula’s 4-channel architecture is the direct reason why the MOD music format exists. Karsten Obarski’s Ultimate Soundtracker was essentially a user interface for Paula’s registers.

  • The 4 vertical tracks in a tracker correspond exactly to Channels 0, 1, 2, and 3.
  • The hexadecimal volume commands (00-40) map directly to the AUDxVOL register (0-64).
  • The period values in MOD files are the exact values written to AUDxPER.

This is why MOD files played back on a PC often sounded “wrong” in the early days—software mixers had to simulate what Paula did in hardware.


Source & Further Reading

  • Amiga Hardware Reference Manual: Chapter 5, “Audio Hardware”.
  • “The Amiga Audio Hardware”: A deep-dive by Christian Zigotzky. External Link
  • “Amiga Audio Filter”: Technical circuit analysis of the A500 low-pass filter.
  • “8-Bit Music Theory”: YouTube channel analyzing the composition techniques used with chips like Paula.