This document is still work in progress!

The installation guide can be found in another document.

About Designer and Models

The Kable application actually consists of two core parts:

  1. The Kable Designer which is used to draw and configure the Kable Runtime configurations.
  2. The Kable Runtime which takes the runtime model and applies it to the connected devices.

The Kable Designer produces two files. A diagram file (.kad) containing information about the placement and layout of the components as well as additional informative components like notes. Basically everything that is just visually and not need for the execution of the configuration. The other file contains the runtime model (.kar). This is the really important file as it tells the Kable Runtime about the components, how they are connected and how they are configured (device name, Expressions, Conditions, …).

The Kable Designer

Components

Gate

The Gate is a component that filters out all messages that don’t match against a number of definable conditions. If you define more than one condition for a Gate all conditions will be evaluated and if one of them is false the Gate will block the message (logical conjunction).

Conditions

Adding a Condition to a GateA condition defines a statement that can either be true or false. The Gate component uses conditions to evaluate if any incoming message should be allowed to pass through or should be blocked. To add a condition to a Gate hover with your mouse over the Gate until the Add Condition icon appears. Click it and a new condition is added to the compartment of the Gate.
Editing a Condition
When added the condition will be in edit mode and you can instantly start typing in the conditional statement. Every condition consits of a two arguments and one conditional operator and must be written in the format argument operator argument with a blank between the arguments and the operator!

Allowed Conditional Operators

== Equal to
!= Not equal to
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to

Transformer
As the name implies this component does some kind of message transformation. It can be used to alter the fields of a message or to store or restore values from variables. Like the Gate the Transformer can hold multiple expressions and he will apply all of them to any incoming messages.

Expressions
Expressions are similar to conditions but instead of a logical value they are evaluated to a real (numeric) value. This value can then be stored into a message field or a variable using the assignment operator ‘=’.

Unlike the condition the expression can consist of more than two arguments and one operator but it must still be written in the same format: argument operator argument operator argumentwith a blank between the arguments and the operators!

Allowed Arithmetic Operators

= Assignment
+ Addition
- Subtraction
* Multiplication
/ Division

The MIDI Device Pack

The MIDI device pack integrates any kind of MIDI device (controller, instruments, …) into Kable and makes it possible to receive and send messages to this devices if they support it.

Currently the device pack supports channel, system common and system real time messages but not system exclusive messages. A list of supported fields and combination of possible values can be found below.

Fields

This is an overview of all available fields. You must use the corresponding identifier if you want to reference this field in an expression or condition. CM means this field is available for channel messages. SM means the field is available for system messages.

Name Identifier Description CM SM
Channel midi.chn The channel on which the messages was transmitted. X
Type midi.type The type of the MIDI message. X X
Data1 midi.data1 The first data byte of the message. X X
Data2 midi.data2 The second data byte of the message. X X

This table shows all field values available for MIDI channel messages. You must use the value if you want to reference any of this fields.

Type Value Channel Value Data1 Value Data2 Value
Note Off 128 Channel 1-16 Key # 0-127 Velocity 0-127
Note On 144 Channel 1-16 Key # 0-127 Velocity 0-127
Polyphonic Key Pressure 160 Channel 1-16 Key # 0-127 Pressure 0-127
Control Change 176 Channel 1-16 Control # 0-127 Control Value 0-127
Program Change 192 Channel 1-16 Program # 0-127 n/a
Channel Pressure 208 Channel 1-16 Pressure 0-127 n/a
Pitch Bend 224 Channel 1-16 LSB 0-127 MSB 0-127

For example midi.type == 176 together with midi.data2 >= 64 means the MIDI message must be a control change message from any controller but the controller value must be greater or equal 64.

This table shows all field-value combinations available for system messages.

System Common Messages
Type Value Data1 Value Data2 Value
MIDI Time Code 241 Message Type / Data Nibble 0-127 n/a
Song Position Pointer 242 LSB 0-127 MSB 0-127
Song Select 243 Song # 0-127 n/a
Tune Request 246
End of System Exclusive 247
System Real Time Messages
Type Value



Timing Clock 248
Start 250
Continue 251
Stop 252
Active Sensing 254
System Reset 255