open-audiovisual
Search GitHub

AKAI Professional

AKAI MPK mini mk3

AKAI MPK mini mk3 is a MIDI hardware controller by AKAI Professional: 8 pads, 25 keys, 8 knobs and 2 wheels.

It sends Pitch bend, CC and Note on channels 1, 10. The profile cites 6 sources. 25 of its controls are marked unverified: the number is our best reading, and Learn rebinds it in one move.

  • Manufacturer docs
  • Community notes
  • 25 unverified
Kind
hardware device
Maker
AKAI Professional
Controls
43 controls
Messages
Pitch bend · CC · Note
MIDI channels
1, 10
LED feedback
none sent
Signals
midi/mpkmini3/…
Port name matches
/mpk\s*mini\s*(3|mk\s*3|mkiii)/i
MPK MINIPGM:MPCBank A/BCCProg ChgProg SelArpTapOct−Oct+FullRepeatBendModK1K2K3K4K5K6K7K8

Play AKAI MPK mini mk3 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 MPK mini mk3 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 MPK mini mk3
ControlTypeMessageChNumberSignalLED feedbackVerified
Bend bend wheel Pitch bend · springs to centre 1 0–16383 · centre 8192 midi/mpkmini3/bend — yes
Mod mod wheel CC · springs to centre 1 1 midi/mpkmini3/mod — yes
K1 k1 knob CC 1 70 midi/mpkmini3/k1 — yes
K2 k2 knob CC 1 71 midi/mpkmini3/k2 — yes
K3 k3 knob CC 1 72 midi/mpkmini3/k3 — yes
K4 k4 knob CC 1 73 midi/mpkmini3/k4 — yes
K5 k5 knob CC 1 74 midi/mpkmini3/k5 — yes
K6 k6 knob CC 1 75 midi/mpkmini3/k6 — yes
K7 k7 knob CC 1 76 midi/mpkmini3/k7 — yes
K8 k8 knob CC 1 77 midi/mpkmini3/k8 — yes
1 pad1 pad Note · velocity · + channel pressure 10 36 · C2 midi/mpkmini3/pad1 — yes
2 pad2 pad Note · velocity · + channel pressure 10 37 · C#2 midi/mpkmini3/pad2 — yes
3 pad3 pad Note · velocity · + channel pressure 10 38 · D2 midi/mpkmini3/pad3 — yes
4 pad4 pad Note · velocity · + channel pressure 10 39 · D#2 midi/mpkmini3/pad4 — yes
5 pad5 pad Note · velocity · + channel pressure 10 40 · E2 midi/mpkmini3/pad5 — yes
6 pad6 pad Note · velocity · + channel pressure 10 41 · F2 midi/mpkmini3/pad6 — yes
7 pad7 pad Note · velocity · + channel pressure 10 42 · F#2 midi/mpkmini3/pad7 — yes
8 pad8 pad Note · velocity · + channel pressure 10 43 · G2 midi/mpkmini3/pad8 — yes
Keys keys keys Note · velocity 1 48–72 (C3–C5) midi/mpkmini3/keys/on · midi/mpkmini3/keys/off · midi/mpkmini3/n48…n72 — unverified

LED feedback is not modeled for this one yet, so OAV does not light its LEDs. Every control still plays and sends its message.

Notes on single controls

Sources

Notes

Program 1 ("PGM:MPC", loaded at power-on), pads in Note mode, Bank A. Bank B (notes 44–51) and the CC (16–31) / Prog Change (0–15) pad modes re-use the same 8 pads — a layer the faceplate cannot show, so they are not modelled (學習 rebinds; they still arrive as midi/ch/10/…). The knobs are endless but send absolute 0–127 (the unit keeps the value). The joystick is drawn as two strips: X = pitch bend (springs to centre), Y = CC 1 rising from 0 whichever way you push it ("Dual CC", springs back to 0). Pad pressure arrives as channel aftertouch on channel 10. Arp, Tap Tempo, Octave, Full Level, Note Repeat, Bank, CC, Prog Change and Prog Select act inside the unit and send nothing of their own. The pads light themselves; no LED feedback is sent.

Port names it recognises

matches
/mpk\s*mini\s*(3|mk\s*3|mkiii)/i

Signals

Every control publishes midi/mpkmini3/<control> (0..1), plus /raw; pads add /hit, encoders /delta, keys /on /off and n<note>; the last control touched is midi/mpkmini3/last.

Use it

Use AKAI MPK mini mk3 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-mpk-mini-mk3" 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-mpk-mini-mk3&readout"
            width="720" height="432" style="border:0;max-width:100%" allow="midi"
            title="AKAI MPK mini mk3"></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-mpk-mini-mk3" 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-mpk-mini-mk3 to make the on-screen controller this one; a real AKAI MPK mini mk3 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-mpk-mini-mk3' }));
In your sketchControlMessage
knob1K1 k1CC 70 · Ch 1
knob2K2 k2CC 71 · Ch 1
knob3K3 k3CC 72 · Ch 1
knob4K4 k4CC 73 · Ch 1
knob5K5 k5CC 74 · Ch 1
knob6K6 k6CC 75 · Ch 1
knob7K7 k7CC 76 · Ch 1
knob8K8 k8CC 77 · Ch 1
pad11 pad1Note 36 · C2 · Ch 10
pad22 pad2Note 37 · C#2 · Ch 10
pad33 pad3Note 38 · D2 · Ch 10
pad44 pad4Note 39 · D#2 · Ch 10
pad55 pad5Note 40 · E2 · Ch 10
pad66 pad6Note 41 · F2 · Ch 10
pad77 pad7Note 42 · F#2 · Ch 10
pad88 pad8Note 43 · G2 · Ch 10
notePressed(note, velocity)48–72 (C3–C5)a key goes down
p5.js sketch
function draw() {
  background(knob1 * 255);   // K1 · CC 70
  circle(width / 2, height / 2, 50 + knob2 * 300);   // K2 · CC 71
}

function padPressed(n, velocity) {      // n = 1…8, as in the table
  circle(random(width), random(height), velocity * 100);
}

function notePressed(note, velocity) {   // a key goes down
  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.