Triggers - What are they?

Hi All,

I’m starting this thread at the request of @dbrendon & @TorstenH to collect explanations and uses of our community regarding Triggers in Cantabile. Brad gave me a bit of history of them recently and what they were created for in the first place. As it happens there are many hackers, doodlers and creators :nerd_face: that need ways to control complex tasks like say executing batch commands that involved the need for delays to be included to massage the events in the batch command list and prevent crashes or missed commands in the batch list. An example of this is shown below

This is an example of Specific Triggers use. On the top line you see that the F10 key is the actual Trigger for the list of triggered commands to be executed. The list of triggered commands or events that follow the initial trigger are executed in order except when they have a delays entry greater than zero loaded in their field on the bindings line. This allows certain commands that may require more time to execute to be delayed until the other non delays ones are all completed (including the execution of external Windows programs) and as a result prevents crashes and hangs from launching too many events at once. For the list I showed the State I was editing needed time to fully lock and save the state before saving the rack and clearing and resetting the workspace view. The bindings with the delays set in the list are those commands.

There are 128 specific trigger numbers available for use but be aware they are session based and work across songs in a set list in a global way. So repurposing specific Trigger numbers for different tasks can get dicey and is not recommended. I chose a very high number in hopes no other users are tasking it because if they did there would be conflicts and unexpected results. Brad told me he considered dropping them when he made V3 but kept them for folks like me to use. He is looking into other ways to do similar things that wouldn’t require triggers but it is all still in the works of his loaded dance card.

David also asked about Indexed triggers. My understanding if them is not as detailed I’m afraid so what I will share could be different than what others might share. If you use a Indexed binding like in this example the initial trigger will be tied to the index number of the song state.

That means that the Specific Triggers bindings listed below it would be bound to the index changes brought about by a state change. I kept it simple so that state 0 triggered Specific trigger 0, state 1 to specific trigger 1, etc …

Another way I use indexed triggers would be when I want an event to happen every time there is an indexed event in C3 like a song state change, rack state change or set list song change. I will show the same example but with indexed triggers instead of specific triggers as the source.

In this case the full list of indexed triggers commands will fire on every state change. This can be handy if you want a common command to execute on every state change.

To be honest I haven’t dug any deeper than that and trust that what I posted works as I describe. It’s a start to the thread anyway. I welcome any other input or corrections and how others use them so please post if you want to. :slight_smile:

Cheers,

Dave

5 Likes

What I don’t understand in the indexed triggers example is:

If ToneGenerator_64b is invoked every time any state is changed how will it react when you have both Resume/Suspend Off and On listed? Are the specific triggers needed first in order for the indexed triggers to work? And if that’s the case why would the indexed triggers be needed?

Hey Tweaker,

Sorry for the bad choice of bindings to demonstrate indexed triggers with but the list would still execute all commands on a song state change. FWIW the On command would overwrite the Off since it followed it in the list and the bypass would toggle on each state change. A better real world example might be where you needed to send a reset to rack every time there was a state change in another rack but as I said this part of the how the indexed triggers could work is not fully clear to me either. I just experimented with it to see how it behaved.

It might be a good idea to ask @brad or @Torsten or others if they know more on how to apply the indexed triggers in the real world.

Dave

1 Like

Ok that makes sense now and was very helpful. Thanks Dave!