5.1 HGTF file format

HGTF (HARK General Transfer Function) file format is a RIFF (Resource Interchange File Format)-like binary file format and is used for LocalizeMUSIC source localization transfer function files, GHDSS  sound source separation transfer function files and separation matrix files. Its data structure is shown in Table 5.2.

Table 5.2: Data structure of HGTF (generic transfer function)

Identifier “HARK”

4 bytes

Size after size form type

4 bytes

d

Form type "HGTF"

4 bytes

a

fmt sub chunk (required)

t

(Format ID, number of microphones)

a

(base data such as sampling frequency)

c

M2PG/GTK/SM sub chunk (exclusive)

h

 

u

 

n

SPEC sub chunk (exists only when M2PG is available)

k

(additional information)

 

 

Versions of the form type "HGTF" are 3 types as follows.

M2PG (MUSIC 2D Polar Grid) is used for source localization transfer function files for the LocalizeMUSIC module. GTF (GHDSS  Transfer Function) and SM (Separation Matrix ) are used for the sound source separation transfer function files for GHDSS  and separation matrix files for GHDSS , respectively. fmt is the basic sub chunk used to enter fundamental data. Its details are shown in Table 5.3. Further, the data chunk size is the total size minus the 4 bytes of chunk name and the 4 bytes of chunk size.

Table 5.3: Definitions of fmt sub chunk

Type

Value

char[4]

"fmt"

int 

Size of chunk, 24+12*$Nmic$ [bytes]

short[2]

fmt version (major, minor)

int 

Format ID (0 undefined, 1 M2PG, 2 GTF, 3 SM)

int 

Number of microphones (Nmic)

int 

FFT length [sample] (Nfft)

int 

Impulse response length [sample]

int 

Sampling frequency [Hz]

Vector3[nmic]

Coordinateof microphone position[m]

The M2PG/GTF/SM sub chunk is a chunk that stores the data of individual files (source localization transfer function file, sound source separation transfer function file and separation matrix file). It is further described in the following section. SPEC is used to enter additional information such as file generation conditions. Table 5.4 shows the formats of SPEC. The null terminator is added after each item, the character code is ASCII (in general, only single byte characters such as alphanumerics are used) and the linefeed code is LF.

Table 5.4: Definitions of SPEC sub chunk

Type

Value

char[4]

"SPEC"

int 

Size of chunk, 1,551 [bytes]

short[2]

SPEC version (major, minor)

char[11]

Creation date (Example 2009/05/19)

char[128]

Location (Example Smart room)

A char[128]

robot (Example HRP-2, SIG2, $\cdots $)

Type of char[128]

microphone array (Example 8ch circular, 8ch cubic, $\cdots $)

char[128]

Creator (Example Kazuhiro Nakadai)

char[1024]

Memorandum (Parameters of TF creation of MUSIC)