open-audiovisual
Search GitHub

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
APC40 MKII12345678Master12345678■■■■■■■■1A|B2A|B3A|B4A|B5A|B6A|B7A|B8A|BS●S●S●S●S●S●S●S●12345678MPan▶●Tap−+Tempo12345678Cue◀▶◀▶On▲▼◀▶A·B

Play AKAI APC40 mkII on screen Full screen ↗ Raw JSON ↗ All controllers

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.

MIDI implementation of AKAI APC40 mkII
ControlTypeMessageChNumberSignalLED feedbackVerified
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

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

  1. Embed it with one line

    No import map, no build step. Change layout, add hardware="ask" for a Connect button.

    html
    <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script>
    <oav-controller profile="akai-apc40-mk2" readout></oav-controller>
  2. Or as an iframe

    For places that only take an iframe. Every event arrives as a postMessage.

    html
    <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>
  3. 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.

    html
    <!-- 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.

javascript
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=akai-apc40-mk2' }));
In your sketchControlMessage
knob11 tk1CC 48 · Ch 1
knob22 tk2CC 49 · Ch 1
knob33 tk3CC 50 · Ch 1
knob44 tk4CC 51 · Ch 1
knob55 tk5CC 52 · Ch 1
knob66 tk6CC 53 · Ch 1
knob77 tk7CC 54 · Ch 1
knob88 tk8CC 55 · Ch 1
knob(9)1 dk1CC 16 · Ch 1
knob(10)2 dk2CC 17 · Ch 1
knob(11)3 dk3CC 18 · Ch 1
knob(12)4 dk4CC 19 · Ch 1
knob(13)5 dk5CC 20 · Ch 1
knob(14)6 dk6CC 21 · Ch 1
knob(15)7 dk7CC 22 · Ch 1
knob(16)8 dk8CC 23 · Ch 1
fader11 fader1CC 7 · Ch 1
fader22 fader2CC 7 · Ch 2
fader33 fader3CC 7 · Ch 3
fader44 fader4CC 7 · Ch 4
fader55 fader5CC 7 · Ch 5
fader66 fader6CC 7 · Ch 6
fader77 fader7CC 7 · Ch 7
fader88 fader8CC 7 · Ch 8
fader(9)M masterCC 14 · Ch 1
fader(10)A·B xfadeCC 15 · Ch 1
pad1pad1Note 0 · C-1 · Ch 1
pad2pad2Note 1 · C#-1 · Ch 1
pad3pad3Note 2 · D-1 · Ch 1
pad4pad4Note 3 · D#-1 · Ch 1
pad5pad5Note 4 · E-1 · Ch 1
pad6pad6Note 5 · F-1 · Ch 1
pad7pad7Note 6 · F#-1 · Ch 1
pad8pad8Note 7 · G-1 · Ch 1
pad9pad9Note 8 · G#-1 · Ch 1
pad10pad10Note 9 · A-1 · Ch 1
pad11pad11Note 10 · A#-1 · Ch 1
pad12pad12Note 11 · B-1 · Ch 1
pad13pad13Note 12 · C0 · Ch 1
pad14pad14Note 13 · C#0 · Ch 1
pad15pad15Note 14 · D0 · Ch 1
pad16pad16Note 15 · D#0 · Ch 1
… and 24 more, up to pad(40), in the same order
p5.js sketch
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).

The whole p5.js page →

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.