AKAI PROFESSIONAL APC MINI MK2COMMUNICATIONS PROTOCOL (v1.0)
APC mini mk2 is a USB bus-powered, compact controller for Ableton Live and other software applications. Itfeatures an 8x8 grid of RGB launch clips, 9 faders, and 17 UI buttons for software control.
This document describes the format of messages between the APC mini mk2 and the PC/Mac Host.

Brief Glossary
Outbound: The term “outbound” is used to describe messages sent from the PC Host to the device (i.e., fromthe viewpoint of the PC Host).
Inbound: The term “inbound” is used to describe messages sent from the device to the PC Host (i.e., fromthe viewpoint of the PC Host).

LED Control via MIDI Messages
APC mini mk2’s pad and button LEDs can be controlled by MIDI Note On messages on Port 0 with 3-byte
messages determining 3 factors: Pad/Button value, Behavior (solid, blink, pulse), and Color (pads = RGB,buttons = single color LED). You can control individual LEDs or send bulk commands for the entire UI surface.
Example - If I want to solidly light pad 1 red, send the following:
96 00 05
Yellow = MIDI CH determining LED behavior
Green = Pad/Button ValueBlue = RGB Color as velocity*These values will be in HEX

1

Pad/Button Values
Byte 2 (green) in the above example message determines which pad/button you are trying to light up. MIDI
message construction changes depending on if it is an RGB LED (matrix pads) or a Single LED (smallersquare buttons).
Use the below guide to determine pad/button values and which type of LED message (RGB or Single) you willneed to send.
Pad Matrix:

UI Buttons:
Button NameNote #ChannelLEDPort #Track Button 10x640Red0

Track Button 20x650Red0

Track Button 30x660Red0

Track Button 40x670Red0

Track Button 50x680Red0

Track Button 60x690Red0

Track Button 70x6A0Red0

Track Button 80x6B0Red0

Scene Launch 10x70

0Green0

Scene Launch 20x710

Green0

Scene Launch 30x720

Green0

Scene Launch 40x730

Green0

Scene Launch 50x74

0Green0

Scene Launch 60x750

Green0

Scene Launch 70x760

Green0

Scene Launch 80x770

Green02

RGB LED Behavior (Solid, Blink, Pulse)
RGB LEDs can be lit solid at varying brightness and blink/pulse at different rates. This behavior is determinedby what MIDI Channel MIDI note on message is sent on (MIDI CH 00-0F).
Looking at our above example, 96 00 05, we see that a value of 96 on byte 1 is used which instructs the LED
to stay solidly lit at 100% brightness. If we change byte 1 to 97, our LED will pulse red at 1/16 notes syncedwith an external clock rate.

MIDI Channel

Byte 1 ValuePortFunction

0900On 10% brightness

1910On 25% brightness

2920On 50% brightness

3930On 65% brightness

4940On 75% brightness

5950On 90% brightness

6960On 100% brightness

7970Pulsing 1/16

8980Pulsing 1/8

9990Pulsing 1/4

109A0Pulsing 1/2

119B

0

Blinking 1/24

129C0

Blinking 1/16

139D0

Blinking 1/8

149E

0

Blinking 1/4

159F0

Blinking 1/2

3RGB LED Color
The below table designates 128 RGB values assigned to a velocity value which is represented by byte 3 in theRGB LED message. This color palette is predetermined and cannot be changed.
Again, taking the above example, 96 00 05, let’s change pad 1 to solid lit orange:
96 00 09
96 = Solid lit at 100%00 = Pad 1
09 = Velocity 09 = Orange

Velocity to RGB Color Chart
Color

Velocity

Color

Velocity

Color

Velocity#000000

0#00FF00

21#001D5942#1E1E1E

1#005900

22#00081943#7F7F7F

2#001900

23#4C4CFF

44#FFFFFF

3#4CFF5E

24#0000FF45#FF4C4C

4#00FF1925#000059

46#FF0000

5#00590D

26#00001947#590000

6#001902

27#874CFF

48#190000

7#4CFF88

28#5400FF

49#FFBD6C

8#00FF55

29#190064

50#FF5400

9#00591D

30#0F003051#591D00

10#001F12

31#FF4CFF

52#271B00

11#4CFFB732#FF00FF

53#FFFF4C

12#00FF9933#590059

54#FFFF00

13#005935

34#190019

55#595900

14#001912

35#FF4C8756#191900

15#4CC3FF36#FF0054

57#88FF4C

16#00A9FF37#59001D

58#54FF00

17#004152

38#22001359#1D5900

18#001019

39#FF1500

60#142B00

19#4C88FF40#993500

61#4CFF4C20#0055FF

41#795100

624ColorVelocity

Color

Velocity

Color

Velocity#001D5942#FF000072#0D5038102#000819

43#BDFF2D73#15152A

103#4C4CFF

44#AFED0674#16205A

104#0000FF

45#64FF0975#693C1C

105#00005946#108B00

76#A8000A

106#00001947#00FF87

77#DE513D

107#874CFF48#00A9FF

78#D86A1C

108#5400FF

49#002AFF79#FFE126

109#19006450#3F00FF80#9EE12F

110#0F003051#7A00FF81#67B50F

111#FF4CFF

52#B21A7D82#1E1E30

112#FF00FF

53#402100

83#DCFF6B

113#590059

54#FF4A00

84#80FFBD

114#19001955#88E10685#9A99FF115#FF4C87

56#72FF1586#8E66FF116#FF0054

57#00FF00

87#404040

117#59001D

58#3BFF2688#757575

118#22001359#59FF7189#E0FFFF

119#FF1500

60#38FFCC

90#A00000

120#993500

61#5B8AFF91#350000

121#795100

62#3151C692#1AD000

122#436400

63#877FE993#074200

123#033900

64#D31DFF94#B9B000124#00573565#FF005D

95#3F3100125#00547F

66#FF7F00

96#B35F00

126#0000FF67#B9B000

97#4B1502127#00454F

68#90FF00

98#2500CC

69#835D0799#7F7F7F

70#392b00

100#202020

71#144C10101

5Single LED Behavior/ColorUI Buttons on the periphery of the APC mini mk2 are single-color LEDs and have their own unique control
message.
In this example, we want to solidly light the Volume LED, which will always be red.
90 64 01
90 = MIDI Ch 00 *This will always be 90 for single LED commands. RGB blink/pulse values do not apply.
64 = Volume button value
01 = LED On

Use the below table to construct your single LED MIDI message:
Byte numberValue

Description

10x90

MIDI CH Note-On

2<Button Value>

0x64-0x77*See Pad/Button Values above
Used to determine LED behavior as follows:3<Velocity>

LED Off = 0x00
LED On = 0x01, 0x03-0x7F
LED Blink = 0x02

6

LED Bulk Message Format
RGB Matrix – Pad values are constant, MIDI Ch and RGB color are variable.
9X 00 XX

9X 16 XX

9X 2C XX

9X 01 XX

9X 17 XX

9X 2D XX

9X 02 XX

9X 18 XX

9X 2E XX

9X 03 XX

9X 19 XX

9X 2F XX

9X 04 XX

9X 1A XX

9X 30 XX

9X 05 XX

9X 1B XX

9X 31 XX

9X 06 XX

9X 1C XX

9X 32 XX

9X 07 XX

9X 1D XX

9X 33 XX

9X 08 XX

9X 1E XX

9X 34 XX

9X 09 XX

9X 1F XX

9X 35 XX

9X 0A XX

9X 20 XX

9X 36 XX

9X 0B XX

9X 21 XX

9X 37 XX

9X 0C XX

9X 22 XX

9X 38 XX

9X 0D XX

9X 23 XX

9X 39 XX

9X 0E XX

9X 24 XX

9X 3A XX

9X 0F XX

9X 25 XX

9X 3B XX

9X 10 XX

9X 26 XX

9X 3C XX

9X 11 XX

9X 27 XX

9X 3D XX

9X 12 XX

9X 28 XX

9X 3E XX

9X 13 XX

9X 29 XX

9X 3F XX

9X 14 XX

9X 2A XX

9X 15 XX

9X 2B XX

7

Single LED UI Buttons – Button values and MIDI Ch are constant, LED behavior is variable.
90 64 XX90 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

8

RGB LED Color Lighting
Alternatively, RGB pad colors can be customized using SysEx commands. This message is sent to the device
to set one or several of the unit’s RGB LEDs to a specific color. The color is created by sending three 8-bit
color values for each color component (Red, Blue and Green). Standard MIDI only supports 7-bit messages,
so each color in the RGB Color Lighting message will be expressed using MSB/LSB.

Byte NumberValue

Description

10xF0

MIDI System exclusive message start

20x47

Manufacturers ID Byte

30x7F

System Exclusive Device ID

40x4F

Product model ID

50x24

Message 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-0x3F

Start Pad

90x00-0x3F

End Pad100x00-0x7F

Red Brightness MSB

110x00-0x7F

Red Brightness LSB

120x00-0x7F

Green Brightness MSB

130x00-0x7F

Green Brightness LSB

140x00-0x7F

Blue Brightness MSB

150x00-0x7F

Blue Brightness LSB…

…

Repeat bytes 8-15 for each additional pad color
change<bytes total>

0xF7

MIDI System exclusive message terminator

9Generic SysEx Messages
Depending on the software implementation required, APC mini mk2 will respond to/with the following SysEx
request/return messages.

MIDI System ExclusiveThe System Exclusive messages exchanged between the Host and the device will be of the following format:

Byte NumberValue

Description

10xF0

MIDI System exclusive message start

20x47

Manufacturers ID Byte

30x7F

System Exclusive Device ID

400x4F

Product 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)8

n data bytes

Data field – n bytes longn+80xF7

MIDI System exclusive message terminator

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

Byte Number

Value

Description

10xF0

MIDI System exclusive message start

20x7E

Non-Realtime Message

30x00

Channel to inquire. (Set to 0 for this protocol.)40x06

Inquiry Message

50x01

Inquiry Request

60xF7

MIDI System exclusive message terminator

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

Byte NumberValue

Description

10xF0

MIDI System exclusive message start

20x7E

Non-Realtime Message

3<MIDI Channel>

Common MIDI channel setting

40x06

Inquiry Message

50x02

Inquiry Response

60x47

Manufacturers ID Byte

700x4F

Product model ID

80x00

Number of data bytes to follow (most significant)

90x19

Number 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 511

Byte Number

Value

Description

24<Manufacturing6>

Manufacturing Data byte 625<Manufacturing7>

Manufacturing Data byte 7

26<Manufacturing8>Manufacturing Data byte 827<Manufacturing9>

Manufacturing Data byte 928<Manufacturing10>

Manufacturing Data byte 10

29<Manufacturing11>

Manufacturing Data byte 1130<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

35

0xF7

MIDI System exclusive message terminator

12

Introduction Message
This message is sent before any other device-specific message (i.e. other than Device Enquiry). It instructsthe APC mini mk2 to perform the necessary initialization and informs the firmware of the version number of
the application in order that changes in the application can be catered for in the APC mini mk2 firmware.

Byte Number

Value

Description

10xF0

MIDI System exclusive message start

20x47

Manufacturers ID Byte

300x7F

System Exclusive Device ID

40x4F

Product model ID

50x60

Message type identifier

60x00

Number of data bytes to follow (most significant)

70x04

Number of data bytes to follow (least significant)

80x00

Application/Configuration identifier9<Version High>application Software version major

10<Version Low>

application Software version minor

11<Bugfix Level>

Application Software bug-fix level

120xF7

MIDI System exclusive message terminator13

Response from APC mini mk2 Introduction message:

Byte Number

Value

Description

10xF0

MIDI System exclusive message start

20x47

Manufacturers ID Byte

30x7F

System Exclusive Device ID

40x4F

Product model ID

50x61

Message type identifier

60x00

Number of data bytes to follow (most significant)

70x04

Number 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.

170xF7

MIDI System exclusive message terminator

14Control Mapping
Use the below data to determine APC mini mk2 MIDI values corresponding to hardware controls and modes.

Pads/Buttons

Scene Launch Buttons 1-8

Track Buttons 1-8

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

Note #ChannelLEDPort #Track Button 10x640Red0

Track Button 20x650Red0

Track Button 30x660Red0

Track Button 40x670Red0

Track Button 50x680Red0

Track Button 60x690Red0

Track Button 70x6A0Red0

Track Button 80x6B0Red0Notes

15

Button Name

Note #

Channel

LED

Port #

Scene Launch 10x70

0

Green

0

Scene Launch 20x71

0Green0

Scene Launch 30x72

0Green0

Scene Launch 40x73

0Green0

Scene Launch 50x740Green0

Scene Launch 60x75

0Green0

Scene Launch 70x760

Green0Scene Launch 80x770Green0

Shift0x7A0None0Clip Launch
Button 0-630x00 –0x3F

See Notes

RGBSeeNotes

Notes*Port 0, MIDI CH 00-0F used when inSession View.
*Port 0, MIDI CH 09 used when inDrum Mode.
*Port 1, MIDI CH 00 used in NoteMode.

Channel Faders / Master Fader

123457689The eight Channel Faders (1-8) and single Master Fader (9) are designed to interact with the various controlsof the Ableton Live software. These faders will each send a MIDI CC# on USB Port 0.
The following chart lists the CC# for each Relevant control.
Control NameCC#ChannelPortNotes

Fader 10x3000

Value is the absolute position of the Fader.

Fader 20x3100

Value is the absolute position of the Fader.

Fader 30x3200

Value is the absolute position of the Fader.

Fader 40x3300

Value is the absolute position of the Fader.

Fader 50x3400

Value is the absolute position of the Fader.

Fader 60x3500

Value is the absolute position of the Fader.

Fader 70x3600

Value is the absolute position of the Fader.

Fader 80x3700

Value is the absolute position of the Fader.

Fader 90x3800

Value is the absolute position of the Fader.
16