Plinky 12: MIDI CC, NRPN and OSC map¶
The Plinky 12 as named OSC addresses — 70 CC, 16 NRPN — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Plinky 12 |
|---|---|
| Vendor | Plinky |
| OSC prefix | /plinky_12 |
| Source | 📦 Derived from MIDI Guide (community CC/NRPN data) |
| Firmware | unknown |
| Revision | per pencilresearch canonical CSV |
| Upstream | pencilresearch |
| Data licence | CC-BY-SA-4.0 — MIDI Guide (https://midi.guide) by Pencil Research and contributors |
| Driver file | devices/plinky/plinky_12.pencilresearch.fw-unknown.json |
Not tested on the device yet
This driver comes from documentation or community data and has not been checked on real hardware. If you own one, a quick test and a pull request promoting it helps everyone — see CONTRIBUTING.
How do you control it?¶
Find the MIDI ports, then start the bridge with this driver:
osc-bridge detect # prints the ready-to-run line for what is plugged in
osc-bridge run --device devices/plinky/plinky_12.pencilresearch.fw-unknown.json --out-port <N> --in-port <M>
Then send OSC to 127.0.0.1:7777, for example:
From Claude or any MCP client, the osc-bridge mcp server exposes this driver as plinky_12: ask “what can the Plinky 12 do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (86)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/plinky_12/xy_pad/x_position |
1 | 0–127 | continuous | XY pad | |
/plinky_12/xy_pad/y_position |
2 | 0–127 | continuous | XY pad | |
/plinky_12/filter/high_pass_cutoff |
16 | 0–127 | continuous | Filter | |
/plinky_12/filter/low_pass_cutoff |
17 | 0–127 | continuous | Filter | |
/plinky_12/filter/resonance |
18 | 0–127 | continuous | Filter | |
/plinky_12/envelope/attack |
19 | 0–127 | continuous | Envelope | |
/plinky_12/envelope/decay |
20 | 0–127 | continuous | Envelope | |
/plinky_12/envelope/sustain |
21 | 0–127 | continuous | Envelope | |
/plinky_12/envelope/release |
22 | 0–127 | continuous | Envelope | |
/plinky_12/pitch/glide |
23 | 0–127 | continuous | Pitch | |
/plinky_12/pitch/pitch |
24 | 0–127 | continuous | Pitch | |
/plinky_12/pitch/octave |
25 | 0–127 | continuous | Pitch | |
/plinky_12/sound/sub_oscillator_noise |
26 | 0–127 | continuous | Sound | |
/plinky_12/sound/wavefold_saturation |
27 | 0–127 | continuous | Sound | |
/plinky_12/voice_mix/stereo_spread |
28 | 0–127 | continuous | Voice mix | |
/plinky_12/voice_mix/delay_send |
29 | 0–127 | continuous | Voice mix | |
/plinky_12/voice_mix/reverb_send |
30 | 0–127 | continuous | Voice mix | |
/plinky_12/voice_mix/toad_factor |
31 | 0–127 | continuous | Voice mix | |
/plinky_12/voice_mix/volume |
32 | 0–127 | continuous | Voice mix | |
/plinky_12/sound/timestretch |
33 | 0–127 | continuous | Sound | |
/plinky_12/sound/sample_start |
34 | 0–127 | continuous | Sound | |
/plinky_12/sound/sample_length |
35 | 0–127 | continuous | Sound | |
/plinky_12/sound/chorus_wobble |
36 | 0–127 | continuous | Sound | |
/plinky_12/voice_mix/sidechain_amount |
37 | 0–127 | continuous | Voice mix | |
/plinky_12/random_range/high_pass_cutoff_range |
44 | 0–127 | continuous | Random range | |
/plinky_12/random_range/low_pass_cutoff_range |
45 | 0–127 | continuous | Random range | |
/plinky_12/random_range/resonance_range |
46 | 0–127 | continuous | Random range | |
/plinky_12/random_range/attack_range |
47 | 0–127 | continuous | Random range | |
/plinky_12/random_range/decay_range |
48 | 0–127 | continuous | Random range | |
/plinky_12/random_range/sustain_range |
49 | 0–127 | continuous | Random range | |
/plinky_12/random_range/release_range |
50 | 0–127 | continuous | Random range | |
/plinky_12/random_range/glide_range |
51 | 0–127 | continuous | Random range | |
/plinky_12/random_range/pitch_range |
52 | 0–127 | continuous | Random range | |
/plinky_12/random_range/octave_range |
53 | 0–127 | continuous | Random range | |
/plinky_12/random_range/sub_oscillator_noise_range |
54 | 0–127 | continuous | Random range | |
/plinky_12/random_range/wavefold_saturation_range |
55 | 0–127 | continuous | Random range | |
/plinky_12/random_range/stereo_spread_range |
56 | 0–127 | continuous | Random range | |
/plinky_12/random_range/delay_send_range |
57 | 0–127 | continuous | Random range | |
/plinky_12/random_range/reverb_send_range |
58 | 0–127 | continuous | Random range | |
/plinky_12/random_range/toad_factor_range |
59 | 0–127 | continuous | Random range | |
/plinky_12/random_range/volume_range |
60 | 0–127 | continuous | Random range | |
/plinky_12/random_range/timestretch_range |
61 | 0–127 | continuous | Random range | |
/plinky_12/random_range/sample_start_range |
62 | 0–127 | continuous | Random range | |
/plinky_12/random_range/sample_length_range |
63 | 0–127 | continuous | Random range | |
/plinky_12/random_range/chorus_wobble_range |
64 | 0–127 | continuous | Random range | |
/plinky_12/random_range/sidechain_amount_range |
65 | 0–127 | continuous | Random range | |
/plinky_12/mix/bass_eq_compressor |
16 | 0–127 | continuous | Mix | |
/plinky_12/mix/mid_eq_compressor |
17 | 0–127 | continuous | Mix | |
/plinky_12/mix/treble_eq_compressor |
18 | 0–127 | continuous | Mix | |
/plinky_12/mix/tape_dry |
19 | 0–127 | continuous | Mix | |
/plinky_12/mix/audio_in_dry |
20 | 0–127 | continuous | Mix | |
/plinky_12/mix/tape_delay_send |
21 | 0–127 | continuous | Mix | |
/plinky_12/mix/tape_reverb_send |
22 | 0–127 | continuous | Mix | |
/plinky_12/mix/audio_in_delay_send |
23 | 0–127 | continuous | Mix | |
/plinky_12/mix/audio_in_reverb_send |
24 | 0–127 | continuous | Mix | |
/plinky_12/mix/reverb_shimmer |
25 | 0–127 | continuous | Mix | |
/plinky_12/mix/reverb_feedback |
26 | 0–127 | continuous | Mix | |
/plinky_12/mix/delay_time |
27 | 0–127 | continuous | Mix | |
/plinky_12/mix/delay_feedback |
28 | 0–127 | continuous | Mix | |
/plinky_12/mix/reverb_return |
29 | 0–127 | continuous | Mix | |
/plinky_12/mix/delay_return |
30 | 0–127 | continuous | Mix | |
/plinky_12/mix/output_level |
31 | 0–127 | continuous | Mix | |
/plinky_12/mix/audio_in_sidechain |
32 | 0–127 | continuous | Mix | |
/plinky_12/mix/reverb_sidechain |
33 | 0–127 | continuous | Mix | |
/plinky_12/mix/delay_sidechain |
34 | 0–127 | continuous | Mix | |
/plinky_12/mix_random_range/bass_eq_compressor_range |
44 | 0–127 | continuous | Mix random range | |
/plinky_12/mix_random_range/mid_eq_compressor_range |
45 | 0–127 | continuous | Mix random range | |
/plinky_12/mix_random_range/treble_eq_compressor_range |
46 | 0–127 | continuous | Mix random range | |
/plinky_12/mix_random_range/tape_dry_range |
47 | 0–127 | continuous | Mix random range | |
/plinky_12/mix_random_range/audio_in_dry_range |
48 | 0–127 | continuous | Mix random range | |
/plinky_12/global/tempo |
11 / 120 | 0–16383 | continuous | Global | |
/plinky_12/global/raw_xy_position_x |
32 / 4 | 0–127 | continuous | Global | |
/plinky_12/global/raw_xy_position_y |
32 / 5 | 0–127 | continuous | Global | |
/plinky_12/global/state_dump_request |
32 / 104 | 0–127 | continuous | Global | |
/plinky_12/global/panel_page_select |
34 / 48 | 0–127 | continuous | Global | |
/plinky_12/musical_state/key_root |
33 / 76 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/scale_mask |
33 / 77 | 0–4095 | continuous | Musical state | |
/plinky_12/musical_state/chord_root |
33 / 78 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/chord_note_mask |
33 / 79 | 0–4095 | continuous | Musical state | |
/plinky_12/musical_state/chord_scale_mask |
33 / 80 | 0–4095 | continuous | Musical state | |
/plinky_12/musical_state/voicing_note_1 |
33 / 81 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/voicing_note_2 |
33 / 82 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/voicing_note_3 |
33 / 83 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/voicing_note_4 |
33 / 84 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/voicing_note_5 |
33 / 85 | 0–127 | continuous | Musical state | |
/plinky_12/musical_state/voicing_note_6 |
33 / 86 | 0–127 | continuous | Musical state |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /plinky_12/note/on <note> <velocity>, /plinky_12/cc/<number> <value>, /plinky_12/pitchbend <0-16383>, /plinky_12/program_change <n>.
Limitations¶
CC/NRPN only. SysEx (preset management, display control, bulk dump/load, vendor-proprietary opcodes) is NOT covered by pencilresearch. To extend this device with SysEx, sniff the vendor editor, add `sysex.header/footer` + `commands` blocks, and use `update_device.md` PR template.