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-Xi MIDI implementation
The MIDI implementation of the Roland JD-Xi: what it answers to, and the 98 controls it offers.
At a glance
- Firmware
- Not recorded.
- MIDI channel
- Any one of 1 to 16.
- Parts
- Digital Synth, 2 of them: on MIDI channels 1 and 2, taking notes, controls, and program changes.
Analog Synth: on MIDI channel 3, taking notes, controls, and program changes.
Drum: on MIDI channel 10, taking notes, controls, and program changes. - MIDI mode
- 3: omni off, poly.
- Voices
- Not recorded.
- 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 none.
- Pitch bend
- How far it bends is not recorded, and the range can be changed.
- Program change
- Received and sent.
- MIDI clock
- Sent and received.
- Start and stop
- Sent and received.
- Control change
- 77 controls, in the tables below.
- NRPN
- Supported. 21 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_xi") has loaded them.
Digital synth
Continuous controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Modulationdigital_synth_modulation |
1 | 0-127 | |
Portamento Timedigital_synth_portamento_time |
5 | 0-127 | |
Volumedigital_synth_volume |
7 | 0-127 Received, never sent |
|
Panpotdigital_synth_panpot |
10 | 0-127 Received, never sent |
|
Expressiondigital_synth_expression |
11 | 0-127 Received, never sent |
Switches and pedals
| Control | CC | NRPN | Values |
|---|---|---|---|
Hold 1digital_synth_hold_1 |
64 | 0-127 Received, never sent |
|
Portamentodigital_synth_portamento |
65 | 0-127 Received, never sent |
Sound controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Resonancedigital_synth_resonance |
71 | 0-127 Received, never sent |
|
Release Timedigital_synth_release_time |
72 | 0-127 Received, never sent |
|
Attack Timedigital_synth_attack_time |
73 | 0-127 Received, never sent |
|
Cutoffdigital_synth_cutoff |
74 | 0-127 Received, never sent |
|
Decay Timedigital_synth_decay_time |
75 | 0-127 Received, never sent |
|
Vibrato Ratedigital_synth_vibrato_rate |
76 | 0-127 Received, never sent |
|
Vibrato Depthdigital_synth_vibrato_depth |
77 | 0-127 Received, never sent |
|
Vibrato Delaydigital_synth_vibrato_delay |
78 | 0-127 Received, never sent |
Effect send levels
| Control | CC | NRPN | Values |
|---|---|---|---|
Reverb Send Leveldigital_synth_reverb_send_level |
91 | 0-127 Received, never sent |
|
Delay Send Leveldigital_synth_delay_send_level |
94 | 0-127 Received, never sent |
The digital synth's three partials
| Control | CC | NRPN | Values |
|---|---|---|---|
Partial 1 Cutoffpartial_1_cutoff |
102 | 0-127 | |
Partial 2 Cutoffpartial_2_cutoff |
103 | 0-127 | |
Partial 3 Cutoffpartial_3_cutoff |
104 | 0-127 | |
Partial 1 Resonancepartial_1_resonance |
105 | 0-127 | |
Partial 2 Resonancepartial_2_resonance |
106 | 0-127 | |
Partial 3 Resonancepartial_3_resonance |
107 | 0-127 | |
Partial 1 Levelpartial_1_level |
117 | 0-127 | |
Partial 2 Levelpartial_2_level |
118 | 0-127 | |
Partial 3 Levelpartial_3_level |
119 | 0-127 | |
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 Envelopepartial_1_envelope |
124 MSB 0, LSB 124 |
0-127 | |
Partial 2 Envelopepartial_2_envelope |
125 MSB 0, LSB 125 |
0-127 | |
Partial 3 Envelopepartial_3_envelope |
126 MSB 0, LSB 126 |
0-127 | |
Partial 1 LFO Shapepartial_1_lfo_shape |
3 MSB 0, LSB 3 |
0-127 | |
Partial 2 LFO Shapepartial_2_lfo_shape |
4 MSB 0, LSB 4 |
0-127 | |
Partial 3 LFO Shapepartial_3_lfo_shape |
5 MSB 0, LSB 5 |
0-127 | |
Partial 1 LFO Pitch Depthpartial_1_lfo_pitch_depth |
15 MSB 0, LSB 15 |
0-127 | |
Partial 2 LFO Pitch Depthpartial_2_lfo_pitch_depth |
16 MSB 0, LSB 16 |
0-127 | |
Partial 3 LFO Pitch Depthpartial_3_lfo_pitch_depth |
17 MSB 0, LSB 17 |
0-127 | |
Partial 1 LFO Filter Depthpartial_1_lfo_filter_depth |
18 MSB 0, LSB 18 |
0-127 | |
Partial 2 LFO Filter Depthpartial_2_lfo_filter_depth |
19 MSB 0, LSB 19 |
0-127 | |
Partial 3 LFO Filter Depthpartial_3_lfo_filter_depth |
20 MSB 0, LSB 20 |
0-127 | |
Partial 1 LFO Amp Depthpartial_1_lfo_amp_depth |
21 MSB 0, LSB 21 |
0-127 | |
Partial 2 LFO Amp Depthpartial_2_lfo_amp_depth |
22 MSB 0, LSB 22 |
0-127 | |
Partial 3 LFO Amp Depthpartial_3_lfo_amp_depth |
23 MSB 0, LSB 23 |
0-127 |
Without a group
| Control | CC | NRPN | Values |
|---|---|---|---|
Bank Select (MSB)digital_synth_bank_select_msb |
0 | 0-127 | |
Bank Select (LSB)digital_synth_bank_select_lsb |
32 | 0-127 |
Analog synth
Continuous controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Modulationanalog_synth_modulation |
1 | 0-127 | |
Portamento Timeanalog_synth_portamento_time |
5 | 0-127 | |
Volumeanalog_synth_volume |
7 | 0-127 Received, never sent |
|
Panpotanalog_synth_panpot |
10 | 0-127 Received, never sent |
|
Expressionanalog_synth_expression |
11 | 0-127 Received, never sent |
Switches and pedals
| Control | CC | NRPN | Values |
|---|---|---|---|
Hold 1analog_synth_hold_1 |
64 | 0-127 Received, never sent |
|
Portamentoanalog_synth_portamento |
65 | 0-127 Received, never sent |
Sound controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Resonanceanalog_synth_resonance |
71 | 0-127 Received, never sent |
|
Release Timeanalog_synth_release_time |
72 | 0-127 Received, never sent |
|
Attack Timeanalog_synth_attack_time |
73 | 0-127 Received, never sent |
|
Cutoffanalog_synth_cutoff |
74 | 0-127 Received, never sent |
|
Decay Timeanalog_synth_decay_time |
75 | 0-127 Received, never sent |
|
Vibrato Rateanalog_synth_vibrato_rate |
76 | 0-127 Received, never sent |
|
Vibrato Depthanalog_synth_vibrato_depth |
77 | 0-127 Received, never sent |
|
Vibrato Delayanalog_synth_vibrato_delay |
78 | 0-127 Received, never sent |
Effect send levels
| Control | CC | NRPN | Values |
|---|---|---|---|
Reverb Send Levelanalog_synth_reverb_send_level |
91 | 0-127 Received, never sent |
|
Delay Send Levelanalog_synth_delay_send_level |
94 | 0-127 Received, never sent |
The analog synth
| Control | CC | NRPN | Values |
|---|---|---|---|
Analog Cutoffanalog_cutoff |
102 | 0-127 | |
Analog Resonanceanalog_resonance |
105 | 0-127 | |
Analog Levelanalog_level |
117 | 0-127 | |
Analog LFO Rateanalog_lfo_rate |
16 | 0-127 | |
Analog Envelopeanalog_envelope |
124 MSB 0, LSB 124 |
0-127 | |
Analog LFO Shapeanalog_lfo_shape |
3 MSB 0, LSB 3 |
0-127 | |
Analog LFO Pitch Depthanalog_lfo_pitch_depth |
15 MSB 0, LSB 15 |
0-127 | |
Analog LFO Filter Depthanalog_lfo_filter_depth |
18 MSB 0, LSB 18 |
0-127 | |
Analog LFO Amp Depthanalog_lfo_amp_depth |
21 MSB 0, LSB 21 |
0-127 | |
Analog Pulse Widthanalog_pulse_width |
37 MSB 0, LSB 37 |
0-127 |
Without a group
| Control | CC | NRPN | Values |
|---|---|---|---|
Bank Select (MSB)analog_synth_bank_select_msb |
0 | 0-127 | |
Bank Select (LSB)analog_synth_bank_select_lsb |
32 | 0-127 |
Drum
Continuous controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Modulationdrum_modulation |
1 | 0-127 | |
Volumedrum_volume |
7 | 0-127 Received, never sent |
|
Panpotdrum_panpot |
10 | 0-127 Received, never sent |
|
Expressiondrum_expression |
11 | 0-127 Received, never sent |
Switches and pedals
| Control | CC | NRPN | Values |
|---|---|---|---|
Hold 1drum_hold_1 |
64 | 0-127 Received, never sent |
|
Portamentodrum_portamento |
65 | 0-127 Received, never sent |
Sound controllers
| Control | CC | NRPN | Values |
|---|---|---|---|
Resonancedrum_resonance |
71 | 0-127 Received, never sent |
|
Release Timedrum_release_time |
72 | 0-127 Received, never sent |
|
Attack Timedrum_attack_time |
73 | 0-127 Received, never sent |
|
Cutoffdrum_cutoff |
74 | 0-127 Received, never sent |
|
Decay Timedrum_decay_time |
75 | 0-127 Received, never sent |
|
Vibrato Ratedrum_vibrato_rate |
76 | 0-127 Received, never sent |
|
Vibrato Depthdrum_vibrato_depth |
77 | 0-127 Received, never sent |
|
Vibrato Delaydrum_vibrato_delay |
78 | 0-127 Received, never sent |
Effect send levels
| Control | CC | NRPN | Values |
|---|---|---|---|
Reverb Send Leveldrum_reverb_send_level |
91 | 0-127 Received, never sent |
|
Delay Send Leveldrum_delay_send_level |
94 | 0-127 Received, never sent |
Without a group
| Control | CC | NRPN | Values |
|---|---|---|---|
Bank Select (MSB)drum_bank_select_msb |
0 | 0-127 | |
Bank Select (LSB)drum_bank_select_lsb |
32 | 0-127 |
On the base MIDI channel
Program effects
| Control | CC | NRPN | Values |
|---|---|---|---|
Reverbreverb |
12 | 0-127 | |
Delaydelay |
13 | 0-127 | |
Effect 1effect_1 |
14 | 0-127 | |
Effect 2effect_2 |
15 | 0-127 | |
Vocoder (Level)vocoder_level |
83 | 0-127 |
Where these facts come from
Source documents
- JD-Xi MIDI Implementation, 1.00, dated 1 May 2015, its MIDI implementation, read on 6 October 2026 (the file read).
- JD-Xi Owner's Manual, eng07, its user manual, read on 6 October 2026 (the file read).
- JD-Xi Parameter Guide, e01, its user manual, read on 6 October 2026 (the file read).
- JD-Xi Version 1.10 Supplementary Manual, 1.10, its firmware addendum, read on 6 October 2026 (the file read).
- JD-Xi Version 1.50 Supplementary Manual, 1.50, its firmware addendum, read on 6 October 2026 (the file read).
- Roland - Support - JD-Xi - Owner's Manuals, a web page, read on 6 October 2026.
How they were read
Roland's MIDI Implementation for this instrument, 18 sheets, which is this maker's proper document of that name and the same shape as roland/fantom_6_7_8's: reception, transmission, a parameter address map, a Control Change Message List (implementation p. 14), which gives each knob-operated parameter its controller number or its NRPN address, the partials' as spans, and two implementation charts.
FIVE DOCUMENTS, ALL ENGLISH, AND SEVEN MORE THAT ARE TRANSLATIONS OF ONE OF THEM. Roland's manuals page lists twelve: the owner's manual in eight languages, a Parameter Guide, this implementation, and supplementary manuals for firmware 1.10 and 1.50. The five English ones are in the library and all five were read - 97 sheets between them.
TWO CHARTS, AND THEY ARE TWO SECTIONS OF ONE INSTRUMENT RATHER THAN TWO COMPETING MAPS. Sheet 17 is the chart for the Sound Source Section and sheet 18 for the Sequencer section, which is roland/fantom_6_7_8's arrangement and not korg/drumlogue's - the drumlogue's two charts are the same instrument in two modes, where a number can mean a different thing on each part's channel. These two do not overlap: the sound source's control change block names 22 groups and the sequencer's names 0-119 wholesale, because a sequencer records whatever arrives. The fields below are the sound source's, but for two that rest on the sequencer's chart: the sending of the clock, and the transport both ways.
WHY presets IS UNRECORDED THOUGH THE DOCUMENT COUNTS BANKS. The chart gives "Program No.1-128" (implementation p. 17) against its True Number row, and the reception section then lists sixteen bank-select combinations reaching four user banks of 64, four preset banks of 64 and eight extra banks of 64. Multiplying those out would give a figure no page prints, which is the same ruling roland/fantom_6_7_8 made for the same maker: 1 to 128 is what one bank holds, and bank select chooses the bank.
SIX NUMBERS ARE KEPT OUT OF THE MAP. Data Entry (6 and 38), the NRPN selects (98 and 99) and the RPN selects (100 and 101) are all named by the chart and none is a parameter of this instrument: they are how MIDI addresses things, and the registered parameters are under pitch_bend. Bank Select (0 and 32) is carried, as it is wherever a maker numbers it, once for each kind of part. Eight more are the channel mode messages, 120 to 127, which this format refuses as controls by design.
THE REGISTERED PARAMETERS, OF WHICH THERE ARE THREE AND ONE REACHES A FIELD. "00H, 00H mmH, llH Pitch Bend Sensitivity mm: 00H - 18H (0 - 24 semitones)" (implementation p. 3), "00H, 01H mmH, llH Channel Fine Tuning" (implementation p. 3) and "00H, 02H mmH, llH Channel Coarse Tuning" (implementation p. 3). The first is pitch_bend.programmable; the other two are a tuning and a transpose, which this format does not hold.
THE CONTROLLERS EVERY PART RECEIVES ARE HERE ONCE FOR EACH KIND OF PART. The reception section lists modulation, portamento time, volume, pan, expression, hold 1, portamento, the sound controllers 71 to 78 and two effect sends, 91 and 94, on any channel, most of them changing a parameter of the part that listens there - "The Part Cutoff Offset parameter (PROG:OFFSET) will change." (implementation p. 2) - and the address map gives all four parts, the drum part included, the same Program Part block, which holds Part Level (CC# 7), the offsets 71 to 78 and both sends (implementation pp. 8 and 10). The reception section keeps two channel mode messages from the analogue part, MONO and POLY (implementation pp. 3 and 4), and no other controller from any part. So each is recorded for the digital synth parts, the analogue synth part and the drum part, but for portamento time on the drum part, whose entry changes a tone's parameter that a drum kit does not have: 50 controls, and the controls say why. In this format a control naming no part means the base channel, which here is the first digital synth's alone. The five program effects, 12 to 15 and 83, name no part, because the Control Change Message List gives them no channel; the program has a channel of its own, which the comment above them names.
91 AND 94 ARE CARRIED THOUGH THE CHART HAS NO ROW FOR EITHER. Its 22 rows of controller numbers include neither (implementation p. 17), where the reception section gives each an entry of its own, "General Purpose Effect 1 (Reverb Send Level) (Controller number 91)" (implementation p. 2) and "General Purpose Effect 4 (Delay Send Level) (Controller number 94)" (implementation p. 2), and the address map names each as a part's parameter, Part Reverb Send Level (CC# 91) and Part Delay Send Level (CC# 94) (implementation p. 10). The chart is the narrowest of the three and the other two agree, so both are recorded. They are received only because no page says the sound source sends them: the transmission section lists neither, though it leaves out the knobs' numbers too, and the chart has no row to mark.
DIRECTIONS ARE THE SOUND SOURCE CHART'S. Its transmitted column crosses 7, 10, 11, 64, 65 and 71 to 78 (implementation p. 17), and the transmission section lists none of the thirteen, so they are received only, on every part; the comment above the controls gives that section's list. Modulation and portamento time are circled and listed, and go both ways, and so do the numbers the Control Change Message List gives, which the chart circles. The sequencer's chart circles 0-119 transmitted, and that is the sequencer rather than the sound source: "Recorded messages are transmitted during playback." (implementation p. 8). So a pattern can send any of these numbers back out; the directions here are the sound source's, as the rest of the fields are but for the clock and the transport.
NOT RECORDED: the polyphony, which no document states. 68, which the address map names beside a part's legato switch, Part Legato Switch (CC# 68) (implementation p. 10), and which neither the reception section nor the chart lists. The 51-sheet Parameter Guide's whole contents, which is a panel reference with no controller map, and names one number, the modulation wheel's, in passing - checked, because its name suggests otherwise. The drum part's 148 NRPN addresses, for the reason above. And the sequencer's own behaviour, of which the chart's footnotes give three sentences worth reading if somebody ever records into it: a note-off is recorded for each sounding note before an all-notes -off, and the all-notes-off itself is not recorded.