Written from devices/roland/mc-303.vendor.fw-unknown.jsonEdit on GitHubJSON

Roland MC-303 MIDI CC chart, NRPN and OSC map

The Roland MC-303 MIDI implementation: 21 CC, 13 NRPN, 3 RPN, 192 SysEx commands, each named, for Claude (MCP), SuperCollider or any OSC app.

  • sourcemaker's documentation
  • real unitnot yet checked

Not checked on a real Roland MC-303 yet. Own one? Load a sound or send a control, and tell us whether it worked.

Maker
Roland
Version
MIDI Implementation Version 1.00 (Mar. 25, 1996); OS version not stated
Source
maker's documentation
OSC prefix
/mc_303

Use 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/roland/mc-303.vendor.fw-unknown.json --out-port <N> --in-port <M>

Then send OSC to 127.0.0.1:7777, for example:

osc-bridge osc-send /mc_303/bank/select_msb 63

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

MIDI controls

229 controls, each with its number, its range and the name to send

Program

Control CC Range Name to send
Bank select msb 0 discrete /mc_303/bank/select_msb
Bank select lsb 32 discrete /mc_303/bank/select_lsb

Controllers

Control CC Range Name to send
Modulation 1 0–127 /mc_303/modulation
Portamento time 5 0–127 /mc_303/portamento_time
Hold 64 switch /mc_303/hold
Portamento 65 switch /mc_303/portamento
Sostenuto 66 switch /mc_303/sostenuto
Soft 67 switch /mc_303/soft
Portamento control 84 discrete /mc_303/portamento_control

Mixer

Control CC Range Name to send
Volume 7 0–127 /mc_303/volume
Pan 10 0–127 /mc_303/pan
Expression 11 0–127 /mc_303/expression

Effects

Control CC Range Name to send
Reverb send 91 0–127 /mc_303/reverb_send
Chorus send 93 0–127 /mc_303/chorus_send

Channel mode

Control CC Range Name to send
All sounds off 120 trigger /mc_303/all_sounds_off
Reset all controllers 121 trigger /mc_303/reset_all_controllers
All notes off 123 trigger /mc_303/all_notes_off
Omni off 124 trigger /mc_303/omni_off
Omni on 125 trigger /mc_303/omni_on
Poly 127 trigger /mc_303/poly
Mono 126 discrete /mc_303/mono

Registered parameters

Control CC RPN (MSB/LSB) Range Name to send
Rpn pitch bend sensitivity RPN 0 / 0 discrete /mc_303/rpn/pitch_bend_sensitivity
Rpn master fine tuning RPN 0 / 1 0–16383 /mc_303/rpn/master_fine_tuning
Rpn master coarse tuning RPN 0 / 2 discrete /mc_303/rpn/master_coarse_tuning

NRPN

Control CC NRPN (MSB/LSB) Range Name to send
Vibrato rate 1 / 8 14–114 /mc_303/nrpn/vibrato_rate
Vibrato depth 1 / 9 14–114 /mc_303/nrpn/vibrato_depth
Vibrato delay 1 / 10 14–114 /mc_303/nrpn/vibrato_delay
Tvf cutoff 1 / 32 14–114 /mc_303/nrpn/tvf_cutoff
Tvf resonance 1 / 33 14–114 /mc_303/nrpn/tvf_resonance
Env attack 1 / 99 14–114 /mc_303/nrpn/env_attack
Env decay 1 / 100 14–114 /mc_303/nrpn/env_decay
Env release 1 / 102 14–114 /mc_303/nrpn/env_release

NRPN (drum)

Control CC NRPN (MSB/LSB) Range Name to send
Nrpn drum pitch coarse 24 / 0–127 0–127 /mc_303/nrpn/drum/pitch_coarse
Nrpn drum level 26 / 0–127 0–127 /mc_303/nrpn/drum/level
Nrpn drum pan 28 / 0–127 0–127 /mc_303/nrpn/drum/pan
Nrpn drum reverb send 29 / 0–127 0–127 /mc_303/nrpn/drum/reverb_send
Nrpn drum chorus send 30 / 0–127 0–127 /mc_303/nrpn/drum/chorus_send

SysEx commands

Command Arguments Name to send
Transport clock /mc_303/transport/clock
Transport start /mc_303/transport/start
Transport continue /mc_303/transport/continue
Transport stop /mc_303/transport/stop
Identity request /mc_303/identity/request
Master volume value: u7 /mc_303/master/volume
System master volume value: u7 /mc_303/system/master_volume
System master key shift value: u7 /mc_303/system/master_key_shift
System master pan value: u7 /mc_303/system/master_pan
System mode set mode: enum /mc_303/system/mode_set
System reverb macro type: enum /mc_303/system/reverb/macro
System reverb character value: u7 /mc_303/system/reverb/character
System reverb pre lpf value: u7 /mc_303/system/reverb/pre_lpf
System reverb level value: u7 /mc_303/system/reverb/level
System reverb time value: u7 /mc_303/system/reverb/time
System reverb delay feedback value: u7 /mc_303/system/reverb/delay_feedback
System reverb send to chorus value: u7 /mc_303/system/reverb/send_to_chorus
System chorus macro type: enum /mc_303/system/chorus/macro
System chorus pre lpf value: u7 /mc_303/system/chorus/pre_lpf
System chorus level value: u7 /mc_303/system/chorus/level
System chorus feedback value: u7 /mc_303/system/chorus/feedback
System chorus delay value: u7 /mc_303/system/chorus/delay
System chorus rate value: u7 /mc_303/system/chorus/rate
System chorus depth value: u7 /mc_303/system/chorus/depth
System chorus send to reverb value: u7 /mc_303/system/chorus/send_to_reverb
Part {block} tone number block: u7, bank: u7, program: u7 /mc_303/part/{block}/tone_number
Part {block} rx channel block: u7, value: u7 /mc_303/part/{block}/rx/channel
Part {block} rx pitch bend block: u7, value: enum /mc_303/part/{block}/rx/pitch_bend
Part {block} rx ch pressure block: u7, value: enum /mc_303/part/{block}/rx/ch_pressure
Part {block} rx program change block: u7, value: enum /mc_303/part/{block}/rx/program_change
Part {block} rx control change block: u7, value: enum /mc_303/part/{block}/rx/control_change
Part {block} rx poly pressure block: u7, value: enum /mc_303/part/{block}/rx/poly_pressure
Part {block} rx note message block: u7, value: enum /mc_303/part/{block}/rx/note_message
Part {block} rx rpn block: u7, value: enum /mc_303/part/{block}/rx/rpn
Part {block} rx nrpn block: u7, value: enum /mc_303/part/{block}/rx/nrpn
Part {block} rx modulation block: u7, value: enum /mc_303/part/{block}/rx/modulation
Part {block} rx volume block: u7, value: enum /mc_303/part/{block}/rx/volume
Part {block} rx panpot block: u7, value: enum /mc_303/part/{block}/rx/panpot
Part {block} rx expression block: u7, value: enum /mc_303/part/{block}/rx/expression
Part {block} rx hold1 block: u7, value: enum /mc_303/part/{block}/rx/hold1
Part {block} rx portamento block: u7, value: enum /mc_303/part/{block}/rx/portamento
Part {block} rx sostenuto block: u7, value: enum /mc_303/part/{block}/rx/sostenuto
Part {block} rx soft block: u7, value: enum /mc_303/part/{block}/rx/soft
Part {block} rx bank select block: u7, value: enum /mc_303/part/{block}/rx/bank_select
Part {block} mono poly block: u7, value: enum /mc_303/part/{block}/mono_poly
Part {block} assign mode block: u7, value: enum /mc_303/part/{block}/assign_mode
Part {block} use for rhythm part block: u7, value: enum /mc_303/part/{block}/use_for_rhythm_part
Part {block} pitch key shift block: u7, value: u7 /mc_303/part/{block}/pitch_key_shift
Part {block} level block: u7, value: u7 /mc_303/part/{block}/level
Part {block} velocity sense depth block: u7, value: u7 /mc_303/part/{block}/velocity_sense_depth
Part {block} velocity sense offset block: u7, value: u7 /mc_303/part/{block}/velocity_sense_offset
Part {block} pan block: u7, value: u7 /mc_303/part/{block}/pan
Part {block} key range low block: u7, value: u7 /mc_303/part/{block}/key_range_low
Part {block} key range high block: u7, value: u7 /mc_303/part/{block}/key_range_high
Part {block} chorus send block: u7, value: u7 /mc_303/part/{block}/chorus_send
Part {block} reverb send block: u7, value: u7 /mc_303/part/{block}/reverb_send
Part {block} cc1 controller number block: u7, value: u7 /mc_303/part/{block}/cc1_controller_number
Part {block} cc2 controller number block: u7, value: u7 /mc_303/part/{block}/cc2_controller_number
Part {block} tone modify1 block: u7, value: u7 /mc_303/part/{block}/tone_modify1
Part {block} tone modify2 block: u7, value: u7 /mc_303/part/{block}/tone_modify2
Part {block} tone modify3 block: u7, value: u7 /mc_303/part/{block}/tone_modify3
Part {block} tone modify4 block: u7, value: u7 /mc_303/part/{block}/tone_modify4
Part {block} tone modify5 block: u7, value: u7 /mc_303/part/{block}/tone_modify5
Part {block} tone modify6 block: u7, value: u7 /mc_303/part/{block}/tone_modify6
Part {block} tone modify7 block: u7, value: u7 /mc_303/part/{block}/tone_modify7
Part {block} tone modify8 block: u7, value: u7 /mc_303/part/{block}/tone_modify8
Part {block} lfo waveform block: u7, value: enum /mc_303/part/{block}/lfo_waveform
Part {block} scale tuning c block: u7, value: u7 /mc_303/part/{block}/scale_tuning/c
Part {block} scale tuning cs block: u7, value: u7 /mc_303/part/{block}/scale_tuning/cs
Part {block} scale tuning d block: u7, value: u7 /mc_303/part/{block}/scale_tuning/d
Part {block} scale tuning ds block: u7, value: u7 /mc_303/part/{block}/scale_tuning/ds
Part {block} scale tuning e block: u7, value: u7 /mc_303/part/{block}/scale_tuning/e
Part {block} scale tuning f block: u7, value: u7 /mc_303/part/{block}/scale_tuning/f
Part {block} scale tuning fs block: u7, value: u7 /mc_303/part/{block}/scale_tuning/fs
Part {block} scale tuning g block: u7, value: u7 /mc_303/part/{block}/scale_tuning/g
Part {block} scale tuning gs block: u7, value: u7 /mc_303/part/{block}/scale_tuning/gs
Part {block} scale tuning a block: u7, value: u7 /mc_303/part/{block}/scale_tuning/a
Part {block} scale tuning as block: u7, value: u7 /mc_303/part/{block}/scale_tuning/as
Part {block} scale tuning b block: u7, value: u7 /mc_303/part/{block}/scale_tuning/b
Part {block} mod pitch control block: u7, value: u7 /mc_303/part/{block}/mod/pitch_control
Part {block} mod tvf cutoff control block: u7, value: u7 /mc_303/part/{block}/mod/tvf_cutoff_control
Part {block} mod amplitude control block: u7, value: u7 /mc_303/part/{block}/mod/amplitude_control
Part {block} mod lfo1 rate control block: u7, value: u7 /mc_303/part/{block}/mod/lfo1_rate_control
Part {block} mod lfo1 pitch depth block: u7, value: u7 /mc_303/part/{block}/mod/lfo1_pitch_depth
Part {block} mod lfo1 tvf depth block: u7, value: u7 /mc_303/part/{block}/mod/lfo1_tvf_depth
Part {block} mod lfo1 tva depth block: u7, value: u7 /mc_303/part/{block}/mod/lfo1_tva_depth
Part {block} mod lfo2 rate control block: u7, value: u7 /mc_303/part/{block}/mod/lfo2_rate_control
Part {block} mod lfo2 pitch depth block: u7, value: u7 /mc_303/part/{block}/mod/lfo2_pitch_depth
Part {block} mod lfo2 tvf depth block: u7, value: u7 /mc_303/part/{block}/mod/lfo2_tvf_depth
Part {block} mod lfo2 tva depth block: u7, value: u7 /mc_303/part/{block}/mod/lfo2_tva_depth
Part {block} bend pitch control block: u7, value: u7 /mc_303/part/{block}/bend/pitch_control
Part {block} bend tvf cutoff control block: u7, value: u7 /mc_303/part/{block}/bend/tvf_cutoff_control
Part {block} bend amplitude control block: u7, value: u7 /mc_303/part/{block}/bend/amplitude_control
Part {block} bend lfo1 rate control block: u7, value: u7 /mc_303/part/{block}/bend/lfo1_rate_control
Part {block} bend lfo1 pitch depth block: u7, value: u7 /mc_303/part/{block}/bend/lfo1_pitch_depth
Part {block} bend lfo1 tvf depth block: u7, value: u7 /mc_303/part/{block}/bend/lfo1_tvf_depth
Part {block} bend lfo1 tva depth block: u7, value: u7 /mc_303/part/{block}/bend/lfo1_tva_depth
Part {block} bend lfo2 rate control block: u7, value: u7 /mc_303/part/{block}/bend/lfo2_rate_control
Part {block} bend lfo2 pitch depth block: u7, value: u7 /mc_303/part/{block}/bend/lfo2_pitch_depth
Part {block} bend lfo2 tvf depth block: u7, value: u7 /mc_303/part/{block}/bend/lfo2_tvf_depth
Part {block} bend lfo2 tva depth block: u7, value: u7 /mc_303/part/{block}/bend/lfo2_tva_depth
Part {block} caf pitch control block: u7, value: u7 /mc_303/part/{block}/caf/pitch_control
Part {block} caf tvf cutoff control block: u7, value: u7 /mc_303/part/{block}/caf/tvf_cutoff_control
Part {block} caf amplitude control block: u7, value: u7 /mc_303/part/{block}/caf/amplitude_control
Part {block} caf lfo1 rate control block: u7, value: u7 /mc_303/part/{block}/caf/lfo1_rate_control
Part {block} caf lfo1 pitch depth block: u7, value: u7 /mc_303/part/{block}/caf/lfo1_pitch_depth
Part {block} caf lfo1 tvf depth block: u7, value: u7 /mc_303/part/{block}/caf/lfo1_tvf_depth
Part {block} caf lfo1 tva depth block: u7, value: u7 /mc_303/part/{block}/caf/lfo1_tva_depth
Part {block} caf lfo2 rate control block: u7, value: u7 /mc_303/part/{block}/caf/lfo2_rate_control
Part {block} caf lfo2 pitch depth block: u7, value: u7 /mc_303/part/{block}/caf/lfo2_pitch_depth
Part {block} caf lfo2 tvf depth block: u7, value: u7 /mc_303/part/{block}/caf/lfo2_tvf_depth
Part {block} caf lfo2 tva depth block: u7, value: u7 /mc_303/part/{block}/caf/lfo2_tva_depth
Part {block} paf pitch control block: u7, value: u7 /mc_303/part/{block}/paf/pitch_control
Part {block} paf tvf cutoff control block: u7, value: u7 /mc_303/part/{block}/paf/tvf_cutoff_control
Part {block} paf amplitude control block: u7, value: u7 /mc_303/part/{block}/paf/amplitude_control
Part {block} paf lfo1 rate control block: u7, value: u7 /mc_303/part/{block}/paf/lfo1_rate_control
Part {block} paf lfo1 pitch depth block: u7, value: u7 /mc_303/part/{block}/paf/lfo1_pitch_depth
Part {block} paf lfo1 tvf depth block: u7, value: u7 /mc_303/part/{block}/paf/lfo1_tvf_depth
Part {block} paf lfo1 tva depth block: u7, value: u7 /mc_303/part/{block}/paf/lfo1_tva_depth
Part {block} paf lfo2 rate control block: u7, value: u7 /mc_303/part/{block}/paf/lfo2_rate_control
Part {block} paf lfo2 pitch depth block: u7, value: u7 /mc_303/part/{block}/paf/lfo2_pitch_depth
Part {block} paf lfo2 tvf depth block: u7, value: u7 /mc_303/part/{block}/paf/lfo2_tvf_depth
Part {block} paf lfo2 tva depth block: u7, value: u7 /mc_303/part/{block}/paf/lfo2_tva_depth
Part {block} cc1 pitch control block: u7, value: u7 /mc_303/part/{block}/cc1/pitch_control
Part {block} cc1 tvf cutoff control block: u7, value: u7 /mc_303/part/{block}/cc1/tvf_cutoff_control
Part {block} cc1 amplitude control block: u7, value: u7 /mc_303/part/{block}/cc1/amplitude_control
Part {block} cc1 lfo1 rate control block: u7, value: u7 /mc_303/part/{block}/cc1/lfo1_rate_control
Part {block} cc1 lfo1 pitch depth block: u7, value: u7 /mc_303/part/{block}/cc1/lfo1_pitch_depth
Part {block} cc1 lfo1 tvf depth block: u7, value: u7 /mc_303/part/{block}/cc1/lfo1_tvf_depth
Part {block} cc1 lfo1 tva depth block: u7, value: u7 /mc_303/part/{block}/cc1/lfo1_tva_depth
Part {block} cc1 lfo2 rate control block: u7, value: u7 /mc_303/part/{block}/cc1/lfo2_rate_control
Part {block} cc1 lfo2 pitch depth block: u7, value: u7 /mc_303/part/{block}/cc1/lfo2_pitch_depth
Part {block} cc1 lfo2 tvf depth block: u7, value: u7 /mc_303/part/{block}/cc1/lfo2_tvf_depth
Part {block} cc1 lfo2 tva depth block: u7, value: u7 /mc_303/part/{block}/cc1/lfo2_tva_depth
Part {block} cc2 pitch control block: u7, value: u7 /mc_303/part/{block}/cc2/pitch_control
Part {block} cc2 tvf cutoff control block: u7, value: u7 /mc_303/part/{block}/cc2/tvf_cutoff_control
Part {block} cc2 amplitude control block: u7, value: u7 /mc_303/part/{block}/cc2/amplitude_control
Part {block} cc2 lfo1 rate control block: u7, value: u7 /mc_303/part/{block}/cc2/lfo1_rate_control
Part {block} cc2 lfo1 pitch depth block: u7, value: u7 /mc_303/part/{block}/cc2/lfo1_pitch_depth
Part {block} cc2 lfo1 tvf depth block: u7, value: u7 /mc_303/part/{block}/cc2/lfo1_tvf_depth
Part {block} cc2 lfo1 tva depth block: u7, value: u7 /mc_303/part/{block}/cc2/lfo1_tva_depth
Part {block} cc2 lfo2 rate control block: u7, value: u7 /mc_303/part/{block}/cc2/lfo2_rate_control
Part {block} cc2 lfo2 pitch depth block: u7, value: u7 /mc_303/part/{block}/cc2/lfo2_pitch_depth
Part {block} cc2 lfo2 tvf depth block: u7, value: u7 /mc_303/part/{block}/cc2/lfo2_tvf_depth
Part {block} cc2 lfo2 tva depth block: u7, value: u7 /mc_303/part/{block}/cc2/lfo2_tva_depth
Drum {map} {note} play note number map: u7, note: u7, value: u7 /mc_303/drum/{map}/{note}/play_note_number
Drum {map} {note} level map: u7, note: u7, value: u7 /mc_303/drum/{map}/{note}/level
Drum {map} {note} assign group map: u7, note: u7, value: u7 /mc_303/drum/{map}/{note}/assign_group
Drum {map} {note} pan map: u7, note: u7, value: u7 /mc_303/drum/{map}/{note}/pan
Drum {map} {note} reverb send map: u7, note: u7, value: u7 /mc_303/drum/{map}/{note}/reverb_send
Drum {map} {note} chorus send map: u7, note: u7, value: u7 /mc_303/drum/{map}/{note}/chorus_send
Drum {map} {note} rx note off map: u7, note: u7, value: enum /mc_303/drum/{map}/{note}/rx_note_off
Drum {map} {note} rx note on map: u7, note: u7, value: enum /mc_303/drum/{map}/{note}/rx_note_on
Request all /mc_303/request/all
Request system1 /mc_303/request/system1
Request system2 /mc_303/request/system2
Request part block 0 /mc_303/request/part_block_0
Request part block 1 /mc_303/request/part_block_1
Request part block 2 /mc_303/request/part_block_2
Request part block 3 /mc_303/request/part_block_3
Request part block 4 /mc_303/request/part_block_4
Request part block 5 /mc_303/request/part_block_5
Request part block 6 /mc_303/request/part_block_6
Request part block 7 /mc_303/request/part_block_7
Request part block 8 /mc_303/request/part_block_8
Request part block 9 /mc_303/request/part_block_9
Request part block A /mc_303/request/part_block_A
Request part block B /mc_303/request/part_block_B
Request part block C /mc_303/request/part_block_C
Request part block D /mc_303/request/part_block_D
Request part block E /mc_303/request/part_block_E
Request part block F /mc_303/request/part_block_F
Request drum map1 play note number /mc_303/request/drum_map1/play_note_number
Request drum map2 play note number /mc_303/request/drum_map2/play_note_number
Request drum map1 level /mc_303/request/drum_map1/level
Request drum map2 level /mc_303/request/drum_map2/level
Request drum map1 assign group number /mc_303/request/drum_map1/assign_group_number
Request drum map2 assign group number /mc_303/request/drum_map2/assign_group_number
Request drum map1 panpot /mc_303/request/drum_map1/panpot
Request drum map2 panpot /mc_303/request/drum_map2/panpot
Request drum map1 reverb send level /mc_303/request/drum_map1/reverb_send_level
Request drum map2 reverb send level /mc_303/request/drum_map2/reverb_send_level
Request drum map1 chorus send level /mc_303/request/drum_map1/chorus_send_level
Request drum map2 chorus send level /mc_303/request/drum_map2/chorus_send_level
Request drum map1 rx note on off /mc_303/request/drum_map1/rx_note_on_off
Request drum map2 rx note on off /mc_303/request/drum_map2/rx_note_on_off
Request drum map1 name /mc_303/request/drum_map1/name
Request drum map2 name /mc_303/request/drum_map2/name
Request variation setup /mc_303/request/variation_setup
Request song setup /mc_303/request/song_setup
Request pattern setup /mc_303/request/pattern_setup
Request song /mc_303/request/song

Performance MIDI

Notes, pitch bend and any CC are also available: /mc_303/note/on <note> <velocity>, /mc_303/cc/<number> <value>, /mc_303/pitchbend <0-16383>, /mc_303/program_change <n>.

JSON

Limitations

Source: the scanned MC-303 Owner's Manual (MIDI implementation 1.00, 1996), read from the page images. Left out: MASTER TUNE (00 40 00 00) and PITCH OFFSET FINE (00 40 1x 17), sent as nibblized multi-byte data the bridge's frame engine cannot split; VOICE RESERVE (00 40 01 10, one 16-byte block whose other addresses cannot be starting addresses); the RPS Set, Pattern Set and User Pattern dump requests (11, 12 and 40 00 00 00), whose sizes are not legible in the scan. Bulk data is requested only, not decoded. Part parameters are addressed by block number, not MIDI channel (see each route). Notes play the part on that channel; the rhythm part's instruments depend on the drum map and are not listed as triggers. Normal Mode only transmits notes when Out Assign is Ext. Untested on hardware.

Frequently asked questions

How many parameters of the Roland MC-303 can be controlled over MIDI?

SynthHub's map of the Roland MC-303 lists 21 MIDI CC, 13 NRPN and 3 RPN parameters, each with its number, range and a readable name; the full chart is on this page.

Can an AI agent like Claude control the Roland MC-303?

Yes: SynthHub's hosted MCP server knows the Roland MC-303's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.