Oberheim UB-Xa V1: MIDI CC, NRPN and OSC map¶
The Oberheim UB-Xa V1 as named OSC addresses — 7 CC, 197 NRPN — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Oberheim UB-Xa V1 |
|---|---|
| Vendor | Oberheim |
| OSC prefix | /ub_xa_v1 |
| Source | 🎛️ Derived from an Electra One community preset |
| Revision | per Electra preset |
| Upstream | electra-preset |
| Driver file | devices/oberheim/ub_xa_v1.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/oberheim/ub_xa_v1.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 ub_xa_v1: ask “what can the Oberheim UB-Xa V1 do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (204)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/ub_xa_v1/overall_volume |
7 | 0–254 | continuous | ||
/ub_xa_v1/portamento |
0 / 0 | 0–255 | continuous | ||
/ub_xa_v1/porta_bend |
0 / 1 | -32–31 | continuous | ||
/ub_xa_v1/patch_volume |
1 / 0 | 0–255 | continuous | ||
/ub_xa_v1/unison |
0 / 4 | 0–127 | continuous | ||
/ub_xa_v1/unison_voices |
0 / 6 | 0–127 | continuous | ||
/ub_xa_v1/poly_voices |
0 / 5 | 0–127 | continuous | ||
/ub_xa_v1/atrophy |
7 / 17 | 0–127 | continuous | ||
/ub_xa_v1/osc2_detune |
0 / 2 | -127–128 | continuous | ||
/ub_xa_v1/voice_detune |
0 / 3 | 0–255 | continuous | ||
/ub_xa_v1/porta_range |
0 / 12 | 0–255 | continuous | ||
/ub_xa_v1/porta_spread |
0 / 11 | 0–255 | continuous | ||
/ub_xa_v1/hold |
64 | 0–127 | continuous | ||
/ub_xa_v1/sostenuto |
66 | 0–127 | continuous | ||
/ub_xa_v1/breath |
2 | 0–127 | continuous | ||
/ub_xa_v1/pan |
10 | -64–63 | continuous | ||
/ub_xa_v1/arp_on_off |
8 / 0 | 0–127 | continuous | ||
/ub_xa_v1/hold |
8 / 2 | 0–127 | continuous | ||
/ub_xa_v1/arp_mode |
8 / 1 | 0–127 | continuous | ||
/ub_xa_v1/octaves |
8 / 6 | 0–127 | continuous | ||
/ub_xa_v1/arp_repeat |
8 / 8 | 0–10 | discrete | ||
/ub_xa_v1/arp_time |
8 / 3 | 0–127 | continuous | ||
/ub_xa_v1/arp_gate |
8 / 4 | 0–99 | continuous | ||
/ub_xa_v1/arp_sync |
8 / 5 | 0–127 | continuous | ||
/ub_xa_v1/arp_swing |
8 / 7 | 0–10 | discrete | ||
/ub_xa_v1/patch_tempo |
9 / 1 | 40–240 | continuous | ||
/ub_xa_v1/arp_on_off |
8 / 0 | 0–127 | continuous | ||
/ub_xa_v1/hold |
8 / 2 | 0–127 | continuous | ||
/ub_xa_v1/arp_mode |
8 / 1 | 0–127 | continuous | ||
/ub_xa_v1/octaves |
8 / 6 | 0–127 | continuous | ||
/ub_xa_v1/arp_repeat |
8 / 8 | 0–10 | discrete | ||
/ub_xa_v1/arp_time |
8 / 3 | 0–127 | continuous | ||
/ub_xa_v1/arp_gate |
8 / 4 | 0–99 | continuous | ||
/ub_xa_v1/arp_sync |
8 / 5 | 0–127 | continuous | ||
/ub_xa_v1/arp_swing |
0 / 120 | 0–10 | discrete | ||
/ub_xa_v1/patch_tempo |
9 / 1 | 40–240 | continuous | ||
/ub_xa_v1/seq_time |
19 / 1 | 0–127 | continuous | ||
/ub_xa_v1/seq_gate |
19 / 2 | 0–99 | continuous | ||
/ub_xa_v1/seq_sync |
19 / 3 | 0–127 | continuous | ||
/ub_xa_v1/step_count |
19 / 0 | 0–128 | continuous | ||
/ub_xa_v1/midi_tempo |
9 / 2 | 40–240 | continuous | ||
/ub_xa_v1/seq_time |
19 / 1 | 0–127 | continuous | ||
/ub_xa_v1/seq_gate |
19 / 2 | 0–99 | continuous | ||
/ub_xa_v1/seq_sync |
19 / 3 | 0–127 | continuous | ||
/ub_xa_v1/step_count |
19 / 0 | 0–128 | continuous | ||
/ub_xa_v1/rate |
2 / 1 | 0–255 | continuous | ||
/ub_xa_v1/ch_1_depth |
2 / 3 | 0–255 | continuous | ||
/ub_xa_v1/ch_2_depth |
2 / 4 | 0–255 | continuous | ||
/ub_xa_v1/wave |
2 / 6 | 0–127 | continuous | ||
/ub_xa_v1/lfo_phase |
2 / 2 | 0–127 | continuous | ||
/ub_xa_v1/osc1_lfo_amnt |
4 / 13 | 6–63 | continuous | ||
/ub_xa_v1/pwm1_lfo_amnt |
4 / 14 | 0–255 | continuous | ||
/ub_xa_v1/osc2_lfo_amnt |
4 / 22 | 6–63 | continuous | ||
/ub_xa_v1/pwm2_lfo_amnt |
4 / 25 | 0–255 | continuous | ||
/ub_xa_v1/modlfo_limit |
2 / 11 | 0–255 | continuous | ||
/ub_xa_v1/trigpoint |
2 / 0 | 0–360 | continuous | ||
/ub_xa_v1/freq_lfo_amnt |
5 / 13 | 48–175 | continuous | ||
/ub_xa_v1/vca_lfo_amnt |
16 / 8 | 0–127 | continuous | ||
/ub_xa_v1/mod_1_delay |
3 / 9 | 0–255 | continuous | ||
/ub_xa_v1/mod_1_attack |
3 / 8 | 0–255 | continuous | ||
/ub_xa_v1/mod_2_delay |
3 / 11 | 0–255 | continuous | ||
/ub_xa_v1/mod_2_attack |
3 / 10 | 0–255 | continuous | ||
/ub_xa_v1/transpose |
4 / 1 | -6144–6143 | continuous | ||
/ub_xa_v1/osc1_quantize |
4 / 23 | 0–127 | continuous | ||
/ub_xa_v1/transpose |
4 / 3 | -6144–6143 | continuous | ||
/ub_xa_v1/osc2_quantize |
4 / 24 | 0–127 | continuous | ||
/ub_xa_v1/osc_drift |
4 / 16 | 0–63 | continuous | ||
/ub_xa_v1/drift_speed |
4 / 18 | 0–63 | continuous | ||
/ub_xa_v1/wave |
4 / 6 | 0–127 | continuous | ||
/ub_xa_v1/pulse_width |
4 / 0 | 500–980 | continuous | ||
/ub_xa_v1/wave |
4 / 8 | 0–127 | continuous | ||
/ub_xa_v1/pulse_width |
4 / 2 | 500–980 | continuous | ||
/ub_xa_v1/vpo_error |
4 / 17 | -16–15 | discrete | ||
/ub_xa_v1/vpo_err_drift |
4 / 19 | 0–63 | continuous | ||
/ub_xa_v1/init_freq |
4 / 20 | 0–127 | continuous | ||
/ub_xa_v1/f_env_range |
4 / 21 | 1–63 | continuous | ||
/ub_xa_v1/pwm1_trim_l |
4 / 9 | 0–255 | continuous | ||
/ub_xa_v1/pwm1_trim_r |
4 / 10 | 127–255 | continuous | ||
/ub_xa_v1/pwm2_trim_l |
4 / 11 | 0–255 | continuous | ||
/ub_xa_v1/pwm2_trim_r |
4 / 12 | 127–255 | continuous | ||
/ub_xa_v1/pwm_offset |
4 / 15 | -502–498 | continuous | ||
/ub_xa_v1/frequency |
5 / 0 | 0–255 | continuous | ||
/ub_xa_v1/resonance |
5 / 1 | 0–1023 | continuous | ||
/ub_xa_v1/f_env_freq |
5 / 2 | 0–255 | continuous | ||
/ub_xa_v1/noise_level |
5 / 3 | 0–255 | continuous | ||
/ub_xa_v1/on_half |
4 / 7 | 0–127 | continuous | ||
/ub_xa_v1/freq_range |
5 / 7 | 48–175 | continuous | ||
/ub_xa_v1/freq_env_range |
5 / 10 | 48–175 | continuous | ||
/ub_xa_v1/track_amount |
5 / 24 | -32–32 | continuous | ||
/ub_xa_v1/pedal_range |
5 / 17 | 0–96 | continuous | ||
/ub_xa_v1/reso_trim_2p |
5 / 5 | 502–1000 | continuous | ||
/ub_xa_v1/zero_2p_offset |
5 / 8 | 0–48 | continuous | ||
/ub_xa_v1/track_offset |
5 / 16 | 0–63 | continuous | ||
/ub_xa_v1/init_freq |
5 / 20 | 0–127 | continuous | ||
/ub_xa_v1/reso_trim_4p |
5 / 6 | 0–1000 | continuous | ||
/ub_xa_v1/zero_4p_offset |
5 / 9 | 0–48 | continuous | ||
/ub_xa_v1/freq_drift |
5 / 14 | 0–63 | continuous | ||
/ub_xa_v1/drift_speed |
5 / 15 | 0–63 | continuous | ||
/ub_xa_v1/vpo_error |
5 / 18 | -508–492 | continuous | ||
/ub_xa_v1/vpo_err_drift |
5 / 19 | 0–63 | continuous | ||
/ub_xa_v1/filter_attack |
3 / 0 | 0–255 | continuous | ||
/ub_xa_v1/filter_attack |
3 / 1 | 0–255 | continuous | ||
/ub_xa_v1/filter_attack |
3 / 2 | 0–255 | continuous | ||
/ub_xa_v1/filter_attack |
3 / 3 | 0–255 | continuous | ||
/ub_xa_v1/att_linearity |
5 / 25 | -16–15 | discrete | ||
/ub_xa_v1/dec_linearity |
5 / 26 | -16–15 | discrete | ||
/ub_xa_v1/flt_env_chaos |
5 / 12 | 0–31 | discrete | ||
/ub_xa_v1/amp_attack |
3 / 4 | 0–255 | continuous | ||
/ub_xa_v1/amp_attack |
3 / 5 | 0–255 | continuous | ||
/ub_xa_v1/amp_attack |
3 / 6 | 0–255 | continuous | ||
/ub_xa_v1/amp_attack |
3 / 7 | 0–255 | continuous | ||
/ub_xa_v1/att_linearity |
16 / 6 | -16–15 | discrete | ||
/ub_xa_v1/dec_linearity |
16 / 7 | -16–15 | discrete | ||
/ub_xa_v1/amp_env_chaos |
16 / 5 | 0–64 | continuous | ||
/ub_xa_v1/2p_bias |
16 / 1 | 0–255 | continuous | ||
/ub_xa_v1/uni_bias |
16 / 2 | 0–255 | continuous | ||
/ub_xa_v1/volume_bias |
16 / 3 | 0–255 | continuous | ||
/ub_xa_v1/pedal_release |
3 / 12 | 0–255 | continuous | ||
/ub_xa_v1/rate |
1 / 4 | 0–255 | continuous | ||
/ub_xa_v1/depth |
1 / 6 | 0–255 | continuous | ||
/ub_xa_v1/wave |
1 / 5 | 0–127 | continuous | ||
/ub_xa_v1/mod_lever_up |
1 | 0–127 | continuous | ||
/ub_xa_v1/mod_lever_down |
31 | 0–127 | continuous | ||
/ub_xa_v1/lfo_limit |
1 / 10 | 0–255 | continuous | ||
/ub_xa_v1/bend_depth |
1 / 2 | 0–60 | continuous | ||
/ub_xa_v1/source_1 |
6 / 8 | 0–127 | continuous | ||
/ub_xa_v1/amount_1 |
6 / 0 | -128–127 | continuous | ||
/ub_xa_v1/destination_1 |
6 / 9 | 0–127 | continuous | ||
/ub_xa_v1/source_2 |
6 / 127 | 0–127 | continuous | ||
/ub_xa_v1/amount_2 |
6 / 1 | -128–127 | continuous | ||
/ub_xa_v1/destination_2 |
6 / 11 | 0–127 | continuous | ||
/ub_xa_v1/source_3 |
6 / 12 | 0–127 | continuous | ||
/ub_xa_v1/amount_3 |
6 / 2 | -128–127 | continuous | ||
/ub_xa_v1/destination_3 |
6 / 13 | 0–127 | continuous | ||
/ub_xa_v1/source_4 |
6 / 14 | 0–127 | continuous | ||
/ub_xa_v1/amount_4 |
6 / 3 | -128–127 | continuous | ||
/ub_xa_v1/destination_4 |
6 / 15 | 0–127 | continuous | ||
/ub_xa_v1/source_5 |
6 / 16 | 0–127 | continuous | ||
/ub_xa_v1/amount_5 |
6 / 4 | -128–127 | continuous | ||
/ub_xa_v1/destination_5 |
6 / 17 | 0–127 | continuous | ||
/ub_xa_v1/source_6 |
6 / 18 | 0–127 | continuous | ||
/ub_xa_v1/amount_6 |
6 / 5 | -128–127 | continuous | ||
/ub_xa_v1/destination_6 |
6 / 19 | 0–127 | continuous | ||
/ub_xa_v1/source_7 |
6 / 20 | 0–127 | continuous | ||
/ub_xa_v1/amount_7 |
6 / 6 | -128–127 | continuous | ||
/ub_xa_v1/destination_7 |
6 / 21 | 0–127 | continuous | ||
/ub_xa_v1/source_8 |
6 / 22 | 0–127 | continuous | ||
/ub_xa_v1/amount_8 |
6 / 7 | -128–127 | continuous | ||
/ub_xa_v1/destination_8 |
6 / 23 | 0–127 | continuous | ||
/ub_xa_v1/char1 |
7 / 0 | 32–127 | continuous | ||
/ub_xa_v1/char2 |
7 / 7 | 32–127 | continuous | ||
/ub_xa_v1/char3 |
7 / 2 | 32–127 | continuous | ||
/ub_xa_v1/pan_voice_1 |
17 / 0 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_2 |
17 / 1 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_3 |
17 / 2 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_4 |
17 / 3 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_5 |
17 / 4 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_6 |
17 / 5 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_7 |
17 / 6 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_8 |
17 / 7 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_9 |
17 / 8 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_10 |
17 / 9 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_11 |
17 / 10 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_12 |
17 / 11 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_13 |
17 / 12 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_14 |
17 / 13 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_15 |
17 / 14 | -128–127 | continuous | ||
/ub_xa_v1/pan_voice_16 |
17 / 15 | -128–127 | continuous | ||
/ub_xa_v1/sust_assign |
11 / 0 | 0–127 | continuous | ||
/ub_xa_v1/sust_action |
11 / 1 | 0–127 | continuous | ||
/ub_xa_v1/sust_latch |
11 / 2 | 0–127 | continuous | ||
/ub_xa_v1/prog_assign |
11 / 3 | 0–127 | continuous | ||
/ub_xa_v1/prog_action |
11 / 4 | 0–127 | continuous | ||
/ub_xa_v1/prog_latch |
11 / 5 | 0–127 | continuous | ||
/ub_xa_v1/hold_assign |
11 / 6 | 0–127 | continuous | ||
/ub_xa_v1/hold_action |
11 / 7 | 0–127 | continuous | ||
/ub_xa_v1/hold_latch |
11 / 8 | 0–127 | continuous | ||
/ub_xa_v1/vibr_assign |
11 / 9 | 0–127 | continuous | ||
/ub_xa_v1/vibr_action |
11 / 10 | 0–127 | continuous | ||
/ub_xa_v1/vibrato_trim_l |
11 / 11 | 0–255 | continuous | ||
/ub_xa_v1/vibrato_trim_r |
11 / 12 | 0–255 | continuous | ||
/ub_xa_v1/voices_1_8 |
13 / 0 | 0–127 | continuous | ||
/ub_xa_v1/voices_9_16 |
13 / 1 | 0–127 | continuous | ||
/ub_xa_v1/filt_assign |
11 / 13 | 0–127 | continuous | ||
/ub_xa_v1/filt_action |
11 / 14 | 0–127 | continuous | ||
/ub_xa_v1/filter_trim_l |
11 / 15 | 0–255 | continuous | ||
/ub_xa_v1/filter_trim_r |
11 / 16 | 0–255 | continuous | ||
/ub_xa_v1/pwm_1_8 |
13 / 2 | 0–127 | continuous | ||
/ub_xa_v1/pwm_9_16 |
13 / 3 | 0–127 | continuous | ||
/ub_xa_v1/unisonpriority |
0 / 9 | 0–127 | continuous | ||
/ub_xa_v1/chord_priority |
0 / 10 | 0–127 | continuous | ||
/ub_xa_v1/velocity_curve |
10 / 1 | 0–127 | continuous | ||
/ub_xa_v1/velo_response |
10 / 2 | 0–127 | continuous | ||
/ub_xa_v1/vco_1_8 |
13 / 4 | 0–127 | continuous | ||
/ub_xa_v1/vco_9_16 |
13 / 5 | 0–127 | continuous | ||
/ub_xa_v1/at_assignment |
10 / 3 | 0–127 | continuous | ||
/ub_xa_v1/at_filter |
0 / 8 | 0–127 | continuous | ||
/ub_xa_v1/at_curve |
10 / 4 | 0–127 | continuous | ||
/ub_xa_v1/vcf_1_8 |
13 / 6 | 0–127 | continuous | ||
/ub_xa_v1/vcf_9_16 |
13 / 7 | 0–127 | continuous | ||
/ub_xa_v1/midi_sync |
9 / 3 | 0–127 | continuous | ||
/ub_xa_v1/mpe_profile |
9 / 13 | 0–127 | continuous | ||
/ub_xa_v1/lower_sens |
1 / 8 | 0–96 | continuous | ||
/ub_xa_v1/upper_sens |
1 / 9 | 0–96 | continuous |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /ub_xa_v1/note/on <note> <velocity>, /ub_xa_v1/cc/<number> <value>, /ub_xa_v1/pitchbend <0-16383>, /ub_xa_v1/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.