Waldorf Pulse 2: MIDI CC, NRPN and OSC map¶
The Waldorf Pulse 2 as named OSC addresses — 223 CC, 24 SysEx commands — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Waldorf Pulse 2 |
|---|---|
| Vendor | Waldorf |
| OSC prefix | /pulse_2 |
| Source | 🎛️ Derived from an Electra One community preset |
| Revision | per pencilresearch canonical CSV |
| Upstream | electra-preset |
| Driver file | devices/waldorf/pulse_2.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/waldorf/pulse_2.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 pulse_2: ask “what can the Waldorf Pulse 2 do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (223)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/pulse_2/modwheel |
1 | 0–127 | continuous | ||
/pulse_2/glide_rate |
5 | 0–127 | continuous | ||
/pulse_2/glidemod |
62 | 0–127 | continuous | ||
/pulse_2/volume |
7 | 0–127 | continuous | ||
/pulse_2/pan |
10 | 0–127 | continuous | ||
/pulse_2/env_vcf_attack |
14 | 0–127 | continuous | ||
/pulse_2/env_vcf_decay |
15 | 0–127 | continuous | ||
/pulse_2/env_vcf_sustain |
16 | 0–127 | continuous | ||
/pulse_2/env_vcf_release |
17 | 0–127 | continuous | ||
/pulse_2/env_amp_attack |
18 | 0–127 | continuous | ||
/pulse_2/env_amp_decay |
19 | 0–127 | continuous | ||
/pulse_2/env_amp_sustain |
20 | 0–127 | continuous | ||
/pulse_2/env_amp_release |
21 | 0–127 | continuous | ||
/pulse_2/lfo1_speed |
24 | 0–127 | continuous | ||
/pulse_2/lfo1_shp |
25 | 0–127 | continuous | ||
/pulse_2/lfo2_speed |
26 | 0–127 | continuous | ||
/pulse_2/lfo2_delay |
27 | 0–127 | continuous | ||
/pulse_2/osc1_shape |
34 | 0–127 | continuous | ||
/pulse_2/osc1_pwm |
35 | 0–127 | continuous | ||
/pulse_2/osc1_semitone |
70 | 0–127 | continuous | ||
/pulse_2/osc1_detune |
71 | 0–127 | continuous | ||
/pulse_2/osc1_keytrack |
73 | 0–127 | continuous | ||
/pulse_2/osc2_semitone |
36 | 0–127 | continuous | ||
/pulse_2/osc2_detune |
37 | 0–127 | continuous | ||
/pulse_2/osc2_shape |
38 | 0–127 | continuous | ||
/pulse_2/osc2_pwm |
39 | 0–127 | continuous | ||
/pulse_2/osc2_keytrack |
40 | 0–127 | continuous | ||
/pulse_2/osc3_sync |
41 | 0–127 | continuous | ||
/pulse_2/osc3_semitone |
42 | 0–127 | continuous | ||
/pulse_2/osc3_detune |
43 | 0–127 | continuous | ||
/pulse_2/osc3_shape |
44 | 0–127 | continuous | ||
/pulse_2/osc3_route |
72 | 0–127 | continuous | ||
/pulse_2/osc1_level |
45 | 0–127 | continuous | ||
/pulse_2/osc2_level |
46 | 0–127 | continuous | ||
/pulse_2/osc3_level |
47 | 0–127 | continuous | ||
/pulse_2/unison_detune |
102 | 0–127 | continuous | ||
/pulse_2/osc1_fade |
103 | 0–127 | continuous | ||
/pulse_2/osc2_fade |
104 | 0–127 | continuous | ||
/pulse_2/noise |
48 | 0–127 | continuous | ||
/pulse_2/vcf_type |
49 | 0–127 | continuous | ||
/pulse_2/vcf_cutoff |
50 | 0–127 | continuous | ||
/pulse_2/vcf_res |
56 | 0–127 | continuous | ||
/pulse_2/vcf_keytrack |
51 | 0–127 | continuous | ||
/pulse_2/vcf_velocity |
53 | 0–127 | continuous | ||
/pulse_2/env_amount |
52 | 0–127 | continuous | ||
/pulse_2/vca_volume |
57 | 0–127 | continuous | ||
/pulse_2/vca_velocity |
58 | 0–127 | continuous | ||
/pulse_2/vca_pan |
59 | 0–127 | continuous | ||
/pulse_2/env_vcf_trig |
29 | 0–127 | continuous | ||
/pulse_2/env_vcf_loop |
74 | 0–127 | continuous | ||
/pulse_2/env_amp_loop |
75 | 0–127 | continuous | ||
/pulse_2/env_amp_trig |
31 | 0–127 | continuous | ||
/pulse_2/drive |
76 | 0–127 | continuous | ||
/pulse_2/drive_type |
77 | 0–127 | continuous | ||
/pulse_2/arp_switch |
79 | 0–127 | continuous | ||
/pulse_2/arp_range |
80 | 0–127 | continuous | ||
/pulse_2/arp_tempo |
81 | 0–127 | continuous | ||
/pulse_2/arp_clock |
82 | 0–127 | continuous | ||
/pulse_2/arp_mode |
83 | 0–127 | continuous | ||
/pulse_2/step_duration |
84 | 0–127 | continuous | ||
/pulse_2/arp_swing |
85 | 0–127 | continuous | ||
/pulse_2/arp_delay |
86 | 0–127 | continuous | ||
/pulse_2/pattern_length |
87 | 0–127 | continuous | ||
/pulse_2/accent |
88 | 0–127 | continuous | ||
/pulse_2/bend_up |
105 | 0–127 | continuous | ||
/pulse_2/bend_down |
106 | 0–127 | continuous | ||
/pulse_2/mod1_source |
108 | 0–127 | continuous | ||
/pulse_2/mod1_amount |
109 | 0–127 | continuous | ||
/pulse_2/mod1_target |
110 | 0–127 | continuous | ||
/pulse_2/mod2_source |
111 | 0–127 | continuous | ||
/pulse_2/mod2_amount |
112 | 0–127 | continuous | ||
/pulse_2/mod2_target |
113 | 0–127 | continuous | ||
/pulse_2/mod3_source |
114 | 0–127 | continuous | ||
/pulse_2/mod3_amount |
115 | 0–127 | continuous | ||
/pulse_2/mod3_target |
116 | 0–127 | continuous | ||
/pulse_2/mod4_source |
117 | 0–127 | continuous | ||
/pulse_2/mod4_amount |
118 | 0–127 | continuous | ||
/pulse_2/mod4_target |
119 | 0–127 | continuous | ||
/pulse_2/mod5_source |
90 | 0–127 | continuous | ||
/pulse_2/mod5_amount |
91 | 0–127 | continuous | ||
/pulse_2/mod5_target |
92 | 0–127 | continuous | ||
/pulse_2/mod6_source |
93 | 0–127 | continuous | ||
/pulse_2/mod6_amount |
94 | 0–127 | continuous | ||
/pulse_2/mod6_target |
95 | 0–127 | continuous | ||
/pulse_2/mod7_source |
96 | 0–127 | continuous | ||
/pulse_2/mod7_amount |
97 | 0–127 | continuous | ||
/pulse_2/mod7_target |
98 | 0–127 | continuous | ||
/pulse_2/mod8_source |
99 | 0–127 | continuous | ||
/pulse_2/mod8_amount |
100 | 0–127 | continuous | ||
/pulse_2/mod8_target |
101 | 0–127 | continuous | ||
/pulse_2/shape |
34 | 0–127 | continuous | ||
/pulse_2/semitone |
70 | -48–48 | continuous | ||
/pulse_2/detune |
71 | -64–63 | continuous | ||
/pulse_2/mute |
45 | 0–127 | continuous | ||
/pulse_2/osc3 |
47 | 0–127 | continuous | ||
/pulse_2/pw |
35 | 0–127 | continuous | ||
/pulse_2/key_track |
73 | 0–127 | continuous | ||
/pulse_2/env_a_fade |
103 | 0–127 | continuous | ||
/pulse_2/osc2 |
46 | 0–127 | continuous | ||
/pulse_2/shape |
38 | 0–127 | continuous | ||
/pulse_2/semitone |
36 | -48–48 | continuous | ||
/pulse_2/detune |
37 | -64–63 | continuous | ||
/pulse_2/down |
106 | 0–127 | continuous | ||
/pulse_2/up |
105 | 0–127 | continuous | ||
/pulse_2/pw |
39 | 0–127 | continuous | ||
/pulse_2/key_track |
40 | 0–127 | continuous | ||
/pulse_2/osc_3_2_sync |
41 | 0–127 | continuous | ||
/pulse_2/env_a_fade |
104 | 0–127 | continuous | ||
/pulse_2/mode |
62 | 0–127 | continuous | ||
/pulse_2/rate |
5 | 0–127 | continuous | ||
/pulse_2/shape |
44 | 0–127 | continuous | ||
/pulse_2/semitone |
42 | -48–48 | continuous | ||
/pulse_2/detune |
43 | -64–63 | continuous | ||
/pulse_2/routing |
72 | 0–127 | continuous | ||
/pulse_2/all_sounds_off |
120 | 0–127 | continuous | ||
/pulse_2/cutoff |
50 | 0–127 | continuous | ||
/pulse_2/resonance |
56 | 0–127 | continuous | ||
/pulse_2/type |
49 | 0–127 | continuous | ||
/pulse_2/keytrack |
51 | -64–63 | continuous | ||
/pulse_2/velocity |
53 | -64–63 | continuous | ||
/pulse_2/f_attack |
14 | 0–127 | continuous | ||
/pulse_2/f_attack |
15 | 0–127 | continuous | ||
/pulse_2/f_attack |
16 | 0–127 | continuous | ||
/pulse_2/f_attack |
17 | 0–127 | continuous | ||
/pulse_2/loop |
74 | 0–127 | continuous | ||
/pulse_2/trigger |
29 | 0–127 | continuous | ||
/pulse_2/vca_drive |
76 | 0–127 | continuous | ||
/pulse_2/drive_curve |
77 | 0–127 | continuous | ||
/pulse_2/overall_volume |
57 | 0–127 | continuous | ||
/pulse_2/velocity |
58 | -64–63 | continuous | ||
/pulse_2/a_attack |
18 | 0–127 | continuous | ||
/pulse_2/a_attack |
19 | 0–127 | continuous | ||
/pulse_2/a_attack |
20 | 0–127 | continuous | ||
/pulse_2/a_attack |
21 | 0–127 | continuous | ||
/pulse_2/loop |
75 | 0–127 | continuous | ||
/pulse_2/trigger |
31 | 0–127 | continuous | ||
/pulse_2/source |
108 | 0–24 | continuous | ||
/pulse_2/amount |
109 | -64–63 | continuous | ||
/pulse_2/destination |
110 | 0–31 | continuous | ||
/pulse_2/source |
111 | 0–24 | continuous | ||
/pulse_2/amount |
112 | -64–63 | continuous | ||
/pulse_2/destination |
113 | 0–31 | continuous | ||
/pulse_2/speed |
24 | 0–127 | continuous | ||
/pulse_2/shape |
25 | 0–127 | continuous | ||
/pulse_2/speed |
26 | 0–127 | continuous | ||
/pulse_2/delay |
27 | 0–127 | continuous | ||
/pulse_2/mod_wheel |
1 | 0–127 | continuous | ||
/pulse_2/hold |
64 | 0–127 | continuous | ||
/pulse_2/source |
114 | 0–24 | continuous | ||
/pulse_2/amount |
115 | -64–63 | continuous | ||
/pulse_2/destination |
116 | 0–31 | continuous | ||
/pulse_2/source |
117 | 0–24 | continuous | ||
/pulse_2/amount |
118 | -64–63 | continuous | ||
/pulse_2/destination |
119 | 0–31 | continuous | ||
/pulse_2/source |
90 | 0–24 | continuous | ||
/pulse_2/amount |
91 | -64–63 | continuous | ||
/pulse_2/destination |
92 | 0–31 | continuous | ||
/pulse_2/source |
93 | 0–24 | continuous | ||
/pulse_2/amount |
94 | -64–63 | continuous | ||
/pulse_2/destination |
95 | 0–31 | continuous | ||
/pulse_2/source |
96 | 0–24 | continuous | ||
/pulse_2/amount |
97 | -64–63 | continuous | ||
/pulse_2/destination |
98 | 0–31 | continuous | ||
/pulse_2/source |
99 | 0–24 | continuous | ||
/pulse_2/amount |
100 | -64–63 | continuous | ||
/pulse_2/destination |
101 | 0–31 | continuous | ||
/pulse_2/range |
80 | 1–10 | continuous | ||
/pulse_2/tempo |
81 | 0–127 | continuous | ||
/pulse_2/clock_ratio |
82 | 0–127 | continuous | ||
/pulse_2/mode |
83 | 0–127 | continuous | ||
/pulse_2/delay |
86 | -50–50 | continuous | ||
/pulse_2/swing |
85 | 14–114 | continuous | ||
/pulse_2/accent_control |
88 | 0–24 | continuous | ||
/pulse_2/tune |
33 | -32–31 | continuous | ||
/pulse_2/tune |
37 | -32–31 | continuous | ||
/pulse_2/sync |
41 | 0–127 | continuous | ||
/pulse_2/tune |
43 | -32–31 | continuous | ||
/pulse_2/osc_1 |
45 | 0–127 | continuous | ||
/pulse_2/osc_2 |
46 | 0–127 | continuous | ||
/pulse_2/osc_3 |
47 | 0–127 | continuous | ||
/pulse_2/noise_level |
48 | 0–127 | continuous | ||
/pulse_2/attack |
14 | 0–127 | continuous | ||
/pulse_2/decay |
15 | 0–127 | continuous | ||
/pulse_2/sustain |
16 | 0–127 | continuous | ||
/pulse_2/release |
17 | 0–127 | continuous | ||
/pulse_2/attack |
18 | 0–127 | continuous | ||
/pulse_2/decay |
19 | 0–127 | continuous | ||
/pulse_2/sustain |
20 | 0–127 | continuous | ||
/pulse_2/release |
21 | 0–127 | continuous | ||
/pulse_2/cutoff_freq |
50 | 0–127 | continuous | ||
/pulse_2/cut_keytrack |
51 | -64–63 | continuous | ||
/pulse_2/cut_env1_sens |
52 | -64–63 | continuous | ||
/pulse_2/cut_vel_sens |
53 | -64–63 | continuous | ||
/pulse_2/cut_mod_source |
54 | 0–127 | continuous | ||
/pulse_2/cut_mod_amount |
55 | -64–63 | continuous | ||
/pulse_2/lfo_1_speed |
24 | 0–127 | continuous | ||
/pulse_2/lfo_1_shape |
25 | 0–127 | continuous | ||
/pulse_2/lfo_2_speed |
26 | 0–127 | continuous | ||
/pulse_2/lfo_2_delay |
27 | 0–127 | continuous | ||
/pulse_2/arp_active |
102 | 0–127 | continuous | ||
/pulse_2/arp_tempo_ext |
105 | 0–127 | continuous | ||
/pulse_2/pitch_mod_sour |
60 | 0–127 | continuous | ||
/pulse_2/pitch_mod_amou |
61 | -64–63 | continuous | ||
/pulse_2/portamento_mod |
62 | 0–127 | continuous | ||
/pulse_2/pitchbend_scal |
63 | 0–24 | continuous | ||
/pulse_2/sustain_switch |
64 | 0–127 | continuous | ||
/pulse_2/mod_u1_source |
108 | 0–127 | continuous | ||
/pulse_2/mod_u1_amount |
109 | -64–63 | continuous | ||
/pulse_2/mod_u1_destina |
110 | 0–127 | continuous | ||
/pulse_2/mod_u2_source |
111 | 0–127 | continuous | ||
/pulse_2/mod_u2_amount |
112 | -64–63 | continuous | ||
/pulse_2/mod_u2_destina |
113 | 0–127 | continuous | ||
/pulse_2/mod_u3_source |
114 | 0–127 | continuous | ||
/pulse_2/mod_u3_amount |
115 | -64–63 | continuous | ||
/pulse_2/mod_u3_destina |
116 | 0–127 | continuous | ||
/pulse_2/mod_u4_source |
117 | 0–127 | continuous | ||
/pulse_2/mod_u4_amount |
118 | -64–63 | continuous | ||
/pulse_2/mod_u4_destina |
119 | 0–127 | continuous | ||
/pulse_2/vol_velo_sens |
58 | -64–63 | continuous | ||
/pulse_2/panning |
10 | -64–63 | continuous | ||
/pulse_2/main_volume |
7 | 0–127 | continuous | ||
/pulse_2/breath_control |
2 | 0–127 | continuous | ||
/pulse_2/portam_time |
5 | 0–127 | continuous |
SysEx commands (24)¶
| OSC address | Arguments |
|---|---|
/pulse_2/char1 |
val: u7 |
/pulse_2/char2 |
val: u7 |
/pulse_2/char3 |
val: u7 |
/pulse_2/char4 |
val: u7 |
/pulse_2/char5 |
val: u7 |
/pulse_2/char6 |
val: u7 |
/pulse_2/char7 |
val: u7 |
/pulse_2/char8 |
val: u7 |
/pulse_2/char9 |
val: u7 |
/pulse_2/char10 |
val: u7 |
/pulse_2/char11 |
val: u7 |
/pulse_2/char12 |
val: u7 |
/pulse_2/char13 |
val: u7 |
/pulse_2/char14 |
val: u7 |
/pulse_2/sound_category |
val: u7 |
/pulse_2/transpose |
val: u7 |
/pulse_2/midi_thru |
val: u7 |
/pulse_2/clock_source |
val: u7 |
/pulse_2/input_gain |
val: u7 |
/pulse_2/vel_curve |
val: u7 |
/pulse_2/cc_x_assign |
val: u7 |
/pulse_2/tx_arp_clock |
val: u7 |
/pulse_2/tx_arp_notes |
val: u7 |
/pulse_2/glob_request |
val: u7 |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /pulse_2/note/on <note> <velocity>, /pulse_2/cc/<number> <value>, /pulse_2/pitchbend <0-16383>, /pulse_2/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.