I’m experimenting with FMOD’s SFX reverb unit to decide which algorithm I’d use for my game.
The reverb itself works great, but I noticed a significant difference between the following 2 implementations. Can anybody explain why this happens?
I’m using the C API as a quick test.
(1) Enable FMOD’s global reverb:
//This sounds awesome
FMOD_REVERB_PROPERTIES prop2 = FMOD_PRESET_AUDITORIUM;
prop2.WetLevel=-28.0f;
FMOD_System_SetReverbProperties(system,0,&prop2);
(2) Insert the SFXREVERB DSP unit with the same attributes into the master channelGroup:
//literally, the wet signal significantly decreases regardless of the same condition as the first one
ret=FMOD_System_CreateDSPByType(system,FMOD_DSP_TYPE_SFXREVERB,&hReverb);
FMOD_REVERB_PROPERTIES prop2 = FMOD_PRESET_AUDITORIUM;
prop2.WetLevel=-28.0f;
ret=FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_DECAYTIME,prop2.DecayTime);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_EARLYDELAY,prop2.EarlyDelay);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_LATEDELAY,prop2.LateDelay);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_HFREFERENCE,prop2.HFReference);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_HFDECAYRATIO,prop2.HFDecayRatio);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_DIFFUSION,prop2.Diffusion);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_DENSITY,prop2.Density);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_LOWSHELFFREQUENCY,prop2.LowShelfFrequency);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_LOWSHELFGAIN,prop2.LowShelfGain);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_HIGHCUT,prop2.HighCut);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_EARLYLATEMIX,prop2.EarlyLateMix);
FMOD_DSP_SetParameterFloat(hReverb,FMOD_DSP_SFXREVERB_WETLEVEL,prop2.WetLevel);
//Don’t touch DRYLEVEL, since the reference states that its default is 0.0f
FMOD_CHANNELGROUP *master;
ret=FMOD_System_GetMasterChannelGroup(system,&master);
ret=FMOD_ChannelGroup_AddDSP(master,FMOD_CHANNELCONTROL_DSP_TAIL,hReverb);