Skip to content

Plinky 12 MIDI CC chart, NRPN and OSC map

The Plinky 12 MIDI implementation: 70 CC, 16 NRPN, each named, for Claude (MCP), SuperCollider or any OSC app.

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:

osc-bridge osc-send /plinky_12/xy_pad/x_position 63

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.

Frequently asked questions

Which MIDI CC controls the filter cutoff on the Plinky 12?

CC 16 (0–127), named /plinky_12/filter/high_pass_cutoff in SynthHub's map.

How many parameters of the Plinky 12 can be controlled over MIDI?

SynthHub's map of the Plinky 12 lists 70 MIDI CC and 16 NRPN parameters, each with its number, range and a readable name; the full chart is on this page.

Can an AI agent like Claude control the Plinky 12?

Yes: SynthHub's hosted MCP server knows the Plinky 12's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.