AKAI Professional
AKAI APC40 mkII
AKAI APC40 mkII is a MIDI hardware controller by AKAI Professional: 40 pads, 16 knobs, 2 encoders, 10 faders and 71 buttons.
It sends Note and CC on channels 1, 2, 3, 4, 5, 6, 7, 8. The profile cites 4 sources. 40 of its controls are marked unverified: the number is our best reading, and Learn rebinds it in one move.
- Manufacturer docs
- Community notes
- LED feedback
- 40 unverified
- Kind
- hardware device
- Maker
- AKAI Professional
- Controls
- 139 controls
- Messages
- Note · CC
- MIDI channels
- 1, 2, 3, 4, 5, 6, 7, 8
- LED feedback
- yes, lights are driven by MIDI
- Signals
midi/apc40mk2/…- Port name matches
/apc\s*40\s*(mk\s*2|mk\s*ii|ii|2)\b/i
Drag knobs and faders · tap pads and keys · or plug the real one in and press Connect. Nothing is sent anywhere unless you add a MIDI out.
MIDI implementation
Every control of AKAI APC40 mkII and the message it sends
Generated from the profile file, so it is the same table the on-screen controller plays. Channels are 1–16; numbers are real MIDI numbers.
| Control | Type | Message | Ch | Number | Signal | LED feedback | Verified |
|---|---|---|---|---|---|---|---|
pad1 |
pad | Note · velocity | 1 | 0 · C-1 | midi/apc40mk2/pad1 |
note 0 · on 37 / off 0 | unverified |
pad2 |
pad | Note · velocity | 1 | 1 · C#-1 | midi/apc40mk2/pad2 |
note 1 · on 37 / off 0 | unverified |
pad3 |
pad | Note · velocity | 1 | 2 · D-1 | midi/apc40mk2/pad3 |
note 2 · on 37 / off 0 | unverified |
pad4 |
pad | Note · velocity | 1 | 3 · D#-1 | midi/apc40mk2/pad4 |
note 3 · on 37 / off 0 | unverified |
pad5 |
pad | Note · velocity | 1 | 4 · E-1 | midi/apc40mk2/pad5 |
note 4 · on 37 / off 0 | unverified |
pad6 |
pad | Note · velocity | 1 | 5 · F-1 | midi/apc40mk2/pad6 |
note 5 · on 37 / off 0 | unverified |
pad7 |
pad | Note · velocity | 1 | 6 · F#-1 | midi/apc40mk2/pad7 |
note 6 · on 37 / off 0 | unverified |
pad8 |
pad | Note · velocity | 1 | 7 · G-1 | midi/apc40mk2/pad8 |
note 7 · on 37 / off 0 | unverified |
pad9 |
pad | Note · velocity | 1 | 8 · G#-1 | midi/apc40mk2/pad9 |
note 8 · on 37 / off 0 | unverified |
pad10 |
pad | Note · velocity | 1 | 9 · A-1 | midi/apc40mk2/pad10 |
note 9 · on 37 / off 0 | unverified |
pad11 |
pad | Note · velocity | 1 | 10 · A#-1 | midi/apc40mk2/pad11 |
note 10 · on 37 / off 0 | unverified |
pad12 |
pad | Note · velocity | 1 | 11 · B-1 | midi/apc40mk2/pad12 |
note 11 · on 37 / off 0 | unverified |
pad13 |
pad | Note · velocity | 1 | 12 · C0 | midi/apc40mk2/pad13 |
note 12 · on 37 / off 0 | unverified |
pad14 |
pad | Note · velocity | 1 | 13 · C#0 | midi/apc40mk2/pad14 |
note 13 · on 37 / off 0 | unverified |
pad15 |
pad | Note · velocity | 1 | 14 · D0 | midi/apc40mk2/pad15 |
note 14 · on 37 / off 0 | unverified |
pad16 |
pad | Note · velocity | 1 | 15 · D#0 | midi/apc40mk2/pad16 |
note 15 · on 37 / off 0 | unverified |
pad17 |
pad | Note · velocity | 1 | 16 · E0 | midi/apc40mk2/pad17 |
note 16 · on 37 / off 0 | unverified |
pad18 |
pad | Note · velocity | 1 | 17 · F0 | midi/apc40mk2/pad18 |
note 17 · on 37 / off 0 | unverified |
pad19 |
pad | Note · velocity | 1 | 18 · F#0 | midi/apc40mk2/pad19 |
note 18 · on 37 / off 0 | unverified |
pad20 |
pad | Note · velocity | 1 | 19 · G0 | midi/apc40mk2/pad20 |
note 19 · on 37 / off 0 | unverified |
pad21 |
pad | Note · velocity | 1 | 20 · G#0 | midi/apc40mk2/pad21 |
note 20 · on 37 / off 0 | unverified |
pad22 |
pad | Note · velocity | 1 | 21 · A0 | midi/apc40mk2/pad22 |
note 21 · on 37 / off 0 | unverified |
pad23 |
pad | Note · velocity | 1 | 22 · A#0 | midi/apc40mk2/pad23 |
note 22 · on 37 / off 0 | unverified |
pad24 |
pad | Note · velocity | 1 | 23 · B0 | midi/apc40mk2/pad24 |
note 23 · on 37 / off 0 | unverified |
pad25 |
pad | Note · velocity | 1 | 24 · C1 | midi/apc40mk2/pad25 |
note 24 · on 37 / off 0 | unverified |
pad26 |
pad | Note · velocity | 1 | 25 · C#1 | midi/apc40mk2/pad26 |
note 25 · on 37 / off 0 | unverified |
pad27 |
pad | Note · velocity | 1 | 26 · D1 | midi/apc40mk2/pad27 |
note 26 · on 37 / off 0 | unverified |
pad28 |
pad | Note · velocity | 1 | 27 · D#1 | midi/apc40mk2/pad28 |
note 27 · on 37 / off 0 | unverified |
pad29 |
pad | Note · velocity | 1 | 28 · E1 | midi/apc40mk2/pad29 |
note 28 · on 37 / off 0 | unverified |
pad30 |
pad | Note · velocity | 1 | 29 · F1 | midi/apc40mk2/pad30 |
note 29 · on 37 / off 0 | unverified |
pad31 |
pad | Note · velocity | 1 | 30 · F#1 | midi/apc40mk2/pad31 |
note 30 · on 37 / off 0 | unverified |
pad32 |
pad | Note · velocity | 1 | 31 · G1 | midi/apc40mk2/pad32 |
note 31 · on 37 / off 0 | unverified |
pad33 |
pad | Note · velocity | 1 | 32 · G#1 | midi/apc40mk2/pad33 |
note 32 · on 37 / off 0 | unverified |
pad34 |
pad | Note · velocity | 1 | 33 · A1 | midi/apc40mk2/pad34 |
note 33 · on 37 / off 0 | unverified |
pad35 |
pad | Note · velocity | 1 | 34 · A#1 | midi/apc40mk2/pad35 |
note 34 · on 37 / off 0 | unverified |
pad36 |
pad | Note · velocity | 1 | 35 · B1 | midi/apc40mk2/pad36 |
note 35 · on 37 / off 0 | unverified |
pad37 |
pad | Note · velocity | 1 | 36 · C2 | midi/apc40mk2/pad37 |
note 36 · on 37 / off 0 | unverified |
pad38 |
pad | Note · velocity | 1 | 37 · C#2 | midi/apc40mk2/pad38 |
note 37 · on 37 / off 0 | unverified |
pad39 |
pad | Note · velocity | 1 | 38 · D2 | midi/apc40mk2/pad39 |
note 38 · on 37 / off 0 | unverified |
pad40 |
pad | Note · velocity | 1 | 39 · D#2 | midi/apc40mk2/pad40 |
note 39 · on 37 / off 0 | unverified |
scene1 |
button | Note · momentary | 1 | 82 · A#5 | midi/apc40mk2/scene1 |
note 82 · on 21 / off 0 | yes |
scene2 |
button | Note · momentary | 1 | 83 · B5 | midi/apc40mk2/scene2 |
note 83 · on 21 / off 0 | yes |
scene3 |
button | Note · momentary | 1 | 84 · C6 | midi/apc40mk2/scene3 |
note 84 · on 21 / off 0 | yes |
scene4 |
button | Note · momentary | 1 | 85 · C#6 | midi/apc40mk2/scene4 |
note 85 · on 21 / off 0 | yes |
scene5 |
button | Note · momentary | 1 | 86 · D6 | midi/apc40mk2/scene5 |
note 86 · on 21 / off 0 | yes |
■ stop1 |
button | Note · momentary | 1 | 52 · E3 | midi/apc40mk2/stop1 |
note 52 · on 1 / off 0 | yes |
■ stop2 |
button | Note · momentary | 2 | 52 · E3 | midi/apc40mk2/stop2 |
note 52 · on 1 / off 0 | yes |
■ stop3 |
button | Note · momentary | 3 | 52 · E3 | midi/apc40mk2/stop3 |
note 52 · on 1 / off 0 | yes |
■ stop4 |
button | Note · momentary | 4 | 52 · E3 | midi/apc40mk2/stop4 |
note 52 · on 1 / off 0 | yes |
■ stop5 |
button | Note · momentary | 5 | 52 · E3 | midi/apc40mk2/stop5 |
note 52 · on 1 / off 0 | yes |
■ stop6 |
button | Note · momentary | 6 | 52 · E3 | midi/apc40mk2/stop6 |
note 52 · on 1 / off 0 | yes |
■ stop7 |
button | Note · momentary | 7 | 52 · E3 | midi/apc40mk2/stop7 |
note 52 · on 1 / off 0 | yes |
■ stop8 |
button | Note · momentary | 8 | 52 · E3 | midi/apc40mk2/stop8 |
note 52 · on 1 / off 0 | yes |
■ all stopall |
button | Note · momentary | 1 | 81 · A5 | midi/apc40mk2/stopall |
— | yes |
1 act1 |
button | Note · momentary | 1 | 50 · D3 | midi/apc40mk2/act1 |
note 50 · on 1 / off 0 | yes |
2 act2 |
button | Note · momentary | 2 | 50 · D3 | midi/apc40mk2/act2 |
note 50 · on 1 / off 0 | yes |
3 act3 |
button | Note · momentary | 3 | 50 · D3 | midi/apc40mk2/act3 |
note 50 · on 1 / off 0 | yes |
4 act4 |
button | Note · momentary | 4 | 50 · D3 | midi/apc40mk2/act4 |
note 50 · on 1 / off 0 | yes |
5 act5 |
button | Note · momentary | 5 | 50 · D3 | midi/apc40mk2/act5 |
note 50 · on 1 / off 0 | yes |
6 act6 |
button | Note · momentary | 6 | 50 · D3 | midi/apc40mk2/act6 |
note 50 · on 1 / off 0 | yes |
7 act7 |
button | Note · momentary | 7 | 50 · D3 | midi/apc40mk2/act7 |
note 50 · on 1 / off 0 | yes |
8 act8 |
button | Note · momentary | 8 | 50 · D3 | midi/apc40mk2/act8 |
note 50 · on 1 / off 0 | yes |
A|B ab1 |
button | Note · momentary | 1 | 66 · F#4 | midi/apc40mk2/ab1 |
note 66 · on 1 / off 0 | yes |
A|B ab2 |
button | Note · momentary | 2 | 66 · F#4 | midi/apc40mk2/ab2 |
note 66 · on 1 / off 0 | yes |
A|B ab3 |
button | Note · momentary | 3 | 66 · F#4 | midi/apc40mk2/ab3 |
note 66 · on 1 / off 0 | yes |
A|B ab4 |
button | Note · momentary | 4 | 66 · F#4 | midi/apc40mk2/ab4 |
note 66 · on 1 / off 0 | yes |
A|B ab5 |
button | Note · momentary | 5 | 66 · F#4 | midi/apc40mk2/ab5 |
note 66 · on 1 / off 0 | yes |
A|B ab6 |
button | Note · momentary | 6 | 66 · F#4 | midi/apc40mk2/ab6 |
note 66 · on 1 / off 0 | yes |
A|B ab7 |
button | Note · momentary | 7 | 66 · F#4 | midi/apc40mk2/ab7 |
note 66 · on 1 / off 0 | yes |
A|B ab8 |
button | Note · momentary | 8 | 66 · F#4 | midi/apc40mk2/ab8 |
note 66 · on 1 / off 0 | yes |
S solo1 |
button | Note · momentary | 1 | 49 · C#3 | midi/apc40mk2/solo1 |
note 49 · on 1 / off 0 | yes |
S solo2 |
button | Note · momentary | 2 | 49 · C#3 | midi/apc40mk2/solo2 |
note 49 · on 1 / off 0 | yes |
S solo3 |
button | Note · momentary | 3 | 49 · C#3 | midi/apc40mk2/solo3 |
note 49 · on 1 / off 0 | yes |
S solo4 |
button | Note · momentary | 4 | 49 · C#3 | midi/apc40mk2/solo4 |
note 49 · on 1 / off 0 | yes |
S solo5 |
button | Note · momentary | 5 | 49 · C#3 | midi/apc40mk2/solo5 |
note 49 · on 1 / off 0 | yes |
S solo6 |
button | Note · momentary | 6 | 49 · C#3 | midi/apc40mk2/solo6 |
note 49 · on 1 / off 0 | yes |
S solo7 |
button | Note · momentary | 7 | 49 · C#3 | midi/apc40mk2/solo7 |
note 49 · on 1 / off 0 | yes |
S solo8 |
button | Note · momentary | 8 | 49 · C#3 | midi/apc40mk2/solo8 |
note 49 · on 1 / off 0 | yes |
● arm1 |
button | Note · momentary | 1 | 48 · C3 | midi/apc40mk2/arm1 |
note 48 · on 1 / off 0 | yes |
● arm2 |
button | Note · momentary | 2 | 48 · C3 | midi/apc40mk2/arm2 |
note 48 · on 1 / off 0 | yes |
● arm3 |
button | Note · momentary | 3 | 48 · C3 | midi/apc40mk2/arm3 |
note 48 · on 1 / off 0 | yes |
● arm4 |
button | Note · momentary | 4 | 48 · C3 | midi/apc40mk2/arm4 |
note 48 · on 1 / off 0 | yes |
● arm5 |
button | Note · momentary | 5 | 48 · C3 | midi/apc40mk2/arm5 |
note 48 · on 1 / off 0 | yes |
● arm6 |
button | Note · momentary | 6 | 48 · C3 | midi/apc40mk2/arm6 |
note 48 · on 1 / off 0 | yes |
● arm7 |
button | Note · momentary | 7 | 48 · C3 | midi/apc40mk2/arm7 |
note 48 · on 1 / off 0 | yes |
● arm8 |
button | Note · momentary | 8 | 48 · C3 | midi/apc40mk2/arm8 |
note 48 · on 1 / off 0 | yes |
1 fader1 |
fader | CC | 1 | 7 | midi/apc40mk2/fader1 |
— | yes |
2 fader2 |
fader | CC | 2 | 7 | midi/apc40mk2/fader2 |
— | yes |
3 fader3 |
fader | CC | 3 | 7 | midi/apc40mk2/fader3 |
— | yes |
4 fader4 |
fader | CC | 4 | 7 | midi/apc40mk2/fader4 |
— | yes |
5 fader5 |
fader | CC | 5 | 7 | midi/apc40mk2/fader5 |
— | yes |
6 fader6 |
fader | CC | 6 | 7 | midi/apc40mk2/fader6 |
— | yes |
7 fader7 |
fader | CC | 7 | 7 | midi/apc40mk2/fader7 |
— | yes |
8 fader8 |
fader | CC | 8 | 7 | midi/apc40mk2/fader8 |
— | yes |
M master |
fader | CC | 1 | 14 | midi/apc40mk2/master |
— | yes |
A·B xfade |
fader | CC | 1 | 15 | midi/apc40mk2/xfade |
— | yes |
1 tk1 |
knob | CC | 1 | 48 | midi/apc40mk2/tk1 |
— | yes |
2 tk2 |
knob | CC | 1 | 49 | midi/apc40mk2/tk2 |
— | yes |
3 tk3 |
knob | CC | 1 | 50 | midi/apc40mk2/tk3 |
— | yes |
4 tk4 |
knob | CC | 1 | 51 | midi/apc40mk2/tk4 |
— | yes |
5 tk5 |
knob | CC | 1 | 52 | midi/apc40mk2/tk5 |
— | yes |
6 tk6 |
knob | CC | 1 | 53 | midi/apc40mk2/tk6 |
— | yes |
7 tk7 |
knob | CC | 1 | 54 | midi/apc40mk2/tk7 |
— | yes |
8 tk8 |
knob | CC | 1 | 55 | midi/apc40mk2/tk8 |
— | yes |
1 dk1 |
knob | CC | 1 | 16 | midi/apc40mk2/dk1 |
— | yes |
2 dk2 |
knob | CC | 1 | 17 | midi/apc40mk2/dk2 |
— | yes |
3 dk3 |
knob | CC | 1 | 18 | midi/apc40mk2/dk3 |
— | yes |
4 dk4 |
knob | CC | 1 | 19 | midi/apc40mk2/dk4 |
— | yes |
5 dk5 |
knob | CC | 1 | 20 | midi/apc40mk2/dk5 |
— | yes |
6 dk6 |
knob | CC | 1 | 21 | midi/apc40mk2/dk6 |
— | yes |
7 dk7 |
knob | CC | 1 | 22 | midi/apc40mk2/dk7 |
— | yes |
8 dk8 |
knob | CC | 1 | 23 | midi/apc40mk2/dk8 |
— | yes |
Cue cue |
encoder | CC · relative (twos) | 1 | 47 | midi/apc40mk2/cue |
— | yes |
Tempo tempo |
encoder | CC · relative (twos) | 1 | 13 | midi/apc40mk2/tempo |
— | yes |
◀ devl |
button | Note · momentary | 1 | 58 · A#3 | midi/apc40mk2/devl |
note 58 · on 1 / off 0 | yes |
▶ devr |
button | Note · momentary | 1 | 59 · B3 | midi/apc40mk2/devr |
note 59 · on 1 / off 0 | yes |
◀ bankl |
button | Note · momentary | 1 | 60 · C4 | midi/apc40mk2/bankl |
note 60 · on 1 / off 0 | yes |
▶ bankr |
button | Note · momentary | 1 | 61 · C#4 | midi/apc40mk2/bankr |
note 61 · on 1 / off 0 | yes |
On devon |
button | Note · momentary | 1 | 62 · D4 | midi/apc40mk2/devon |
note 62 · on 1 / off 0 | yes |
Lock devlock |
button | Note · momentary | 1 | 63 · D#4 | midi/apc40mk2/devlock |
note 63 · on 1 / off 0 | yes |
Clip clipview |
button | Note · momentary | 1 | 64 · E4 | midi/apc40mk2/clipview |
note 64 · on 1 / off 0 | yes |
Detail detail |
button | Note · momentary | 1 | 65 · F4 | midi/apc40mk2/detail |
note 65 · on 1 / off 0 | yes |
▶ play |
button | Note · momentary | 1 | 91 · G6 | midi/apc40mk2/play |
note 91 · on 1 / off 0 | yes |
● rec |
button | Note · momentary | 1 | 93 · A6 | midi/apc40mk2/rec |
note 93 · on 1 / off 0 | yes |
Sess sessrec |
button | Note · momentary | 1 | 102 · F#7 | midi/apc40mk2/sessrec |
note 102 · on 1 / off 0 | yes |
Pan pan |
button | Note · momentary | 1 | 87 · D#6 | midi/apc40mk2/pan |
note 87 · on 1 / off 0 | yes |
Sends sends |
button | Note · momentary | 1 | 88 · E6 | midi/apc40mk2/sends |
note 88 · on 1 / off 0 | yes |
User user |
button | Note · momentary | 1 | 89 · F6 | midi/apc40mk2/user |
note 89 · on 1 / off 0 | yes |
Metro metro |
button | Note · momentary | 1 | 90 · F#6 | midi/apc40mk2/metro |
note 90 · on 1 / off 0 | yes |
Tap tap |
button | Note · momentary | 1 | 99 · D#7 | midi/apc40mk2/tap |
— | yes |
− nudgem |
button | Note · momentary | 1 | 100 · E7 | midi/apc40mk2/nudgem |
— | yes |
+ nudgep |
button | Note · momentary | 1 | 101 · F7 | midi/apc40mk2/nudgep |
— | yes |
▲ up |
button | Note · momentary | 1 | 94 · A#6 | midi/apc40mk2/up |
— | yes |
▼ down |
button | Note · momentary | 1 | 95 · B6 | midi/apc40mk2/down |
— | yes |
◀ left |
button | Note · momentary | 1 | 97 · C#7 | midi/apc40mk2/left |
— | yes |
▶ right |
button | Note · momentary | 1 | 96 · C7 | midi/apc40mk2/right |
— | yes |
Shift shift |
button | Note · momentary | 1 | 98 · D7 | midi/apc40mk2/shift |
— | yes |
Bank banklock |
button | Note · momentary | 1 | 103 · G7 | midi/apc40mk2/banklock |
note 103 · on 1 / off 0 | yes |
FS footswitch |
button | CC · momentary | 1 | 64 | midi/apc40mk2/footswitch |
— | yes |
LED feedback is modeled for 101 of its controls: the LED column says which message lights each one.
Notes on single controls
xfadeHorizontal on the unit, drawn upright here: the faceplate has no horizontal fader.
Sources
- manufacturer APC40 Mk2 Communications Protocol v1.2 (AKAI Professional, 19 Jan 2015)official. 'The unit defaults to Mode 0 (Generic) on startup'. Inbound: clip launch 1–40 = notes 0x00–0x27, record arm 0x30, solo 0x31, activator 0x32, clip stop 0x34 (all four on channels 0–7 = tracks 1–8), device left / right 0x3A / 0x3B, bank left / right 0x3C / 0x3D, device on/off 0x3E, device lock 0x3F, clip/device view 0x40, detail view 0x41, crossfader A|B 0x42 (channels 0–7), stop all clips 0x51, scene launch 0x52–0x56, pan 0x57, sends 0x58, user 0x59, metronome 0x5A, play 0x5B, record 0x5D, up 0x5E, down 0x5F, right 0x60, left 0x61, shift 0x62, tap tempo 0x63, nudge − / + 0x64 / 0x65, session record 0x66, bank 0x67; track fader CC 0x07 (channels 0–7), master 0x0E, crossfader 0x0F, device knobs 0x10–0x17 (channel = selected track, Generic mode), track knobs 0x30–0x37, footswitch 0x40 (127 / 0); relative (cue 0x2F, tempo 0x0D): 1–63 up, 127–64 down; LEDs: note-on, velocity = state, RGB LEDs take the lighting type on the channel (0 = primary colour) and a palette index in velocity (3 white, 5 red, 21 green, 37 #00A9FF); channels are written 0–15 and are 1–16 here
- manufacturer APC40 mkII User Guide v1.0 (AKAI Professional)official. 'Features' top view (the faceplate here follows its numbered figure): 8 assignable knobs over the 8×5 clip grid with the five scene launch buttons at its right, clip stop and track selector rows, the per-track [number][A|B] and [S][●] buttons, nine faders with the crossfader at the bottom right, the 4×2 device knobs and button block, the cursor, Shift and Bank, the Pan / Sends / User column, Play / Record / Session, Metronome, Tap Tempo, Nudge, the tempo and cue knobs, a footswitch input
- community TouchDesigner – AKAI APC 40 MKii (NiDerLander, non-official)community. Confirms that in Generic mode the track selector buttons send no CC of their own but the device knobs' values instead, and that every other control is mapped from the protocol document
- community APC40 mk2 clip grid, Lightjams forum (non-official)community. A user reports the clip launch grid and the scene launch buttons arriving on MIDI channel 1 (the grid as 40 contiguous notes); it says nothing about which row is which
Notes
Models Generic mode (Mode 0), the one the unit starts in; Ableton Live software switches it to Ableton Live mode with a SysEx the element does not send, and then the controls change channels and the device knobs stop being banked. Channels: the protocol writes 0–15, this file 1–16. Track-strip buttons (clip stop, solo, record arm, activator, A|B) and the track faders are one channel per track, 1 to 8. In Generic mode the device knobs and device buttons are banked by the track selector: they send on channel 1 with track 1 selected, 2 with track 2 … 9 with Master, and pressing a track selector re-sends the eight device knob values on that channel. The track selectors themselves send no note in Generic mode (the manual calls them radio buttons that only choose the bank), so they are drawn, not mapped; this file shows the track-1 bank. The manual's Generic-mode section calls activator, solo, record arm, pan, sends, user and the device / bank arrows 'toggle' buttons; its inbound section reports every button as note-on when pressed and note-off when released, which is what is modelled. The 40 clip pads are flagged: the manual numbers them Clip Launch 1–40 = notes 0–39 but gives no figure of which pad is which; Akai's other grids and the Ableton Remote Script count from the bottom-left, left to right, upward, and that is how they are placed (note 0 bottom-left, note 39 top-right); learn rebinds. The master fader, crossfader, cue, tempo, footswitch and track knobs list no channel in the manual: channel 1 (Lightjams reports the grid and scene buttons on channel 1 as well). The ring LEDs around the 16 knobs are written with the knob's own CC (the value) and a ring-type CC (0x18–0x1F device, 0x38–0x3F track: 0 off, 1 single, 2 volume, 3 pan) and are not modelled as LEDs. The manual also lists a 'STOP' note (0x5C) that the faceplate has no button for. LED feedback: clip pads light #00A9FF (palette 37) and scene launch buttons green (21) with the primary-colour lighting type (channel 1); single-colour buttons take velocity 1 for on. The crossfader is horizontal on the unit and drawn upright here.
Port names it recognises
- matches
/apc\s*40\s*(mk\s*2|mk\s*ii|ii|2)\b/i
Signals
Every control publishes midi/apc40mk2/<control> (0..1), plus /raw; pads add /hit, encoders /delta, keys /on /off and n<note>; the last control touched is midi/apc40mk2/last.
Use it
Use AKAI APC40 mkII in your own work
Embed it with one line
No import map, no build step. Change
layout, addhardware="ask"for a Connect button.<script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script> <oav-controller profile="akai-apc40-mk2" readout></oav-controller>Or as an iframe
For places that only take an iframe. Every event arrives as a
postMessage.<iframe src="https://openaudiovisual.com/embed/controller/?profile=akai-apc40-mk2&readout" width="720" height="451" style="border:0;max-width:100%" allow="midi" title="AKAI APC40 mkII"></iframe> <script> // every control the visitor plays arrives here addEventListener('message', (e) => { if (e.data?.source !== 'openav' || e.data.type !== 'control') return; console.log(e.data.detail.signal, e.data.detail.value); }); </script>Send it to Ableton, TouchDesigner or Resolume
What you play on screen leaves as real MIDI on the IAC bus (macOS) or a loopMIDI port (Windows). The steps are on the catalog page.
<!-- what you play on this controller → the IAC bus (macOS) → Ableton, TouchDesigner, Resolume --> <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script> <oav-controller profile="akai-apc40-mk2" midi-out="IAC" readout></oav-controller> <!-- Windows: midi-out="loopMIDI" · let the visitor pick a port: midi-out="ask" -->macOS: Audio MIDI Setup → MIDI Studio → IAC Driver → “Device is online”. Windows 11: the built-in Windows MIDI Services have a loopback (not tested by us); older Windows: install loopMIDI, add a port and use
midi-out="loopMIDI".
In p5.js, with one line
The one-line injection names knobs, faders and pads by their order in this profile, the order of the table above. Add ?profile=akai-apc40-mk2 to make the on-screen controller this one; a real AKAI APC40 mkII is recognised by its port name.
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=akai-apc40-mk2' }));| In your sketch | Control | Message |
|---|---|---|
knob1 | 1 tk1 | CC 48 · Ch 1 |
knob2 | 2 tk2 | CC 49 · Ch 1 |
knob3 | 3 tk3 | CC 50 · Ch 1 |
knob4 | 4 tk4 | CC 51 · Ch 1 |
knob5 | 5 tk5 | CC 52 · Ch 1 |
knob6 | 6 tk6 | CC 53 · Ch 1 |
knob7 | 7 tk7 | CC 54 · Ch 1 |
knob8 | 8 tk8 | CC 55 · Ch 1 |
knob(9) | 1 dk1 | CC 16 · Ch 1 |
knob(10) | 2 dk2 | CC 17 · Ch 1 |
knob(11) | 3 dk3 | CC 18 · Ch 1 |
knob(12) | 4 dk4 | CC 19 · Ch 1 |
knob(13) | 5 dk5 | CC 20 · Ch 1 |
knob(14) | 6 dk6 | CC 21 · Ch 1 |
knob(15) | 7 dk7 | CC 22 · Ch 1 |
knob(16) | 8 dk8 | CC 23 · Ch 1 |
fader1 | 1 fader1 | CC 7 · Ch 1 |
fader2 | 2 fader2 | CC 7 · Ch 2 |
fader3 | 3 fader3 | CC 7 · Ch 3 |
fader4 | 4 fader4 | CC 7 · Ch 4 |
fader5 | 5 fader5 | CC 7 · Ch 5 |
fader6 | 6 fader6 | CC 7 · Ch 6 |
fader7 | 7 fader7 | CC 7 · Ch 7 |
fader8 | 8 fader8 | CC 7 · Ch 8 |
fader(9) | M master | CC 14 · Ch 1 |
fader(10) | A·B xfade | CC 15 · Ch 1 |
pad1 | pad1 | Note 0 · C-1 · Ch 1 |
pad2 | pad2 | Note 1 · C#-1 · Ch 1 |
pad3 | pad3 | Note 2 · D-1 · Ch 1 |
pad4 | pad4 | Note 3 · D#-1 · Ch 1 |
pad5 | pad5 | Note 4 · E-1 · Ch 1 |
pad6 | pad6 | Note 5 · F-1 · Ch 1 |
pad7 | pad7 | Note 6 · F#-1 · Ch 1 |
pad8 | pad8 | Note 7 · G-1 · Ch 1 |
pad9 | pad9 | Note 8 · G#-1 · Ch 1 |
pad10 | pad10 | Note 9 · A-1 · Ch 1 |
pad11 | pad11 | Note 10 · A#-1 · Ch 1 |
pad12 | pad12 | Note 11 · B-1 · Ch 1 |
pad13 | pad13 | Note 12 · C0 · Ch 1 |
pad14 | pad14 | Note 13 · C#0 · Ch 1 |
pad15 | pad15 | Note 14 · D0 · Ch 1 |
pad16 | pad16 | Note 15 · D#0 · Ch 1 |
… and 24 more, up to pad(40), in the same order | ||
function draw() {
background(knob1 * 255); // 1 · CC 48
circle(width / 2, height / 2, 50 + knob2 * 300); // 2 · CC 49
}
function padPressed(n, velocity) { // n = 1…40, as in the table
circle(random(width), random(height), velocity * 100);
}Encoders, buttons, wheels and strips are not numbered: read them as midi.cc[number] in the table above, or react in controlChange(cc, value, ch).
Missing
Is your controller not here?
Open an issue with the brand and model, whether you have the unit and a link to the manual. Or write the profile yourself: it is one JSON file.
GitHub
Is something in this data wrong?
Every number on this page comes from one JSON file. If it disagrees with your unit or the manual, tell us which firmware you checked and we fix the file.