Skip to content

Smart Messages

Sam Spencer edited this page Jan 4, 2023 · 8 revisions

Smart Messages are used for triggering events and controlling various functions within the device. They can be added to most MIDI message stacks just like regular messages, however, they are handled specially by the device. Due to the flexibility and diverse nature of these functions, the API handling is kept as generic as possible to simplify the interaction. A smart message is designated by the non-standard MIDI status byte 0x70.

There are no MIDI output handles typically associated with a smart message. A Smart Message consists of 4 unique fields, matching the memory footprint of a standard MIDI message. However, instead of status byte, data byte 1, data byte 2, outputs it is structured as follows:

Label Values Description
statusByte string 8-bit hex Indicates a Smart Message, this will always be 0x70 and requires no MIDI channel assignment
smartType string Smart Message type describing it's function
dataByte1 string 8-bit hex Data byte which varies depending on the message type
dataByte2 string 8-bit hex Data byte which varies depending on the message type

Note that to ensure correct validation, the four data elements must be sent in the order shown above.

Smart Message Types

Label Data 1 Data 2
switchOn switch index
0 = Primary
1 = Secondary
switchOff switch index
0 = Primary
1 = Secondary
switchToggle switch index
0 = Primary
1 = Secondary
sequentialResetStep switch index
sequentialIncrementStep switch index
sequentialDecrementStep switch index
sequentialGoToStep switch index step index
sequentialQueueNextStep switch index
sequentialQueueStep switch index step index
scrollingResetStep switch index
scrollingIncrementStep switch index
scrollingDecrementStep switch index
scrollingGoToStep switch index step index
scrollingQueueNextStep switch index
scrollingQueueStep switch index step index
bankUp
bankDown
goToBank bank index
incrementExpStep exp index
decrementExpStep exp index
goToExpStep exp index step index
trsSwitchOut Flexiport index 1 = tip
2 = ring
3 = tipRing
0 = none
trsPulseOut Flexiport index 1 = tip
2 = ring
3 = tipRing
0 = none
uiMode 0 = standard
1 = simple
Clone this wiki locally