Roland SH-01A: MIDI CC, NRPN and OSC map¶
The Roland SH-01A as named OSC addresses — 71 CC — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Roland SH-01A |
|---|---|
| Vendor | Roland |
| OSC prefix | /sh_01a |
| Source | 🎛️ Derived from an Electra One community preset |
| Revision | per pencilresearch canonical CSV |
| Upstream | electra-preset |
| Driver file | devices/roland/sh_01a.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/roland/sh_01a.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 sh_01a: ask “what can the Roland SH-01A do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (71)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/sh_01a/general/modulation |
1 | 0–127 | continuous | General | |
/sh_01a/general/portamento_time |
5 | 0–127 | continuous | General | |
/sh_01a/general/expression_pedal |
11 | 0–127 | continuous | General | |
/sh_01a/general/portament_mode |
31 | 0–127 | continuous | General | |
/sh_01a/general/hold |
64 | 0–127 | continuous | General | |
/sh_01a/general/portamento |
65 | 0–127 | continuous | General | |
/sh_01a/general/tune |
76 | 0–127 | continuous | General | |
/sh_01a/general/transpose_sw |
77 | 0–127 | continuous | General | |
/sh_01a/general/noise_mode |
78 | 0–127 | continuous | General | |
/sh_01a/general/assign_mode |
80 | 0–127 | continuous | General | |
/sh_01a/lfo/rate |
3 | 0–127 | continuous | LFO | |
/sh_01a/lfo/mode |
79 | 0–127 | continuous | LFO | |
/sh_01a/lfo/wave_form |
12 | 0–127 | continuous | LFO | |
/sh_01a/oscillator/vco_modulation_depth |
13 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_range |
14 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_pulse_width |
15 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_pwm_source |
16 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_mod_sens |
17 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_bend_depth |
18 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_pwm_level |
19 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_saw_level |
20 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_sub_level |
21 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_sub_type |
22 | 0–127 | continuous | Oscillator | |
/sh_01a/oscillator/vco_noise_level |
23 | 0–127 | continuous | Oscillator | |
/sh_01a/filter/vcf_envelope_depth |
24 | 0–127 | continuous | Filter | |
/sh_01a/filter/vcf_modulation_depth |
25 | 0–127 | continuous | Filter | |
/sh_01a/filter/vcf_key_follow |
26 | 0–127 | continuous | Filter | |
/sh_01a/filter/vcf_cutoff |
74 | 0–127 | continuous | Filter | |
/sh_01a/filter/vcf_resonance |
71 | 0–127 | continuous | Filter | |
/sh_01a/filter/vcf_bend_depth |
27 | 0–127 | continuous | Filter | |
/sh_01a/ampifier/vca_envelope_sw |
28 | 0–127 | continuous | Ampifier | |
/sh_01a/ampifier/vca_envelope_mode |
29 | 0–127 | continuous | Ampifier | |
/sh_01a/envelope/attack |
73 | 0–127 | continuous | Envelope | |
/sh_01a/envelope/sustain |
30 | 0–127 | continuous | Envelope | |
/sh_01a/envelope/decay |
75 | 0–127 | continuous | Envelope | |
/sh_01a/envelope/release |
72 | 0–127 | continuous | Envelope | |
/sh_01a/chord_voices/chord_voice_2_sw |
81 | 0–127 | continuous | Chord voices | |
/sh_01a/chord_voices/chord_voice_3_sw |
82 | 0–127 | continuous | Chord voices | |
/sh_01a/chord_voices/chord_voice_4_sw |
83 | 0–127 | continuous | Chord voices | |
/sh_01a/chord_voices/chord_voice_2_key_shift |
85 | 0–127 | continuous | Chord voices | |
/sh_01a/chord_voices/chord_voice_3_key_shift |
86 | 0–127 | continuous | Chord voices | |
/sh_01a/chord_voices/chord_voice_4_key_shift |
87 | 0–127 | continuous | Chord voices | |
/sh_01a/lfo_waveform |
12 | 0–127 | continuous | ||
/sh_01a/lfo_rate |
3 | 0–127 | continuous | ||
/sh_01a/vco_mod |
13 | 0–127 | continuous | ||
/sh_01a/mod_range |
14 | 0–127 | continuous | ||
/sh_01a/pulse_width |
15 | 0–127 | continuous | ||
/sh_01a/pwm_source |
16 | 0–127 | continuous | ||
/sh_01a/vco_pwm_level |
19 | 0–127 | continuous | ||
/sh_01a/vco_saw_level |
20 | 0–127 | continuous | ||
/sh_01a/vco_sub_level |
21 | 0–127 | continuous | ||
/sh_01a/vco_sub_type |
22 | 0–127 | continuous | ||
/sh_01a/vco_noise |
23 | 0–127 | continuous | ||
/sh_01a/vcf_frequency |
74 | 0–127 | continuous | ||
/sh_01a/vcf_resonance |
71 | 0–127 | continuous | ||
/sh_01a/vcf_envelope |
24 | 0–127 | continuous | ||
/sh_01a/vcf_mod_level |
25 | 0–127 | continuous | ||
/sh_01a/vcf_keyboard |
26 | 0–127 | continuous | ||
/sh_01a/vca_envelope |
28 | 0–127 | continuous | ||
/sh_01a/vca_env_mode |
29 | 0–127 | continuous | ||
/sh_01a/pitch_bend_vco |
18 | 0–10 | continuous | ||
/sh_01a/pitch_bend_vcf |
27 | 0–10 | continuous | ||
/sh_01a/lfo_mod_rate |
17 | 0–10 | continuous | ||
/sh_01a/env_attack |
73 | 0–127 | continuous | ||
/sh_01a/env_decay |
75 | 0–127 | continuous | ||
/sh_01a/env_sustain |
30 | 0–127 | continuous | ||
/sh_01a/env_release |
72 | 0–127 | continuous | ||
/sh_01a/transpose |
77 | 0–127 | continuous | ||
/sh_01a/tune |
76 | 0–127 | continuous | ||
/sh_01a/portamento |
31 | 0–127 | continuous | ||
/sh_01a/portamento_amt |
5 | 0–10 | continuous |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /sh_01a/note/on <note> <velocity>, /sh_01a/cc/<number> <value>, /sh_01a/pitchbend <0-16383>, /sh_01a/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.