0
0

Hello,

As a sound designer I find your reverb parameters annoyingly difficult to work with.

I managed to design a reverb that I liked in Fmod Designer, which I also managed to export to xml. That xml looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<ReverbDefs>
<Def name="Hugecave">
<MasterLevel units="dB" min="-100" max="0" value="0"/>
<DecayTime units="ms" min="100" max="20000" value="1490"/>
<HFDecayRatio units="ratio" min="0.1" max="2" value="0.5"/>
<PreDelay units="ms" min="0" max="300" value="7"/>
<LateDelay units="ms" min="0" max="100" value="11"/>
<EarlyReflections units="dB" min="-100" max="10" value="-26"/>
<LateReflections units="dB" min="-100" max="20" value="10"/>
<Diffusion units="percentage" min="0" max="100" value="100"/>
<Density units="percentage" min="0" max="100" value="100"/>
<HFGain units="dB" min="-100" max="0" value="-1"/>
<LFGain units="dB" min="-100" max="0" value="-5"/>
<HFCrossover units="Hz" min="20" max="20000" value="5000"/>
<LFCrossover units="Hz" min="20" max="1000" value="200"/>
<Notes text="Test"/>
</Def>
</ReverbDefs>

With this data I should be able to write a preset for our coder. And from Fmod help I managed to find a reverb preset, which looks like this:

define FMOD_PRESET_CAVE { 0, 8, 14.6f, 1.00f, -1000, 0, 0, 2.91f, 1.30f, 1.0f, -602, 0.015f, { 0.0f,0.0f,0.0f }, -302, 0.022f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f }

And from the same help I managed to find the structure for the preset also.

typedef struct {
int Instance;
int Environment;
float EnvSize;
float EnvDiffusion;
int Room;
int RoomHF;
int RoomLF;
float DecayTime;
float DecayHFRatio;
float DecayLFRatio;
int Reflections;
float ReflectionsDelay;
float ReflectionsPan[3];
int Reverb;
float ReverbDelay;
float ReverbPan[3];
float EchoTime;
float EchoDepth;
float ModulationTime;
float ModulationDepth;
float AirAbsorptionHF;
float HFReference;
float LFReference;
float RoomRolloffFactor;
float Diffusion;
float Density;
unsigned int Flags;
} FMOD_REVERB_PROPERTIES;

Some of the parameters I have understood, I think. But some of them are still missing. Could you help me out or more preferable tell me an easier way to do this.

MasterLevel = Room
DecayTime = DecayTime
HFDecayRatio = DecayHFRatio
PreDelay = ReflectionsDelay (???)
LateDelay = ReverbDelay (???)
EarlyReflections = Reflections
LateReflections = ???
Diffusion = Diffusion
Density = Density
HFGain = RoomHF
LFGain = RoomLF
HFCrossover = HFReference (???)
LFCrossover = LFReference (???)

Also the float and int units confuse me. I’m pretty sure I cannot just use the values from xml but convert them into something different? Help! 😮

  • You must to post comments
0
0

Hi alatvama,

The reverb properties exposed in the low level are a bit arcane, they were based on old standards I beleive it uses the EAX parameters for historical reasons. We changed the names, units, and descriptions of these parameters in FMOD Designer to make them more user friendly. However the FMOD_REVERB_PROPERTIES still remain the same for historical reasons. The quickest and easist way to convert between them would be build your FMOD Designer project and load it in one of the examples. Then just call EventSystem::getReverbPreset, which will give you the FMOD_REVERB_PROPERTIES struct generated from those parameters. If you want to manually convert them I can try to track down the conversions.

  • You must to post comments
0
0

That sounds like a good way to do what I’m wanting to do, but since I’m only using fmod designer to design the reverb, I have hard time understanding: "[i:3881vxm3]load it in one of the examples. Then just call EventSystem::getReverbPreset[/i:3881vxm3]". Could you walk me through that step by step?

I have now downloaded the API also, and I’m looking at the examples, but that’s where I’m getting unsure. I’m using mac os x and I have xcode installed (if it makes any difference).

Thanks for the reply!

  • You must to post comments
0
0

Hi alatvama,

It would involve writing a bit of code, the bang for buck comes down to how many reverb preset you are making. If you’re not overly comfortable with writing code it might be quicker to do it manually. I tracked down the coversions, here they are. Any unused parameters in the struct are no longer supported.

[code:1g2o2x4v]Master Level = FMOD_REVERB_PROPERTIES::Room / 100
Decay Time = FMOD_REVERB_PROPERTIES::DecayTime * 1000.0f
HF Decay Ratio = FMOD_REVERB_PROPERTIES::DecayHFRatio
Pre Delay = FMOD_REVERB_PROPERTIES::ReflectionsDelay * 1000.0f
Late Delay = FMOD_REVERB_PROPERTIES::ReverbDelay * 1000.0f
Early Reflections = FMOD_REVERB_PROPERTIES::Reflections / 100
Late Reflections = FMOD_REVERB_PROPERTIES::Reverb / 100
Diffusion = FMOD_REVERB_PROPERTIES::Diffusion
Density = FMOD_REVERB_PROPERTIES::Density
HF Gain = FMOD_REVERB_PROPERTIES::RoomHF / 100
LF Gain = FMOD_REVERB_PROPERTIES::RoomLF / 100
HF Crossover = FMOD_REVERB_PROPERTIES::HFReference
LF Crossover = FMOD_REVERB_PROPERTIES::LFReference[/code:1g2o2x4v]

[code:1g2o2x4v]FMOD_REVERB_PROPERTIES::Room = Master Level * 100
FMOD_REVERB_PROPERTIES::DecayTime = Decay Time / 1000.0f
FMOD_REVERB_PROPERTIES::DecayHFRatio = HF Decay Ratio
FMOD_REVERB_PROPERTIES::ReflectionsDelay = Pre Delay / 1000.0f
FMOD_REVERB_PROPERTIES::ReverbDelay = Late Delay / 1000.0f
FMOD_REVERB_PROPERTIES::Reflections = Early Reflections * 100
FMOD_REVERB_PROPERTIES::Reverb = Late Reflections * 100
FMOD_REVERB_PROPERTIES::Diffusion = Diffusion
FMOD_REVERB_PROPERTIES::Density = Density
FMOD_REVERB_PROPERTIES::RoomHF = HF Gain * 100
FMOD_REVERB_PROPERTIES::RoomLF = LF Gain * 100
FMOD_REVERB_PROPERTIES::HFReference = HF Crossover
FMOD_REVERB_PROPERTIES::LFReference = LF Crossover[/code:1g2o2x4v]

  • You must to post comments
0
0

Thank you so much!

  • You must to post comments
Showing 4 results
Your Answer

Please first to submit.