Shelf and peak filters in FMOD_DSP_TYPE_MULTIBAND_EQ

band pass filters worked in FMOD_DSP_TYPE_MULTIBAND_EQ, however shelf and peak filters doesn’t. Is it somewhere I wrote wrong?

FMOD::DSP* channelHead;
channel->getDSP(FMOD_CHANNELCONTROL_DSP_HEAD, &channelHead);
ERRCHECK(result);

FMOD::DSP* eq;
system->createDSPByType(FMOD_DSP_TYPE_MULTIBAND_EQ, &eq);
eq->setParameterFloat(FMOD_DSP_MULTIBAND_EQ_A_FILTER, FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF);
eq->setParameterFloat(FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY, 7000.0f);
eq->setParameterFloat(FMOD_DSP_MULTIBAND_EQ_A_GAIN, 8.0f);
eq->setParameterFloat(FMOD_DSP_MULTIBAND_EQ_B_FILTER, FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING);
eq->setParameterFloat(FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY, 1000.0f);
eq->setParameterFloat(FMOD_DSP_MULTIBAND_EQ_B_GAIN, 8.0f);
eq->setActive(true);
eq->addInput(channelHead);
//channel->addDSP(FMOD_CHANNELCONTROL_DSP_TAIL, eq);

FMOD::DSPConnection* reverbConnection;
result = reverbUnit->addInput(channelHead, &reverbConnection, FMOD_DSPCONNECTION_TYPE_SEND);
ERRCHECK(result);

result = channel->setPaused(false);
ERRCHECK(result);

Is it possible the chosen settings are just too subtle?

Setting this up in Studio looks like this:
image

Your code looks okay to me, perhaps try boosting some of the numbers to ensure you are getting an effect.

Later I raised the gain value to the upmost 30 just for test, however it doesn’t seem to work.

I should have looked more closely at your code. Firstly you should error check each API, the calls setting FMOD_DSP_MULTIBAND_EQ_A_FILTER and FMOD_DSP_MULTIBAND_EQ_B_FILTER need to use setParameterInt rather than setParameterFloat.

Additionally, your call to addInput is not sufficient to connect everything. The commented out addDSP would take care of all that for you. If you want to control the connections individually I recommend you take a look at the dsp_effect_per_speaker example, it has some nice diagrams in the code showing how to connect DSPs.

it works, thanks so much for your help!