Pulse code modulation

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search

Pulse-code modulation (PCM) refers to audio that is digitally recorded in discrete samples as opposed to being synthesized on the fly through a programmable sound generator, FM synthesis, or subtractive synthesis. PCM data can be stored in many different formats at different levels of quality, but, unlike synthesized music, the playback is essentially identical on all devices, the only difference can come from the quality of the speaker. However, the benefit of identical output on all devices comes at a cost of much larger files.



In differential pulse-code modulation, not the actual pulses, but their distance to each other is stored, producing smaller but also muffled sounds. The RP2A03 implements DPCM.


In adaptive differential pulse-code modulation, whenever a distance is particularly high or low, all further distances are scaled up or down, producing less muffled sounds at the same size. X68000, Sound Blaster and WAV implement ADPCM.


The S-SMP's patented ADPCM variant is known as bit rate reduction.



On early hardware, games output PCM to the audio device, one byte at a time, at a very fast and steady rate. This slows down the game and is limited to rather static screens.

Such devices include Paula, Speech Thing, Sound Blaster, most PC Speakers (if not all), and, mostly unofficially, programmable sound generators: On AY-3-8910, POKEY, VIC, 6581 SID and RP2A03, changing the volume produces a click; the greater the change, the louder, and these clicks can be used for PCM. On SN76489, TED, OPL2 and 8580 SID, clicks are only audible while a synthesized sound additionally plays.


On hardware that supports DMA (direct memory access), games only need to output where in RAM the desired sound data starts, how much it is, the desired playback rate, and the audio device will play it on its own, leaving the game time for large animations.

Such devices include S-SMP, and again, RP2A03, Paula and Sound Blaster. The latter two notify the game whenever the sound data ends or loops, over a mechanism called IRQ (interrupt request). Since the PC is expandable, Sound Blaster owners must often go through an audio setup and select their card's DMA channel and IRQ line.