Trigger behavior + parameter issue

Hello! My apologies if this has been asked before, but I searched in the forum and couldn’t find a solution to this specific problem.

I have a loop with a melody that I divided into musical phrases, exported them to various segments and alternated them between two tracks:

Then I want a parameter to control their trigger behavior (in this case YES = triggered / NO = not triggered).
IMPORTANT: if a segment gets triggered it should always play till its end even if the parameter goes to NO in the middle of it.

The problem is that trigger behavior doesn’t just activate/deactivate an instrument when the playhead first enter the region, but also while in the middle of it. Therefore if I set the parameter to NO while a segment is playing it will suddenly stop. I solved this by putting an AHDSR on each segment with an extremely long release, but I still need the segments to stay silent if they don’t get triggered when the playhead reaches the start of the region.

I also tried Async but it doesn’t help in this case.
The FMOD documentation mentions a “Play to End” behavior, but I couldn’t find it.
Maybe there’s a simple solution, but I can’t think of anything else. Please let me know if you have an idea. Thanks

1 Like

It sounds like you have two requirements:
First, ensuring the instrument only starts playing when the timeline playback position is at a specific value.
Second, ensuring the instrument doesn’t stop mid-way through playing when the parameter’s value changes.

There are multiple ways to address both of these requirements, but here’s the simplest I can think of:

  1. Set the instruments to asynchronous mode (i.e.: ensure that their “Async” buttons are highlighted in gold) if they’re not in that mode already. Asynchronous instruments are capable of continuing to play to end even when their trigger conditions stop being met.
  2. Remove any AHDSR modulators from those instruments’ properties. AHDSR modulators automatically stop instruments a fixed period of time after they are untriggered, which is not what you want.
  3. Click and drag the right edge of each instrument’s trigger region to the left until they are extremely short. This is important because an instrument’s trigger region defines the range of parameter or timeline values that can “trigger” that instrument. In your case, you want the instruments only to be triggered at specific moments, so you should shorten the trigger regions to overlap only those specific moments. (You’ll notice that you can’t actually reduce a trigger region’s length to zero, meaning that the instrument could still potentially start playing at the wrong time. To solve this issue, see the next step.)
  4. In each instrument’s “Delay and Quantization” settings, set the quantization interval to an interval that occurs within the trigger region only once. (From your screenshot, I suspect a half-note will do.) Adding quantization to an instrument in addition to making its trigger region short ensures that it only triggers at the one specific beat or bar that you want it to trigger at.
1 Like

Thank you Joseph. 3+4 is a great workaround, I haven’t thought about shortening the regions and adding a very short quantization interval.

It works fine in this particular case, even though I can think of a few situations where the beginning of the phrase isn’t tight to the grid or doesn’t follow tempo at all. I guess one could set the quantization interval to time rather than tempo, but this task would quickly become very time consuming (no pun intended) in order to fine adjust each region.

Also, in such a case it would probably be recommendable to trim every clip in order to align the beginning of the region with the start of the waveform. This would inevitably make the process of aligning each clip on the grid in FMOD extremely difficult.

The easiest way to solve all the cases would be the one that had been suggested here (I just found it). And if not applied to an async instrument, maybe add a “play till end of region” option or something similar, to ensure that there are no interruptions even if the condition changes midway (or the event stops, there could be uses for that too).

Unfortunately, there’s no such thing as time-based quantization. The “time” radio button in the delay and quantization settings allows you to specify a delay, i.e.: a period of time that elapses after the instrument is triggered but before it begins playing; it doesn’t allow you to ensure the instrument starts at a particular timeline position.

That being said, there is a way to apply this technique to content that starts at any specific time, even if it’s not on a beat or bar: A tempo marker always starts a new bar at its position, so you can always define a new quantization point by placing a tempo marker at the desired position.

The fact that the untrigger conditions of an instrument are always the inverse of its trigger conditions is definitely a limitation. I’ll add you to the list of people interested in being able to disconnect them - and also to the list of people interested in being able to trigger an instrument only at its left edge.

Yeah, my bad. I’ve never had a use for that function, so I’m not very familiar with it. As you said, I thought it was a time-based quantization.

Thank you very much!

I’ve got one last question, if you don’t mind. In the first post I asked about a “Play to End” behavior mentioned in the FMOD documentation, but I couldn’t find more details about it. Could you please clarify it for me? Where is it and how can it be activated?

“Play to end” is the default behavior of all asynchronous instruments. As it’s the default behavior, you don’t usually need to do anything special to activate it; just leave the “Cut” toggle button untoggled.

Oh I see. I didn’t realize that it was referring specifically to async instruments. Thanks

I struggled over the same issue. Even though this is some sort of workaround, I really think having a ‘play_to_end’ option for synchronous instruments would be helpful for many users.

Unfortunately, using your way to achieve the desired behavior, i am facing following issue:
When having a transition with probability at the same position where my (multi-)instrument should start playing, the instrument is not triggered with active quantization (if the probability condition of the transition is not met). having the same instrument with exactly the same settings, and the transitions condition is met, the instrument plays as expected at the position of the target marker. Is this a bug?

I’m afraid this isn’t possible, by definition. A synchronous instrument is one that plays the part of the waveform that’s overlapped by the playback position on its trigger region - which is to say, the part of the waveform that it plays is “synchronized” with the advancement of the playback position. If the instrument is able to continue playing after the playback position leaves its trigger region, that instrument is, by definition, asynchronous.

Should I add you to the list of people interested in being able to decouple an instrument’s untrigger conditions from its trigger conditions, to the list of people interested in being able to trigger an instrument only from its left edge, or both?

I’m afraid I haven’t been able to reproduce this behaviour here. When I try, the instrument plays as normal. Could you describe the trigger conditions of the instrument in more detail, and possibly post a screenshot? There may be some detail of how it works that I’m overlooking in my test case.

Should I add you to the list of people interested in being able to decouple an instrument’s untrigger conditions from its trigger conditions, to the list of people interested in being able to trigger an instrument only from its left edge, or both?

Absolutely both :wink:

I’m afraid I haven’t been able to reproduce this behaviour here. When I try, the instrument plays as normal. Could you describe the trigger conditions of the instrument in more detail, and possibly post a screenshot? There may be some detail of how it works that I’m overlooking in my test case.

Turns out being the problem below. If you can provide some place where to drop my project as a zip, I am happy helping you to reproduce the error.
Quantization bug / floating point ‘equality’ issues

You can upload files to the uploads tab of your profile page.