Instrument Polyphony Limit + Trigger Condition = bug?

#1

Hello everyone.

I’ll try to keep it short. I have a scatterer instrument which always stays triggered on the Timeline, and has a trigger condition of a certain parameter (let’s call it Par) having a value of 0. I have set the scatterer’s Polyphony Limit (the one on the Trigger Behaviour tab) to 1 and Stealing to None. The idea was that the event would be playing continuously, but the instrument would only trigger when Par was set to 0, and would not re-trigger if the first sound was still playing, and Par changed to a value other than 0 and then back to 0 again.

If I play the event with an initial value of anything but 0, all works as expected. But if I hit Play with the Par value already at 0, the instrument will trigger neither as soon as I press Play (as it should), nor will it trigger with any subsequent Par changes to 1 and back to 0.

I tried changing the Polyphony Limit to 2, and noticed the following:

A) If the event starts with Par at 0, the instrument will trigger normally at the start and will not trigger again if the value is changed to 1 and back to 0 if the first sound is still playing, which might not be how a Polyphony of 2 is expected to work, but seems to be the behaviour I was after…

But!

B) If the event starts with the Par value set to anything other than 0 the instrument will trigger normally when Par later becomes 0, but when changing Par to 1 then back to 0, it will trigger yet another time, capping at 2 sounds playing at any given time, as one would expect with a Polyphony of 2, after all.

For what it’s worth, I have tried dragging the instrument a bit further in the Timeline so that it doesn’t trigger immediately, but the behaviours described above persist. This occurs in both Studio 1.10.12 and 2.0.0 versions and in the Event Editor window as well as in the Sandbox window (I have not tested it in Unity). Multi-instruments don’t seem to be immune to this either.

Is this a bug? :confused:

#2

That is certainly a bug but it seems to be limited to within the FMOD Studio application and Sandbox. When built into a game it runs fine. We will look into fixing this for a future update.

Thanks for bringing this to our attention.

1 Like
#3

This is actually two separate bugs that appear in the same area so I’ll just list out the issues and then their workaround:

  1. If a scatterer or multi instrument is set to 1 polyphony with no stealing and a parameter condition that is the same as the initial value, that instrument cannot be triggered.
  2. If an asynchronous instrument is set to 1 polyphony with no stealing behavior and the parameter conditions are lost and then met whilst a sound is already playing, then the instrument will not keep playing unless the parameter condition is lost and then met again

Regarding the second issue, this is more usability as it is actually working as intended. When the conditions for triggering are met, an “instance” of that instrument is triggered. Since the polyphony is set to 1 and no stealing is permitted, it will then not create a new instance and therefore not loop after finishing playing that sound.

You can work around this using a second parameter condition and adding a sidechain modulator to it. Add a sidechain effect to the track (or master track) and connect it to the second parameter, applying 100% amount and necessary attack/release times. Set the parameter condition for this parameter to be 0. The idea is that when a playlist item is playing it pushes the second parameter out of the conditions needed to retrigger the instrument, but when it stops playing 1/2 conditions are met. You will need to adjust the release time of the sidechain modulator to make sure the second issue listed above doesn’t happen again. The first parameter is still controlled by you.

1 Like
#4

Thank you for the detailed explanation! You guys are awesome by the way, I cannot say this enough times.

Have a great day!