AEF file format

From Arx Libertatis Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

.aef files describe EAX 2.0 audio environments: reverb settings, etc.

See Common file format types for a description of the type names used here.

They are parsed in ATHENA::Environment::Load() in Arx Fatalis 1.21.

Arx Fatalis only uses a single audio environment (sfx/environment/alley.aef) even though the game ships with multiple environments. Audio environments can be enabled/disabled using the EAX setting.

Audio environments are stored as nine 32-bit IEEE 754 floating point numbers without any additional header or magic number:

Type Description EAX 2.0 EAXLISTENERPROPERTIES EFX AL_EFFECT_REVERB
f32 Environment size flEnvironmentSize = x (unused)
f32 Reverb diffusion flEnvironmentDiffusion = x AL_REVERB_DIFFUSION = x
f32 High-frequency air absorption flAirAbsorptionHF = x * -100 AL_REVERB_AIR_ABSORPTION_GAINHF = pow(10, x * -100 / 2000)
f32 Reflection gain lReflections = 2000 * log10(x) AL_REVERB_REFLECTIONS_GAIN = x
f32 Reflection delay flReflectionsDelay = x / 1000 AL_REVERB_REFLECTIONS_DELAY = x / 1000
f32 Reverb gain lReverb = 2000 * log10(x) AL_REVERB_LATE_REVERB_GAIN = x
f32 Reverb delay flReverbDelay = x / 1000 AL_REVERB_LATE_REVERB_DELAY = x / 1000
f32 Decay time flDecayTime = x / 1000 AL_REVERB_DECAY_TIME = x / 1000
f32 High-frequency decay time flDecayHFRatio = (x / 1000) / flDecayTime AL_REVERB_DECAY_HFRATIO = (x / 1000) / AL_REVERB_DECAY_TIME

Additionally the following properties are hardcoded:

EAX 2.0 EAXLISTENERPROPERTIES EFX AL_EFFECT_REVERB
dwEnvironment = 0
dwFlags = EAXLISTENERFLAGS_DECAYHFLIMIT AL_REVERB_DECAY_HFLIMIT = AL_TRUE
flRoomRolloffFactor = 1.3 AL_REVERB_ROOM_ROLLOFF_FACTOR = 1.3
lRoom = 0 AL_REVERB_GAIN = 1
lRoomHF = 0 AL_REVERB_GAINHF = 0.8
AL_REVERB_DENSITY = 1

The EAXLISTENERPROPERTIES column lists the is the EAX property the value was mapped to in AF 1.21 and the AL_EFFECT_REVERB column lists the EFX property it is currently mapped to in Arx Libertatis. Refer to the OpenAL EFX documentation for detailed descriptions.