devices/yamaha/a3000.vendor.fw-unknown.jsonEdit on GitHubJSONYamaha 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:
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>.
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.