91 lines
2.6 KiB
Markdown
91 lines
2.6 KiB
Markdown
# Sound: EFX {#EFX}
|
|
|
|
## EFX
|
|
|
|
EFX is a system in [OpenAL](OpenAL.md) that delivers high quality sound reverberation. It is the successor to Creative's [Environmental Audio Extensions](EAX.md).
|
|
|
|
**Nuclide** offers abstraction for new and old entities relying on **digital signal processing**.
|
|
|
|
## Entities interacting with EFX
|
|
|
|
**env_sound** is most commonly used to change the environmental sound processing of a room/area.
|
|
|
|
In GoldSrc, it'll specify which enumeration of DSP preset to use for audio playback, in Nuclide however we just map it to a definitions file in the filesystem. See **EFX files** below.
|
|
|
|
## EFX defintion files
|
|
|
|
Entities that specify a EFX type, usually want to load one from a file.
|
|
|
|
Here's an example one, `efx/city.efx`:
|
|
|
|
```
|
|
density "1.000000"
|
|
diffusion "0.500000"
|
|
gain "0.316200"
|
|
gain_hf "0.398100"
|
|
gain_lf "1.000000"
|
|
decay_time "1.490000"
|
|
decay_hf_ratio "0.670000"
|
|
decay_lf_ratio "1.000000"
|
|
reflections_gain "0.073000"
|
|
reflections_delay "0.007000"
|
|
reflections_pan "0 0 0"
|
|
late_reverb_gain "0.142700"
|
|
late_reverb_delay "0.011000"
|
|
late_reverb_pan "0 0 0"
|
|
echo_time "0.250000"
|
|
echo_depth "0.000000"
|
|
modulation_time "0.250000"
|
|
modulation_depth "0.000000"
|
|
air_absorbtion_hf "0.994300"
|
|
hf_reference "5000.000000"
|
|
lf_reference "250.000000"
|
|
room_rolloff_factor "0.000000"
|
|
decay_limit "1"
|
|
```
|
|
|
|
Most of the parameters are self explanatory.
|
|
|
|
## Console Variables
|
|
|
|
With the cvar `s_al_debug` set to 1 you'll get an overlay of information about which EFX file is currently being used, as well as what every single parameter is set to.
|
|
|
|
You can refresh EFX definitions with a map restart.
|
|
|
|
## Legacy translation table
|
|
|
|
*This section describes behaviour specific to converting entities from Half-Life based levels into the Nuclide environment.*
|
|
|
|
Here you can see which **efx file** is responsible for handling a legacy **env_sound** room-type.
|
|
|
|
**roomtype ID**|**EFX file**
|
|
:-----:|:-----:
|
|
0|efx/default.efx
|
|
1|efx/gs\_generic.efx
|
|
2|efx/gs\_metal\_s.efx
|
|
3|efx/gs\_metal\_m.efx
|
|
4|efx/gs\_metal\_l.efx
|
|
5|efx/gs\_tunnel\_s.efx
|
|
6|efx/gs\_tunnel\_m.efx
|
|
7|efx/gs\_tunnel\_l.efx
|
|
8|efx/gs\_chamber\_s.efx
|
|
9|efx/gs\_chamber\_m.efx
|
|
10|efx/gs\_chamber\_l.efx
|
|
11|efx/gs\_bright\_s.efx
|
|
12|efx/gs\_bright\_m.efx
|
|
13|efx/gs\_bright\_l.efx
|
|
14|efx/gs\_water1.efx
|
|
15|efx/gs\_water2.efx
|
|
16|efx/gs\_water3.efx
|
|
17|efx/gs\_concrete\_s.efx
|
|
18|efx/gs\_concrete\_m.efx
|
|
19|efx/gs\_concrete\_l.efx
|
|
20|efx/gs\_big1.efx
|
|
21|efx/gs\_big2.efx
|
|
22|efx/gs\_big3.efx
|
|
23|efx/gs\_cavern\_s.efx
|
|
24|efx/gs\_cavern\_m.efx
|
|
25|efx/gs\_cavern\_l.efx
|
|
26|efx/gs\_weirdo1.efx
|
|
27|efx/gs\_weirdo2.efx
|
|
28|efx/gs\_weirdo3.efx |