devices/roland/d_50.electra-newignis-patch-select-v1.fw-unknown.jsonEdit on GitHubJSONRoland D-50 (per Electra preset) MIDI CC chart, NRPN and OSC map
The Roland D-50 MIDI implementation: 2 CC, 116 SysEx commands, each named, for Claude (MCP), SuperCollider or any OSC app.
- sourceElectra One preset
- real unitnot yet checked
Not checked on a real Roland D-50 yet. Own one? Load a sound or send a control, and tell us whether it worked.
- Maker
- Roland
- Version
- per Electra preset
- Source
- Electra One preset
- OSC prefix
/d_50
Use 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/d_50.electra-newignis-patch-select-v1.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 d_50: ask “what can the Roland D-50 do?” and it reads this map with list_routes. See the MCP guide.
MIDI controls
118 controls, each with its number, its range and the name to send
| Control | CC | Range | Name to send |
|---|---|---|---|
| Portamento | 65 | 0–127 | /d_50/portamento |
| Hold | 64 | 0–127 | /d_50/hold |
SysEx commands
| Command | Arguments | Name to send |
|---|---|---|
| Key mode | val: u7 | /d_50/key_mode |
| Total volume | val: u7 | /d_50/total_volume |
| L u | val: u7 | /d_50/l_u |
| Output mode | val: u7 | /d_50/output_mode |
| Rev type | val: u7 | /d_50/rev_type |
| Dry wet | val: u7 | /d_50/dry_wet |
| Split point | val: u7 | /d_50/split_point |
| Chase mode | val: u7 | /d_50/chase_mode |
| Chase level | val: u7 | /d_50/chase_level |
| Chase time | val: u7 | /d_50/chase_time |
| Sepmode rec ch | val: u7 | /d_50/sepmode_rec_ch |
| L key | val: u7 | /d_50/l_key |
| Structure | val: u7 | /d_50/structure |
| Part balance | val: u7 | /d_50/part_balance |
| U key | val: u7 | /d_50/u_key |
| L fine tune | val: u7 | /d_50/l_fine_tune |
| L1 on | val: u7 | /d_50/l1_on |
| L2 on | val: u7 | /d_50/l2_on |
| U1 on | val: u7 | /d_50/u1_on |
| U2 on | val: u7 | /d_50/u2_on |
| U fine tune | val: u7 | /d_50/u_fine_tune |
| P bend range | val: u7 | /d_50/p_bend_range |
| Hold mode | val: u7 | /d_50/hold_mode |
| At p bend | val: u7 | /d_50/at_p_bend |
| P destination | val: u7 | /d_50/p_destination |
| Porta time | val: u7 | /d_50/porta_time |
| Lfo 1 depth | val: u7 | /d_50/lfo_1_depth |
| Mod lever | val: u7 | /d_50/mod_lever |
| Aftertouch | val: u7 | /d_50/aftertouch |
| Low eq freq | val: u7 | /d_50/low_eq_freq |
| Low eq gain | val: u7 | /d_50/low_eq_gain |
| High eq freq | val: u7 | /d_50/high_eq_freq |
| High eq q | val: u7 | /d_50/high_eq_q |
| High eq gain | val: u7 | /d_50/high_eq_gain |
| Chorus type | val: u7 | /d_50/chorus_type |
| Chorus rate | val: u7 | /d_50/chorus_rate |
| Chorus depth | val: u7 | /d_50/chorus_depth |
| Chorus balance | val: u7 | /d_50/chorus_balance |
| Pitch attack | val: u7 | /d_50/pitch_attack |
| Pitch t1 2 | val: u7 | /d_50/pitch_t1_2 |
| Pitch t2 sus | val: u7 | /d_50/pitch_t2_sus |
| Pitch release | val: u7 | /d_50/pitch_release |
| Key f time | val: u7 | /d_50/key_f_time |
| Pitch start l | val: u7 | /d_50/pitch_start_l |
| Pitch l1 | val: u7 | /d_50/pitch_l1 |
| Pitch l2 | val: u7 | /d_50/pitch_l2 |
| Pitch sustain | val: u7 | /d_50/pitch_sustain |
| Pitch end l | val: u7 | /d_50/pitch_end_l |
| Velo range | val: u7 | /d_50/velo_range |
| Wg pitch coarse | val: u7 | /d_50/wg_pitch_coarse |
| Wg pitch fine | val: u7 | /d_50/wg_pitch_fine |
| Wg pitch 1 kf | val: u7 | /d_50/wg_pitch_1_kf |
| Lfo mode | val: u7 | /d_50/lfo_mode |
| Pitch env mode | val: u7 | /d_50/pitch_env_mode |
| Pitch bend mode | val: u7 | /d_50/pitch_bend_mode |
| Synth waveform | val: u7 | /d_50/synth_waveform |
| Pulse width | val: u7 | /d_50/pulse_width |
| Pwm velo | val: u7 | /d_50/pwm_velo |
| Pwm at | val: u7 | /d_50/pwm_at |
| Lfo depth | val: u7 | /d_50/lfo_depth |
| Pwm lfo sel | val: u7 | /d_50/pwm_lfo_sel |
| Pcm waveform | val: u7 | /d_50/pcm_waveform |
| Tvf cutoff freq | val: u7 | /d_50/tvf_cutoff_freq |
| Tvf resonance | val: u7 | /d_50/tvf_resonance |
| Kf gradient | val: u7 | /d_50/kf_gradient |
| Kf bias point | val: u7 | /d_50/kf_bias_point |
| Kf bias level | val: u7 | /d_50/kf_bias_level |
| Tvf env depth | val: u7 | /d_50/tvf_env_depth |
| Tvf env velo | val: u7 | /d_50/tvf_env_velo |
| Tvf lfo select | val: u7 | /d_50/tvf_lfo_select |
| Tvf lfo depth | val: u7 | /d_50/tvf_lfo_depth |
| Tvf at range | val: u7 | /d_50/tvf_at_range |
| Tvf attack | val: u7 | /d_50/tvf_attack |
| Tvf t1 2 | val: u7 | /d_50/tvf_t1_2 |
| Tvf t2 3 | val: u7 | /d_50/tvf_t2_3 |
| Tvf t3 sus | val: u7 | /d_50/tvf_t3_sus |
| Tvf release | val: u7 | /d_50/tvf_release |
| Tvf key f time | val: u7 | /d_50/tvf_key_f_time |
| Tvf l1 | val: u7 | /d_50/tvf_l1 |
| Tvf l2 | val: u7 | /d_50/tvf_l2 |
| Tvf l3 | val: u7 | /d_50/tvf_l3 |
| Tvf sus l | val: u7 | /d_50/tvf_sus_l |
| Tvf end l | val: u7 | /d_50/tvf_end_l |
| Key f depth | val: u7 | /d_50/key_f_depth |
| Tva level | val: u7 | /d_50/tva_level |
| Tva velo | val: u7 | /d_50/tva_velo |
| Tva bias point | val: u7 | /d_50/tva_bias_point |
| Tva bias level | val: u7 | /d_50/tva_bias_level |
| Velo attack | val: u7 | /d_50/velo_attack |
| Tva lfo select | val: u7 | /d_50/tva_lfo_select |
| Tva lfo depth | val: u7 | /d_50/tva_lfo_depth |
| Tva at range | val: u7 | /d_50/tva_at_range |
| Tva attack | val: u7 | /d_50/tva_attack |
| Tva t1 2 | val: u7 | /d_50/tva_t1_2 |
| Tva t2 3 | val: u7 | /d_50/tva_t2_3 |
| Tva t3 sus | val: u7 | /d_50/tva_t3_sus |
| Tva release | val: u7 | /d_50/tva_release |
| Tva key f time | val: u7 | /d_50/tva_key_f_time |
| Tva l1 | val: u7 | /d_50/tva_l1 |
| Tva l2 | val: u7 | /d_50/tva_l2 |
| Tva l3 | val: u7 | /d_50/tva_l3 |
| Tva sustain | val: u7 | /d_50/tva_sustain |
| Tva end l | val: u7 | /d_50/tva_end_l |
| Wg pitch 2 kf | val: u7 | /d_50/wg_pitch_2_kf |
| Lfo 1 wf | val: u7 | /d_50/lfo_1_wf |
| Lfo 1 rate | val: u7 | /d_50/lfo_1_rate |
| Lfo 2 wf | val: u7 | /d_50/lfo_2_wf |
| Lfo 2 rate | val: u7 | /d_50/lfo_2_rate |
| Lfo 3 wf | val: u7 | /d_50/lfo_3_wf |
| Lfo 3 rate | val: u7 | /d_50/lfo_3_rate |
| Lfo 1 sync | val: u7 | /d_50/lfo_1_sync |
| Lfo 1 delay | val: u7 | /d_50/lfo_1_delay |
| Lfo 2 sync | val: u7 | /d_50/lfo_2_sync |
| Lfo 2 delay | val: u7 | /d_50/lfo_2_delay |
| Lfo 3 sync | val: u7 | /d_50/lfo_3_sync |
| Lfo 3 delay | val: u7 | /d_50/lfo_3_delay |
Performance MIDI
Notes, pitch bend and any CC are also available: /d_50/note/on <note> <velocity>, /d_50/cc/<number> <value>, /d_50/pitchbend <0-16383>, /d_50/program_change <n>.
Limitations
Imported from an Electra One community preset. The mapping reflects the preset author's editorial choices: parameter naming, ranges, and which params are exposed. Untested on hardware in this repo.
Other versions
The Roland D-50 is mapped in 2 versions. per Electra preset.
Frequently asked questions
How many parameters of the Roland D-50 can be controlled over MIDI?
SynthHub's map of the Roland D-50 lists 2 MIDI CC 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 Roland D-50?
Yes: SynthHub's hosted MCP server knows the Roland D-50's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.