AEF file format: Difference between revisions
(Created page with "{{Stub}} '''.aef'' files describe audio environments: reverb settings, etc. Arx Fatalis only uses a single audio environment: <code>sfx/environment/alley.aef</code>") |
No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''.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. | |||
Arx Fatalis only uses a single audio environment | They are parsed in [https://github.com/arx/ArxLibertatis/blob/ArxFatalis-1.21/Sources/Athena/Athena_Environment.cpp#L73 <code>ATHENA::Environment::Load()</code>] in Arx Fatalis 1.21. | ||
Arx Fatalis only uses a single audio environment (<code>sfx/environment/alley.aef</code>) 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: | |||
{| class="wikitable" | |||
! Type | |||
! Description | |||
! EAX 2.0 EAXLISTENERPROPERTIES | |||
! EFX AL_EFFECT_REVERB | |||
|- | |||
| <b>f32</b> | |||
| Environment size | |||
| flEnvironmentSize = x | |||
| ''(unused)'' | |||
|- | |||
| <b>f32</b> | |||
| Reverb diffusion | |||
| flEnvironmentDiffusion = x | |||
| AL_REVERB_DIFFUSION = x | |||
|- | |||
| <b>f32</b> | |||
| High-frequency air absorption | |||
| flAirAbsorptionHF = x * -100 | |||
| AL_REVERB_AIR_ABSORPTION_GAINHF = pow(10, x * -100 / 2000) | |||
|- | |||
| <b>f32</b> | |||
| Reflection gain | |||
| lReflections = 2000 * log10(x) | |||
| AL_REVERB_REFLECTIONS_GAIN = x | |||
|- | |||
| <b>f32</b> | |||
| Reflection delay | |||
| flReflectionsDelay = x / 1000 | |||
| AL_REVERB_REFLECTIONS_DELAY = x / 1000 | |||
|- | |||
| <b>f32</b> | |||
| Reverb gain | |||
| lReverb = 2000 * log10(x) | |||
| AL_REVERB_LATE_REVERB_GAIN = x | |||
|- | |||
| <b>f32</b> | |||
| Reverb delay | |||
| flReverbDelay = x / 1000 | |||
| AL_REVERB_LATE_REVERB_DELAY = x / 1000 | |||
|- | |||
| <b>f32</b> | |||
| Decay time | |||
| flDecayTime = x / 1000 | |||
| AL_REVERB_DECAY_TIME = x / 1000 | |||
|- | |||
| <b>f32</b> | |||
| High-frequency decay time | |||
| flDecayHFRatio = (x / 1000) / flDecayTime | |||
| AL_REVERB_DECAY_HFRATIO = (x / 1000) / AL_REVERB_DECAY_TIME | |||
|} | |||
Additionally the following properties are hardcoded: | |||
{| class="wikitable" | |||
! 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 [https://kcat.strangesoft.net/misc-downloads/Effects%20Extension%20Guide.pdf OpenAL EFX documentation for detailed descriptions]. |
Latest revision as of 19:24, 14 May 2019
.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.