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.

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
Modulation
digital_synth_modulation
1 0-127
Portamento Time
digital_synth_portamento_time
5 0-127
Volume
digital_synth_volume
7 0-127
Received, never sent
Panpot
digital_synth_panpot
10 0-127
Received, never sent
Expression
digital_synth_expression
11 0-127
Received, never sent

Switches and pedals

Control CC NRPN Values
Hold 1
digital_synth_hold_1
64 0-127
Received, never sent
Portamento
digital_synth_portamento
65 0-127
Received, never sent

Sound controllers

Control CC NRPN Values
Resonance
digital_synth_resonance
71 0-127
Received, never sent
Release Time
digital_synth_release_time
72 0-127
Received, never sent
Attack Time
digital_synth_attack_time
73 0-127
Received, never sent
Cutoff
digital_synth_cutoff
74 0-127
Received, never sent
Decay Time
digital_synth_decay_time
75 0-127
Received, never sent
Vibrato Rate
digital_synth_vibrato_rate
76 0-127
Received, never sent
Vibrato Depth
digital_synth_vibrato_depth
77 0-127
Received, never sent
Vibrato Delay
digital_synth_vibrato_delay
78 0-127
Received, never sent

Effect send levels

Control CC NRPN Values
Reverb Send Level
digital_synth_reverb_send_level
91 0-127
Received, never sent
Delay Send Level
digital_synth_delay_send_level
94 0-127
Received, never sent

The digital synth's three partials

Control CC NRPN Values
Partial 1 Cutoff
partial_1_cutoff
102 0-127
Partial 2 Cutoff
partial_2_cutoff
103 0-127
Partial 3 Cutoff
partial_3_cutoff
104 0-127
Partial 1 Resonance
partial_1_resonance
105 0-127
Partial 2 Resonance
partial_2_resonance
106 0-127
Partial 3 Resonance
partial_3_resonance
107 0-127
Partial 1 Level
partial_1_level
117 0-127
Partial 2 Level
partial_2_level
118 0-127
Partial 3 Level
partial_3_level
119 0-127
Partial 1 LFO Rate
partial_1_lfo_rate
16 0-127
Partial 2 LFO Rate
partial_2_lfo_rate
17 0-127
Partial 3 LFO Rate
partial_3_lfo_rate
18 0-127
Partial 1 Envelope
partial_1_envelope
124
MSB 0, LSB 124
0-127
Partial 2 Envelope
partial_2_envelope
125
MSB 0, LSB 125
0-127
Partial 3 Envelope
partial_3_envelope
126
MSB 0, LSB 126
0-127
Partial 1 LFO Shape
partial_1_lfo_shape
3
MSB 0, LSB 3
0-127
Partial 2 LFO Shape
partial_2_lfo_shape
4
MSB 0, LSB 4
0-127
Partial 3 LFO Shape
partial_3_lfo_shape
5
MSB 0, LSB 5
0-127
Partial 1 LFO Pitch Depth
partial_1_lfo_pitch_depth
15
MSB 0, LSB 15
0-127
Partial 2 LFO Pitch Depth
partial_2_lfo_pitch_depth
16
MSB 0, LSB 16
0-127
Partial 3 LFO Pitch Depth
partial_3_lfo_pitch_depth
17
MSB 0, LSB 17
0-127
Partial 1 LFO Filter Depth
partial_1_lfo_filter_depth
18
MSB 0, LSB 18
0-127
Partial 2 LFO Filter Depth
partial_2_lfo_filter_depth
19
MSB 0, LSB 19
0-127
Partial 3 LFO Filter Depth
partial_3_lfo_filter_depth
20
MSB 0, LSB 20
0-127
Partial 1 LFO Amp Depth
partial_1_lfo_amp_depth
21
MSB 0, LSB 21
0-127
Partial 2 LFO Amp Depth
partial_2_lfo_amp_depth
22
MSB 0, LSB 22
0-127
Partial 3 LFO Amp Depth
partial_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
Modulation
analog_synth_modulation
1 0-127
Portamento Time
analog_synth_portamento_time
5 0-127
Volume
analog_synth_volume
7 0-127
Received, never sent
Panpot
analog_synth_panpot
10 0-127
Received, never sent
Expression
analog_synth_expression
11 0-127
Received, never sent

Switches and pedals

Control CC NRPN Values
Hold 1
analog_synth_hold_1
64 0-127
Received, never sent
Portamento
analog_synth_portamento
65 0-127
Received, never sent

Sound controllers

Control CC NRPN Values
Resonance
analog_synth_resonance
71 0-127
Received, never sent
Release Time
analog_synth_release_time
72 0-127
Received, never sent
Attack Time
analog_synth_attack_time
73 0-127
Received, never sent
Cutoff
analog_synth_cutoff
74 0-127
Received, never sent
Decay Time
analog_synth_decay_time
75 0-127
Received, never sent
Vibrato Rate
analog_synth_vibrato_rate
76 0-127
Received, never sent
Vibrato Depth
analog_synth_vibrato_depth
77 0-127
Received, never sent
Vibrato Delay
analog_synth_vibrato_delay
78 0-127
Received, never sent

Effect send levels

Control CC NRPN Values
Reverb Send Level
analog_synth_reverb_send_level
91 0-127
Received, never sent
Delay Send Level
analog_synth_delay_send_level
94 0-127
Received, never sent

The analog synth

Control CC NRPN Values
Analog Cutoff
analog_cutoff
102 0-127
Analog Resonance
analog_resonance
105 0-127
Analog Level
analog_level
117 0-127
Analog LFO Rate
analog_lfo_rate
16 0-127
Analog Envelope
analog_envelope
124
MSB 0, LSB 124
0-127
Analog LFO Shape
analog_lfo_shape
3
MSB 0, LSB 3
0-127
Analog LFO Pitch Depth
analog_lfo_pitch_depth
15
MSB 0, LSB 15
0-127
Analog LFO Filter Depth
analog_lfo_filter_depth
18
MSB 0, LSB 18
0-127
Analog LFO Amp Depth
analog_lfo_amp_depth
21
MSB 0, LSB 21
0-127
Analog Pulse Width
analog_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
Modulation
drum_modulation
1 0-127
Volume
drum_volume
7 0-127
Received, never sent
Panpot
drum_panpot
10 0-127
Received, never sent
Expression
drum_expression
11 0-127
Received, never sent

Switches and pedals

Control CC NRPN Values
Hold 1
drum_hold_1
64 0-127
Received, never sent
Portamento
drum_portamento
65 0-127
Received, never sent

Sound controllers

Control CC NRPN Values
Resonance
drum_resonance
71 0-127
Received, never sent
Release Time
drum_release_time
72 0-127
Received, never sent
Attack Time
drum_attack_time
73 0-127
Received, never sent
Cutoff
drum_cutoff
74 0-127
Received, never sent
Decay Time
drum_decay_time
75 0-127
Received, never sent
Vibrato Rate
drum_vibrato_rate
76 0-127
Received, never sent
Vibrato Depth
drum_vibrato_depth
77 0-127
Received, never sent
Vibrato Delay
drum_vibrato_delay
78 0-127
Received, never sent

Effect send levels

Control CC NRPN Values
Reverb Send Level
drum_reverb_send_level
91 0-127
Received, never sent
Delay Send Level
drum_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
Reverb
reverb
12 0-127
Delay
delay
13 0-127
Effect 1
effect_1
14 0-127
Effect 2
effect_2
15 0-127
Vocoder (Level)
vocoder_level
83 0-127

Where these facts come from

Source documents

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.