Manuals
MIDI CONVERSION TABLE
How does it work?
This guide helps you convert human-readable OSC messages into raw MIDI hex commands for triggering KLANG functions from external MIDI devices, such as mixing consoles. It focuses on Note On, Program Change, and Control Change messages, showing you how to enter values in hex format and how they map to corresponding OSC paths used in KLANG. All numbers in the OSC paths use decimal notation, while the MIDI commands must be entered in hexadecimal on the MIDI device.
MIDI Note Messages /midi/note
KLANG’s OSC Style Notation
This is used in KLANG:app’s translator with numbers in decimal notation:
/midi/note/<channel>/<noteNumber> i <velocity><channel>must be between 1 and 127<noteNumber>must be between 0 and 127
Corresponding Raw MIDI command to be entered in console in Hex notation:
0x89+<channelInHex><noteNumberInHex><velocityInHex>
| KLANG’s OSC-style MIDI Notation | Raw MIDI Hex Message | Description |
|---|---|---|
/midi/note/1/0 i 0 | 90 00 00 | |
/midi/note/1/0 i 63 | 90 00 7F | |
/midi/note/1/0 i 127 | 90 00 7F | Note On: C−2, Channel 1, Velocity 127 |
/midi/note/1/1 | 90 01 7F | Note On: C♯−2, Channel 1 |
/midi/note/1/2 | 90 02 7F | Note On: D−2, Channel 1 |
… | … | … |
/midi/note/1/127 | 90 7F 7F | Note On: G9, Channel 1 |
/midi/note/2/0 | 91 00 7F | Note On: C−2, Channel 2 |
… | … | … |
/midi/note/2/127 | 91 7F 7F | Note On: G9, Channel 2 |
… | … | … |
/midi/note/6/0 | 95 00 7F | Note On: C−2, Channel 6 |
/midi/note/6/1 | 95 01 7F | Note On: C♯−2, Channel 6 |
/midi/note/6/2 | 95 02 7F | Note On: D−2, Channel 6 |
/midi/note/6/3 | 95 03 7F | Note On: D♯−2, Channel 6 |
/midi/note/6/4 | 95 04 7F | Note On: E−2, Channel 6 |
/midi/note/6/5 | 95 05 7F | Note On: F−2, Channel 6 |
/midi/note/6/6 | 95 06 7F | Note On: F♯−2, Channel 6 |
/midi/note/6/7 | 95 07 7F | Note On: G−2, Channel 6 |
/midi/note/6/8 | 95 08 7F | Note On: G♯−2, Channel 6 |
/midi/note/6/9 | 95 09 7F | Note On: A−2, Channel 6 |
/midi/note/6/10 | 95 0A 7F | Note On: A♯−2, Channel 6 |
/midi/note/6/11 | 95 0B 7F | Note On: B−2, Channel 6 |
/midi/note/6/12 | 95 0C 7F | Note On: C−1, Channel 6 |
/midi/note/6/13 | 95 0D 7F | Note On: C♯−1, Channel 6 |
/midi/note/6/14 | 95 0E 7F | Note On: D−1, Channel 6 |
/midi/note/6/15 | 95 0F 7F | Note On: D♯−1, Channel 6 |
/midi/note/6/16 | 95 10 7F | Note On: E−1, Channel 6 |
/midi/note/6/17 | 95 11 7F | Note On: F−1, Channel 6 |
Example for OSCulator
In this example incoming MIDI messages to OSCulator (/midi/cc4/10 and/midi/cc16/10) are converted to /midi/note/

Control Change /midi/cc
KLANG’s OSC style notation
/midi/cc/<channel>/<command> i <value>
Raw Hex Notation
0xB<channel> <command> <value>
Example
/midi/cc/12/0 i 3
Controller Bank Select: 3 Channel 12 0xBB 0x00 0x03
Program Change /midi/pc
KLANG’s OSC style notation
/midi/pc/<channel>/<programNumber>
Raw Hex Notation
0xC<channel> <programNumberInHex>
Example
/midi/pc/12/100Program change 100 Channel 12 0xCB 0x64
Decimal to Hexadecimal Conversion
Use this table to convert from Decimal numbers 1–127 to the hexadecimal representation for MIDI commands:
| Decimal | MIDI Hexadecimal | Decimal | MIDI Hexadecimal |
|---|---|---|---|
| 0 | 00 | 64 | 40 |
| 1 | 01 | 65 | 41 |
| 2 | 02 | 66 | 42 |
| 3 | 03 | 67 | 43 |
| 4 | 04 | 68 | 44 |
| 5 | 05 | 69 | 45 |
| 6 | 06 | 70 | 46 |
| 7 | 07 | 71 | 47 |
| 8 | 08 | 72 | 48 |
| 9 | 09 | 73 | 49 |
| 10 | 0A | 74 | 4A |
| 11 | 0B | 75 | 4B |
| 12 | 0C | 76 | 4C |
| 13 | 0D | 77 | 4D |
| 14 | 0E | 78 | 4E |
| 15 | 0F | 79 | 4F |
| 16 | 10 | 80 | 50 |
| 17 | 11 | 81 | 51 |
| 18 | 12 | 82 | 52 |
| 19 | 13 | 83 | 53 |
| 20 | 14 | 84 | 54 |
| 21 | 15 | 85 | 55 |
| 22 | 16 | 86 | 56 |
| 23 | 17 | 87 | 57 |
| 24 | 18 | 88 | 58 |
| 25 | 19 | 89 | 59 |
| 26 | 1A | 90 | 5A |
| 27 | 1B | 91 | 5B |
| 28 | 1C | 92 | 5C |
| 29 | 1D | 93 | 5D |
| 30 | 1E | 94 | 5E |
| 31 | 1F | 95 | 5F |
| 32 | 20 | 96 | 60 |
| 33 | 21 | 97 | 61 |
| 34 | 22 | 98 | 62 |
| 35 | 23 | 99 | 63 |
| 36 | 24 | 100 | 64 |
| 37 | 25 | 101 | 65 |
| 38 | 26 | 102 | 66 |
| 39 | 27 | 103 | 67 |
| 40 | 28 | 104 | 68 |
| 41 | 29 | 105 | 69 |
| 42 | 2A | 106 | 6A |
| 43 | 2B | 107 | 6B |
| 44 | 2C | 108 | 6C |
| 45 | 2D | 109 | 6D |
| 46 | 2E | 110 | 6E |
| 47 | 2F | 111 | 6F |
| 48 | 30 | 112 | 70 |
| 49 | 31 | 113 | 71 |
| 50 | 32 | 114 | 72 |
| 51 | 33 | 115 | 73 |
| 52 | 34 | 116 | 74 |
| 53 | 35 | 117 | 75 |
| 54 | 36 | 118 | 76 |
| 55 | 37 | 119 | 77 |
| 56 | 38 | 120 | 78 |
| 57 | 39 | 121 | 79 |
| 58 | 3A | 122 | 7A |
| 59 | 3B | 123 | 7B |
| 60 | 3C | 124 | 7C |
| 61 | 3D | 125 | 7D |
| 62 | 3E | 126 | 7E |
| 63 | 3F | 127 | 7F |
Command Line Tool
There are various tools to send MIDI messages, also from the command line. As an example, we just use sendmidi. It can be installed via brew on a Mac.
brew install gbevin/tools/sendmidi
Once installed, you can send MIDI messages from Terminal.
Example
We will send to the MIDI device called MIDI Control 1 on MIDI channel 3 the CC command 32 with value 63 (all values in decimal notation).
KLANG’s OSC style notation: /midi/cc/<channel>/<command> i <value>, i.e. /midi/cc/3/32 i 63:
sendmidi dev "MIDI Control 1" ch 3 cc 32 63