SimpleFreeFieldHRIR
Description
This conventions essentially defines the setup used to measure HRTFs in free field. The measured HRTFs are represented as FIR filters, with a single HRTF set of a listener per file. We defined this conventions to describe data from databases like ARI, LISTEN, FIU, CIPIC, and others.
In SimpleFreeFieldHRIR version 0.2, we used ListenerRotation to describe the different measurement directions, and the source was assumed to be in the center of the measurement setup. This, however, limited the use of SimpleFreeFieldHRIR, thus, in version 0.4, we use SourcePosition to represent the different HRTF directions. By doing so, more complex data can be described where the tilt of the head is varied, or the listener is not exactly in the center of the measurement setup.
In SimpleFreeFieldHRIR version 0.4, the currently most recent version, we adapted the conventions to SOFA 0.6. The most striking changes are:
- Source has been renamed to Origin (in order to reduce the confusion with the object source)
- SubjectID has been renamed to ListenerShortName (in order to be more consistent with the general naming of the metadata).
Version 0.4

This conventions essentially defines the setup used in the ARI, LISTEN, FIU, CIPIC, and other similar HRTF databases. The measurements are done in free field with a single excitation source assuming an omnidirectional loudspeaker. Human listeners are considered and thus, the number of receivers is two. Note that usually, only the apparent azimuth and elevation angles are provided and this information is modeled as the variation of the source position. This conventions can, however, also be used to describe more complex data where the tilt of the head is varied or the listener is not exactly in the center of the measurement setup. The measured HRTFs are represented as FIR filters, with a single HRTF set of a listener per file.
- General attributes: SOFAConventions: SimpleFreeFieldHRIR, Datatype: FIR, RoomType: free field, other general attributes...
- Listener: The listener is in the origin of the setup, facing in the direction of the y-axis. Thus, for default values, ListenerPosition=[0 0 0], ListenerView=[1 0 0], ListenerUp=[0 0 1], all given in cartesian coordinates.
- Receivers: Two receivers (=ears) on a head with radius H (in meter, default: 0.09): ReceiverPosition=[0 -H 0; 0 +H 0].
- Source: Source consists of a single emitter. For default values, EmitterPosition=[0 0 0] in cartesian coordinates. SourcePosition (in spherical coordinates!) varies corresponding to the different azimuth and elevation angles of the measurement directions. For default, SourcePosition=[0 0 1] (azimuth 0°, elevation 0°, distance 1 m). SourceUp and SourceView are not considered and optional.
| Name | Default | Flags | Dimensions | Type | Comment |
|---|---|---|---|---|---|
| GLOBAL:Conventions | SOFA | rm | attribute | ||
| GLOBAL:Version | 0.6 | rm | attribute | ||
| GLOBAL:SOFAConventions | SimpleFreeFieldHRIR | rm | attribute | This convention set is for HRIRs recorded under free-field conditions or other IRs created under conditions where room information is irrelevant | |
| GLOBAL:SOFAConventionsVersion | 0.4 | rm | attribute | ||
| GLOBAL:APIName | rm | attribute | |||
| GLOBAL:APIVersion | rm | attribute | |||
| GLOBAL:ApplicationName | attribute | ||||
| GLOBAL:ApplicationVersion | attribute | ||||
| GLOBAL:AuthorContact | m | attribute | |||
| GLOBAL:Comment | attribute | ||||
| GLOBAL:DataType | FIR | rm | attribute | ||
| GLOBAL:History | attribute | ||||
| GLOBAL:License | No license provided, ask the author for permission | m | attribute | ||
| GLOBAL:Organization | m | attribute | |||
| GLOBAL:References | attribute | ||||
| GLOBAL:RoomType | free field | m | attribute | ||
| GLOBAL:Origin | attribute | ||||
| GLOBAL:DateCreated | m | attribute | |||
| GLOBAL:DateModified | m | attribute | |||
| GLOBAL:Title | m | attribute | |||
| ListenerPosition | [0 0 0] | m | IC, MC | double | |
| ListenerPosition:Type | cartesian | m | attribute | ||
| ListenerPosition:Units | meter | m | attribute | ||
| ReceiverPosition | [0 -0.09 0; 0 0.09 0] | m | rCI, rCM | double | |
| ReceiverPosition:Type | cartesian | m | attribute | ||
| ReceiverPosition:Units | meter | m | attribute | ||
| SourcePosition | [0 0 1] | m | IC, MC | double | Source position is assumed to vary for different directions/positions around the listener |
| SourcePosition:Type | spherical | m | attribute | ||
| SourcePosition:Units | degree, degree, meter | m | attribute | ||
| EmitterPosition | [0 0 0] | m | eCI, eCM | double | |
| EmitterPosition:Type | cartesian | m | attribute | ||
| EmitterPosition:Units | meter | m | attribute | ||
| GLOBAL:DatabaseName | m | attribute | name of the database to which these data belong | ||
| GLOBAL:ListenerShortName | m | attribute | ID of the subject from the database | ||
| ListenerUp | [0 0 1] | m | IC, MC | double | |
| ListenerView | [1 0 0] | m | IC, MC | double | |
| ListenerView:Type | cartesian | m | attribute | ||
| ListenerView:Units | meter | m | attribute | ||
| Data.IR | [1 1] | m | mRn | double | |
| Data.SamplingRate | 48000 | m | I | double | |
| Data.SamplingRate:Units | hertz | m | attribute | ||
| Data.Delay | [0 0] | m | IR, MR | double |
Legend:
- Name: the name of the metadata
- A colon: the metadata is an attribute
- "GLOBAL:": the metadata is a global attribute
- "X:Y": the metadata is an attribute Y of the variable X
- No colon: the metadata is a variable
- Data.X: the metadata is structured within the data
- A colon: the metadata is an attribute
- Default: default value for the metadata
- An asterisk (*): special handling required, mentioned in the column Comment
- Flags:
- r: read-only, must be the default value
- m: mandatory, must be saved in the file
- Dimensions: dimensions of the metadata (see SOFA specifications for more explanations)
- lower case: the variable size in that dimension determines the dimension size in the file
- upper case: variable must be of that dimension (or one of these dimensions)
Old, deprecated versions
For historical reasons the older versions of the SimpleFreeFieldHRIR Convention are listed below.
Proposed for version 0.3 (deprecated)

This conventions essentially defines the setup used in the ARI, LISTEN, FIU, CIPIC, and other similar HRTF databases. The measurements are done in free field with a single excitation source assuming an omnidirectional loudspeaker. Human listeners are considered and thus, the number of receivers is two. Note that usually, only the apparent azimuth and elevation angles are provided and this information is modeled as the variation of the source position. This conventions can, however, also be used to describe more complex data where the tilt of the head is varied or the listener is not exactly in the center of the measurement setup. The measured HRTFs are represented as FIR filters, with a single HRTF set of a listener per file.
- General attributes: SOFAConventions: SimpleFreeFieldHRIR, Datatype: FIR, RoomType: free field, other general attributes...
- Listener: The listener is in the origin of the setup, facing in the direction of the y-axis. Thus, for default values, ListenerPosition=[0 0 0], ListenerView=[1 0 0], ListenerUp=[0 0 1], all given in cartesian coordinates.
- Receivers: Two receivers (=ears) on a head with radius H (in meter, default: 0.09): ReceiverPosition=[0 -H 0; 0 +H 0].
- Source: Source consists of a single emitter. For default values, EmitterPosition=[0 0 0] in cartesian coordinates. SourcePosition (in spherical coordinates!) varies corresponding to the different azimuth and elevation angles of the measurement directions. For default, SourcePosition=[0 0 1] (azimuth 0°, elevation 0°, distance 1 m). SourceUp, SourceView, and SourceRotation are not considered and optional.
| Name | Default | Flags | Dimensions | Type | Comment |
|---|---|---|---|---|---|
| GLOBAL:Conventions | SOFA | rm | attribute | ||
| GLOBAL:Version | 0.5 | rm | attribute | ||
| GLOBAL:SOFAConventions | SimpleFreeFieldHRIR | rm | attribute | This conventions is for HRIRs recorded under free-field conditions or other IRs created under conditions where room information is irrelevant | |
| GLOBAL:SOFAConventionsVersion | 0.3 | rm | attribute | ||
| GLOBAL:APIName | rm | attribute | |||
| GLOBAL:APIVersion | rm | attribute | |||
| GLOBAL:ApplicationName | m | attribute | |||
| GLOBAL:ApplicationVersion | m | attribute | |||
| GLOBAL:AuthorContact | m | attribute | |||
| GLOBAL:Comment | m | attribute | |||
| GLOBAL:DataType | FIR | rm | attribute | ||
| GLOBAL:History | m | attribute | |||
| GLOBAL:License | No license provided, ask the author for permission | m | attribute | ||
| GLOBAL:Organization | m | attribute | |||
| GLOBAL:References | m | attribute | |||
| GLOBAL:RoomType | free field | m | attribute | ||
| GLOBAL:Source | m | attribute | |||
| GLOBAL:TimeCreated | m | attribute | |||
| GLOBAL:TimeModified | m | attribute | |||
| GLOBAL:Title | m | attribute | |||
| ListenerPosition | [0 0 0] | m | IC, MC | double | |
| ListenerPosition:Type | cartesian | m | attribute | ||
| ListenerPosition:Units | meter | m | attribute | ||
| ReceiverPosition | [0 -0.09 0; 0 0.09 0] | m | rCI, rCM | double | |
| ReceiverPosition:Type | cartesian | m | attribute | ||
| ReceiverPosition:Units | meter | m | attribute | ||
| SourcePosition | [0 0 1] | m | IC, MC | double | Source position is assumed to vary for different directions/positions around the listener |
| SourcePosition:Type | spherical | m | attribute | ||
| SourcePosition:Units | degree, degree, meter | m | attribute | ||
| EmitterPosition | [0 0 0] | m | eCI, eCM | double | |
| EmitterPosition:Type | cartesian | m | attribute | ||
| EmitterPosition:Units | meter | m | attribute | ||
| GLOBAL:DatabaseName | m | attribute | name of the database to which these data belong | ||
| GLOBAL:SubjectID | m | attribute | ID of the subject from the database | ||
| ListenerUp | [0 0 1] | m | IC, MC | double | |
| ListenerView | [1 0 0] | m | IC, MC | double | |
| Data.IR | [1 1] | m | mRn | double | |
| Data.SamplingRate | 48000 | m | I | double | |
| Data.SamplingRate:Units | hertz | m | attribute | ||
| Data.Delay | [0 0] | m | IR, MR | double |
Legend:
- Name: the name of the metadata
- A colon: the metadata is an attribute
- "GLOBAL:": the metadata is a global attribute
- "X:Y": the metadata is an attribute Y of the variable X
- No colon: the metadata is a variable
- Data.X: the metadata is structured within the data
- A colon: the metadata is an attribute
- Default: default value for the metadata
- An asterisk (*): special handling required, mentioned in the column Comment
- Flags:
- r: read-only, must be the default value
- m: mandatory, must be saved in the file
- Dimensions: dimensions of the metadata (see SOFA specifications for more explanations)
- lower case: the variable size in that dimension determines the dimension size in the file
- upper case: variable must be of that dimension (or one of these dimensions)
Version 0.2 (deprecated)

This conventions essentially defines the setup used in the ARI, LISTEN, FIU, CIPIC, and other similar HRTF databases. The measurements are done in free field with a single excitation source assuming an omnidirectional loudspeaker. Human listeners are considered and thus, the number of receivers is two. Azimuth and elevation angles are varied and the tilt of the head is not considered during the measurement. The measured HRTFs are represented as FIR filters, with a single HRTF set of a listener per file.
- General attributes: SOFAConventions: SimpleFreeFieldHRIR, Datatype: FIR, RoomType: free field, other general attributes...
- Source: Source is in the origin of the setup and consists of a single emitter. For default values, SourcePosition: (0 0 0), and EmitterPosition: (0 0 0). SourceUp, SourceView, and SourceRotation are not considered and optional.
- Listener: The listener is in the measurement distance X (in meter) from the source, facing the source. For default values, we consider a single distance X, thus, ListenerPosition: (X 0 0), ListenerView: (0 0 0), ListenerUp: (X 0 1).
- Receivers: Two receivers (=ears) on a head with radius H (in meter): ReceiverPosition: (0 -H 0; 0 +H 0).
- The different azimuth and elevation angles of the measurement are described by the ListenerRotation as [M 3] matrix (in degrees). The coordinate type is DIN 9300.
| Name | Default | Flags | Dimensions | Type | Comment |
|---|---|---|---|---|---|
| GLOBAL_Conventions | SOFA | rm | |||
| GLOBAL_Version | 0.4 | rm | |||
| GLOBAL_SOFAConventions | SimpleFreeFieldHRIR | rm | |||
| GLOBAL_SOFAConventionsVersion | 0.2 | rm | |||
| GLOBAL_APIName | rm | Insert the API Name here | |||
| GLOBAL_APIVersion | rm | Insert the API Version here | |||
| GLOBAL_AuthorContact | m | ||||
| GLOBAL_License | No license provided, ask the author for permission | m | |||
| GLOBAL_Organization | m | ||||
| GLOBAL_RoomType | free field | m | |||
| GLOBAL_DataType | FIR | rm | |||
| GLOBAL_History | m | ||||
| GLOBAL_Source | m | ||||
| GLOBAL_Title | m | ||||
| GLOBAL_References | m | ||||
| GLOBAL_Comment | m | ||||
| GLOBAL_TimeCreated | m | will be updated when saving and not existing or empty | |||
| GLOBAL_TimeModified | m | will be updated each time when saving | |||
| GLOBAL_ApplicationName | m | ||||
| GLOBAL_ApplicationVersion | m | ||||
| GLOBAL_DatabaseName | m | ||||
| GLOBAL_SubjectID | m | ||||
| ListenerPosition | [1 0 0] | m | IC, MC | double | |
| ListenerPosition_Type | cartesian | m | |||
| ListenerPosition_Units | meter | m | |||
| ListenerUp | [0 0 1] | m | IC, MC | double | |
| ListenerView | [-1 0 0] | m | IC, MC | double | |
| ListenerRotation | [0 0 0] | m | IC, MC | double | |
| ListenerRotation_Type | din9300 | m | |||
| ListenerRotation_Units | degrees | m | |||
| ReceiverPosition | [0 -0.09 0; 0 0.09 0] | m | rCI, rCM | double | |
| ReceiverPosition_Type | cartesian | m | |||
| ReceiverPosition_Units | meter | m | |||
| SourcePosition | [0 0 0] | m | IC, MC | double | |
| SourcePosition_Type | cartesian | m | |||
| SourcePosition_Units | meter | m | |||
| EmitterPosition | [0 0 0] | m | eCI, eCM | double | |
| EmitterPosition_Type | cartesian | m | |||
| EmitterPosition_Units | meter | m | |||
| Data.IR | [1 1] | m | mRn | double | |
| Data.SamplingRate | 48000 | m | I | double | |
| Data.SamplingRate_Units | hertz | m | |||
| Data.Delay | [0 0] | m | IR, MR | double |
Legend:
- Name: the name of the metadata
- An underscore (_): the metadata is an attribute
- GLOBAL_: the metadata is a global attribute
- X_Y: the metadata is an attribute Y of the variable X
- No underscore: the metadata is a variable
- Data.X: the metadata is structured within the data
- An underscore (_): the metadata is an attribute
- Default: default value for the metadata
- An asterisk (*): special handling required, mentioned in the column Comment
- Flags:
- r: read-only, must be the default value
- m: mandatory, must be saved in the file
- Dimensions: dimensions of the metadata (see SOFA specifications for more explanations)
- lower case: the variable size in that dimension determines the dimension size in the file
- upper case: variable must be of that dimension (or one of these dimensions)
Version 0.1 (deprecated)
| Name | Default | Flags | Dimensions | Comment |
|---|---|---|---|---|
| GLOBAL_Conventions | SOFA | rm | ||
| GLOBAL_Version | 0.3 | rm | ||
| GLOBAL_SOFAConventions | SimpleFreeFieldHRIR | rm | ||
| GLOBAL_SOFAConventionsVersion | 0.1 | m | ||
| GLOBAL_APIName | * | rm | Insert the API Name here | |
| GLOBAL_APIVersion | * | rm | Insert the API Version here | |
| GLOBAL_ApplicationName | m | |||
| GLOBAL_ApplicationVersion | m | |||
| GLOBAL_AuthorContact | m | |||
| GLOBAL_License | No license provided, ask the author for permission | m | ||
| GLOBAL_Organization | m | |||
| GLOBAL_DatabaseName | m | |||
| GLOBAL_SubjectID | m | |||
| GLOBAL_RoomType | free field | m | ||
| GLOBAL_DataType | FIR | m | ||
| GLOBAL_History | ||||
| GLOBAL_Comment | ||||
| GLOBAL_DatabaseTimeCreated | * | m | will be updated when saving and not existing or empty | |
| GLOBAL_DatabaseTimeModified | * | m | will be updated each time when saving | |
| I | 1 | rm | I | |
| I_LongName | singleton dimension | rm | ||
| R | 2 | rm | R | |
| R_LongName | number of receivers | rm | ||
| E | 1 | rm | E | |
| E_LongName | number of emitters | rm | ||
| N | - | m | N | |
| N_LongName | time | m | ||
| N_Units | samples | m | ||
| M | - | m | M | |
| M_LongName | number of measurements | rm | ||
| C | 3 | rm | C | |
| C_LongName | coordinate triplet | rm | ||
| ListenerPosition | [1 0 0] | m | IC, MC | |
| ListenerPosition_Type | cartesian | m | ||
| ListenerPosition_Unitsmeter | m | |||
| ListenerUp | [1.2 0 1] | m | IC, MC | |
| ListenerUp_Type | cartesian | m | ||
| ListenerUp_Units | meter | m | ||
| ListenerView | [0 0 0] | m | IC, MC | |
| ListenerView_Type | cartesian | m | ||
| ListenerView_Units | meter | m | ||
| ListenerRotation | [0 0 0] | m | IC, MC | |
| ListenerRotation_Type | din9300 | m | ||
| ListenerRotation_Units | degrees | m | ||
| ReceiverPosition | [0 -0.09 0; 0 0.09 0] | m | rCI, rCM | |
| ReceiverPosition_Type | cartesian | m | ||
| ReceiverPosition_Units | meter | m | ||
| SourcePosition | [0 0 0] | m | IC, MC | |
| SourcePosition_Type | cartesian | m | ||
| SourcePosition_Units | meter | m | ||
| SourceUp | [0 0 1] | m | IC, MC | |
| SourceUp_Type | cartesian | m | ||
| SourceUp_Units | meter | m | ||
| SourceView | [1 0 0] | m | IC, MC | |
| SourceView_Type | cartesian | m | ||
| SourceView_Units | meter | m | ||
| EmitterPosition | [0 0 0] | m | eCI, eCM | |
| EmitterPosition_Type | cartesian | m | ||
| EmitterPosition_Units | meter | m | ||
| Data.IR | [1 1] | m | mRn | |
| Data.SamplingRate | 48000 | m | I | |
| Data.SamplingRate_Units | hertz | m |
Legend:
- Name: the name of the metadata
- An underscore (_): the metadata is an attribute
- GLOBAL_: the metadata is a global attribute
- X_Y: the metadata is an attribute Y of the variable X
- No underscore: the metadata is a variable
- Data.X: the metadata is structured within the data
- An underscore (_): the metadata is an attribute
- Default: default value for the metadata
- An asterisk (*): special handling required, mentioned in the column Comment
- Flags:
- r: read-only, must be the default value
- m: mandatory, must be saved in the file
- Dimensions: dimensions of the metadata (see SOFA specifications for more explanations)
- lower case: the variable size in that dimension determines the dimension size in the file
- upper case: variable must be of that dimension (or one of these dimensions)