Skip to content

Yamaha CX-80: MIDI CC, NRPN and OSC map

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

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

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /cx_80/p1_pwm_speed 63

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

MIDI CC and NRPN parameters (113)

OSC address CC NRPN (MSB/LSB) Range Nature Section
/cx_80/p1_pwm_speed 10 0–127 continuous
/cx_80/p1_pwm_depth 11 0–127 continuous
/cx_80/p1_pw 12 0–127 continuous
/cx_80/p1_pulse 13 0–127 continuous
/cx_80/p1_saw 14 -64–63 continuous
/cx_80/p1_noise_level 15 0–127 continuous
/cx_80/p1_hpf_freq 16 0–127 continuous
/cx_80/p1_hpf_reso 17 0–127 continuous
/cx_80/p1_lpf_freq 18 0–127 continuous
/cx_80/p1_lpf_reso 19 0–127 continuous
/cx_80/p1_vcf_il 20 0–127 continuous
/cx_80/p1_vcf_al 21 0–127 continuous
/cx_80/p1_vcf_env 22 0–127 continuous
/cx_80/p1_vcf_env 23 0–127 continuous
/cx_80/p1_vcf_env 24 0–127 continuous
/cx_80/p1_vcf_level 25 0–127 continuous
/cx_80/p1_sine_level 26 0–127 continuous
/cx_80/p1_vcf_env_x5 98 0–127 continuous
/cx_80/p1_init_brill 32 0–127 continuous
/cx_80/p1_init_level 33 0–127 continuous
/cx_80/p1_vca_env 27 0–127 continuous
/cx_80/p1_vca_env 28 0–127 continuous
/cx_80/p1_vca_env 29 0–127 continuous
/cx_80/p1_vca_env 30 0–127 continuous
/cx_80/p1_vca_level 31 0–127 continuous
/cx_80/sustain_mode 73 0–127 continuous
/cx_80/p1_vca_env_x5 99 0–127 continuous
/cx_80/p1_at_brill 34 0–127 continuous
/cx_80/p1_at_level 35 0–127 continuous
/cx_80/mod_wheel 1 0–127 continuous
/cx_80/brilliance 74 -64–63 continuous
/cx_80/resonance 71 0–127 continuous
/cx_80/p1_feet_set 8 0–127 continuous
/cx_80/p2_feet_set 9 0–127 continuous
/cx_80/p1_p2_mix 72 -64–63 continuous
/cx_80/bank_select 0 0–127 continuous
/cx_80/channel_volume 7 0–127 continuous
/cx_80/kbd_brill_low 67 -64–63 continuous
/cx_80/kbd_brill_hi 68 -64–63 continuous
/cx_80/kbd_level_low 69 -64–63 continuous
/cx_80/kbd_level_hi 70 -64–63 continuous
/cx_80/p2_pwm_speed 36 0–127 continuous
/cx_80/p2_pwm_depth 37 0–127 continuous
/cx_80/p2_pw 38 0–127 continuous
/cx_80/p2_pulse 39 -64–63 continuous
/cx_80/p2_saw 40 -64–63 continuous
/cx_80/p2_noise_level 41 0–127 continuous
/cx_80/p2_hpf_freq 42 0–127 continuous
/cx_80/p2_hpf_reso 43 0–127 continuous
/cx_80/p2_lpf_freq 44 0–127 continuous
/cx_80/p2_lpf_reso 45 0–127 continuous
/cx_80/p2_vcf_il 46 0–127 continuous
/cx_80/p2_vcf_al 47 0–127 continuous
/cx_80/p2_vcf_env 48 0–127 continuous
/cx_80/p2_vcf_env 49 0–127 continuous
/cx_80/p2_vcf_env 50 0–127 continuous
/cx_80/p2_vcf_level 51 0–127 continuous
/cx_80/p2_sine_level 52 0–127 continuous
/cx_80/p2_vcf_env_x5 100 0–127 continuous
/cx_80/p2_init_brill 58 0–127 continuous
/cx_80/p2_init_level 59 0–127 continuous
/cx_80/p2_vca_env 53 0–127 continuous
/cx_80/p2_vca_env 54 0–127 continuous
/cx_80/p2_vca_env 55 0–127 continuous
/cx_80/p2_vca_env 56 0–127 continuous
/cx_80/p2_vca_level 57 0–127 continuous
/cx_80/p2_vca_env_x5 101 0–127 continuous
/cx_80/p2_at_brill 60 0–127 continuous
/cx_80/p2_at_level 61 0–127 continuous
/cx_80/ribbon_hold 66 0–127 continuous
/cx_80/ribbon_depth 104 0–127 continuous
/cx_80/ribbon_byte1_l 102 0–127 continuous
/cx_80/ribbon_byte2_m 103 0–127 continuous
/cx_80/play_retrigger 97 0–127 continuous
/cx_80/all_notes_off 123 0–127 continuous
/cx_80/unison_detune 62 0–127 continuous
/cx_80/porta_glissand 63 0–127 continuous
/cx_80/sustain 64 0–127 continuous
/cx_80/portamento 65 0–127 continuous
/cx_80/portamento_mod 122 0–127 continuous
/cx_80/portamnto_time 5 0–127 continuous
/cx_80/sub_function 92 0–127 continuous
/cx_80/sub_speed 93 0–127 continuous
/cx_80/sub_vco_depth 94 0–127 continuous
/cx_80/sub_vcf_depth 95 0–127 continuous
/cx_80/sub_vca_depth 96 0–127 continuous
/cx_80/vco_lfo_wavef 75 0–127 continuous
/cx_80/vco_lfo_depth 77 0–127 continuous
/cx_80/vco_lfo_speed 78 0–127 continuous
/cx_80/vco_lfo_fade_t 76 -64–63 continuous
/cx_80/vco_lfo_div 105 0–127 continuous
/cx_80/sync_mode 108 0–127 continuous
/cx_80/vcf_lfo_wavef 79 0–127 continuous
/cx_80/vcf_lfo_depth 81 0–127 continuous
/cx_80/vcf_lfo_speed 82 0–127 continuous
/cx_80/vcf_lfo_fade_t 80 -64–63 continuous
/cx_80/vcf_lfo_div 106 0–127 continuous
/cx_80/sync_mode 109 0–127 continuous
/cx_80/vca_lfo_wavef 83 0–127 continuous
/cx_80/vca_lfo_depth 85 0–127 continuous
/cx_80/vca_lfo_speed 86 0–127 continuous
/cx_80/vca_lfo_fade_t 84 -64–63 continuous
/cx_80/vca_lfo_div 107 0–127 continuous
/cx_80/sync_mode 110 0–127 continuous
/cx_80/rm_attack 87 0–127 continuous
/cx_80/rm_attack 3 0–127 continuous
/cx_80/rm_attack 88 0–127 continuous
/cx_80/vco_sync_degre 111 0–127 continuous
/cx_80/vcf_sync_degre 112 0–127 continuous
/cx_80/vca_sync_degre 113 0–127 continuous
/cx_80/rm_depth 89 0–127 continuous
/cx_80/rm_speed 90 0–127 continuous
/cx_80/rm_modulation 91 0–127 continuous

Performance MIDI

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