Cantabile Performer's bindings provide a binding target called "Sys-Ex / Raw Bytes" that lets you send arbitrary MIDI data to a device.  

Usually this is used to send sys-ex data and the editor supports a fairly sophisticated syntax for formatting different kinds of sys-ex data, including support for expressions, calling functions and temporary variables.

Sending Non-Sys-Ex MIDI Events

This binding point isn't limited to just sys-ex data however - you can also send normal MIDI messages if you properly encode them.

For example, 903c7f sends a note on event on channel 1, for middle C (note 60 = 0x3C) at velocity 127 (0x7f).

But unless you're some sort of cyborg, encoding those values is pretty tedious so Cantabile now has a set of helper functions for generating various MIDI events, meaning you can now do this:

Notice how the generated preview bytes are the same, but the entered expression is much more human friendly.

The full set of MIDI generation functions are listed here, or you can find them in the popup menu:

Inserting Delays

Did you notice the last option in the above menu?  Yes, you can now insert delays between generated MIDI events.

The following example, sends a note on and then 1 second (1000 milliseconds) later sends a note off:

Notice how the delay is encoded as a special Cantabile recognized sys-ex which is intercepted as the MIDI data is injected in the MIDI stream and schedules the events with the appropriate delays.

Available now build 4169 and later.