discoDSP OB-Xd 3: MIDI CC, NRPN and OSC map¶
The discoDSP OB-Xd 3 as named OSC addresses — 81 CC — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | discoDSP OB-Xd 3 |
|---|---|
| Vendor | discoDSP |
| OSC prefix | /ob_xd_3 |
| 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/discodsp/ob_xd_3.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/discodsp/ob_xd_3.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 ob_xd_3: ask “what can the discoDSP OB-Xd 3 do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (81)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/ob_xd_3/global/voice_count |
15 | 0–127 | continuous | Global | |
/ob_xd_3/global/unison |
16 | 0–127 | continuous | Global | |
/ob_xd_3/global/octave |
17 | 0–127 | continuous | Global | |
/ob_xd_3/filter/oversampling |
18 | 0–127 | continuous | Filter | |
/ob_xd_3/lfo/frequency |
19 | 0–127 | continuous | LFO | |
/ob_xd_3/envelope/volume_env_velocity |
20 | 0–127 | continuous | Envelope | |
/ob_xd_3/global/as_played_allocation |
21 | 0–127 | continuous | Global | |
/ob_xd_3/lfo/amount_1 |
22 | 0–127 | continuous | LFO | |
/ob_xd_3/global/portamento |
23 | 0–127 | continuous | Global | |
/ob_xd_3/global/unison_detune |
24 | 0–127 | continuous | Global | |
/ob_xd_3/lfo/amount_2 |
25 | 0–127 | continuous | LFO | |
/ob_xd_3/global/bend_osc_2_only |
31 | 0–127 | continuous | Global | |
/ob_xd_3/global/tune |
33 | 0–127 | continuous | Global | |
/ob_xd_3/global/legato_mode |
35 | 0–127 | continuous | Global | |
/ob_xd_3/envelope/loudness_decay |
36 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/loudness_sustain |
37 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/filter_attack |
38 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/filter_decay |
39 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/filter_sustain |
40 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/filter_release |
41 | 0–127 | continuous | Envelope | |
/ob_xd_3/filter/resonance |
42 | 0–127 | continuous | Filter | |
/ob_xd_3/oscillator/osc_2_detune |
43 | 0–127 | continuous | Oscillator | |
/ob_xd_3/lfo/sine_wave |
44 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/square_wave |
45 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/s_h_wave |
46 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/to_osc_1_pitch |
47 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/to_osc_2_pitch |
48 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/to_filter |
49 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/to_pw_osc_1 |
50 | 0–127 | continuous | LFO | |
/ob_xd_3/lfo/to_pw_osc_2 |
51 | 0–127 | continuous | LFO | |
/ob_xd_3/oscillator/osc_2_hard_sync |
52 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/cross_mod |
53 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_1_pitch |
54 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_2_pitch |
55 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/pitch_quantize |
56 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_1_saw |
57 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_1_pulse |
58 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_2_saw |
59 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_2_pulse |
60 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/pulse_width |
61 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/brightness |
62 | 0–127 | continuous | Oscillator | |
/ob_xd_3/envelope/env_to_pitch |
63 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/loudness_release |
72 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/loudness_attack |
73 | 0–127 | continuous | Envelope | |
/ob_xd_3/filter/cutoff |
74 | 0–127 | continuous | Filter | |
/ob_xd_3/global/pitch_bend_lfo_rate |
75 | 0–127 | continuous | Global | |
/ob_xd_3/envelope/filter_env_velocity |
76 | 0–127 | continuous | Envelope | |
/ob_xd_3/oscillator/osc_1_mix |
77 | 0–127 | continuous | Oscillator | |
/ob_xd_3/oscillator/osc_2_mix |
78 | 0–127 | continuous | Oscillator | |
/ob_xd_3/global/volume |
71 | 0–127 | continuous | Global | |
/ob_xd_3/pan/voice_1 |
81 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_2 |
82 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_3 |
83 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_4 |
84 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_5 |
85 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_6 |
86 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_7 |
87 | 0–127 | continuous | Pan | |
/ob_xd_3/pan/voice_8 |
88 | 0–127 | continuous | Pan | |
/ob_xd_3/oscillator/noise_mix |
102 | 0–127 | continuous | Oscillator | |
/ob_xd_3/filter/key_follow |
103 | 0–127 | continuous | Filter | |
/ob_xd_3/filter/multimode |
104 | 0–127 | continuous | Filter | |
/ob_xd_3/filter/bandpass_blend |
105 | 0–127 | continuous | Filter | |
/ob_xd_3/filter/four_pole |
106 | 0–127 | continuous | Filter | |
/ob_xd_3/filter/env_amount |
107 | 0–127 | continuous | Filter | |
/ob_xd_3/variation/envelope_detune |
108 | 0–127 | continuous | Variation | |
/ob_xd_3/variation/filter_detune |
109 | 0–127 | continuous | Variation | |
/ob_xd_3/variation/portamento_detune |
110 | 0–127 | continuous | Variation | |
/ob_xd_3/global/economy_mode |
111 | 0–127 | continuous | Global | |
/ob_xd_3/lfo/sync |
112 | 0–127 | continuous | LFO | |
/ob_xd_3/envelope/pw_env |
113 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/pw_env_both |
114 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/env_pitch_both |
115 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/filter_env_invert |
116 | 0–127 | continuous | Envelope | |
/ob_xd_3/oscillator/pw_osc_2_offset |
117 | 0–127 | continuous | Oscillator | |
/ob_xd_3/global/bend_range |
118 | 0–127 | continuous | Global | |
/ob_xd_3/filter/self_osc_push |
119 | 0–127 | continuous | Filter | |
/ob_xd_3/envelope/loudness_env_shape |
120 | 0–127 | continuous | Envelope | |
/ob_xd_3/envelope/filter_env_shape |
121 | 0–127 | continuous | Envelope | |
/ob_xd_3/filter/falloff |
122 | 0–127 | continuous | Filter | |
/ob_xd_3/global/multiply_voices |
123 | 0–127 | continuous | Global | |
/ob_xd_3/oscillator/level_difference |
124 | 0–127 | continuous | Oscillator |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /ob_xd_3/note/on <note> <velocity>, /ob_xd_3/cc/<number> <value>, /ob_xd_3/pitchbend <0-16383>, /ob_xd_3/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.