Reverb notes

FMOD Studio API

Firelight Technologies FMOD Studio API

REVERB NOTES

Introduction

This section will discuss FMOD's reverb parameters focusing on the software (SFX) implementation.

The fields of FMOD_REVERB_PROPERTIES (found in 'fmod.h') control both hardware and software instances of reverb. Hardware reverbs have a few parameters that the software effect doesn't use, so you can ignore these for the purpose of this discussion. For example, EnvDiffusion is NOT used by the software reverb because it is only meaningful to Wii.

FMOD's software reverb DSP is controlled by parameters defined in the I3DL2 guidelines, which describe the reverberant environment of the listener.

Here's a list of the fields of FMOD_REVERB_PROPERTIES that currently have an effect and a description of what they do within the context of the software reverb. The descriptions are much the same as in 'fmod.h'.

 

Environment Turns the reverb off if set to -1
Room Room effect level at mid frequencies
RoomHF Relative room effect level at high frequencies
RoomLF Relative room effect level at low frequencies
DecayTime Reverberation decay time at mid frequencies
DecayHFRatio High-frequency to mid-frequency decay time ratio
Reflections Early reflections level relative to room effect
ReflectionsDelay Initial reflection delay time
Reverb Late reverberation level relative to room effect
ReverbDelay Late reverberation delay time relative to initial reflection
HFReference Reference high frequency (Hz) [see RoomHF]
LFReference Reference low frequency (Hz) [see RoomLF]
Diffusion Echo density in the late reverberation decay
Density Modal density in the late reverberation decay

Please note :

RoomRolloffFactor is a part of I3DL2, but has no effect within FMOD.

As with most reverberation models, the response is split into sections. This implementation has early reflections and late reverberation, each of which are composed of sets of delay lines having different delay and decay characteristics.

There are a few things to note here:

1) Room, RoomHF, RoomLF, Reflections and Reverb are all measured in milliBels, i.e. 100th of a deciBel, and they're all integers.
2) Room is the input gain
3) Reflections is a gain on the output of the early reflections subsystem
4) Reverb is a gain on the output of the late reverb subsystem
5) RoomLF and LFReference control a low frequency shelving filter on the input
6) RoomHF and HFReference control a high frequency shelving filter on the input
7) Diffusion and Density control the correlation among delay lines in the reverb subsystem

The FMOD_PRESET_* presets can be useful as examples of how these parameters change the nature of the reverb. They give quite a wide scope for representing different environments.

One more thing - it's important to distinguish between FMOD_REVERB_PROPERTIES and FMOD_REVERB_CHANNELPROPERTIES. The latter is just used for controlling the a channel's input gain to the reverb, and doesn't affect the characteristics of the reverb unit itself.

 

Converting FMOD Reverb parameters

Reverb parameters have changed in FMOD Studio. The following table shows how to convert FMOD_REVERB_PROPERTIES values from the FMOD Ex set of properties to the FMOD Studio set.
Property Units Range Conversion from previous FMOD Ex properties Clamp after conversion Label
DecayTime ms 100 to 20000 DecayTime * 1000 No Reverb Time
EarlyDelay ms 0 to 300 EarlyDelay * 1000 No Early Delay
LateDelay ms 0 to 100 LateDelay * 1000 No Late Delay
HFReference Hz 20 to 20000 HFReference No HF Reference
HFDecayRatio % 0 to 100 DecayHFRatio * 100 Yes HF Decay
Diffusion % 0 to 100 Diffusion No Diffusion
Density % 0 to 100 Density No Density
LowShelfFrequency Hz 20 to 1000 LFReference No Low Freq
LowShelfGain dB -48 to 12 RoomLF / 100 Yes Low Gain
HighCut Hz 20 to 20000 IF RoomHF < 0 THEN HFReference / sqrt((1-HFGain) / HFGain) ELSE 20000 Yes High Cut
EarlyLateMix % 0 to 100 IF Reflections > -10000 THEN LateEarlyRatio/(LateEarlyRatio + 1) * 100 ELSE 100 No Early/Late
WetLevel dB -80 to 20 10 * log10(EarlyAndLatePower) + Room / 100 Yes Wet Level
Intermediate variables used in conversion
LateEarlyRatio pow(10, (Reverb - Reflections) / 2000)
EarlyAndLatePower pow(10, Reflections / 1000) + pow(10, Reverb / 1000)
HFGain pow(10, RoomHF / 2000)