Most modern
digital audio compression CODECs are based around the same
basic principle. An audio
signal,
plotted on a
graph would look something like this: (vertical axis-magnitude, horizontal axis-time, dots represent the signal)
|
|. . . . .
| . . . . .
| . . . . .
|--.-----.-----.-----.-----.--
| . . . . .
| . . . . .
| . . . . .
|
Regular, uncompressed audio files work by converting the
analog signal into
digital, a process known as
sampling is used. The
ADC (
analog-to-
digital converter] measures the magnitude of the signal at regular intervals, and records these values into a
file, like this:
|
|. . . . .
| . . . . .
| . . . . .
|--.-----.-----.-----.-----.--
| . . . . .
| . . . . .
| . . . . .
|^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
S S S S S S S S S S S S S S S
3 |-3 | 0 | 3 |-3 | 0 | 3 |-3
0 -3 3 0 -3 3 0
While this process produces fairly good quality audio
reproduction, it tends to create
MASSIVE files. To create a
digital audio file at
CD quality requires that you
sample 44,000 times a second...a raw
digital audio file at that
quality is roughly 10 times larger than a regular everyday
MP3 (that's about 10 Mb for every minute of audio). Audio compression uses a method that's actually over 150 years old, developed by
Jean-Baptiste Joseph Fourier, a
French mathematician.
In 1822. Fourier discovered that you could describe any periodic function (such as our audio signal) with an infinite series (known as a fourier series) consisting of a fundamental sine or cosine wave and its harmonics. The series is basically the same for every wave, except for a constant at the beginning of each term, and a value describing the frequency of the wave. In layman's terms: we can plug a few numbers into our equation, and it'll reproduce the wave almost exactly the same as the original.
|
|. . . . .
| . . . . .
| . . . . .
|--.-----.-----.-----.-----.--
| . . . . .
| . . . . .
| . . . . .
|<------f(t)--------->|
We break our audio signal into
blocks (short bites of time), and the
computer examines each
block, and finds a group of constants to satisfy the
fourier series for that block, then moves on to the next block. The result? all we have to do is record our
constants and the length of our
blocks into a file, and tada...a
compressed audio file, which is miraculously much much smaller than the
raw digital audio file we started with.