KSAUDIO_MICROPHONE_COORDINATES structure (ksmedia.h)
The KSAUDIO_MICROPHONE_COORDINATES structure specifies the type and the coordinates of a single microphone in the microphone array.
Syntax
typedef struct {
USHORT usType;
SHORT wXCoord;
SHORT wYCoord;
SHORT wZCoord;
SHORT wVerticalAngle;
SHORT wHorizontalAngle;
} KSAUDIO_MICROPHONE_COORDINATES, *PKSAUDIO_MICROPHONE_COORDINATES;
Members
usType
Specifies the type of microphone in use at this coordinate location. The value of this member is one of the KSMICARRAY_MICTYPE enumeration values shown in the following table.
Value | Microphone type |
---|---|
KSMICARRAY_MICTYPE_OMNIDIRECTIONAL | Omni directional |
KSMICARRAY_MICTYPE_SUBCARDIOID | Sub cardioid |
KSMICARRAY_MICTYPE_CARDIOID | Cardioid |
KSMICARRAY_MICTYPE_SUPERCARDIOID | Super cardioid |
KSMICARRAY_MICTYPE_HYPERCARDIOID | Hyper cardioid |
KSMICARRAY_MICTYPE_8SHAPED | 8-shaped |
KSMICARRAY_MICTYPE_VENDORDEFINED | 0x0F |
If the microphone is of type KSMICARRAY_MICTYPE_VENDORDEFINED, the value must be set to 0x0F. Additionally, the most significant bits will further define the type of microphone.
wXCoord
Specifies the signed X-coordinate of the microphone, in millimeters. Acceptable values range from -32768 to 32767, inclusive.
wYCoord
Specifies the signed Y-coordinate of the microphone, in millimeters. Acceptable values range from -32768 to 32767, inclusive.
wZCoord
Specifies the signed Z-coordinate of the microphone, in millimeters. Acceptable values range from -32768 to 32767, inclusive.
wVerticalAngle
Specifies a value between -15708 and +15708. When divided by 10,000, it gives a radian angle measurement.
wHorizontalAngle
Specifies a value between -31416 and +31416. When divided by 10,000, it gives a radian angle measurement.
Remarks
To better understand the descriptions for wHorizontalAngle and wVerticalAngle, consider the following diagram:
Let x be the axis which points from the center of the microphone array toward the most probable location of the user - that is, perpendicular to the screen. Positive is toward the user, negative is behind the screen. Let y by the horizontal axis perpendicular to the x-axis - that is, from the left of the screen to the right. Positive is to the user's right; negative is to the user's left. Let z be the vertical axis.
Now assume that there are three microphones in the array, as shown in the preceding diagram. And assume also, that one of the microphones (Mic 1) is pointed in a horizontal direction that is not parallel to the x-axis, as indicated by the blue center line through Mic 1. Now when you imagine a line that runs through the origin (0,0,0) of the (x,y,z) coordinate system and is parallel to the center line of Mic 1, you will find that there is a horizontal angle between the positive x-axis and the projection of the mic's center line onto the x-y plane. This angle is represented by wHorizontalAngle.
If one of the microphones, for example Mic 1, happens to be dipped downward, or raised up, then this microphone would also have a vertical angle between its center line and the projection of its center line onto the x-y plane. This angle is represented by wVerticalAngle.
For more information about how to process a microphone array in Windows, see the Microphone array support in Windows white paper.
Requirements
Requirement | Value |
---|---|
Header | ksmedia.h (include Ksmedia.h) |