The .EAR file defines the configuration of sound sources, listeners, surfaces and settings as it is defined in the modelling application. It is a little-endian binary file, designed to eventually make embedding binary data easy, for example audio streams. The lay-out of the file is based on a sequence of blocks with a 4 byte header and block length that contain a number of positional arguments. The arguments that are defined depend on the type of block. Each argument is again prefixed with a 4 byte type identifier. Strings are null-terminated and padded to fall between 4 byte alignment boundaries. All other types are a multitude of 4 bytes by nature.
.
0x2eE
0x45A
0x41R
0x52V
The file starts with a header and a version to identify the file. As of writing the version is always 0 (0x00 0x00 0x00 0x00).
0x56R
0x52S
0x53N
0x4ei
0x69n
0x6et
0x744
0x34
0x00
0x00
0x00
0x00
S
Several settings can be listed in the file that define the behaviour of the rendering application.
0x53E
0x45T
0x54
0x20length (UINT)0xXX 0xXX 0xXX 0xXX
s
0x73t
0x74r
0x72
0x20d
0x64e
0x65b
0x62u
0x75g
0x67
0x00
0x00
0x00i
0x69n
0x6et
0x744
0x34debug (UINT)0xXX 0xXX 0xXX 0xXX
Whether to print debugging output to stdout. 0 to disable, 1 to enable.
s
0x73t
0x74r
0x72
0x20a
0x61b
0x62s
0x73o
0x6fr
0x72p
0x70t
0x74i
0x69o
0x6fn
0x6e
0x00
0x00v
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34
alow (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34amid (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34ahigh (FLOAT)0xXX 0xXX 0xXX 0xXX
The air absorption for the external medium of the scene specified as three floating point numbers for the three frequency ranges
s
0x73t
0x74r
0x72
0x20d
0x64r
0x72y
0x79l
0x6ce
0x65v
0x76e
0x65l
0x6c
0x00
0x00
0x00
0x00f
0x66l
0x6ct
0x744
0x34drylevel (FLOAT)0xXX 0xXX 0xXX 0xXX
A debugging parameter to define to what extent direct sound is mixed in the final result
s
0x73t
0x74r
0x72
0x20s
0x73a
0x61m
0x6dp
0x70l
0x6ce
0x65s
0x73
0x00i
0x69n
0x6et
0x744
0x34samples (INT)0xXX 0xXX 0xXX 0xXX
The amount of rays to trace
s
0x73t
0x74r
0x72
0x20m
0x6da
0x61x
0x78t
0x74h
0x68r
0x72e
0x65a
0x61d
0x64s
0x73
0x00
0x00i
0x69n
0x6et
0x744
0x34threads (INT)0xXX 0xXX 0xXX 0xXX
The maximum amount of threads the application may use
s
0x73t
0x74r
0x72
0x20d
0x64e
0x65b
0x62u
0x75g
0x67d
0x64i
0x69r
0x72
0x00
0x00
0x00
0x00s
0x73t
0x74r
0x72
0x20path (STR)0xXX 0xXX 0xXX 0xXX
... (STR)0xXX 0xXX 0xXX 0xXX
The directory to store debugging output in
s
0x73t
0x74r
0x72
0x20f
0x66r
0x72e
0x65q
0x71
0x00
0x00
0x00
0x00v
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34low (FLOAT)0xXX 0xXX 0xXX 0xXX
f
0x66l
0x6ct
0x744
0x34mid (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34high (FLOAT)0xXX 0xXX 0xXX 0xXX
The center frequencies of the three frequency ranges. This parameter is used by the equalizer algorithm to split audio files into three frequency ranges.
K
This block defines the global key-frame time offsets for animated listeners and sound sources.
0x4bE
0x45Y
0x59S
0x53length (UINT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34time1 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34... (FLOAT)0xXX 0xXX 0xXX 0xXX
f
0x66l
0x6ct
0x744
0x34timen (FLOAT)0xXX 0xXX 0xXX 0xXX
As of writing there are two kinds of listeners:
O
0x4fU
0x55T
0x541
0x31length (UINT)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20path (STR)0xXX 0xXX 0xXX 0xXX... (STR)0xXX 0xXX 0xXX 0xXX
What follows is the positioning of the listener, which can either be static or animated.
v
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34x (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34y (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34
z (FLOAT)0xXX 0xXX 0xXX 0xXX
a
0x61n
0x6ei
0x69m
0x6dlength (UINT)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34x1 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34
y1 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34z1 (FLOAT)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34... (FLOAT)0xXX 0xXX 0xXX 0xXX
f
0x66l
0x6ct
0x744
0x34... (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34... (FLOAT)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34
xn (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34yn (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34zn (FLOAT)0xXX 0xXX 0xXX 0xXX
The number of animation frames in this block needs to be equal to the amount of key-frame time offsets that is defined by the Animation key-frames block.
O
0x4fU
0x55T
0x542
0x32length (UINT)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20path (STR)0xXX 0xXX 0xXX 0xXX... (STR)0xXX 0xXX 0xXX 0xXX
What follows is two times either an anim block or a vec3 block. The first block determines the positioning of the listener in a similar fashion as with the mono listener. The second block defines a vector that defines the orientation of the right ear of the listener. The definition the right ear is the same as that of the positioning, but the right ear is defined using (a sequence of) normalized directional vectors rather than Cartesian coordinates.
As of writing there are two kinds of listeners:
S
0x53S
0x53R
0x52C
0x43length (UINT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34gain (FLOAT)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20path (STR)0xXX 0xXX 0xXX 0xXX
... (STR)0xXX 0xXX 0xXX 0xXX
An equalizer algorithm will be used to separate the sound file into the three frequency ranges, using the center frequencies as defined in the Settings block.
S
0x53R
0x52C
0x433
0x33length (UINT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34gain (FLOAT)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20pathlow (STR)0xXX 0xXX 0xXX 0xXX
... (STR)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20pathmid (STR)0xXX 0xXX 0xXX 0xXX... (STR)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20pathhigh (STR)0xXX 0xXX 0xXX 0xXX
... (STR)0xXX 0xXX 0xXX 0xXX
A sound file the explicitly defines input for the three different frequency bands.
M
A material defines the percentages of energy being reflected, refracted and absorbed when a sound ray hits a mesh triangle. The exponent defines to what extent rays are diffusely scattered or reflected mirror-like. The absorption of the material is calculated as a = 1 - (relf+refr).
0x4dA
0x41T
0x54
0x20length (UINT)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20name (STR)0xXX 0xXX 0xXX 0xXX... (STR)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33
f
0x66l
0x6ct
0x744
0x34refllow (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34reflmid (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34reflhigh (FLOAT)0xXX 0xXX 0xXX 0xXX
v
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34refrlow (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34refrmid (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34
refrhigh (FLOAT)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34explow (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34expmid (FLOAT)0xXX 0xXX 0xXX 0xXX
f
0x66l
0x6ct
0x744
0x34exphigh (FLOAT)0xXX 0xXX 0xXX 0xXX
M
Followed by an optional amount of additional triangles. This block defines the Cartesian coordinates of the triangles of a sound reflecting surface. The material string references a Material block by name.
0x4dE
0x45S
0x53H
0x48length (UINT)0xXX 0xXX 0xXX 0xXXs
0x73t
0x74r
0x72
0x20material (STR)0xXX 0xXX 0xXX 0xXX... (STR)0xXX 0xXX 0xXX 0xXXt
0x74r
0x72i
0x69
0x20
v
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34x1,1 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34y1,1 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34
z1,1 (FLOAT)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34x1,2 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34y1,2 (FLOAT)0xXX 0xXX 0xXX 0xXX
f
0x66l
0x6ct
0x744
0x34z1,2 (FLOAT)0xXX 0xXX 0xXX 0xXXv
0x76e
0x65c
0x633
0x33f
0x66l
0x6ct
0x744
0x34x1,3 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34
y1,3 (FLOAT)0xXX 0xXX 0xXX 0xXXf
0x66l
0x6ct
0x744
0x34z1,3 (FLOAT)0xXX 0xXX 0xXX 0xXX