Skip to content

Yamaha CS70m-split: MIDI CC, NRPN and OSC map

The Yamaha CS70m-split as named OSC addresses — 95 CC — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.

Device Yamaha CS70m-split
Vendor Yamaha
OSC prefix /cs70m_split
Source 🎛️ Derived from an Electra One community preset
Revision per Electra preset
Upstream electra-preset
Driver file devices/yamaha/cs70m_split.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/yamaha/cs70m_split.json --out-port <N> --in-port <M>

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /cs70m_split/wave 63

From Claude or any MCP client, the osc-bridge mcp server exposes this driver as cs70m_split: ask “what can the Yamaha CS70m-split do?” and it reads this map with list_routes. See the MCP guide.

MIDI CC and NRPN parameters (95)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/cs70m_split/wave 9 0–127 continuous
/cs70m_split/octave_i 10 0–127 continuous
/cs70m_split/pw 12 0–127 continuous
/cs70m_split/noise 13 0–127 continuous
/cs70m_split/sine_vca 24 0–127 continuous
/cs70m_split/filter_mode_i 14 0–127 continuous
/cs70m_split/wave 9 0–127 continuous
/cs70m_split/octave_i 11 0–127 continuous
/cs70m_split/pw 12 0–127 continuous
/cs70m_split/noise 13 0–127 continuous
/cs70m_split/sine_vca 24 0–127 continuous
/cs70m_split/filter_mode_ii 14 0–127 continuous
/cs70m_split/attack 18 0–127 continuous
/cs70m_split/attack 19 0–127 continuous
/cs70m_split/attack 20 0–127 continuous
/cs70m_split/attack 21 0–127 continuous
/cs70m_split/resonance 16 0–127 continuous
/cs70m_split/cuttoff 15 0–127 continuous
/cs70m_split/attack 18 0–127 continuous
/cs70m_split/attack 19 0–127 continuous
/cs70m_split/attack 20 0–127 continuous
/cs70m_split/attack 21 0–127 continuous
/cs70m_split/resonance 16 0–127 continuous
/cs70m_split/cuttoff 15 0–127 continuous
/cs70m_split/attack 25 0–127 continuous
/cs70m_split/attack 26 0–127 continuous
/cs70m_split/attack 27 0–127 continuous
/cs70m_split/attack 28 0–127 continuous
/cs70m_split/vca_volume_i 7 0–127 continuous
/cs70m_split/env_depth_i 17 0–127 continuous
/cs70m_split/attack 25 0–127 continuous
/cs70m_split/attack 26 0–127 continuous
/cs70m_split/attack 27 0–127 continuous
/cs70m_split/attack 28 0–127 continuous
/cs70m_split/vca_volume_ii 7 0–127 continuous
/cs70m_split/env_depth_ii 17 0–127 continuous
/cs70m_split/wave 9 0–127 continuous
/cs70m_split/octave_i 10 0–127 continuous
/cs70m_split/pw 12 0–127 continuous
/cs70m_split/noise 13 0–127 continuous
/cs70m_split/sine_vca 24 0–127 continuous
/cs70m_split/filter_mode_i 14 0–127 continuous
/cs70m_split/wave 9 0–127 continuous
/cs70m_split/octave_i 11 0–127 continuous
/cs70m_split/pw 12 0–127 continuous
/cs70m_split/noise 13 0–127 continuous
/cs70m_split/sine_vca 24 0–127 continuous
/cs70m_split/filter_mode_ii 14 0–127 continuous
/cs70m_split/attack 18 0–127 continuous
/cs70m_split/attack 19 0–127 continuous
/cs70m_split/attack 20 0–127 continuous
/cs70m_split/attack 21 0–127 continuous
/cs70m_split/resonance 16 0–127 continuous
/cs70m_split/cuttoff 15 0–127 continuous
/cs70m_split/attack 18 0–127 continuous
/cs70m_split/attack 19 0–127 continuous
/cs70m_split/attack 20 0–127 continuous
/cs70m_split/attack 21 0–127 continuous
/cs70m_split/resonance 16 0–127 continuous
/cs70m_split/cuttoff 15 0–127 continuous
/cs70m_split/attack 25 0–127 continuous
/cs70m_split/attack 26 0–127 continuous
/cs70m_split/attack 27 0–127 continuous
/cs70m_split/attack 28 0–127 continuous
/cs70m_split/vca_volume_i 7 0–127 continuous
/cs70m_split/env_depth_i 17 0–127 continuous
/cs70m_split/attack 25 0–127 continuous
/cs70m_split/attack 26 0–127 continuous
/cs70m_split/attack 27 0–127 continuous
/cs70m_split/attack 28 0–127 continuous
/cs70m_split/vca_volume_ii 7 0–127 continuous
/cs70m_split/env_depth_ii 17 0–127 continuous
/cs70m_split/x_5_i_l 29 0–127 continuous
/cs70m_split/x_5_i_l 22 0–127 continuous
/cs70m_split/negative_i_l 23 0–127 continuous
/cs70m_split/x_5_ii_l 29 0–127 continuous
/cs70m_split/x_5_ii_l 22 0–127 continuous
/cs70m_split/negative_ii_l 23 0–127 continuous
/cs70m_split/x_5_i_u 29 0–127 continuous
/cs70m_split/x_5_i_u 22 0–127 continuous
/cs70m_split/negative_i_u 23 0–127 continuous
/cs70m_split/x_5_ii_u 29 0–127 continuous
/cs70m_split/x_5_ii_u 22 0–127 continuous
/cs70m_split/negative_ii_u 23 0–127 continuous
/cs70m_split/lfo_mode 31 0–127 continuous
/cs70m_split/speed 33 0–127 continuous
/cs70m_split/attack 35 0–127 continuous
/cs70m_split/attack 36 0–127 continuous
/cs70m_split/tune 44 0–127 continuous
/cs70m_split/destination 37 0–127 continuous
/cs70m_split/mod_depth 32 0–127 continuous
/cs70m_split/env_depth 34 0–127 continuous
/cs70m_split/i_ii 38 0–127 continuous
/cs70m_split/transpose 43 0–127 continuous
/cs70m_split/ch_1_or_2 63 0–127 continuous

Performance MIDI

Notes, pitch bend and any CC are also available: /cs70m_split/note/on <note> <velocity>, /cs70m_split/cc/<number> <value>, /cs70m_split/pitchbend <0-16383>, /cs70m_split/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.