Polyend Synth: MIDI CC, NRPN and OSC map¶
The Polyend Synth as named OSC addresses — 101 CC — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Polyend Synth |
|---|---|
| Vendor | Polyend |
| OSC prefix | /synth |
| 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/polyend/synth.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/polyend/synth.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 synth: ask “what can the Polyend Synth do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (101)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/synth/acd_engine/saw_mix |
20 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/square_mix |
21 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/sub_mix |
22 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/noise |
23 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/pulse_width |
24 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/pulse_width_lfo |
25 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/pulse_width_envelope |
26 | 0–127 | continuous | ACD engine | |
/synth/acd_engine/pitch_lfo |
27 | 0–127 | continuous | ACD engine | |
/synth/fat_engine/timbre |
20 | 0–127 | continuous | FAT engine | |
/synth/fat_engine/noise |
21 | 0–127 | continuous | FAT engine | |
/synth/fat_engine/brightness |
23 | 0–127 | continuous | FAT engine | |
/synth/fat_engine/fatness |
27 | 0–127 | continuous | FAT engine | |
/synth/fat_engine/fatness_lfo |
24 | 0–127 | continuous | FAT engine | |
/synth/wavs_engine_p1/position_1 |
22 | 0–127 | continuous | WAVS engine P1 | |
/synth/wavs_engine_p1/position_2 |
27 | 0–127 | continuous | WAVS engine P1 | |
/synth/wavs_engine_p1/mix |
20 | 0–127 | continuous | WAVS engine P1 | |
/synth/wavs_engine_p1/warp_1 |
21 | 0–127 | continuous | WAVS engine P1 | |
/synth/wavs_engine_p1/warp_2 |
28 | 0–127 | continuous | WAVS engine P1 | |
/synth/wavs_engine_p1/noise |
29 | 0–127 | continuous | WAVS engine P1 | |
/synth/wavs_engine_p2/tune_1 |
25 | 0–127 | continuous | WAVS engine P2 | |
/synth/wavs_engine_p2/tune_2 |
30 | 0–127 | continuous | WAVS engine P2 | |
/synth/wavs_engine_p2/detune |
31 | 0–127 | continuous | WAVS engine P2 | |
/synth/wavs_engine_p3/finetune |
26 | 0–127 | continuous | WAVS engine P3 | |
/synth/vap_engine_p1/shape_1 |
22 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/shape_2 |
27 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/mix |
20 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/pulse_width_1 |
21 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/pulse_width_2 |
28 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/tune_1 |
25 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/tune_2 |
30 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p1/detune |
26 | 0–127 | continuous | VAP engine P1 | |
/synth/vap_engine_p2/noise |
23 | 0–127 | continuous | VAP engine P2 | |
/synth/vap_engine_p2/finetune |
31 | 0–127 | continuous | VAP engine P2 | |
/synth/wtfm_engine_p1/ratio_1 |
23 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/ratio_2 |
24 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/frequency_modulation |
20 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/shape_1 |
22 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/shape_2 |
27 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/feedback_1 |
21 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/feedback_2 |
28 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p1/feedback_2_to_1 |
29 | 0–127 | continuous | WTFM engine P1 | |
/synth/wtfm_engine_p2/finetune_1 |
26 | 0–127 | continuous | WTFM engine P2 | |
/synth/wtfm_engine_p2/finetune_2 |
25 | 0–127 | continuous | WTFM engine P2 | |
/synth/pmd_exciter/bow_level |
20 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/bow_timbre |
21 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/air_level |
22 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/air_flow |
23 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/air_timbre |
24 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/strike_level |
25 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/strike_mallet |
26 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter/strike_timbre |
27 | 0–127 | continuous | PMD exciter | |
/synth/pmd_exciter_envelope/attack |
75 | 0–127 | continuous | PMD exciter envelope | |
/synth/pmd_exciter_envelope/decay |
72 | 0–127 | continuous | PMD exciter envelope | |
/synth/pmd_exciter_envelope/sustain |
76 | 0–127 | continuous | PMD exciter envelope | |
/synth/pmd_exciter_envelope/release |
73 | 0–127 | continuous | PMD exciter envelope | |
/synth/pmd_resonator/form |
70 | 0–127 | continuous | PMD resonator | |
/synth/pmd_resonator/damping |
71 | 0–127 | continuous | PMD resonator | |
/synth/pmd_resonator/brightness |
74 | 0–127 | continuous | PMD resonator | |
/synth/pmd_resonator/position |
85 | 0–127 | continuous | PMD resonator | |
/synth/pmd_resonator/space |
86 | 0–127 | continuous | PMD resonator | |
/synth/phz_engine_p1/shape_1 |
22 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p1/shape_2 |
27 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p1/mix |
20 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p1/oscillator_1_x_modulation |
21 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p1/oscillator_2_x_modulation |
28 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p1/oscillator_1_y_modulation |
23 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p1/oscillator_2_y_modulation |
29 | 0–127 | continuous | PHZ engine P1 | |
/synth/phz_engine_p2/detune |
24 | 0–127 | continuous | PHZ engine P2 | |
/synth/phz_engine_p2/tune_1 |
25 | 0–127 | continuous | PHZ engine P2 | |
/synth/phz_engine_p2/tune_2 |
30 | 0–127 | continuous | PHZ engine P2 | |
/synth/phz_engine_p2/finetune |
26 | 0–127 | continuous | PHZ engine P2 | |
/synth/grain_engine_p1/position |
20 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p1/position_spread |
21 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p1/grain_size |
24 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p1/density |
23 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p1/time_spread |
22 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p1/grain_shape |
25 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p1/pan_spread |
27 | 0–127 | continuous | GRAIN engine P1 | |
/synth/grain_engine_p2/tune |
30 | 0–127 | continuous | GRAIN engine P2 | |
/synth/grain_engine_p2/detune_spread |
26 | 0–127 | continuous | GRAIN engine P2 | |
/synth/grain_engine_p2/finetune |
31 | 0–127 | continuous | GRAIN engine P2 | |
/synth/grain_engine_p2/size_spread |
87 | 0–127 | continuous | GRAIN engine P2 | |
/synth/grain_engine_p2/direction |
86 | 0–127 | continuous | GRAIN engine P2 | |
/synth/grain_engine_p2/space |
85 | 0–127 | continuous | GRAIN engine P2 | |
/synth/filter/cutoff |
74 | 0–127 | continuous | Filter | |
/synth/filter/resonance |
71 | 0–127 | continuous | Filter | |
/synth/filter/envelope_amount |
77 | 0–127 | continuous | Filter | |
/synth/filter/lfo |
78 | 0–127 | continuous | Filter | |
/synth/lfo/frequency |
54 | 0–127 | continuous | LFO | |
/synth/amplifier_envelope/attack |
75 | 0–127 | continuous | Amplifier envelope | |
/synth/amplifier_envelope/decay |
72 | 0–127 | continuous | Amplifier envelope | |
/synth/amplifier_envelope/sustain |
76 | 0–127 | continuous | Amplifier envelope | |
/synth/amplifier_envelope/release |
73 | 0–127 | continuous | Amplifier envelope | |
/synth/filter_envelope/attack |
80 | 0–127 | continuous | Filter envelope | |
/synth/filter_envelope/decay |
81 | 0–127 | continuous | Filter envelope | |
/synth/filter_envelope/sustain |
82 | 0–127 | continuous | Filter envelope | |
/synth/filter_envelope/release |
83 | 0–127 | continuous | Filter envelope | |
/synth/auxiliary_envelope/attack |
46 | 0–127 | continuous | Auxiliary envelope | |
/synth/auxiliary_envelope/decay |
47 | 0–127 | continuous | Auxiliary envelope | |
/synth/auxiliary_envelope/sustain |
48 | 0–127 | continuous | Auxiliary envelope | |
/synth/auxiliary_envelope/release |
49 | 0–127 | continuous | Auxiliary envelope |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /synth/note/on <note> <velocity>, /synth/cc/<number> <value>, /synth/pitchbend <0-16383>, /synth/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.