Lamberhuus VIPER: MIDI CC, NRPN and OSC map¶
The Lamberhuus VIPER as named OSC addresses — 88 CC, 3 NRPN, 67 SysEx commands — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Lamberhuus VIPER |
|---|---|
| Vendor | Lamberhuus |
| OSC prefix | /viper |
| Source | 🎛️ Derived from an Electra One community preset |
| Revision | per Electra preset |
| Upstream | electra-preset |
| Driver file | devices/lamberhuus/viper.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/lamberhuus/viper.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 viper: ask “what can the Lamberhuus VIPER do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (91)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/viper/shape |
85 | 0–127 | continuous | ||
/viper/pw |
17 | 0–127 | continuous | ||
/viper/osc1_type |
86 | 0–127 | continuous | ||
/viper/semi |
20 | -48–48 | continuous | ||
/viper/key_follow |
21 | -64–63 | continuous | ||
/viper/syn_osc1_osc2 |
90 | 0–127 | continuous | ||
/viper/env_osc_2 |
91 | -64–63 | continuous | ||
/viper/phase |
92 | 0–127 | continuous | ||
/viper/porta |
93 | 0–127 | continuous | ||
/viper/transp |
94 | -64–63 | continuous | ||
/viper/vel_pw |
95 | -64–63 | continuous | ||
/viper/shape |
22 | 0–127 | continuous | ||
/viper/semi |
25 | -48–48 | continuous | ||
/viper/key_follow |
31 | -64–63 | continuous | ||
/viper/detune |
26 | 0–127 | continuous | ||
/viper/fm_mode |
97 | 0–127 | continuous | ||
/viper/fm_amt |
98 | 0–127 | continuous | ||
/viper/emv_fm |
99 | 0–127 | continuous | ||
/viper/vel_fm |
100 | 0–127 | continuous | ||
/viper/intensity |
102 | 0–127 | continuous | ||
/viper/osc3_type |
87 | 0–127 | continuous | ||
/viper/sub_osc_wave |
35 | 0–127 | continuous | ||
/viper/noise_color |
39 | 0–127 | continuous | ||
/viper/osc_1_2_bal |
33 | -100–100 | continuous | ||
/viper/osc_3 |
36 | 0–127 | continuous | ||
/viper/sub_osc |
34 | 0–127 | continuous | ||
/viper/ring_mod |
50 | 0–127 | continuous | ||
/viper/noise |
37 | 0–127 | continuous | ||
/viper/filter_1_type |
110 | 0–127 | continuous | ||
/viper/cutoff |
40 | 0–127 | continuous | ||
/viper/resonance |
42 | 0–127 | continuous | ||
/viper/env_amount |
44 | 0–127 | continuous | ||
/viper/routing |
53 | 0–3 | continuous | ||
/viper/key_follow |
46 | -64–63 | continuous | ||
/viper/filter_link |
1 / 32 | 0–1 | switch | ||
/viper/cutoff |
41 | 0–127 | continuous | ||
/viper/resonance |
43 | 0–127 | continuous | ||
/viper/env_amount |
45 | 0–127 | continuous | ||
/viper/osc_vol |
111 | 0–127 | continuous | ||
/viper/filter_bal |
48 | -64–63 | continuous | ||
/viper/key_follow |
47 | -64–63 | continuous | ||
/viper/test_routing |
112 | 0–127 | continuous | ||
/viper/filter |
54 | 0–127 | continuous | ||
/viper/filter |
55 | 0–127 | continuous | ||
/viper/filter |
56 | 0–127 | continuous | ||
/viper/filter |
58 | 0–127 | continuous | ||
/viper/sustain_slope |
57 | -64–63 | continuous | ||
/viper/amplitude |
59 | 0–127 | continuous | ||
/viper/amplitude |
60 | 0–127 | continuous | ||
/viper/amplitude |
61 | 0–127 | continuous | ||
/viper/amplitude |
63 | 0–127 | continuous | ||
/viper/sustain_slope |
62 | -64–63 | continuous | ||
/viper/clock |
1 / 18 | 0–127 | continuous | ||
/viper/rate |
0 / 67 | 0–127 | continuous | ||
/viper/contour |
71 | -64–63 | continuous | ||
/viper/mode |
70 | 0–1 | switch | ||
/viper/key_follow |
72 | 0–100 | continuous | ||
/viper/envelope_mode |
69 | 0–1 | switch | ||
/viper/osc_1_pitch |
74 | -100–100 | continuous | ||
/viper/osc_2_pitch |
75 | -100–100 | continuous | ||
/viper/pulse_width |
76 | -100–100 | continuous | ||
/viper/resonance |
77 | -100–100 | continuous | ||
/viper/filter_gain |
78 | -100–100 | continuous | ||
/viper/rate |
79 | 0–127 | continuous | ||
/viper/shape |
80 | 0–67 | continuous | ||
/viper/contour |
83 | -64–63 | continuous | ||
/viper/mode |
82 | 0–1 | switch | ||
/viper/key_follow |
84 | 0–100 | continuous | ||
/viper/envelope_mode |
81 | 0–1 | switch | ||
/viper/filtr_1_cutoff |
88 | -100–100 | continuous | ||
/viper/filtr_2_cutoff |
89 | -100–100 | continuous | ||
/viper/panorama |
90 | -100–100 | continuous | ||
/viper/fm_amount |
87 | -100–100 | continuous | ||
/viper/shape_1_2 |
86 | -100–100 | continuous | ||
/viper/on |
104 | 0–127 | continuous | ||
/viper/on |
105 | 0–127 | continuous | ||
/viper/type |
106 | 0–127 | continuous | ||
/viper/type |
103 | 0–6 | continuous | ||
/viper/rate |
106 | 0–127 | continuous | ||
/viper/depth |
107 | 0–100 | continuous | ||
/viper/feedback |
109 | -100–100 | continuous | ||
/viper/delay |
108 | 0–127 | continuous | ||
/viper/classic_mix |
105 | 0–127 | continuous | ||
/viper/lfo_wave |
110 | 0–5 | continuous | ||
/viper/mix |
104 | 0–127 | continuous | ||
/viper/x_over |
111 | 0–127 | continuous | ||
/viper/send |
113 | 0–127 | continuous | ||
/viper/feedback |
115 | 0–200 | continuous | ||
/viper/frequency |
119 | 0–127 | continuous | ||
/viper/modulation |
117 | 0–100 | continuous | ||
/viper/time |
114 | 0–694 | continuous |
SysEx commands (67)¶
| OSC address | Arguments |
|---|---|
/viper/vel_shp |
val: u7 |
/viper/semi |
val: u7 |
/viper/detune |
val: u7 |
/viper/pw |
val: u7 |
/viper/osc_vol |
val: u7 |
/viper/env_velocity |
val: u7 |
/viper/res_velocity |
val: u7 |
/viper/env_polarity |
val: u7 |
/viper/cutoff_link |
val: u7 |
/viper/key_base |
val: u7 |
/viper/env_3 |
val: u7 |
/viper/sustain_slope |
val: u7 |
/viper/env_4 |
val: u7 |
/viper/clock |
val: u7 |
/viper/rate |
val: u7 |
/viper/shape |
val: u7 |
/viper/fade_in |
val: u7 |
/viper/mode |
val: u7 |
/viper/key_follow |
val: u7 |
/viper/target |
val: u7 |
/viper/amount |
val: u7 |
/viper/mix |
val: u7 |
/viper/tune |
val: u7 |
/viper/drive |
val: u7 |
/viper/high_cut |
val: u7 |
/viper/type |
val: u7 |
/viper/left_clock |
val: u7 |
/viper/right_clock |
val: u7 |
/viper/bandwidth |
val: u7 |
/viper/ratio |
val: u7 |
/viper/frequency |
val: u7 |
/viper/gain |
val: u7 |
/viper/q_factor |
val: u7 |
/viper/send |
val: u7 |
/viper/time |
val: u7 |
/viper/damping |
val: u7 |
/viper/coloration |
val: u7 |
/viper/pre_delay |
val: u7 |
/viper/feedback |
val: u7 |
/viper/volume |
val: u7 |
/viper/panorama |
val: u7 |
/viper/fm_amount |
val: u7 |
/viper/osc_1_shape |
val: u7 |
/viper/osc_2_shape |
val: u7 |
/viper/pulse_width |
val: u7 |
/viper/filter_1_env |
val: u7 |
/viper/resonance_1 |
val: u7 |
/viper/filter_2_env |
val: u7 |
/viper/resonance_2 |
val: u7 |
/viper/source |
val: u7 |
/viper/target_1 |
val: u7 |
/viper/target_2 |
val: u7 |
/viper/target_3 |
val: u7 |
/viper/amount_1 |
val: u7 |
/viper/amount_2 |
val: u7 |
/viper/amount_3 |
val: u7 |
/viper/tempo |
val: u7 |
/viper/pattern |
val: u7 |
/viper/octave_range |
val: u7 |
/viper/resolution |
val: u7 |
/viper/hold |
val: u7 |
/viper/note_length |
val: u7 |
/viper/note_swing |
val: u7 |
/viper/steps |
val: u7 |
/viper/voices |
val: u7 |
/viper/pan_spread |
val: u7 |
/viper/lfo_phase |
val: u7 |
Performance MIDI¶
Notes, pitch bend and any CC are also available: /viper/note/on <note> <velocity>, /viper/cc/<number> <value>, /viper/pitchbend <0-16383>, /viper/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.