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.
Roland JD-XA MIDI implementation
The MIDI implementation of the Roland JD-XA: what it answers to, and the 178 controls it offers, on firmware 1.55.
At a glance
- Firmware
- This page describes firmware 1.55.
- MIDI channel
- Any one of 1 to 16.
- Parts
- Analog Part, 4 of them: each on a MIDI channel of its own, taking notes and controls, with 1 voice each.
Digital Part, 4 of them: each on a MIDI channel of its own, taking notes and controls, with 64 voices among them.
Program Control: on a MIDI channel of its own, taking controls and program changes. - MIDI mode
- 3: omni off, poly.
- Voices
- Each part's own, under Parts.
- Note range
- 0 to 127: C-1 to G9, counting middle C as C4.
- Velocity
- Sent and received. Release velocity is received.
- Aftertouch
- Channel pressure and polyphonic, each answered. It sends aftertouch too.
- Pitch bend
- How far it bends is not recorded, and the range can be changed.
- Program change
- Received and sent, with 256 presets.
- MIDI clock
- Sent and received.
- Start and stop
- Sent and received.
- Control change
- 90 controls, in the tables below.
- NRPN
- Supported. 88 of the controls below have one.
- System exclusive
- Supported.
Controls
In the order the definition gives them, by part and group. Under each control is the name a program calls it by, once pymidiinstrumentdefs.load("roland/jd_xa") has loaded them.
Analog part
Controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Modulationanalog_modulation |
1 | 0-127 | |
Volumeanalog_volume |
7 | 0-127 Received, never sent |
|
Panpotanalog_panpot |
10 | 0-127 Received, never sent |
|
Expressionanalog_expression |
11 | 0-127 | |
Hold 1analog_hold_1 |
64 | 0-63 off, 64-127 on |
|
Portamentoanalog_portamento |
65 | 0-63 off, 64-127 onReceived, never sent |
|
Resonanceanalog_resonance |
71 | 0-127 Received, never sent |
|
Release Timeanalog_release_time |
72 | 0-127 Received, never sent |
|
Attack timeanalog_attack_time |
73 | 0-127 Received, never sent |
|
Cutoffanalog_cutoff |
74 | 0-127 Received, never sent |
|
Decay Timeanalog_decay_time |
75 | 0-127 Received, never sent |
|
Reverb Send Levelanalog_reverb_send_level |
91 | 0-127 Received, never sent |
Portamento
| Control | CC | NRPN | Values |
|---|---|---|---|
Porta Timeanalog_porta_time |
5 | 0-127 |
LFO
| Control | CC | NRPN | Values |
|---|---|---|---|
LFO1 Rateanalog_lfo1_rate |
16 | 0-127 | |
LFO2 Rateanalog_lfo2_rate |
17 | 0-127 | |
LFO1 Fade Timeanalog_lfo1_fade_time |
6 MSB 0, LSB 6 |
0-127 | |
LFO2 Fade Timeanalog_lfo2_fade_time |
7 MSB 0, LSB 7 |
0-127 | |
LFO1 Pitch Depthanalog_lfo1_pitch_depth |
9 MSB 0, LSB 9 |
0-127 | |
LFO2 Pitch Depthanalog_lfo2_pitch_depth |
10 MSB 0, LSB 10 |
0-127 | |
LFO1 Filter Depthanalog_lfo1_filter_depth |
12 MSB 0, LSB 12 |
0-127 | |
LFO2 Filter Depthanalog_lfo2_filter_depth |
13 MSB 0, LSB 13 |
0-127 | |
LFO1 Amp Depthanalog_lfo1_amp_depth |
15 MSB 0, LSB 15 |
0-127 | |
LFO2 Amp Depthanalog_lfo2_amp_depth |
16 MSB 0, LSB 16 |
0-127 |
Oscillators
| Control | CC | NRPN | Values |
|---|---|---|---|
OSC1 Pitchanalog_osc1_pitch |
19 | 0-127 | |
OSC1 Fineanalog_osc1_fine |
22 | 0-127 | |
OSC1 PWM Depthanalog_osc1_pwm_depth |
31 MSB 0, LSB 31 |
0-127 | |
OSC1 PWanalog_osc1_pw |
28 MSB 0, LSB 28 |
0-127 | |
Cross Modanalog_cross_mod |
25 | 0-127 | |
OSC2 Pitchanalog_osc2_pitch |
20 | 0-127 | |
OSC2 Fineanalog_osc2_fine |
23 | 0-127 | |
OSC2 PWM Depthanalog_osc2_pwm_depth |
32 MSB 0, LSB 32 |
0-127 | |
OSC2 PWanalog_osc2_pw |
29 MSB 0, LSB 29 |
0-127 |
Pitch envelope
| Control | CC | NRPN | Values |
|---|---|---|---|
O1 PITCH ENV Depthanalog_o1_pitch_env_depth |
26 | 0-127 | |
O2 PITCH ENV Depthanalog_o2_pitch_env_depth |
27 | 0-127 | |
O1 PITCH ENV Velo Sensanalog_o1_pitch_env_velo_sens |
37 MSB 0, LSB 37 |
0-127 | |
O2 PITCH ENV Velo Sensanalog_o2_pitch_env_velo_sens |
38 MSB 0, LSB 38 |
0-127 | |
O1 PITCH ENV Attackanalog_o1_pitch_env_attack |
43 MSB 0, LSB 43 |
0-127 | |
O2 PITCH ENV Attackanalog_o2_pitch_env_attack |
44 MSB 0, LSB 44 |
0-127 | |
O1 PITCH ENV Decayanalog_o1_pitch_env_decay |
46 MSB 0, LSB 46 |
0-127 | |
O2 PITCH ENV Decayanalog_o2_pitch_env_decay |
47 MSB 0, LSB 47 |
0-127 |
Mixer
| Control | CC | NRPN | Values |
|---|---|---|---|
MIXER OSC1 Levelanalog_mixer_osc1_level |
29 | 0-127 | |
MIXER OSC2 Levelanalog_mixer_osc2_level |
30 | 0-127 | |
MIXER AUX Levelanalog_mixer_aux_level |
31 | 0-127 |
Filter
| Control | CC | NRPN | Values |
|---|---|---|---|
FILTER HPF Cutoffanalog_filter_hpf_cutoff |
114 | 0-127 | |
FILTER Driveanalog_filter_drive |
115 | 0-127 | |
FILTER Cutoffanalog_filter_cutoff |
102 | 0-127 | |
FILTER Cutoff Fineanalog_filter_cutoff_fine |
103 | 0-127 | |
FILTER Resonanceanalog_filter_resonance |
105 | 0-127 | |
FILTER Key Followanalog_filter_key_follow |
111 | 0-127 | |
FILTER KF Fineanalog_filter_kf_fine |
112 | 0-127 | |
FILTER ENV Depthanalog_filter_env_depth |
108 | 0-127 | |
FILTER ENV Velo Sensanalog_filter_env_velo_sens |
58 MSB 0, LSB 58 |
0-127 | |
FILTER ENV Attackanalog_filter_env_attack |
70 MSB 0, LSB 70 |
0-127 | |
FILTER ENV Decayanalog_filter_env_decay |
73 MSB 0, LSB 73 |
0-127 | |
FILTER ENV Sustainanalog_filter_env_sustain |
76 MSB 0, LSB 76 |
0-127 | |
FILTER ENV Releaseanalog_filter_env_release |
79 MSB 0, LSB 79 |
0-127 |
Amp
| Control | CC | NRPN | Values |
|---|---|---|---|
AMP Levelanalog_amp_level |
117 | 0-127 | |
AMP Level V-Sensanalog_amp_level_v_sens |
85 MSB 0, LSB 85 |
0-127 | |
AMP ENV Attackanalog_amp_env_attack |
88 MSB 0, LSB 88 |
0-127 | |
AMP ENV Decayanalog_amp_env_decay |
91 MSB 0, LSB 91 |
0-127 | |
AMP ENV Sustainanalog_amp_env_sustain |
94 MSB 0, LSB 94 |
0-127 | |
AMP ENV Releaseanalog_amp_env_release |
97 MSB 0, LSB 97 |
0-127 |
Digital part
Controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Modulationdigital_modulation |
1 | 0-127 | |
Volumedigital_volume |
7 | 0-127 Received, never sent |
|
Panpotdigital_panpot |
10 | 0-127 Received, never sent |
|
Expressiondigital_expression |
11 | 0-127 | |
Hold 1digital_hold_1 |
64 | 0-63 off, 64-127 on |
|
Portamentodigital_portamento |
65 | 0-63 off, 64-127 onReceived, never sent |
|
Resonancedigital_resonance |
71 | 0-127 Received, never sent |
|
Release Timedigital_release_time |
72 | 0-127 Received, never sent |
|
Attack timedigital_attack_time |
73 | 0-127 Received, never sent |
|
Cutoffdigital_cutoff |
74 | 0-127 Received, never sent |
|
Decay Timedigital_decay_time |
75 | 0-127 Received, never sent |
|
Vibrato Ratedigital_vibrato_rate |
76 | 0-127 Received, never sent |
|
Vibrato Depthdigital_vibrato_depth |
77 | 0-127 Received, never sent |
|
Vibrato Delaydigital_vibrato_delay |
78 | 0-127 Received, never sent |
|
Reverb Send Leveldigital_reverb_send_level |
91 | 0-127 Received, never sent |
Portamento
| Control | CC | NRPN | Values |
|---|---|---|---|
Porta Timedigital_porta_time |
5 | 0-127 |
LFO
| Control | CC | NRPN | Values |
|---|---|---|---|
Partial 1 LFO Ratepartial_1_lfo_rate |
16 | 0-127 | |
Partial 2 LFO Ratepartial_2_lfo_rate |
17 | 0-127 | |
Partial 3 LFO Ratepartial_3_lfo_rate |
18 | 0-127 | |
Partial 1 LFO Fade Timepartial_1_lfo_fade_time |
6 MSB 0, LSB 6 |
0-127 | |
Partial 2 LFO Fade Timepartial_2_lfo_fade_time |
7 MSB 0, LSB 7 |
0-127 | |
Partial 3 LFO Fade Timepartial_3_lfo_fade_time |
8 MSB 0, LSB 8 |
0-127 | |
Partial 1 LFO Pitch Depthpartial_1_lfo_pitch_depth |
9 MSB 0, LSB 9 |
0-127 | |
Partial 2 LFO Pitch Depthpartial_2_lfo_pitch_depth |
10 MSB 0, LSB 10 |
0-127 | |
Partial 3 LFO Pitch Depthpartial_3_lfo_pitch_depth |
11 MSB 0, LSB 11 |
0-127 | |
Partial 1 LFO Filter Depthpartial_1_lfo_filter_depth |
12 MSB 0, LSB 12 |
0-127 | |
Partial 2 LFO Filter Depthpartial_2_lfo_filter_depth |
13 MSB 0, LSB 13 |
0-127 | |
Partial 3 LFO Filter Depthpartial_3_lfo_filter_depth |
14 MSB 0, LSB 14 |
0-127 | |
Partial 1 LFO Amp Depthpartial_1_lfo_amp_depth |
15 MSB 0, LSB 15 |
0-127 | |
Partial 2 LFO Amp Depthpartial_2_lfo_amp_depth |
16 MSB 0, LSB 16 |
0-127 | |
Partial 3 LFO Amp Depthpartial_3_lfo_amp_depth |
17 MSB 0, LSB 17 |
0-127 | |
Partial 1 LFO Pan Depthpartial_1_lfo_pan_depth |
18 MSB 0, LSB 18 |
0-127 | |
Partial 2 LFO Pan Depthpartial_2_lfo_pan_depth |
19 MSB 0, LSB 19 |
0-127 | |
Partial 3 LFO Pan Depthpartial_3_lfo_pan_depth |
20 MSB 0, LSB 20 |
0-127 |
Oscillators
| Control | CC | NRPN | Values |
|---|---|---|---|
Partial 1 OSC Pitchpartial_1_osc_pitch |
19 | 0-127 | |
Partial 2 OSC Pitchpartial_2_osc_pitch |
20 | 0-127 | |
Partial 3 OSC Pitchpartial_3_osc_pitch |
21 | 0-127 | |
Partial 1 OSC Detunepartial_1_osc_detune |
22 | 0-127 | |
Partial 2 OSC Detunepartial_2_osc_detune |
23 | 0-127 | |
Partial 3 OSC Detunepartial_3_osc_detune |
24 | 0-127 | |
Partial 1 OSC PWM Depthpartial_1_osc_pwm_depth |
31 MSB 0, LSB 31 |
0-127 | |
Partial 2 OSC PWM Depthpartial_2_osc_pwm_depth |
32 MSB 0, LSB 32 |
0-127 | |
Partial 3 OSC PWM Depthpartial_3_osc_pwm_depth |
33 MSB 0, LSB 33 |
0-127 | |
Partial 1 OSC PWpartial_1_osc_pw |
28 MSB 0, LSB 28 |
0-127 | |
Partial 2 OSC PWpartial_2_osc_pw |
29 MSB 0, LSB 29 |
0-127 | |
Partial 3 OSC PWpartial_3_osc_pw |
30 MSB 0, LSB 30 |
0-127 |
Pitch envelope
| Control | CC | NRPN | Values |
|---|---|---|---|
Partial 1 PITCH ENV Depthpartial_1_pitch_env_depth |
26 | 0-127 | |
Partial 2 PITCH ENV Depthpartial_2_pitch_env_depth |
27 | 0-127 | |
Partial 3 PITCH ENV Depthpartial_3_pitch_env_depth |
28 | 0-127 | |
Partial 1 PITCH ENV Attackpartial_1_pitch_env_attack |
43 MSB 0, LSB 43 |
0-127 | |
Partial 2 PITCH ENV Attackpartial_2_pitch_env_attack |
44 MSB 0, LSB 44 |
0-127 | |
Partial 3 PITCH ENV Attackpartial_3_pitch_env_attack |
45 MSB 0, LSB 45 |
0-127 | |
Partial 1 PITCH ENV Decaypartial_1_pitch_env_decay |
46 MSB 0, LSB 46 |
0-127 | |
Partial 2 PITCH ENV Decaypartial_2_pitch_env_decay |
47 MSB 0, LSB 47 |
0-127 | |
Partial 3 PITCH ENV Decaypartial_3_pitch_env_decay |
48 MSB 0, LSB 48 |
0-127 |
Filter
| Control | CC | NRPN | Values |
|---|---|---|---|
Partial 1 FILTER HPF Cutoffpartial_1_filter_hpf_cutoff |
114 | 0-127 | |
Partial 2 FILTER HPF Cutoffpartial_2_filter_hpf_cutoff |
115 | 0-127 | |
Partial 3 FILTER HPF Cutoffpartial_3_filter_hpf_cutoff |
116 | 0-127 | |
Partial 1 FILTER Cutoffpartial_1_filter_cutoff |
102 | 0-127 | |
Partial 2 FILTER Cutoffpartial_2_filter_cutoff |
103 | 0-127 | |
Partial 3 FILTER Cutoffpartial_3_filter_cutoff |
104 | 0-127 | |
Partial 1 FILTER Resonancepartial_1_filter_resonance |
105 | 0-127 | |
Partial 2 FILTER Resonancepartial_2_filter_resonance |
106 | 0-127 | |
Partial 3 FILTER Resonancepartial_3_filter_resonance |
107 | 0-127 | |
Partial 1 FILTER Key Followpartial_1_filter_key_follow |
111 | 0-127 | |
Partial 2 FILTER Key Followpartial_2_filter_key_follow |
112 | 0-127 | |
Partial 3 FILTER Key Followpartial_3_filter_key_follow |
113 | 0-127 | |
Partial 1 FILTER ENV Depthpartial_1_filter_env_depth |
108 | 0-127 | |
Partial 2 FILTER ENV Depthpartial_2_filter_env_depth |
109 | 0-127 | |
Partial 3 FILTER ENV Depthpartial_3_filter_env_depth |
110 | 0-127 | |
Partial 1 FILTER ENV Velo Senspartial_1_filter_env_velo_sens |
58 MSB 0, LSB 58 |
0-127 | |
Partial 2 FILTER ENV Velo Senspartial_2_filter_env_velo_sens |
59 MSB 0, LSB 59 |
0-127 | |
Partial 3 FILTER ENV Velo Senspartial_3_filter_env_velo_sens |
60 MSB 0, LSB 60 |
0-127 | |
Partial 1 FILTER ENV Attackpartial_1_filter_env_attack |
70 MSB 0, LSB 70 |
0-127 | |
Partial 2 FILTER ENV Attackpartial_2_filter_env_attack |
71 MSB 0, LSB 71 |
0-127 | |
Partial 3 FILTER ENV Attackpartial_3_filter_env_attack |
72 MSB 0, LSB 72 |
0-127 | |
Partial 1 FILTER ENV Decaypartial_1_filter_env_decay |
73 MSB 0, LSB 73 |
0-127 | |
Partial 2 FILTER ENV Decaypartial_2_filter_env_decay |
74 MSB 0, LSB 74 |
0-127 | |
Partial 3 FILTER ENV Decaypartial_3_filter_env_decay |
75 MSB 0, LSB 75 |
0-127 | |
Partial 1 FILTER ENV Sustainpartial_1_filter_env_sustain |
76 MSB 0, LSB 76 |
0-127 | |
Partial 2 FILTER ENV Sustainpartial_2_filter_env_sustain |
77 MSB 0, LSB 77 |
0-127 | |
Partial 3 FILTER ENV Sustainpartial_3_filter_env_sustain |
78 MSB 0, LSB 78 |
0-127 | |
Partial 1 FILTER ENV Releasepartial_1_filter_env_release |
79 MSB 0, LSB 79 |
0-127 | |
Partial 2 FILTER ENV Releasepartial_2_filter_env_release |
80 MSB 0, LSB 80 |
0-127 | |
Partial 3 FILTER ENV Releasepartial_3_filter_env_release |
81 MSB 0, LSB 81 |
0-127 |
Amp
| Control | CC | NRPN | Values |
|---|---|---|---|
Partial 1 AMP Panpartial_1_amp_pan |
100 MSB 0, LSB 100 |
0-127 | |
Partial 2 AMP Panpartial_2_amp_pan |
101 MSB 0, LSB 101 |
0-127 | |
Partial 3 AMP Panpartial_3_amp_pan |
102 MSB 0, LSB 102 |
0-127 | |
Partial 1 AMP Levelpartial_1_amp_level |
117 | 0-127 | |
Partial 2 AMP Levelpartial_2_amp_level |
118 | 0-127 | |
Partial 3 AMP Levelpartial_3_amp_level |
119 | 0-127 | |
Partial 1 AMP Level V-Senspartial_1_amp_level_v_sens |
85 MSB 0, LSB 85 |
0-127 | |
Partial 2 AMP Level V-Senspartial_2_amp_level_v_sens |
86 MSB 0, LSB 86 |
0-127 | |
Partial 3 AMP Level V-Senspartial_3_amp_level_v_sens |
87 MSB 0, LSB 87 |
0-127 | |
Partial 1 AMP ENV Attackpartial_1_amp_env_attack |
88 MSB 0, LSB 88 |
0-127 | |
Partial 2 AMP ENV Attackpartial_2_amp_env_attack |
89 MSB 0, LSB 89 |
0-127 | |
Partial 3 AMP ENV Attackpartial_3_amp_env_attack |
90 MSB 0, LSB 90 |
0-127 | |
Partial 1 AMP ENV Decaypartial_1_amp_env_decay |
91 MSB 0, LSB 91 |
0-127 | |
Partial 2 AMP ENV Decaypartial_2_amp_env_decay |
92 MSB 0, LSB 92 |
0-127 | |
Partial 3 AMP ENV Decaypartial_3_amp_env_decay |
93 MSB 0, LSB 93 |
0-127 | |
Partial 1 AMP ENV Sustainpartial_1_amp_env_sustain |
94 MSB 0, LSB 94 |
0-127 | |
Partial 2 AMP ENV Sustainpartial_2_amp_env_sustain |
95 MSB 0, LSB 95 |
0-127 | |
Partial 3 AMP ENV Sustainpartial_3_amp_env_sustain |
96 MSB 0, LSB 96 |
0-127 | |
Partial 1 AMP ENV Releasepartial_1_amp_env_release |
97 MSB 0, LSB 97 |
0-127 | |
Partial 2 AMP ENV Releasepartial_2_amp_env_release |
98 MSB 0, LSB 98 |
0-127 | |
Partial 3 AMP ENV Releasepartial_3_amp_env_release |
99 MSB 0, LSB 99 |
0-127 |
Program control
Program parameters
| Control | CC | NRPN | Values |
|---|---|---|---|
Bank Select (MSB)bank_select_msb |
0 | 0-127 | |
Bank Select (LSB)bank_select_lsb |
32 | 0-127 | |
TFX1 Selecttfx1_select |
80 | 0-127 | |
TFX1 Ctrltfx1_ctrl |
14 | 0-127 | |
TFX2 Selecttfx2_select |
81 | 0-127 | |
TFX2 Ctrltfx2_ctrl |
15 | 0-127 | |
Reverb Levelreverb_level |
12 | 0-127 | |
Delay Leveldelay_level |
13 | 0-127 | |
Delay Timedelay_time |
82 | 0-127 | |
MIC Levelmic_level |
83 | 0-127 |
Where these facts come from
Source documents
- JD-XA MIDI Implementation, 1.00, dated 13 May 2015, its MIDI implementation, read on 8 October 2026 (the file read).
- JD-XA Parameter Guide, e01, parameter guide, read on 8 October 2026 (the file read).
- JD-XA Owner's Manual, eng02, its user manual, read on 8 October 2026 (the file read).
- JD-XA Version 1.50 Supplementary Manual, 1.50, its firmware addendum, read on 8 October 2026 (the file read).
- JD-XA System Program ( Ver.1.55 ), 1.55, dated March 2025, its release notes, read on 8 October 2026 (the file read).
- Roland - Support - JD-XA - Owner's Manuals, its download page, read on 8 October 2026.
- Roland - Support - JD-XA - Updates & Drivers, its download page, read on 8 October 2026.
- Roland - JD-XA | Analog/Digital Crossover Synthesizer, its product page, read on 8 October 2026.
How they were read
Roland's MIDI Implementation for the JD-XA, version 1.00 of May 13, 2015, 22 pages: what the sound source receives and sends (pp. 1 to 6), the sequencer's messages (pp. 6 to 8), the system exclusive address map, and two charts, the sound source's (p. 21) and the sequencer's (p. 22). The Parameter Guide, 76 pages, whose CC Assignments (pp. 68 to 73) are the map the chart sends a reader to. The Owner's Manual, edition eng02, for the parts (pp. 4 and 5), the MIDI settings (p. 13) and the structure diagram that gives each part's default channel (p. 19). The Version 1.50 Supplementary Manual. Roland's page for the newest system program, with its version history; its owner's manuals and updates pages; and the product's specifications page.
THREE KINDS OF PART, AND EACH TAKES A CHANNEL OF ITS OWN. Four analogue parts, four digital parts and the program. The structure diagram gives the analogue parts default channels 1 to 4 and the digital parts 5 to 8 (manual p. 19), and each part's channel is a setting: "Specifies the MIDI channel of each part." (parameter_guide p. 3). Program changes and the program's own controllers arrive on a channel of their own, Prog Ctrl Ch, which "Specifies the MIDI receive channel on which program change messages to switch programs or control change messages that control parameters of the entire program are received from an external MIDI device." (manual p. 13); no page gives its default. So the parts below are three, each assigned a channel, and every control names one.
THE MAP IS THE PARAMETER GUIDE'S CC ASSIGNMENTS, AND THE CHART SAYS SO. The sound source chart circles 12 to 31, 80 to 83 and 102 to 119 both ways, under a footnote that sends the reader to the Parameter Guide's CC Assignments "about function of each controller number." (implementation p. 21). Those pages give a table for the analogue parts and one for the digital parts, besides the program's and the MIDI control parts', and they speak only of what a panel control outputs: that the same controller numbers are received rests on the chart, and for the NRPNs on the implementation's own sentence, below. The channel is the part's: "Even for the same controller, the MIDI channel that is output will change depending on the part that you select." (parameter_guide p. 68). An analogue part's panel edits LFO1 or LFO2, and its pitch envelope select has three settings, OSC1+2, OSC1, OSC2 (implementation p. 18), and "The MIDI messages that are output will also change depending on the LFO1/2 and PITCH ENV1/2 selection." (parameter_guide p. 68), so each LFO and each oscillator's envelope has numbers of its own, 50 rows in all; no page says what is sent with both oscillators selected. A digital part is three partials, and "The MIDI messages that are output will also change depending on the partial 1/2/3 selection." (parameter_guide p. 70): its 91 rows are portamento time and thirty parameters, each three consecutive numbers, one for each partial. Eight more rows are the program's, and "The channel follows the system parameter" (parameter_guide p. 69), Prog Ctrl Ch.
THE SAME NUMBER MEANS DIFFERENT THINGS ON THE TWO KINDS OF PART. On an analogue part 103 is FILTER Cutoff Fine, 112 FILTER KF Fine and 115 FILTER Drive; on a digital part they are the second partial's cutoff, key follow and high-pass cutoff (parameter_guide pp. 68 to 71). Cross Mod, 25, and the mixer's 29 to 31 are analogue only, and so are NRPNs 37 and 38, the two pitch envelopes' velocity sensitivity; a digital part's third partial has numbers no analogue part uses, among them 18, 21, 24 and 28.
NRPNS, AND EVERY ONE HAS A MOST SIGNIFICANT BYTE OF 0. 88 of the controls are addressed by NRPN, and the CC Assignments print each as a most and a least significant byte - NRPN MSB: 0, LSB: 31 (OSC1 PWM Depth) (parameter_guide p. 68) - so the address recorded is the least significant byte as printed, as roland/jd_xi records its own. The implementation sends a reader to the same pages for both directions: "For more about the NRPN that JD-XA receive, refer to Parameter Guide" (implementation p. 2) and "For more about the NRPN that JD-XA transmit, refer to Parameter Guide" (implementation p. 5). It asks a sender to close each one: "it is recomended that you set RPN Null (RPN Number = 7FH/7FH) when you have finished setting the value of the desired parameter." (implementation p. 2), spelling as printed.
THE CONTROLLERS THE PARTS RECEIVE ARE HERE ONCE FOR EACH KIND. The reception section lists Modulation, Portamento Time, Volume, Panpot, Expression, Hold 1, Portamento, the sound controllers 71 to 78 and the reverb send, 91 (implementation pp. 1 and 2), and five of them are under a part's own switches: "Not received when the Rx Mod parameter (PART EDIT:PART MIDI) is OFF." (implementation p. 1), and likewise for volume, pan, expression and hold, where the switch is set "For each MIDI channel" (parameter_guide p. 3). So they reach whichever part listens on the channel they arrive on. A control naming no part would mean a base channel, and no part's channel here derives from one, so each is recorded once for the analogue parts and once for the digital parts. Three are the digital parts' alone: Vibrato Rate, Vibrato Depth and Vibrato Delay are each "Not received on the Analog part." (implementation p. 2). The sound controllers set an offset from the tone's own value rather than the value itself - "vv = Cutoff value (relative change): 00H–40H–7FH (-64–0–+63)" (implementation p. 2), stored as Part Cutoff Offset (CC# 74) (implementation p. 12) - so 64 is the tone's own setting. The chart writes Vibrate rate, Vibrate depth and Vibrate delay (implementation p. 21), as the JD-Xi's chart does; the labels take the reception section's spelling.
DIRECTIONS ARE THE SOUND SOURCE CHART'S, BUT FOR ONE. Its transmitted column crosses 7, 10, 65, 71 to 78 and the RPN selectors (implementation p. 21), and the transmission section names only bank select, modulation, portamento time, data entry, expression, hold 1 and the NRPN selectors (implementation p. 5), so those are received only: the part does not send them itself. The chart's last two rows are another matter: MIDI CONTROL sends 1 to 31 and 33 to 127, and Pedal, Wheel 1 to 31, 33 to 95 and 102 to 119, each by a player's assignment (implementation p. 21), which is a setting and not a parameter of the part. The one is the reverb send, 91, recorded as received only against the chart: the chart circles 90,91 transmitted under the CC Assignments footnote (implementation p. 21), and the only controller 91 those pages print is a MIDI control part's default (parameter_guide p. 72), not a part's reverb send. 90 is circled both ways, and no page of the three documents says what controller 90 does.
PROGRAM CHANGE ON THE PROGRAM CONTROL CHANNEL, AND THE BANKS. A program change is received on Prog Ctrl Ch and sent, on a channel no page gives: "These messages are transmitted when Program is selected." (implementation p. 5), each direction under a switch, Rx Prog Chg and Tx Prog Chg (manual p. 13). Bank select is 0 and 32: a most significant byte of 85 with 0 or 1 reaches the internal programs, INT:A01 - P16, and with 32 or 33 the programs on a USB flash drive (implementation p. 1). The preset count is the internal user memory's, Internal: 256 under User Program Memory (specifications), sixteen banks of sixteen, A01 to P16, and the 1.50 supplement's preloads are as many: "The preload program sounds have been refreshed; now 256 sounds are provided." (supplement_1_50 p. 1). A USB flash drive holds another 256 (specifications), which are not counted.
CLOCK AND TRANSPORT BOTH WAYS, BY THE SEQUENCER. The sound source chart circles clock received and crosses the start and stop commands (implementation p. 21); the sequencer's chart circles both in both columns, each mark one that "o x is selectable." (implementation p. 22). Sync Mode is MASTER, REMOTE or SLAVE, and in REMOTE "The JD-XA will obey start, and stop messages from another device, but the JD-XA’s own tempo setting is used as the playback tempo." (manual p. 13); Sync Output "Specifies whether clock, start, and stop messages are transmitted to another device" (manual p. 13).
ONE VOICE FOR EACH ANALOGUE PART, AND 64 FOR THE FOUR DIGITAL PARTS TOGETHER. "Each analog part is monophonic." (manual p. 4), and Poly Stack "Lets you use the four analog parts as one four-voice poly part." (manual p. 5). The specifications give "Analog Part: 4 voices" (specifications) and "Digital Part: 64 voices (varies according to the sound generator load)" (specifications). So each analogue part records polyphony: 1, and the digital part records polyphony: 64 with polyphony_shared: true: a figure for the four together, whose engine the page calls "four-part, 64-voice digital" (specifications), and no page says how they divide it. The two kinds are counted apart by the specifications and are different engines, so the instrument says polyphony_shared: false: its parts do not draw on one pool.
THE MIDI CONTROL PARTS ARE WHAT THE JD-XA SENDS TO OTHER INSTRUMENTS, AND ARE NOT RECORDED. With MIDI CTRL on, keyboard performance and panel operations are sent "on eight channels (channels 9–16 by default)" (manual p. 11), and "MIDI CTRL lets you assign controllers to the knobs and sliders" (parameter_guide p. 72); the CC Assignments print the assignments' default values (parameter_guide pp. 72 and 73). They are settings for controlling something else, not anything the JD-XA answers to.
NOT RECORDED, AND WHY:
- Prog Ctrl Ch's default, which no page gives;
- the MIDI control parts, above;
- controller 90, which no page explains;
- 68, which the address map names beside a part's legato switch,
Part Legato Switch (CC# 68)(implementation p. 12), and which neither the reception section nor the chart lists; - the system exclusive address map's parameters, which this format does not carry;
- the channel mode messages, 120 to 127, which this format refuses as controls;
- and the sequencer's chart, which is a recorder's and not the sound source's, except for its clock and transport.