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 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.
Cheers,
Dave