Sustain point not working in-game

Hi,

I have an event with a sustain point to run a snapshot (reduces music volume) while the voice is playing.

When I play it with FMOD Studio, this works fine: The cursor stops at the sustain point until the voice finishes playing, then it continues, and the short debug event plays and the snapshot fades out.

When I deploy that on my Raspberry Pi, playback just ignores the sustain point for any audio file in the programmer instrument (and yes, I tested the same files).

I tried to profile it to see what the Voiceover Hint parameter is doing, but it does not show up anywhere in the profiler:

This used to work for years until some weeks ago when I updated FMOD API to a newer version (2.02.18 to 2.03.05 I think). I’m not sure if that caused the sustain point to stop, I might also have changed other things, but it is an option.

Anyway, how do I get it to work again?

This is my parameter configuration:

Thanks a lot for your help,
Simon

I’m guessing that’s because it’s a local parameter. The values of local parameters are event instance-specific, so to see them in the profiler you must first select the specific event instance whose parameter value you want to see by clicking on that event instance’s lifespan in the profiler. Doing so will cause that event instance’s parameter values to be displayed in both the deck and the overview pane of the profiler window. (In your screenshot, for example, you appear to have selected instance B of the “Büro” event, which has a local parameter called “Progress Buero.”)

Since the parameter and sustain point work as expected when you audition the event in FMOD Studio, and FMOD Studio uses the same version of the FMOD Engine under-the-hood that your game does, it is likely that the parameter and sustain point are working correctly in your game as well, but that the value of the parameter is for some reason not being set correctly. The first step to make it work correctly is therefore to work out how and when the parameter’s value is being set. You can check the value of a local parameter by viewing it in the profiler as I described above, or by calling Studio::EventInstance::getParameterByName or Studio::EventInstance::getParameterByID.

Wow! The lines in the lifespan graph are clickable! That absolutely makes so much sense!

So, here I can see that Voiceover Hint remains at 0.

When I audition today in FMOD Studio, I actually have the same effect, Voiceover Hint remains at 0. So there must be something wrong with it. The Volume sidechain is connected to Voiceover Hint, what else can be wrong for that not to work?

Thanks a lot for your help, joseph – I appreciate that a lot!

I briefly tested it by running the FMOD API service locally and connecting to it, same result, the parameter remains at 0. So I tried with a new parameter. I followed these steps:

  1. Add parameter sheet on the effect to give me a local parameter
  2. Click on the voiceover track so I can see the effect list on the bottom, then Add Sidechain > New Sidechain
  3. In the Parameters Browser, select the effect, right-click on the volume box, and Add Modulation > Sidechain
  4. Back in the effect list, right-click on the Sidechain effect area (not on one of the controls though) and Connect to Modulator > Parameter: Volume Voiceover New

According to my notes, that should do it. However, the new parameter still does not change with input volume. I also added a test track in the screenshot to make sure it is not the programmer instrument which causes the issue.

Looking at your screenshot, the modulator’s “amount” property is set to 0. The “amount” property represents the maximum amount of adjustment the modulator can apply to the modulated property. An “amount” of 0 will therefore result in the modulator never adjusting the modulated property.

However, that only explains the behavior of the modulator in your new screenshot, not that of the original event that started this thread, whose “Amount” property was set to 1 in the screenshot you posted.

When I try and recreate the behavior you describe here, I fail; the value of the parameter changes as expected. I must therefore be doing something differently to you. Are you able to upload a project that exhibits this issue to the uploads tab of your profile page? Being able to see your project in person may help me work out what’s causing the problem.