User Guides

SysEx Macros

When entering MIDI SysEx data Cantabile supports the following macros.

Note: Unlike version 2, version 3 doesn't support custom user-defined macros. This may be supported in a future version. If this is something you require, please get in touch

hibyte(x)       - gives the high byte of a word eg: hibyte(0x1234) gives 0x12
lobyte(x)       - gives the low byte of a word eg: lobyte(0x1234) gives 0x34
ascii(x)        - generate ascii data for string x eg: ascii("apple") gives 0x61 0x70 0x70 0x6c 0x65
strlen(x)       - return the length of string x eg: strlen("apple") gives 5
strcat(x,y)     - join strings x and y
add(x,y)        - add x and y
sub(x,y)        - subtract x and y
mul(x,y)        - multiply x by y
div(x,y)        - divide x by y
mod(x,y)        - remainder of x divided by y
and(x,y)        - x and y (bitwise)
or(x,y)         - x or y (bitwise)
xor(x,y)        - x xor y (bitwise)
shl(x,y)        - shift x left by y bits
shr(x,y)        - shift x right by y bits
hex(x)          - convert number x to hex (and add 0x prefix)
dec(x)          - convert number x to decimal
bytelen(bytes)  - calculate the length of a byte stream
byteswap(bytes) - byte swap the byte stream
midivarlen(x)   - midi encode variable length number x
byte(x)         - Format x as a hex byte
word(x)         - Format x as a hex word
dword(x)        - Format x as a hex dword
qword(x)        - Format x as a hex qword
repeat(x,y,d)   - Repeat x, y times with optional delimiter d