Cantabile Development Blog

Follow the development of music software Cantabile

Articles | Full Index | RSS Feed


Triggers

As hinted to yesterday I've started working on one of the few remaining new features for this version of Cantabile - Triggers.

The idea behind this was for Cantabile to be able to send a set of MIDI configuration events when a session or sub-session is loaded. Such MIDI configuration could be anything from setting the volume of an external sound module or controlling MIDI controllable lighting for example.

Thinking about this further I realised that there are other times when it might be useful to be able to send MIDI events (eg: turning off lighting at the end of song).

Also, sending MIDI is probably not the only thing one might want to do, so I'm also including the ability to launch arbitrary external programs and scripts.

The final result of all this is triggers. Here's a quick overview:

Firstly, there's a new panel where triggers can be configured. Looks and feels like Cantabile's other panels and has all the usual insert/delete/move up-down/drag-drop/clipboard/undo-redo support.

images/triggers1.png

Each trigger get's it's own slot and you can assign a descriptive name to make it easy to identify what the trigger does (eg: "Set volume of sound module"). Note the bypass option at the left of each slot - see below for more about this.

images/triggers2.png

The event field specifies when the associated action should take place. These eight events are what I'll be supporting to start with, I might add more at a later date. (that's typo on the fourth entry - it should say "Sub-session Unload")

images/triggers3.png

Next you specify what to do when the action is triggered. Each choice will display dialogs where settings for the action can be specified (eg: the MIDI controller number and value, the script to execute etc...). These dialogs aren't written yet so there's no screen shots to show.

images/triggers4.png

For MIDI actions, you specify the MIDI device and channel on which to send the event. These will be disabled when not appropriate (eg: for script actions)

images/triggers5.png

images/triggers6.png

Finally, and importantly, all of this ties in with the sub-session support with the "bypass" option for each trigger - which is the only setting saved per sub-session. By disabling/enabling different triggers for different sub-sessions you can control what happens when a sub-session is loaded/unloaded.

All of this is currently partially implemented - I've done most of the framework and UI, but there's probably a couple of days work left actually making it work.

Posted on September 11, 2008

Share This

Leave A Comment

All comments will be reviewed for spam before being displayed.