Subsystem Search

This page is read from MIDI Instrument Definitions, a Python library used in the author's other projects, in which every number is traced to a document its maker published. Its source is on GitHub.

Yamaha DX7 MIDI implementation

The MIDI implementation of the Yamaha DX7: what it answers to, and the 10 controls it offers.

At a glance

Firmware
Not recorded.
MIDI channel
Any one of 1 to 16.
Voices
16, or 1 as set on the instrument.
Note range
0 to 127: C-1 to G9, counting middle C as C4.
Velocity
Sent and received. Release velocity is ignored.
Aftertouch
Sent, and none is answered.
Pitch bend
Not recorded.
Program change
Received and sent, with 64 presets.
MIDI clock
Not recorded.
Start and stop
Not recorded.
Control change
10 controls, in the tables below.
NRPN
Not recorded.
System exclusive
Supported.

Controls

In the order the definition gives them, by group. Under each control is the name a program calls it by, once pymidiinstrumentdefs.load("yamaha/dx7") has loaded them.

Controllers

Control CC Values
Modulation wheel
modulation_wheel
1 0-127
Breath controller
breath_controller
2 0-127
Foot controller
foot_controller
4 0-127

Portamento

Control CC Values
Portamento time
portamento_time
5 0-127
Received, never sent
Portamento foot switch
portamento_foot_switch
65 0 off, 127 on

Data entry

Control CC Values
Data entry knob
data_entry
6 0-127
Data entry +1
data_entry_increment
96 127 on
Data entry -1
data_entry_decrement
97 127 on

Volume

Control CC Values
Volume
volume
7 0-127
Received, never sent

Foot switch

Control CC Values
Sustain foot switch
sustain_foot_switch
64 0 off, 127 on

Where these facts come from

Source documents

How they were read

Operating manual (34pp scanned), pp. 21-22, 27, 30-32. The controller numbers are the two tables in the MIDI DATA FORMAT appendix, pp. 30 and 32, whose columns are C | Parameter | V - one table for what the instrument transmits and a second, longer one for what it receives.

This instrument is transcribed from a scan. Yamaha publishes the same manual as a text edition, and that edition omits this appendix entirely: its specifications chapter ends "(MIDI Data Format is not available.)" and its contents says "Some lists, the score, and the index are not available". So every controller number here was read by eye from the scanned page, twice and independently, because no machine on this side can read it: the scan has no text layer, and tools/check_citations.py reports that it checked none of these numbers rather than that it failed to find them. The text edition is not cited for anything, because where the two disagree it is the one that is wrong: it prints the external ROM memory as "(54 Memory)" where the scan says 64.

What the instrument transmits and what it receives are different sets, so each control says which. Received but never transmitted: portamento time and volume. The received table also lists controllers 125, 126 and 127 as OMNI, MONO and POLY all key off, which are channel mode messages and belong to the MIDI specification rather than to a definition; they are excluded for that reason and not because they were missed. Aftertouch is the other asymmetry: the instrument transmits channel aftertouch (p. 30) and the received data format (p. 32), which sets out the received messages one by one - key off, key on, control change, program change and pitch bender - has no aftertouch at all, so aftertouch is none and aftertouch_transmits is true.

NOT RECORDED, and marked in place:

Also not carried, because the format has no field for it: the 156 voice parameters and 14 function parameters of p. 31, which are addressable over MIDI by system exclusive parameter change rather than by any controller number or NRPN. That is the whole of this instrument's deep editing, and the appendix prints every parameter number for it.