Arturia
Arturia MiniLab 3
Arturia MiniLab 3 is a MIDI hardware controller by Arturia: 8 pads, 25 keys, 8 knobs, 1 encoder, 4 faders and 2 touch strips.
It sends Pitch bend, CC and Note on channels 1, 10. The profile cites 3 sources. 1 of its controls are marked unverified: the number is our best reading, and Learn rebinds it in one move.
- Manufacturer docs
- Artist's TouchDesigner tool
- Community notes
- 1 unverified
- Kind
- hardware device
- Maker
- Arturia
- Controls
- 48 controls
- Messages
- Pitch bend · CC · Note
- MIDI channels
- 1, 10
- LED feedback
- none sent
- Signals
midi/minilab3/…- Port name matches
/minilab\s*3/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 Arturia MiniLab 3 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 |
|---|---|---|---|---|---|---|---|
Pitch pitch |
touch strip | Pitch bend · springs to centre | 1 | 0–16383 · centre 8192 | midi/minilab3/pitch |
— | yes |
Mod mod |
touch strip | CC | 1 | 1 | midi/minilab3/mod |
— | yes |
Main enc |
encoder | CC · relative (offset64) | 1 | 28 | midi/minilab3/enc |
— | unverified |
1 knob1 |
knob | CC | 1 | 74 | midi/minilab3/knob1 |
— | yes |
2 knob2 |
knob | CC | 1 | 71 | midi/minilab3/knob2 |
— | yes |
3 knob3 |
knob | CC | 1 | 76 | midi/minilab3/knob3 |
— | yes |
4 knob4 |
knob | CC | 1 | 77 | midi/minilab3/knob4 |
— | yes |
5 knob5 |
knob | CC | 1 | 93 | midi/minilab3/knob5 |
— | yes |
6 knob6 |
knob | CC | 1 | 18 | midi/minilab3/knob6 |
— | yes |
7 knob7 |
knob | CC | 1 | 19 | midi/minilab3/knob7 |
— | yes |
8 knob8 |
knob | CC | 1 | 16 | midi/minilab3/knob8 |
— | yes |
S1 s1 |
fader | CC | 1 | 82 | midi/minilab3/s1 |
— | yes |
S2 s2 |
fader | CC | 1 | 83 | midi/minilab3/s2 |
— | yes |
S3 s3 |
fader | CC | 1 | 85 | midi/minilab3/s3 |
— | yes |
S4 s4 |
fader | CC | 1 | 17 | midi/minilab3/s4 |
— | yes |
1 pad1 |
pad | Note · velocity | 10 | 36 · C2 | midi/minilab3/pad1 |
— | yes |
2 pad2 |
pad | Note · velocity | 10 | 37 · C#2 | midi/minilab3/pad2 |
— | yes |
3 pad3 |
pad | Note · velocity | 10 | 38 · D2 | midi/minilab3/pad3 |
— | yes |
4 pad4 |
pad | Note · velocity | 10 | 39 · D#2 | midi/minilab3/pad4 |
— | yes |
5 pad5 |
pad | Note · velocity | 10 | 40 · E2 | midi/minilab3/pad5 |
— | yes |
6 pad6 |
pad | Note · velocity | 10 | 41 · F2 | midi/minilab3/pad6 |
— | yes |
7 pad7 |
pad | Note · velocity | 10 | 42 · F#2 | midi/minilab3/pad7 |
— | yes |
8 pad8 |
pad | Note · velocity | 10 | 43 · G2 | midi/minilab3/pad8 |
— | yes |
Keys keys |
keys | Note · velocity | 1 | 48–72 (C3–C5) | midi/minilab3/keys/on · midi/minilab3/keys/off · midi/minilab3/n48…n72 |
— | yes |
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
encMain encoder message is not documented in the manual; CC 28 relative is a placeholder — use 學習 (learn) to bind it on your unit.
Sources
- manufacturer Arturia MiniLab 3 User Manual v1.0.5pads bank A notes 36–43 on channel 10 (bank B 44–51), mod strip CC 1, pitch strip = pitch bend (springs to centre), USB ports MIDI / DIN Thru / MCU / ALV
- artist's tool 260830 minilab3 midi.toe (the artist's TouchDesigner tool)knob, fader, pad, key and wheel numbers as recorded from the hardware
- community Spectrasonics — Setting up the MiniLab mk3 (non-official)knob and fader CC defaults; agree with the TD recording
Where this profile comes from
Che-Yu Wu's TouchDesigner tool, recorded from his own MiniLab 3: base_minilab3 → out_knob (knob1–8 ← CC 74 71 76 77 93 18 19 16), out_slider (s1–s4 ← CC 82 83 85 17), out_pad (pad1–8 ← ch10 notes 36–43), out_note (25 keys, notes 48–72), out_pitch (mod CC 1 + pitch bend). Device table: in-device "Minilab3MIDI", channel 1. TouchDesigner's MIDI In CHOP names channels 1-based (ch1ctrl75 = CC 74, ch10n37 = note 36); the numbers here are real MIDI numbers. 260830 minilab3 midi.toe
Notes
Pad pressure type is not documented: poly aftertouch is followed automatically if the unit sends it. Pad RGB LEDs are SysEx-only (not sent; sysex stays off).
Port names it recognises
- matches
/minilab\s*3/i- prefers
/midi/i- avoids
/din/i/thru/i/mcu/i/alv/i
Signals
Every control publishes midi/minilab3/<control> (0..1), plus /raw; pads add /hit, encoders /delta, keys /on /off and n<note>; the last control touched is midi/minilab3/last.
Use it
Use Arturia MiniLab 3 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="arturia-minilab3" 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=arturia-minilab3&readout" width="720" height="468" style="border:0;max-width:100%" allow="midi" title="Arturia MiniLab 3"></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="arturia-minilab3" 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=arturia-minilab3 to make the on-screen controller this one; a real Arturia MiniLab 3 is recognised by its port name.
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=arturia-minilab3' }));| In your sketch | Control | Message |
|---|---|---|
knob1 | 1 knob1 | CC 74 · Ch 1 |
knob2 | 2 knob2 | CC 71 · Ch 1 |
knob3 | 3 knob3 | CC 76 · Ch 1 |
knob4 | 4 knob4 | CC 77 · Ch 1 |
knob5 | 5 knob5 | CC 93 · Ch 1 |
knob6 | 6 knob6 | CC 18 · Ch 1 |
knob7 | 7 knob7 | CC 19 · Ch 1 |
knob8 | 8 knob8 | CC 16 · Ch 1 |
fader1 | S1 s1 | CC 82 · Ch 1 |
fader2 | S2 s2 | CC 83 · Ch 1 |
fader3 | S3 s3 | CC 85 · Ch 1 |
fader4 | S4 s4 | CC 17 · Ch 1 |
pad1 | 1 pad1 | Note 36 · C2 · Ch 10 |
pad2 | 2 pad2 | Note 37 · C#2 · Ch 10 |
pad3 | 3 pad3 | Note 38 · D2 · Ch 10 |
pad4 | 4 pad4 | Note 39 · D#2 · Ch 10 |
pad5 | 5 pad5 | Note 40 · E2 · Ch 10 |
pad6 | 6 pad6 | Note 41 · F2 · Ch 10 |
pad7 | 7 pad7 | Note 42 · F#2 · Ch 10 |
pad8 | 8 pad8 | Note 43 · G2 · Ch 10 |
notePressed(note, velocity) | 48–72 (C3–C5) | a key goes down |
function draw() {
background(knob1 * 255); // 1 · CC 74
circle(width / 2, height / 2, 50 + knob2 * 300); // 2 · 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).
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.