0
0

Could we get some better documents regarding fmod’s software reverb parameters? I need something I can give to my sound designer so he understand what each parameter is changing and meaning..

The current help section on the ‘FMOD_REVERB_PROPERTIES’ structure refers to the eax2/eax3 docs, but it’s not exactly clear which parameters in the fmod structure correspond to which parameters in the EAX docs. In addition, fmod is missing some of the properties mentioned in the EAX docs.

One example is "EnvSize". The fmod docs say "environment size in meters". I’m not sure what this means or how it effects the reverb. Is this the area in which reverb will be triggered or is it a characteristic of the reverb itself?

thanks,
sam

  • You must to post comments
0
0

[quote="jornj":3giitdvd]Have you had a look at the (new) System::create3DReverb?[/quote:3giitdvd]
Is that in 4.07? I’ve been keeping to the stable releases (4.06) and I didn’t see it there. Sounds intriguing, I’ll watch for it.

  • You must to post comments
0
0

Yep, that’s only in the dev branch at the moment.

  • You must to post comments
0
0

Just wanted to mention we’re using latest version of fmod ex on win32 platform.

thanks,
sam

  • You must to post comments
0
0

EnvSize is a property of the reverb itself. It is typically big for a huge room, see the definition for the hangar reverb.

With the latest dev release 4.07.09, the system reverb (set with system->setReverbProperties) sounds really good and from all directions. With a working setDelay, I’m very happy with the results.

To control the amount of reverb on some channels, such as no reverb for music, use the Channel::setReverbProperties to turn it off.

This is how I do this, more or less, error code removed. Note that I set the room attribute to -10000 to disable reverb on a channel. The setDelay is there to make sure the reverb has time to fade out after a channel stops.

[code:2nxbakcn] FMOD_REVERB_CHANNELPROPERTIES reverb;
result = m_channel->getReverbProperties(&reverb);
if (i_vReverbLevel > 0.00001f) {
reverb.Room = int(2000.0f * log10f(i_vReverbLevel));
m_channel->setDelay(0, 200);
}
else {
reverb.Room = -10000;
m_channel->setDelay(0, 0);
}
result = m_channel->setReverbProperties(&reverb);
[/code:2nxbakcn]
Btw, if you spot any stupid things in the logic above, let me know 😉

  • Jørn

(Edited, figured I’d describe this stuff better)

  • You must to post comments
0
0

Thanks for the help, Jørn. I’m currently disabling reverb on a channel as you describe. I haven’t played with the delay yet, but I’ll check it out.

FMod guys, any chance we can get better docs on the fmod reverb parameters?

-sam

  • You must to post comments
0
0

FYI, theres an issue with setting the wet/dry mix of events atm. It’s fixed next code drop.

  • You must to post comments
0
0

Hi all,

Here are a few notes about the way that reverb is parameterised within the FMOD system. It’s not intended to be a tutorial about how to make a reverb, and assumes that you know something about reverb to start with.

For a more general description of reverb, see [url=http://www.harmony-central.com/articles/tips/reverb_parameters/:1k00cofu]here[/url:1k00cofu]

The fields of FMOD_REVERB_PROPERTIES (found in ‘fmod.h’) control both hardware (via EAX) and software (via SFX) instances of reverb. EAX has a few parameters that the software doesn’t use, so you can ignore these for the purpose of this discussion. For example, EnvSize is NOT used by the software reverb because it is only meaningful to EAX.

FMOD’s software reverb DSP is controlled by parameters defined in the [url=http://www.iasig.org/pubs/3dl2v1a.pdf:1k00cofu]I3DL2 guidelines[/url:1k00cofu], 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’.

[code:1k00cofu]Environment Turns the reverb off if set to -1
Room Room effect level (at mid frequencies)
RoomHF Relative room effect level at high 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
Diffusion Echo density in the late reverberation decay
Density Modal density in the late reverberation decay
HFReference Reference high frequency (Hz) [see RoomHF]
RoomLF Relative room effect level at low frequencies
LFReference Reference low frequency (Hz) [see RoomLF][/code:1k00cofu]

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. We don’t know who decided that, but we are stuck with them for now.
2) Room is the input gain
3) Reflections is 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.

I hope this helps.

  • You must to post comments
0
0

Wow, excellent post! Thanks, Peter!

I vote that this thread get stickied, and/or that it get added to the documentation for the API.

  • G
  • You must to post comments
0
0

I’ve added it to the FMOD Programmer’s API documentation.

  • You must to post comments
0
0

Peter, thanks so much!

So the software reverb available via system->setReverbProperties is different from the one available via FMOD_DSP_SFXREVERB? Or has the DSP enum simply failed to keep up with the entire parameter list?

FMOD_DSP_SFXREVERB lacks the "Environment", "RoomLF", and "LFReference" settings, while it still includes the "RoomRolloffFactor" setting which you suggest is probably ignored.

I’m more interested in the DSP approach, for a couple of reasons: 1) I want multiple reverbs across platforms, and the documentation states that "Properties.Instance" is only honored for EAX4/GameCube/Wii hardware; and 2) I want to position the extra reverbs in 3D space, for directionality through portals. See also the [url=http://www.fmod.org/forum/viewtopic.php?t=7107:3hld9n9i]thread on SFXREVERB[/url:3hld9n9i].

  • You must to post comments
0
0

[quote="sgugler":3oosg037]I’m more interested in the DSP approach, for a couple of reasons: 1) I want multiple reverbs across platforms, and the documentation states that "Properties.Instance" is only honored for EAX4/GameCube/Wii hardware; and 2) I want to position the extra reverbs in 3D space, for directionality through portals.[/quote:3oosg037]

Have you had a look at the (new) System::create3DReverb? It cooperates with the system reverb and has properties such as position, min and max radius and reverb properties. I’ve not used it myself, but it looked interesting.

  • You must to post comments
Showing 11 results
Your Answer

Please first to submit.