AEF file format

From Arx Libertatis Wiki
Jump to navigation Jump to search

.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.