DSP Network graph related questions

I read though this wonderful document and it’s very very helpful.

Even though it clarified almost everything I wanted to know, I came up with a few more questions.

  1. Do I need to use FMOD_Channel_SetPaused(FALSE) before modifying a DSP network graph when a sound is already playing?

  2. Do I need FMOD_INIT_PROFILE_ENABLE when I put FMOD_INIT_PROFILE_METER_ALL flag already?
    I tried without the FMOD_INIT_PROFILE_ENABLE flag but worked fine!

Thanks to the FMOD Profiler tool, I could find the cause of noises in my application.
In certain situations, such as playing too many sounds at the same time, green level meters turned red.
So I’m thinking of adjusting volume, but I’m not sure because I think it may vary depending on platforms and hardware.

  1. If the code and resource sound files are exactly the same, will the FMOD’s internal (software level) meters be always the same as well on other OSs and devices? (eg. WASAPI, ASIO, OpenSL ES, Android, iOS, MacOS, Windows, Linux)

You don’t need to pause the channel to manipulate the graph, you do have to remove a DSP before you release it though.

FMOD_INIT_PROFILE_METER_ALL implies FMOD_INIT_PROFILE_ENABLE. I have added a task to fix the docs to make this clearer.

If the code and sound files are the same then FMODs levels will be the same, there may be some subtle differences but it should not be noticeable in the mix.

1 Like

Thank you very much!

Sorry but I want to ask the question No.1 again.
I just noticed I made a stupid mistake there.
What I really meant was FMOD_Channel_SetPaused(channel, TRUE).

I asked the question because long time ago you gave me an advice to write code like this :
(Also, I saw similar examples several times from the API reference here)

FMOD_System_PlaySound(g_System, sound, NULL, TRUE, &channel);
FMOD_Channel_SetPitch(channel, curPitch);
FMOD_Channel_AddDSP(channel, FMOD_CHANNELCONTROL_DSP_TAIL, g_DSP_pitch);
FMOD_Channel_AddDSP(channel, FMOD_CHANNELCONTROL_DSP_TAIL, g_DSP_reverb);
FMOD_Channel_SetPaused(channel, FALSE);

You said, this way, I could avoid unwanted noises.
At that time, I just thought this had something to do with setting a DSP’s value, in this case, pitch.
But now I wonder if it’s better to call pause and unpause functions before and after adding or removing a DSP all the time.

You can pause the sound while you make changes but you don’t need to.

The reason to do it like this is because the sound will start before the DSP’s have been added or the pitch has been adjusted, meaning they will come into effect but not necessarily immediately. By pausing the sound when it is created you are ensuring that it won’t start playing until after the effects are added.

1 Like

Thanks! Great! Luv u!

1 Like