Written from devices/yamaha/a3000.vendor.fw-unknown.jsonEdit on GitHubJSON

Yamaha A3000 MIDI CC chart, NRPN and OSC map

The Yamaha A3000 MIDI implementation: 11 CC, 75 SysEx commands, each named, for Claude (MCP), SuperCollider or any OSC app.

  • sourcemaker's documentation
  • real unitnot yet checked

Not checked on a real Yamaha A3000 yet. Own one? Load a sound or send a control, and tell us whether it worked.

Maker
Yamaha
Version
A3000 Owner's Manual, Appendix 'MIDI data format' (version 1 manual)
Source
maker's documentation
OSC prefix
/a3000

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/yamaha/a3000.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 /a3000/portamento_time 63

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

MIDI controls

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

Controllers

Control CC Range Name to send
Portamento time 5 0–127 /a3000/portamento_time
Volume 7 0–127 /a3000/volume
Pan 10 0–127 /a3000/pan
Sustain 64 switch /a3000/sustain
Portamento 65 switch /a3000/portamento
Sostenuto 66 switch /a3000/sostenuto

Channel mode

Control CC Range Name to send
All sounds off 120 trigger /a3000/all_sounds_off
Reset all controllers 121 trigger /a3000/reset_all_controllers
All notes off 123 trigger /a3000/all_notes_off
Mono 126 trigger /a3000/mono
Poly 127 trigger /a3000/poly

SysEx commands

Command Arguments Name to send
Identity request /a3000/identity/request
Sample dump request sample: u14 /a3000/sample_dump/request
Sample dump ack packet: u7 /a3000/sample_dump/ack
Sample dump nak packet: u7 /a3000/sample_dump/nak
Sample dump cancel packet: u7 /a3000/sample_dump/cancel
Sample dump wait packet: u7 /a3000/sample_dump/wait
Loop points request sample: u14, loop: u14 /a3000/loop_points/request
Dump request system parameters /a3000/dump/request/system_parameters
Dump request object list /a3000/dump/request/object_list
System velocity curve value: u7 /a3000/system/velocity_curve
System request velocity curve /a3000/system/request/velocity_curve
System midi receive channel value: u7 /a3000/system/midi_receive_channel
System request midi receive channel /a3000/system/request/midi_receive_channel
System midi omni value: u7 /a3000/system/midi_omni
System request midi omni /a3000/system/request/midi_omni
System midi program change enable value: u7 /a3000/system/midi_program_change_enable
System request midi program change enable /a3000/system/request/midi_program_change_enable
System {index} knob midi channel index: u7, value: u7 /a3000/system/{index}/knob_midi_channel
System request {index} knob midi channel index: u7 /a3000/system/request/{index}/knob_midi_channel
System {index} knob control device index: u7, value: u7 /a3000/system/{index}/knob_control_device
System request {index} knob control device index: u7 /a3000/system/request/{index}/knob_control_device
System {index} fkey midi channel index: u7, value: u7 /a3000/system/{index}/fkey_midi_channel
System request {index} fkey midi channel index: u7 /a3000/system/request/{index}/fkey_midi_channel
System {index} fkey note index: u7, value: u7 /a3000/system/{index}/fkey_note
System request {index} fkey note index: u7 /a3000/system/request/{index}/fkey_note
System {index} fkey velocity index: u7, value: u7 /a3000/system/{index}/fkey_velocity
System request {index} fkey velocity index: u7 /a3000/system/request/{index}/fkey_velocity
System eq low boost gain value: u7 /a3000/system/eq_low_boost_gain
System request eq low boost gain /a3000/system/request/eq_low_boost_gain
System eq low boost frequency value: u7 /a3000/system/eq_low_boost_frequency
System request eq low boost frequency /a3000/system/request/eq_low_boost_frequency
System eq low gain value: u7 /a3000/system/eq_low_gain
System request eq low gain /a3000/system/request/eq_low_gain
System eq low frequency value: u7 /a3000/system/eq_low_frequency
System request eq low frequency /a3000/system/request/eq_low_frequency
System eq low width value: u7 /a3000/system/eq_low_width
System request eq low width /a3000/system/request/eq_low_width
System eq mid gain value: u7 /a3000/system/eq_mid_gain
System request eq mid gain /a3000/system/request/eq_mid_gain
System eq mid frequency value: u7 /a3000/system/eq_mid_frequency
System request eq mid frequency /a3000/system/request/eq_mid_frequency
System eq mid width value: u7 /a3000/system/eq_mid_width
System request eq mid width /a3000/system/request/eq_mid_width
System eq high gain value: u7 /a3000/system/eq_high_gain
System request eq high gain /a3000/system/request/eq_high_gain
System eq high frequency value: u7 /a3000/system/eq_high_frequency
System request eq high frequency /a3000/system/request/eq_high_frequency
System eq high width value: u7 /a3000/system/eq_high_width
System request eq high width /a3000/system/request/eq_high_width
System stereo to assignable out value: u7 /a3000/system/stereo_to_assignable_out
System request stereo to assignable out /a3000/system/request/stereo_to_assignable_out
Switch fkey1 value: u7 /a3000/switch/fkey1
Switch fkey2 value: u7 /a3000/switch/fkey2
Switch fkey3 value: u7 /a3000/switch/fkey3
Switch fkey4 value: u7 /a3000/switch/fkey4
Switch fkey5 value: u7 /a3000/switch/fkey5
Switch fkey6 value: u7 /a3000/switch/fkey6
Switch command value: u7 /a3000/switch/command
Switch assignable value: u7 /a3000/switch/assignable
Switch audition value: u7 /a3000/switch/audition
Switch play value: u7 /a3000/switch/play
Switch edit value: u7 /a3000/switch/edit
Switch rec value: u7 /a3000/switch/rec
Switch disk value: u7 /a3000/switch/disk
Switch utility value: u7 /a3000/switch/utility
Switch knob1 value: u7 /a3000/switch/knob1
Switch knob2 value: u7 /a3000/switch/knob2
Switch knob3 value: u7 /a3000/switch/knob3
Switch knob4 value: u7 /a3000/switch/knob4
Switch knob5 value: u7 /a3000/switch/knob5
Knob 1 turn value: u7 /a3000/knob/1/turn
Knob 2 turn value: u7 /a3000/knob/2/turn
Knob 3 turn value: u7 /a3000/knob/3/turn
Knob 4 turn value: u7 /a3000/knob/4/turn
Knob 5 turn value: u7 /a3000/knob/5/turn

Performance MIDI

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

JSON

Limitations

Source: A3000 Owner's Manual (version 1), Appendix 'MIDI data format'. Most controllers (0-120) are assigned per program or sample by the Control Matrix, so only the fixed ones are listed; Program Change selects a program on the basic receive channel when Program Change SW is on; pitch bend (MSB only) and channel aftertouch are received, polyphonic aftertouch is not. Parameter change frames carry 6 parameter bytes: the tables print only P1-P4, so unprinted bytes are sent as 00H. Signed system parameters (master fine/coarse tune, transpose) are left out: their two's-complement nibbles cannot be built from one value here. Program, sample bank and sample parameters (Table 1) are left out: they need an object select carrying the exact 16-byte object name first. Bulk dumps of programs, banks, samples, wave data and sequences, and sending a sample, are not exposed. Untested on hardware.

Frequently asked questions

How many parameters of the Yamaha A3000 can be controlled over MIDI?

SynthHub's map of the Yamaha A3000 lists 11 MIDI CC 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 Yamaha A3000?

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