This document describes a soundfile information chunk that may be added
to WAVE-EX soundfiles to indicate the intended positions (azimuths and
elevations) of the speakers. This information can be used for guidance
when positioning speakers for optimal playback of the soundfile. It
can be used to give the listener more precise information than the
"SPEAKER_FRONT_LEFT", etc provided by dwChannelMask.
Elevations would typically be zero, and are included to accommodate
formats which purloin the Centre-Front and/or LFE channels to feed
elevated speakers.
typedef struct
{
char ID[4]; /* 'SPOS' */
unsignedInt32 dataSize; /* the size of the chunk */
unsignedInt32 version; /* version of the SPOS chunk */
signedInt32 azimuths[FormatChunk.nChannels]; /* speaker azimuths */
signedInt32 elevations[FormatChunk.nChannels]; /* speaker elevations */
} SPOSchunk;
<SPOSchunk.ID>
The character array 'SPOS', for chunk identification.
<SPOSchunk.dataSize>
The size of the data section of the chunk. It does not include the
8 bytes used by <SPOSchunk.ID> and <SPOSchunk.dataSize>.
<SPOSchunk.version>
Indicates the version of the SPOS chunk. This allows anything after
<SPOSchunk.version> to be redefined for future needs. This document
describes version 1.
<SPOSchunk.azimuths>
An array for speaker azimuths, one azimuth per speaker. Values are
integer degrees in either the range -180 to +180 or 0 to +360. Zero
azimuth is Centre-Front, with positive angles measured counter-clockwise.
Values are in the same channel/speaker order as the samples are interleaved.
<SPOSchunk.elevations>
An array for speaker elevations, one elevation per speaker. Values
are integer degrees in the range -90 to +90. Zero elevation is the
horizon, with positive angles measured up. Elevations would typically be
zero. Values are in the same channel/speaker order as the samples are
interleaved.