Microphone Array Geometry Descriptor Format
A USB audio microphone array must describe itself to the system to which it is connected. This means that the parameters that are required to describe the array must be embedded in the array device itself. Array geometry information is retrieved from the device by using a GET_MEM request.
Information about USB audio device geometry must be provided in a standard format. As such, USB microphone arrays that are intended to work with the Windows Vista USB audio class driver must provide a descriptor that uses the information format that is defined in the following table.
Offset | Field | Size | Value | Description |
---|---|---|---|---|
0 |
guidMicArrayID |
16 |
Globally unique identifier (GUID) |
A unique ID that marks the beginning of the microphone array information in memory ( {07FE86C1-8948-4db5-B184-C5162D4AD314} ). |
16 |
wDescriptorLength |
2 |
Number |
The length in bytes of the microphone array information, including the GUID and length fields. |
18 |
wVersion |
2 |
Binary coded decimal (BCD) |
The version number of the microphone array specification, followed by this descriptor. |
20 |
wMicArrayType |
2 |
Number |
The following values are defined: 00: Linear. 01: Planar. 02: 3-dimensional (3D). 03-FFFF: Reserved |
22 |
wWorkVertAngBeg |
2 |
Number |
The start of the work volume vertical angle. |
24 |
wWorkVertAngEnd |
2 |
Number |
The end of the work volume vertical angle. |
26 |
wWorkHorAngBeg |
2 |
Number |
The beginning of the work volume horizontal angle. |
28 |
wWorkHorAngEnd |
2 |
Number |
The end of the work volume horizontal angle. |
30 |
wWorkFreqBandLo |
2 |
Number |
The lower bound of the work frequency range. |
32 |
wWorkFreqBandHi |
2 |
Number |
The upper bound of the work frequency range. |
34 |
wNumberOfMics |
2 |
Number |
The number of individual microphone definitions that follow. |
36 |
wMicrophoneType(0) |
2 |
Number |
A number that uniquely identifies the type of microphone 0: 00: Omni-Directional 01: SubCardioid 02: Cardioid 03: SuperCardioid 04: HyperCardioid 05: 8 Shaped 0F - FF: Vendor defined |
38 |
wXCoordinate(0) |
2 |
Number |
The x-coordinate of microphone 0. |
40 |
wYCoordinate(0) |
2 |
Number |
The y-coordinate of microphone 0. |
42 |
wZCoordinate(0) |
2 |
Number |
The z-coordinate of microphone 0. |
44 |
wMicVertAngle(0) |
2 |
Number |
The main response axis (MRA) vertical angle of microphone 0. |
46 |
wMicHorAngle(0) |
2 |
Number |
The MRA horizontal angle of microphone 0. |
... |
... |
... |
... |
Microphone definitions 1 to n-2. |
34+((n-1)12) |
wMicType(n-1) |
Number |
A number that uniquely identifies the type of microphone n-1: 00: Omni-Directional 01: SubCardioid 02: Cardioid 03: SuperCardioid 04: HyperCardioid 05: 8 Shaped 0F - FF: Vendor defined |
|
36+((n-1)12) |
wXCoordinate(n-1) |
Number |
The x-coordinate of microphone n-1. |
|
38+((n-1)12) |
wYCoordinate(n-1) |
2 |
Number |
The y-coordinate of microphone n-1. |
40+((n-1)12) |
wZCoordinate(n-1) |
2 |
Number |
The z-coordinate of microphone n-1. |
42+((n-1)12) |
wMicVertAngle(n-1) |
2 |
Number |
The MRA vertical angle of microphone n-1. |
44+((n-1)12) |
wMicHorAngle(n-1) |
2 |
Number |
The MRA horizontal angle of microphone n-1. |
For a detailed example about how to use this information format in a descriptor for a 4-element microphone array, see Appendix A of the How to Build and Use Microphone Arrays for Windows Vista white paper.
Note
When you include a version number in the microphone array information, it allows the descriptor to be updated after the original specifications are implemented. The version number is a BCD value. For example, the current version (1.0) is represented as 0x0100.
The offset and size values are in bytes.
All angles are expressed in units of 1/10000 radians. For example, 3.1416 radians is expressed as 31416. The value can range from -31416 to 31416, inclusive.
X-y-z coordinates are expressed in millimeters. The value can range from -32767 to 32767, inclusive.
For information about the orientation, axes, and the positive directions of the angles of the coordinate system, see Appendix B in the microphone array white paper referenced above.
Frequency values are expressed in Hz. The range of frequency values is bounded only by the size of the field from wWorkFreqBandLo to wWorkFreqBandHi.