A large part of interpreting Audio IFF files revolves around the two
concepts of sample points and sample frames.
A sample point is a value representing a sample of a sound at a given
point in time. Each sample point is stored as a linear, 2's-complement
value which may be from 1 to 32 bits wide, as determined by sampleSize in
the Common Chunk.
Sample points are stored in an integral number of contiguous bytes. One-
to eight-bit wide sample points are stored in one byte, 9- to 16-bit wide
sample points are stored in two bytes, 17- to 24-bit wide sample points
are stored in three bytes, and 25- to 32-bit wide sample points are stored
in four bytes (most significant byte first). When the width of a sample
point is not a multiple of eight bits, the sample point data is left
justified, with the remaining bits zeroed. An example case is illustrated
in Figure 4. A 12-bit sample point, binary 101000010111, is stored left
justified in two bytes. The remaining bits are set to zero.
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | | | | | | | | | | | | | |
| 1 0 1 0 0 0 0 1 | 0 1 1 1 0 0 0 0 |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
<---------------------------------------------> <------------->
12 bit sample point is left justified rightmost
4 bits are
zero padded
Figure 4: 12-Bit Sample Point
For multichannel sounds, single sample points from each channel are
interleaved. A set of interleaved sample points is called a sample frame.
Single sample points from each channel are interleaved such that each
sample frame is a sample point from the same moment in time for each
channel available. This is illustrated in Figure 5 for the stereo (two
channel) case.
sample sample sample
frame 0 frame 1 frame N
_____ _____ _____ _____ _____ _____
| ch1 | ch2 | ch1 | ch2 | . . . | ch1 | ch2 |
|_____|_____|_____|_____| |_____|_____|
_____
| | = one sample point
|_____|
Figure 5: Sample Frames for Multichannel Sound
For monophonic sound, a sample frame is a single sample point. For
multichannel sounds, you should follow the conventions in Figure 6.
channel
1 2 3 4 5 6
_________ _________ _________ _________ _________ _________
| left | right | | | | |
stereo | | | | | | |
|_________|_________|_________|_________|_________|_________|
| left | right | center | | | |
3 channel | | | | | | |
|_________|_________|_________|_________|_________|_________|
| front | front | rear | rear | | |
quad | left | right | left | right | | |
|_________|_________|_________|_________|_________|_________|
| left | center | right | surround| | |
4 channel | | | | | | |
|_________|_________|_________|_________|_________|_________|
| left | left | center | right | right |surround |
6 channel | | center | | | center | |
|_________|_________|_________|_________|_________|_________|
Figure 6: Sample Frame Conventions for Multichannel Sound
Sample frames are stored contiguously in order of increasing time. The
sample points within a sample frame are packed together; there are no
unused bytes between them. Likewise, the sample frames are packed
together with no pad bytes.