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.