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 JUNO-X MIDI implementation

The MIDI implementation of the Roland JUNO-X: what it answers to, and the 59 controls it offers, on firmware 1.12.

At a glance

Firmware
This page describes firmware 1.12.
MIDI channel
Any one of 1 to 16.
Parts
Part, 4 of them: each on a MIDI channel of its own, taking notes, controls, and program changes.
Part R: on a MIDI channel of its own, 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 aftertouch too.
Pitch bend
How far it bends is not recorded, and the range can be changed.
Program change
Received and sent, with 128 presets.
MIDI clock
Sent and received.
Start and stop
Neither sent nor received.
Control change
59 controls, in the tables below.
NRPN
None.
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/juno_x") has loaded them.

Part

Continuous controllers

Control CC Values
Modulation
part_modulation
1 0-127
Breath type
part_breath_type
2 0-127
Foot Type
part_foot_type
4 0-127
Portamento Time
part_portamento_time
5 0-127
Volume
part_volume
7 0-127
Panpot
part_panpot
10 0-127
Expression
part_expression
11 0-127

General purpose controllers

Control CC Values
General Purpose Controller 1
part_general_purpose_controller_1
16 0-127
General Purpose Controller 2
part_general_purpose_controller_2
17 0-127
General Purpose Controller 3
part_general_purpose_controller_3
18 0-127
General Purpose Controller 4
part_general_purpose_controller_4
19 0-127
General Purpose Controller 5
part_general_purpose_controller_5
80 0-127
General Purpose Controller 6
part_general_purpose_controller_6
81 0-127
General Purpose Controller 7
part_general_purpose_controller_7
82 0-127
General Purpose Controller 8
part_general_purpose_controller_8
83 0-127

Switches and pedals

Control CC Values
Hold 1
part_hold_1
64 0-127
Portamento
part_portamento
65 0-127
Sostenuto
part_sostenuto
66 0-127
Soft
part_soft
67 0-127
Legato Foot Switch
part_legato_foot_switch
68 0-127
Portamento control
part_portamento_control
84 0-127

Sound controllers

Control CC Values
Resonance
part_resonance
71 0-127
Release Time
part_release_time
72 0-127
Attack time
part_attack_time
73 0-127
Cutoff
part_cutoff
74 0-127
Decay Time
part_decay_time
75 0-127
Vibrato Rate
part_vibrato_rate
76 0-127
Vibrato Depth
part_vibrato_depth
77 0-127
Vibrato Delay
part_vibrato_delay
78 0-127

Effect send levels

Control CC Values
General Purpose Effect 1 (Reverb Send Level)
part_general_purpose_effect_1_reverb_send_level
91 0-127
General Purpose Effect 3 (Chorus Send Level)
part_general_purpose_effect_3_chorus_send_level
93 0-127

Without a group

Control CC Values
Bank Select (MSB)
part_bank_select_msb
0 0-127
Bank Select (LSB)
part_bank_select_lsb
32 0-127

Part R

Continuous controllers

Control CC Values
Modulation
drum_modulation
1 0-127
Breath type
drum_breath_type
2 0-127
Foot Type
drum_foot_type
4 0-127
Volume
drum_volume
7 0-127
Panpot
drum_panpot
10 0-127
Expression
drum_expression
11 0-127

General purpose controllers

Control CC Values
General Purpose Controller 1
drum_general_purpose_controller_1
16 0-127
General Purpose Controller 2
drum_general_purpose_controller_2
17 0-127
General Purpose Controller 3
drum_general_purpose_controller_3
18 0-127
General Purpose Controller 4
drum_general_purpose_controller_4
19 0-127
General Purpose Controller 5
drum_general_purpose_controller_5
80 0-127
General Purpose Controller 6
drum_general_purpose_controller_6
81 0-127
General Purpose Controller 7
drum_general_purpose_controller_7
82 0-127
General Purpose Controller 8
drum_general_purpose_controller_8
83 0-127

Switches and pedals

Control CC Values
Hold 1
drum_hold_1
64 0-127
Sostenuto
drum_sostenuto
66 0-127
Soft
drum_soft
67 0-127

Sound controllers

Control CC Values
Resonance
drum_resonance
71 0-127
Release Time
drum_release_time
72 0-127
Attack time
drum_attack_time
73 0-127
Cutoff
drum_cutoff
74 0-127
Decay Time
drum_decay_time
75 0-127

Effect send levels

Control CC Values
General Purpose Effect 1 (Reverb Send Level)
drum_general_purpose_effect_1_reverb_send_level
91 0-127
General Purpose Effect 3 (Chorus Send Level)
drum_general_purpose_effect_3_chorus_send_level
93 0-127

Without a group

Control CC Values
Bank Select (MSB)
drum_bank_select_msb
0 0-127
Bank Select (LSB)
drum_bank_select_lsb
32 0-127

Where these facts come from

Source documents

How they were read

THIRTEEN ENGLISH DOCUMENTS, AND WHAT IS IN EACH. Roland's manuals page lists them (manuals_page), and every one was opened and searched. The MIDI Implementation (92 sheets) holds the controllers below, the system exclusive address map and a chart. The Parameter Guide (72) holds four models' tone tables, every Rx switch and the system's MIDI settings. The Reference Manual (56) holds the parts, the models, the polyphony and the specifications; it gives no controller a number of its own, and its one print of them is the range a button, a slider or a pedal can be set to, CC01–31, 32 (OFF), 33–95 (reference p. 41). Four Roland Cloud Model Expansion guides hold tone tables: JUPITER-8 (11), JD-800 (17), JX-8P (11) and SH-101 (10). Two more print controller numbers in passing. The Sound List (59) has five in its list of the 112 factory scenes, as what each scene's two sliders are set to: ATTAK:CC73, RELES:CC72, CUTOF:CC74, RESO:CC71 and PTIME:CC05 (sound_list pp. 3-6). The Vocal Designer expansion's guide (13) has one: "A wah effect is applied according to the CC17 (controller number 17) value." (vocal_designer p. 8). The other four print none: the Startup Guide (14), the Editor Owner's Manual (14), the Sound Pack/Wave Expansion guide (4) and the MainStage Profile Usage Guide (2). Notes/4953_extract_juno_x.py reads all thirteen and asserts the counts here.

THE IMPLEMENTATION HAS TWO HALVES AND A CHART, AND THE CONTROLS ARE THE NUMBERS THE HALVES GIVE A HEADING TO. Section 1 is "1. Data Reception" (implementation p. 1) and section 2 "2. Data Transmission" (implementation p. 7), each with a heading for every controller, as roland/jupiter_x's has. Between them they name 44 controller numbers. Four select or carry a parameter, 6 and 38 for data entry and 100 and 101 for the registered parameters; seven are channel mode messages, 120, 121 and 123 to 127. The other 33 are the controls below, bank select among them, as it is wherever a maker numbers it. Twenty-nine have a heading in both halves and four in the reception half alone.

FOUR HAVE NO HEADING UNDER TRANSMISSION, AND THREE OTHER PLACES SAY THEY ARE SENT. Decay Time, Vibrato Rate, Vibrato Depth and Vibrato Delay, 75 to 78, have headings under reception (implementation p. 3) and none under transmission, whose list runs from Cutoff, 74, to General Purpose Controller 5, 80 (implementation p. 8). The chart marks all four o in both columns (implementation p. 92). The transmission half opens its controllers with "By selecting a controller number that corresponds to the setting of parameters of controllers (knobs, etc.), this unit can transmit any control change message." (implementation p. 7) and ends them with a General Controller that takes the four in, "kk = Controller number: 00H - 77H (0 - 31, 33 - 95)" (implementation p. 9). And the address map names all four among what an assignable button, a slider or a pedal can be set to: DECAY:CC75, VRATE:CC76, VDPTH:CC77 and VDLY:CC78 (implementation pp. 12-13). A missing heading denies nothing, so the four state no direction, as the other 29 do not.

THE TWO ASSIGNABLE SLIDERS, THE THREE BUTTONS AND THE TWO PEDALS SEND WHAT THEY ARE SET TO. The same lists run from MOD:CC01 to PHASR:CC95 with 32 as OFF:CC32 (implementation pp. 12-13), which is the Reference Manual's range. The Sound List has the two sliders of its factory scenes on ATTAK:CC73 86 times and RELES:CC72 91, of 224 (sound_list pp. 3-6). The General Controller line's hexadecimal and its decimal do not agree, 77H being 119 where the gloss stops at 95; the chart's row for it is 1-31,33-95, marked o as transmitted and - as recognised (implementation p. 92), and the lists bear the chart's row out. The rest of the panel sends too: "MIDI messages can be sent from the MIDI OUT connector and from USB MIDI OUT when you operate the controllers of the JUNO-X, such as the knobs and keyboard, and the various pedals connected to the rear panel." (reference p. 40), on a page that names no controller number.

EIGHT OF THE CONTROLS ARE RELATIVE. 71 to 78 are each printed as a change about a centre, "vv = Cutoff value (relative change): 00H - 40H - 7FH (-64 - 0 - +63)" (implementation p. 3), and each names the part's parameter it moves: "The Cutoff parameter (SCENE PART EDIT: MODIFY) will change." (implementation p. 3). The format has no word for a relative value, so the range is left to the default and the fact is here: sending 0 to one of these lowers the parameter by 64.

TEN NUMBERS HAVE NO PURPOSE OF THEIR OWN. Breath type, Foot Type and the eight General Purpose Controllers, 2, 4, 16 to 19 and 80 to 83, are each printed with "vv = Control value: 00H - 7FH (0 - 127)" (implementation pp. 1-3) and no parameter. What they reach is a setting: "If you select a controller number that corresponds to an MFX Src 1–4 parameter, the respective effect is applied according to the setting." (implementation p. 1), and the system has four control sources of its own, each set to one of OFF, CC01–CC31, CC33–CC95, BEND, AFT (parameter_guide p. 31). One of the ten has a use printed elsewhere, 17 on the Vocal Designer's wah. Soft, 67, is printed in the same bare form (implementation p. 2), but it is a pedal, and the Parameter Guide has a tone setting for "the soft pedal (CC#67)" (parameter_guide p. 17). Eight of the ten are numbers the tone tables use as well; see below.

EVERY CONTROL NAMES ITS PART, ONCE FOR THE FOUR PARTS AND ONCE FOR PART R, AND SEVEN NUMBERS ARE THE FOUR PARTS' ALONE. "Each scene has five parts: for parts 1–4 you can select a synthesizer tone, and for part R you can select a drum kit tone." (reference p. 5). Each part listens on a channel of its own setting, "Specifies the MIDI receive channel of each part." (parameter_guide p. 5), so none derives its channel from a base, and a control naming no part would mean a channel the instrument does not have. Six entries name a parameter the Parameter Guide marks Part 1–4 only (parameter_guide pp. 4-5): Porta Time, Porta Sw, Legato Sw and the three vibrato offsets, which 5, 65, 68 and 76 to 78 change. The entry for 84 says its glide "is determined by the Portamento Time value." (implementation p. 3), the same parameter. So the four parts carry all 33 numbers and Part R the other 26: 59 controls.

THE TONE PARAMETERS ARE IN CC# COLUMNS IN FIVE OTHER DOCUMENTS, AND THEY ARE COUNTED HERE AND NOT CARRIED. The Parameter Guide has the column on six sheets (parameter_guide pp. 16-21), in four tables: the common parameters of the tones it heads XV-5080, RD-PIANO, PR-A, PR-B, PD-C, PR-D, COMMON, PR-X, 7 rows with a number; JUNO-X, 42; JUNO-106, 22; and JUNO-60, 18. Four expansion guides have five tables more: JUPITER-8, 33 rows (jupiter_8 pp. 8-9); JD-800, 14 in two tables, its common parameters (jd_800 p. 8) and its TONE MFX Group B (jd_800 p. 11); JX-8P, 30 (jx_8p pp. 8-9); and SH-101, 22 (sh_101 p. 8). That is 188 rows in nine tables over 58 distinct numbers, and 24 of the 58 name more than one parameter from one model to another, capitals apart: 119 is KEY MODE on a JUNO-X tone and Unison Sw on an XV-5080 one, and 16 is OSC1 LEVEL on one expansion and PW LEVEL on another. One number stands alone: the JUNO-X table gives FLT KEY FOLLOW 122 (parameter_guide p. 19) where the five other tables with that parameter give it 82, and 122 lies among the numbers MIDI keeps for channel mode messages. No page says it is a slip. A part is loaded with one of the models, "Six types are provided: JUNO-X, JUNO-106, JUNO-60, XV-5080, RD-PIANO, and VOCODER." (reference p. 53), or with one an owner has added, and "Other models can be used with parts 1–4." (reference p. 53). So the meaning of such a number turns on what somebody loaded and not on the channel it arrives on, which no field holds, and carrying the rows would assert that 119 is KEY MODE on a part that might be holding an XV-5080 tone. That is the reading roland/jupiter_x gives its own tables.

TWO LISTS GIVE A TONE'S PARTIALS NUMBERS OF THEIR OWN, WITH NO CC# COLUMN. Those tones' table of partial parameters has no CC# column and a note above it, "The CCs that are supported differ with each partial. (p. 30)" (parameter_guide p. 21), and that page prints a List of supported CCs (parameter_guide p. 30): fifteen parameters, each with a number for partials 1 to 4, sixty numbers and none of them twice. The JD-800 guide has a list of the same name (jd_800 p. 12) with the same sixty in the same fours under its own names: Level in the one and TVA:Level in the other are both 16, 17, 18 and 19. Eighteen of the sixty are in no CC# column, so the tone map takes 76 numbers in all.

AND THE TONE MAP CAN BE SWITCHED OFF, BY THE PARAMETER GUIDE. Its tone tables open with a note, "You can set whether control change messages (CC) are transmitted/received using the" (parameter_guide p. 16) Tone CC Map system parameter, which "Sets whether control change messages (CC) for the tone parameters are transmitted/received (ON) or not (OFF)." (parameter_guide p. 32). No page prints its factory setting. None of the four expansion guides names the switch, so that it governs their tables as well is a reading.

ELEVEN NUMBERS ARE IN BOTH MAPS. 5, 16 to 19, 80 to 83, 91 and 93 are controls in the implementation and tone parameters in one table or another. Portamento Time's 5 is the portamento time in every model's table, printed PORTA TIME, Porta Time or Porta time. Of the eight General Purpose Controllers, 16 to 19 are the levels of an oscillator, a sub-oscillator or noise on the tables' models, 80 and 83 are envelope times, 81 is the filter's envelope depth and 82 its key follow; in the two lists the eight are a partial's level and two settings of its filter envelope. 91 and 93, the reverb and chorus send levels, are RV Level and CH Level in the JD-800's second table, which "can only be used when a tone from the JD-800 model is selected for part 1." (jd_800 p. 11). The implementation does not mention the tone map, and no page says which a number does when a model's table claims it.

NO NRPN, BY THE CHART. Its Control Change rows end 98,99, crossed in both columns, "NRPN LSB,MSB" (implementation p. 92), and 100,101, received and not sent. The halves have no entry for 98 or 99, and three registered parameters, pitch bend sensitivity, channel fine tuning and channel coarse tuning (implementation p. 4). Four sentences of the halves still speak of NRPN in passing, where the JUPITER-X's have three: data entry carries, in each half, "the value of the parameter specified by RPN/NRPN" (implementation pp. 1, 7), the registered parameter null leaves both unspecified, and Reset All Controllers lists an NRPN among what it leaves unset (implementation p. 4). The supplementary material has two more, on ending with the null and on sending number and value in order (implementation p. 91). The chart is what that instrument's documents lack, and it is explicit, so nrpn is none here.

MODE 3, AND THE MODE MESSAGES ARE RECEIVED. The chart gives Mode 3 as the default in both columns, with Mono, Poly as the messages transmitted and Mode 3, 4(M=1) as those recognised (implementation p. 92).

CLOCK BOTH WAYS, BY A SETTING, AND NO START OR STOP. The clock is "Not received when the Sync Mode parameter (SYSTEM:SYNC/TEMPO) is INT." (implementation p. 5) and "Transmitted when the Sync Mode parameter (SYSTEM:SYNC/TEMPO) is INT." (implementation p. 10); the chart circles it in both columns and crosses Commands in both (implementation p. 92). Sync Mode takes AUTO, INT, MIDI, USB COM, USB MEM and a second setting chooses the connector the clock leaves by (parameter_guide p. 31).

A SIXTH CHANNEL SWITCHES SCENES. Program change and bank select on a part's channel choose that part's tone. A scene is chosen on a channel of the system's own: "Specifies the MIDI receive channel on which MIDI messages (program change and bank select) from an external MIDI device can be received to switch programs." (parameter_guide p. 31), 1 to 16 or off. The scenes are bank select 085 with 000 and 001 and programs 1 to 128, SCENE | 1 - 256 (implementation p. 1). That channel is no part here and carries no control below.

SYSTEM EXCLUSIVE UNDER ROLAND'S ID, WITH A SWITCH EACH WAY. Data requests and data sets are received, and "Universal Non-realtime System Exclusive Message and Data Set 1 (DT1) are the only System Exclusive messages transmitted by this unit." (implementation p. 10). By the chart's third note it is sent only with Transmitted Edit Data on or when a data request arrives (implementation p. 92), and the system has Rx Exclusive and Tx Edit (parameter_guide p. 32).

NOT RECORDED: