❭  Developer  ❭  TouchOSC  ❭  TouchOSC Layout for AKAI APC Mini MK2  ❭  Protocol Docs

APC Mini MK2 Communication Protocol for TouchOSC

Technical documentation and MIDI/SysEx protocol mapping for the APC Mini Mk2
Compiled and improved for custom software integration.

Quick Reference (TLDR)

For Pads (RGB)

  • Channel: LED Behavior
  • Note: Pad ID
  • Velocity: RGB Color

For Buttons (Single Color)

  • Channel: 1
  • Note: Button ID
  • Velocity: State (On / Blink / Off)

Naming Convention

MIDI channels are described using the 1 to 16 standard.

Default MIDI Mapping

LED Control via MIDI Messages

The pad and button LEDs on the APC mini mk2 can be controlled by Note On messages on Port 1.

These are 3-byte messages determining three factors:

  1. Pad/Button ID
  2. Behavior: Solid, Blink, or Pulse.
  3. LED Color:
    • Pads: RGB color, brightness, and animation settings.
    • Buttons: Single color LED state and animation settings (no brightness control).

You can control individual LEDs or send bulk commands to update the entire UI surface.

Example Message: To solidly light Pad 1 in red, send the following: 96 00 05

  • 96 = MIDI Channel 7 (Determines LED behavior: Solid 100% Brightness)
  • 00 = Note 0 (Pad ID: First Pad)
  • 05 = Velocity 5 (RGB Color: Red)

Pad & Button IDs

The second byte in the MIDI message determines which pad or button you are targeting.
MIDI message construction changes depending on whether it is an RGB LED (pads) or a Single LED (buttons).

Pads (RGB Matrix)

Each pad is addressed via a Note message.

Example : Sending Channel 7 Note On 0 Velocity 5 will : Set Brightness to Full, Target the First Pad, Set Red Color (In Normal Mode)

Byte 2 ValueNotePad Index
0x0001
0x0112
0x0223
0x0334
0x0445
0x0556
0x0667
0x0778
0x0889
0x09910
0x0A1011
0x0B1112
0x0C1213
0x0D1314
0x0E1415
0x0F1516
Byte 2 ValueNotePad Index
0x101617
0x111718
0x121819
0x131920
0x142021
0x152122
0x162223
0x172324
0x182425
0x192526
0x1A2627
0x1B2728
0x1C2829
0x1D2930
0x1E3031
0x1F3132
Byte 2 ValueNotePad Index
0x203233
0x213334
0x223435
0x233536
0x243637
0x253738
0x263839
0x273940
0x284041
0x294142
0x2A4243
0x2B4344
0x2C4445
0x2D4546
0x2E4647
0x2F4748
Byte 2 ValueNotePad Index
0x304849
0x314950
0x325051
0x335152
0x345253
0x355354
0x365455
0x375556
0x385657
0x395758
0x3A5859
0x3B5960
0x3C6061
0x3D6162
0x3E6263
0x3F6364

Buttons (Single Color)

Note: The Shift button is not accessible via standard MIDI.

Button messages must always be sent on Channel 1.
Buttons only support single-color LEDs.
The behavior (On/Off) is set via the velocity, not the MIDI Channel.

  • Velocity 0 = OFF
  • Velocity 1 (and 3 to 127) = ON
  • Velocity 2 = ON (Blink)

Example: Sending Channel 1, Note On 100, Velocity 1 will turn the first Track Button LED on.

Button NameByte 2 ValueNoteChannelLED
Track Button 10x641001Red
Track Button 20x651011Red
Track Button 30x661021Red
Track Button 40x671031Red
Track Button 50x681041Red
Track Button 60x691051Red
Track Button 70x6A1061Red
Track Button 80x6B1071Red
Button NameByte 2 ValueNoteChannelLED
Scene Launch 10x701121Green
Scene Launch 20x711131Green
Scene Launch 30x721141Green
Scene Launch 40x731151Green
Scene Launch 50x741161Green
Scene Launch 60x751171Green
Scene Launch 70x761181Green
Scene Launch 80x771191Green

RGB LED Behavior & Color

Behavior (Brightness & Animation)

RGB LEDs can be lit solid at varying brightness levels, or programmed to blink and pulse at different rates.
This behavior is determined by the MIDI Channel (1 to 16) sending the Note On message.

Using our previous example (96 00 05), if we change the first byte to 97 (Channel 8), the LED will pulse red at 1/16 notes, synced with the external clock rate.

Byte 1 ValueMIDI ChannelFunction
0x901On 10% brightness
0x912On 25% brightness
0x923On 50% brightness
0x934On 65% brightness
0x945On 75% brightness
0x956On 90% brightness
0x967On 100% brightness
0x978Pulsing 1/16
0x989Pulsing 1/8
0x9910Pulsing 1/4
0x9A11Pulsing 1/2
0x9B12Blinking 1/24
0x9C13Blinking 1/16
0x9D14Blinking 1/8
0x9E15Blinking 1/4
0x9F16Blinking 1/2

RGB Color Values

The hardware uses a predetermined palette of 128 RGB values assigned to specific velocities (Byte 3 in the message).
This palette is hardcoded and cannot be changed.

If we want to change Pad 1 to a solid orange, we send: 96 00 09

  • 96 = Solid lit at 100%
  • 00 = Pad 1
  • 09 = Velocity 09 (Orange)

Velocity to RGB Color Reference:

  • Black: 0
  • White: 3
  • Red: 5 or 72
  • Green: 21 or 87
  • Blue: 45 or 67
  • Yellow: 13
  • Pink: 53
  • Cyan: 90

➡️ Access the RGB Mapping Google Sheet

Single LED Behavior & Color

The UI buttons utilize single-color LEDs and require a unique control message structure compared to the RGB matrix.

Example Message: To solidly light the Track Button 1 LED (which is physically restricted to red), send the following: 90 64 01

  • 90 = MIDI Channel 1 (Note: This will always be 90 for single LED commands. RGB blink and pulse values do not apply to these buttons).
  • 64 = Note 100 (Button ID: Track Button 1)
  • 01 = Velocity 1 (LED Behavior: ON)

Use the reference table below to construct your single LED MIDI messages:

Byte NumberHex ValueDecimal ValueDescription
10x90N/AChannel 1, Note-On
20x64 to 0x77100 to 119Button ID (Reference the Button ID tables above)
30x00
0x01
0x02
0x03 to 0x7F
0
1
2
3 to 127
Velocity 0 = LED OFF
Velocity 1 = LED ON
Velocity 2 = LED BLINK
Velocity 3 to 127 = LED ON

Protocol Examples

For quick reference, the shorthand notation 7 0 5 translates to Channel 7, Note 0, Velocity 5.

Here are common execution strings:

  • Send Note-On 7 0 5 to light the first pad in red (Normal Mode).
  • Send Note-On 7 63 5 to light the last pad in red (Normal Mode).
  • Send Note-On 10 64 5 to light the first pad in red (Drum Mode).
  • Send Note-On 10 127 5 to light the last pad in red (Drum Mode).
  • Send Note-On 1 107 127 to light the first Track Button.
  • Send Note-On 1 112 127 to light the first Scene Launch Button.

Mode Switching via SysEx

Whenever you change the device mode, a corresponding System Exclusive (SysEx) message is sent.
You can send these specific messages to force the controller into a new mode remotely, without pressing any hardware buttons.
This is highly useful for initialization sequences or ecosystem syncing.

  • Normal Mode: F0 47 7F 4F 62 00 01 00 F7
  • Note Mode: F0 47 7F 4F 62 00 01 01 F7
  • Drum Mode: F0 47 7F 4F 62 00 01 02 F7

Bulk LED Message Formatting

RGB Matrix

To update the entire grid, pad values remain constant while the MIDI Channel and RGB color variables change.

  • Format: 9X [Pad ID] XX
  • 9X 00 XX through 9X 3F XX

The Hex prefix 9X translates to a standard Note On message, where X determines the MIDI Channel (0 to F = Channels 1 to 16).
Example: 90 01 05 translates to Note On, Channel 1, Note 1, Velocity 5.

9X 01 XX9X 11 XX9X 21 XX9X 31 XX
9X 02 XX9X 12 XX9X 22 XX9X 32 XX
9X 03 XX9X 13 XX9X 23 XX9X 33 XX
9X 04 XX9X 14 XX9X 24 XX9X 34 XX
9X 05 XX9X 15 XX9X 25 XX9X 35 XX
9X 06 XX9X 16 XX9X 26 XX9X 36 XX
9X 07 XX9X 17 XX9X 27 XX9X 37 XX
9X 08 XX9X 18 XX9X 28 XX9X 38 XX
9X 09 XX9X 19 XX9X 29 XX9X 39 XX
9X 0A XX9X 1A XX9X 2A XX9X 3A XX
9X 0B XX9X 1B XX9X 2B XX9X 3B XX
9X 0C XX9X 1C XX9X 2C XX9X 3C XX
9X 0D XX9X 1D XX9X 2D XX9X 3D XX
9X 0E XX9X 1E XX9X 2E XX9X 3E XX
9X 0F XX9X 1F XX9X 2F XX9X 3F XX

Single LED UI Buttons

Button values and the MIDI Channel are constant, while the LED behavior (velocity) is variable.

  • Format: 90 [Button ID] XX
  • 90 64 XX through 90 77 XX

The Hex prefix 90 translates to a Note On message on Channel 1.
Example: 90 64 01 translates to Note On, Channel 1, Note 100, Velocity 1.

90 64 XX
90 65 XX
90 66 XX
90 67 XX
90 68 XX
90 69 XX
90 6A XX
90 6B XX
90 70 XX
90 71 XX
90 72 XX
90 73 XX
90 74 XX
90 75 XX
90 76 XX
90 77 XX

Advanced SysEx Operations

RGB LED Color Customization

Alternatively, RGB pad colors can be customized using SysEx commands to set one or several LEDs to a specific color profile.
The color is generated by sending three 8-bit values for Red, Blue, and Green.
Since standard MIDI only supports 7-bit messages, each component is expressed using MSB/LSB.

Byte NumberValueDescription
10xF0MIDI System exclusive message start
20x47Manufacturers ID Byte
30x7FSystem Exclusive Device ID
40x4FProduct model ID
50x24Message type identifier
6<total MSB>Number of data bytes to follow (most significant)
7<total LSB>Number of data bytes to follow (least significant)
80x00-0x3FStart Pad
90x00-0x3FEnd Pad
100x00-0x7FRed Brightness MSB
110x00-0x7FRed Brightness LSB
120x00-0x7FGreen Brightness MSB
130x00-0x7FGreen Brightness LSB
140x00-0x7FBlue Brightness MSB
150x00-0x7FBlue Brightness LSB
……Repeat bytes 8-15 for each additional pad color change
<bytes total>0xF7MIDI System exclusive message terminator

Generic SysEx Inquiries & Introduction

Depending on the required software implementation, the APC mini mk2 will respond to the following MMC Device Enquiry and initialization messages.

Byte NumberValueDescription
10xF0MIDI System exclusive message start
20x47Manufacturers ID Byte
30x7FSystem Exclusive Device ID
400x4FProduct model ID
5<Message ID>Message type identifier
6<DataLengthMSB>Number of data bytes to follow (most significant)
7<DataLengthLSB>Number of data bytes to follow (least significant)
8n data bytesData field – n bytes long
n+80xF7MIDI System exclusive message terminator

Device Enquiry

The APC mini mk2 supports the standard MMC Device Enquiry message.
These System Exclusive messages are part of the MIDI Machine Control Standard and do not follow the general format for Inbound System Exclusive messages.

Inquiry Request:

Byte NumberValueDescription
10xF0MIDI System exclusive message start
20x7ENon-Realtime Message
30x00Channel to inquire. (Set to 0 for this protocol.)
40x06Inquiry Message
50x01Inquiry Request
60xF7MIDI System exclusive message terminator

Inquiry Response:

The APC mini mk2 will respond to a Device Inquiry Request message with the following data:

Byte NumberValueDescription
10xF0MIDI System exclusive message start
20x7ENon-Realtime Message
3<MIDI Channel>Common MIDI channel setting
40x06Inquiry Message
50x02Inquiry Response
60x47Manufacturers ID Byte
700x4FProduct model ID
80x00Number of data bytes to follow (most significant)
90x19Number of data bytes to follow (least significant)
10<Version1>Software version major most significant
11<Version2>Software version major least significant
12<Version3>Software version minor most significant
13<Version4>Software version minor least significant
14<DeviceID>System Exclusive Device ID
15<Serial1>Serial Number first digit
16<Serial2>Serial Number second digit
17<Serial3>Serial Number third digit
18<Serial4>Serial Number fourth digit
19<Manufacturing1>Manufacturing Data byte 1
20<Manufacturing2>Manufacturing Data byte 2
21<Manufacturing3>Manufacturing Data byte 3
22<Manufacturing4>Manufacturing Data byte 4
23<Manufacturing5>Manufacturing Data byte 5
24<Manufacturing6>Manufacturing Data byte 6
25<Manufacturing7>Manufacturing Data byte 7
26<Manufacturing8>Manufacturing Data byte 8
27<Manufacturing9>Manufacturing Data byte 9
28<Manufacturing10>Manufacturing Data byte 10
29<Manufacturing11>Manufacturing Data byte 11
30<Manufacturing12>Manufacturing Data byte 12
31<Manufacturing13>Manufacturing Data byte 13
32<Manufacturing14>Manufacturing Data byte 14
33<Manufacturing15>Manufacturing Data byte 15
34<Manufacturing16>Manufacturing Data byte 16
350xF7MIDI System exclusive message terminator

Introduction Message

This message is sent before any other device-specific message (other than Device Enquiry).
It instructs the APC mini mk2 to perform necessary initialization and informs the firmware of the application version number so changes in the host application can be catered for.

Byte NumberValueDescription
10xF0MIDI System exclusive message start
20x47Manufacturers ID Byte
300x7FSystem Exclusive Device ID
40x4FProduct model ID
50x60Message type identifier
60x00Number of data bytes to follow (most significant)
70x04Number of data bytes to follow (least significant)
80x00Application/Configuration identifier
9<Version High>application Software version major
10<Version Low>application Software version minor
11<Bugfix Level>Application Software bug-fix level
120xF7MIDI System exclusive message terminator

Response from APC mini mk2 Introduction message:

Byte NumberValueDescription
10xF0MIDI System exclusive message start
20x47Manufacturers ID Byte
30x7FSystem Exclusive Device ID
40x4FProduct model ID
50x61Message type identifier
60x00Number of data bytes to follow (most significant)
70x04Number of data bytes to follow (least significant)
8<Fader #1 Value>Sends the current value of Fader #1.
9<Fader #2 Value>Sends the current value of Fader #2.
10<Fader #3 Value>Sends the current value of Fader #3.
11<Fader #4 Value>Sends the current value of Fader #4.
12<Fader #5 Value>Sends the current value of Fader #5.
13<Fader #6 Value>Sends the current value of Fader #6.
14<Fader #7 Value>Sends the current value of Fader #7.
15<Fader #8 Value>Sends the current value of Fader #8.
16<Fader #9 Value>Sends the current value of Fader #9.
170xF7MIDI System exclusive message terminator

Hardware Control Mapping

Use the following reference data to determine the MIDI values corresponding to physical hardware controls and faders.

The following chart shows the MIDI Note # associated with each button.
This number will be used for the Inbound Note-On/Off values when the buttons are pressed, and Outbound Note-On messages to control the button’s LEDs, if applicable.

Button NameNote #Note #ChannelLEDPort #Notes
Track Button 10x641000Red0
Track Button 20x651010Red0
Track Button 30x661020Red0
Track Button 40x671030Red0
Track Button 50x681040Red0
Track Button 60x691050Red0
Track Button 70x6A1060Red0
Track Button 80x6B1070Red0
Scene Launch 10x701120Green0
Scene Launch 20x711130Green0
Scene Launch 30x721140Green0
Scene Launch 40x731150Green0
Scene Launch 50x741160Green0
Scene Launch 60x751170Green0
Scene Launch 70x761180Green0
Scene Launch 80x771190Green0
Shift0x7A1220None0
Clip Launch Button 0-630x00 – 0x3F0x00 – 0x3FSee NotesRGBSee Notes*Port 0, MIDI CH 00-0F used when in Session View.
*Port 0, MIDI CH 09 used when in Drum Mode.
*Port 1, MIDI CH 00 used in Note Mode.

Channel Faders & Master Fader

The eight Channel Faders (1 to 8) and the single Master Fader (9) send absolute position data via MIDI CC# on USB Port 0.

Control NameCC#CC#ChannelPortNotes
Fader 10x304800Value is the absolute position of the Fader.
Fader 20x314900Value is the absolute position of the Fader.
Fader 30x325000Value is the absolute position of the Fader.
Fader 40x335100Value is the absolute position of the Fader.
Fader 50x345200Value is the absolute position of the Fader.
Fader 60x355300Value is the absolute position of the Fader.
Fader 70x365400Value is the absolute position of the Fader.
Fader 80x375500Value is the absolute position of the Fader.
Fader 90x385600Value is the absolute position of the Fader.

Max Mugen Lighting

Lighting Designer | Visual Artist | Automation Developer

I engineer lighting architectures, interactive control systems, and automation workflows for live performance and high-end studio pipelines. Available for custom system design and technical programming.

Work With Me

Explore My Work

Stay Connected

Scroll to Top