KORG
Korg nanoKONTROL2
Korg nanoKONTROL2 is a MIDI hardware controller by KORG: 8 knobs, 8 faders and 35 buttons.
It sends CC on channel 1. The profile cites 4 sources. No control is flagged unverified.
- Manufacturer docs
- Community notes
- LED feedback
- Kind
- hardware device
- Maker
- KORG
- Controls
- 51 controls
- Messages
- CC
- MIDI channels
- 1
- LED feedback
- yes, lights are driven by MIDI
- Signals
midi/nano2/…- Port name matches
/nanokontrol\s*2/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 Korg nanoKONTROL2 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 |
|---|---|---|---|---|---|---|---|
1 k1 |
knob | CC | 1 | 16 | midi/nano2/k1 |
— | yes |
2 k2 |
knob | CC | 1 | 17 | midi/nano2/k2 |
— | yes |
3 k3 |
knob | CC | 1 | 18 | midi/nano2/k3 |
— | yes |
4 k4 |
knob | CC | 1 | 19 | midi/nano2/k4 |
— | yes |
5 k5 |
knob | CC | 1 | 20 | midi/nano2/k5 |
— | yes |
6 k6 |
knob | CC | 1 | 21 | midi/nano2/k6 |
— | yes |
7 k7 |
knob | CC | 1 | 22 | midi/nano2/k7 |
— | yes |
8 k8 |
knob | CC | 1 | 23 | midi/nano2/k8 |
— | yes |
1 f1 |
fader | CC | 1 | 0 | midi/nano2/f1 |
— | yes |
2 f2 |
fader | CC | 1 | 1 | midi/nano2/f2 |
— | yes |
3 f3 |
fader | CC | 1 | 2 | midi/nano2/f3 |
— | yes |
4 f4 |
fader | CC | 1 | 3 | midi/nano2/f4 |
— | yes |
5 f5 |
fader | CC | 1 | 4 | midi/nano2/f5 |
— | yes |
6 f6 |
fader | CC | 1 | 5 | midi/nano2/f6 |
— | yes |
7 f7 |
fader | CC | 1 | 6 | midi/nano2/f7 |
— | yes |
8 f8 |
fader | CC | 1 | 7 | midi/nano2/f8 |
— | yes |
S s1 |
button | CC · momentary | 1 | 32 | midi/nano2/s1 |
CC 32 · on 127 / off 0 | yes |
S s2 |
button | CC · momentary | 1 | 33 | midi/nano2/s2 |
CC 33 · on 127 / off 0 | yes |
S s3 |
button | CC · momentary | 1 | 34 | midi/nano2/s3 |
CC 34 · on 127 / off 0 | yes |
S s4 |
button | CC · momentary | 1 | 35 | midi/nano2/s4 |
CC 35 · on 127 / off 0 | yes |
S s5 |
button | CC · momentary | 1 | 36 | midi/nano2/s5 |
CC 36 · on 127 / off 0 | yes |
S s6 |
button | CC · momentary | 1 | 37 | midi/nano2/s6 |
CC 37 · on 127 / off 0 | yes |
S s7 |
button | CC · momentary | 1 | 38 | midi/nano2/s7 |
CC 38 · on 127 / off 0 | yes |
S s8 |
button | CC · momentary | 1 | 39 | midi/nano2/s8 |
CC 39 · on 127 / off 0 | yes |
M m1 |
button | CC · momentary | 1 | 48 | midi/nano2/m1 |
CC 48 · on 127 / off 0 | yes |
M m2 |
button | CC · momentary | 1 | 49 | midi/nano2/m2 |
CC 49 · on 127 / off 0 | yes |
M m3 |
button | CC · momentary | 1 | 50 | midi/nano2/m3 |
CC 50 · on 127 / off 0 | yes |
M m4 |
button | CC · momentary | 1 | 51 | midi/nano2/m4 |
CC 51 · on 127 / off 0 | yes |
M m5 |
button | CC · momentary | 1 | 52 | midi/nano2/m5 |
CC 52 · on 127 / off 0 | yes |
M m6 |
button | CC · momentary | 1 | 53 | midi/nano2/m6 |
CC 53 · on 127 / off 0 | yes |
M m7 |
button | CC · momentary | 1 | 54 | midi/nano2/m7 |
CC 54 · on 127 / off 0 | yes |
M m8 |
button | CC · momentary | 1 | 55 | midi/nano2/m8 |
CC 55 · on 127 / off 0 | yes |
R r1 |
button | CC · momentary | 1 | 64 | midi/nano2/r1 |
CC 64 · on 127 / off 0 | yes |
R r2 |
button | CC · momentary | 1 | 65 | midi/nano2/r2 |
CC 65 · on 127 / off 0 | yes |
R r3 |
button | CC · momentary | 1 | 66 | midi/nano2/r3 |
CC 66 · on 127 / off 0 | yes |
R r4 |
button | CC · momentary | 1 | 67 | midi/nano2/r4 |
CC 67 · on 127 / off 0 | yes |
R r5 |
button | CC · momentary | 1 | 68 | midi/nano2/r5 |
CC 68 · on 127 / off 0 | yes |
R r6 |
button | CC · momentary | 1 | 69 | midi/nano2/r6 |
CC 69 · on 127 / off 0 | yes |
R r7 |
button | CC · momentary | 1 | 70 | midi/nano2/r7 |
CC 70 · on 127 / off 0 | yes |
R r8 |
button | CC · momentary | 1 | 71 | midi/nano2/r8 |
CC 71 · on 127 / off 0 | yes |
◀ trackprev |
button | CC · momentary | 1 | 58 | midi/nano2/trackprev |
CC 58 · on 127 / off 0 | yes |
▶ tracknext |
button | CC · momentary | 1 | 59 | midi/nano2/tracknext |
CC 59 · on 127 / off 0 | yes |
Cycle cycle |
button | CC · momentary | 1 | 46 | midi/nano2/cycle |
CC 46 · on 127 / off 0 | yes |
Set markerset |
button | CC · momentary | 1 | 60 | midi/nano2/markerset |
CC 60 · on 127 / off 0 | yes |
◀ markerprev |
button | CC · momentary | 1 | 61 | midi/nano2/markerprev |
CC 61 · on 127 / off 0 | yes |
▶ markernext |
button | CC · momentary | 1 | 62 | midi/nano2/markernext |
CC 62 · on 127 / off 0 | yes |
◀◀ rew |
button | CC · momentary | 1 | 43 | midi/nano2/rew |
CC 43 · on 127 / off 0 | yes |
▶▶ ff |
button | CC · momentary | 1 | 44 | midi/nano2/ff |
CC 44 · on 127 / off 0 | yes |
■ stop |
button | CC · momentary | 1 | 42 | midi/nano2/stop |
CC 42 · on 127 / off 0 | yes |
▶ play |
button | CC · momentary | 1 | 41 | midi/nano2/play |
CC 41 · on 127 / off 0 | yes |
● rec |
button | CC · momentary | 1 | 45 | midi/nano2/rec |
CC 45 · on 127 / off 0 | yes |
LED feedback is modeled for 35 of its controls: the LED column says which message lights each one.
Sources
- manufacturer nanoKONTROL2 Parameter Guide (KORG)button behaviour momentary/toggle; LED mode internal/external — external: an incoming CC assigned to a button lights its LED with the On value, the Off value turns it off
- manufacturer nanoKONTROL2 MIDI Implementation (KORG)transport / marker numbers 41–46, 58–62
- manufacturer nanoKONTROL2 Owner's Manual (KORG)CC mode: hold SET MARKER + CYCLE while connecting; ports 'nanoKONTROL2 SLIDER/KNOB' (in) and 'nanoKONTROL2 CTRL' (out)
- community Ardour Korg_nanoKONTROL2.map (non-official)factory scene: faders CC 0–7, knobs 16–23, S 32–39, M 48–55, R 64–71, global channel 1
Notes
Factory scene, CC mode, global channel 1. LED feedback reaches the buttons only when LED mode is set to External in the KORG KONTROL Editor (default Internal: the unit lights its own buttons).
Port names it recognises
- matches
/nanokontrol\s*2/i- prefers
/slider/i/knob/i/ctrl/i
Signals
Every control publishes midi/nano2/<control> (0..1), plus /raw; pads add /hit, encoders /delta, keys /on /off and n<note>; the last control touched is midi/nano2/last.
Use it
Use Korg nanoKONTROL2 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="korg-nanokontrol2" 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=korg-nanokontrol2&readout" width="720" height="216" style="border:0;max-width:100%" allow="midi" title="Korg nanoKONTROL2"></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="korg-nanokontrol2" 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=korg-nanokontrol2 to make the on-screen controller this one; a real Korg nanoKONTROL2 is recognised by its port name.
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=korg-nanokontrol2' }));| In your sketch | Control | Message |
|---|---|---|
knob1 | 1 k1 | CC 16 · Ch 1 |
knob2 | 2 k2 | CC 17 · Ch 1 |
knob3 | 3 k3 | CC 18 · Ch 1 |
knob4 | 4 k4 | CC 19 · Ch 1 |
knob5 | 5 k5 | CC 20 · Ch 1 |
knob6 | 6 k6 | CC 21 · Ch 1 |
knob7 | 7 k7 | CC 22 · Ch 1 |
knob8 | 8 k8 | CC 23 · Ch 1 |
fader1 | 1 f1 | CC 0 · Ch 1 |
fader2 | 2 f2 | CC 1 · Ch 1 |
fader3 | 3 f3 | CC 2 · Ch 1 |
fader4 | 4 f4 | CC 3 · Ch 1 |
fader5 | 5 f5 | CC 4 · Ch 1 |
fader6 | 6 f6 | CC 5 · Ch 1 |
fader7 | 7 f7 | CC 6 · Ch 1 |
fader8 | 8 f8 | CC 7 · Ch 1 |
function draw() {
background(knob1 * 255); // 1 · CC 16
circle(width / 2, height / 2, 50 + knob2 * 300); // 2 · CC 17
}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.