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 FANTOM-6/7/8 MIDI implementation

The MIDI implementation of the Roland FANTOM-6/7/8: what it answers to, and the 33 controls it offers, on firmware 3.00.

At a glance

Firmware
This page describes firmware 3.00.
MIDI channel
Any one of 1 to 16.
Parts
Zone, 16 of them: each on a MIDI channel of its own, taking notes and controls.
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.
MIDI clock
Sent and received.
Start and stop
Sent and received.
Control change
33 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/fantom_6_7_8") has loaded them.

Zone

Continuous controllers

Control CC Values
Modulation
modulation
1 0-127
Breath type
breath_type
2 0-127
Foot type
foot_type
4 0-127
Portamento Time
portamento_time
5 0-127
Volume
volume
7 0-127
Panpot
panpot
10 0-127
Expression
expression
11 0-127

General purpose controllers

Control CC Values
General Purpose Controller 1
general_purpose_controller_1
16 0-127
General Purpose Controller 2
general_purpose_controller_2
17 0-127
General Purpose Controller 3
general_purpose_controller_3
18 0-127
General Purpose Controller 4
general_purpose_controller_4
19 0-127
General Purpose Controller 5
general_purpose_controller_5
80 0-127
General Purpose Controller 6
general_purpose_controller_6
81 0-127
General Purpose Controller 7
general_purpose_controller_7
82 0-127
General Purpose Controller 8
general_purpose_controller_8
83 0-127

Switches and pedals

Control CC Values
Hold 1
hold_1
64 0-127
Portamento
portamento
65 0-127
Sostenuto
sostenuto
66 0-127
Soft
soft
67 0-127
Legato Foot Switch
legato_foot_switch
68 0-127
Portamento control
portamento_control
84 0-127

Sound controllers

Control CC Values
Resonance
resonance
71 0-127
Release Time
release_time
72 0-127
Attack time
attack_time
73 0-127
Cutoff
cutoff
74 0-127
Decay Time
decay_time
75 0-127
Vibrato Rate
vibrato_rate
76 0-127
Vibrato Depth
vibrato_depth
77 0-127
Vibrato Delay
vibrato_delay
78 0-127

Effect send levels

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

Without a group

Control CC Values
Bank Select (MSB)
bank_select_msb
0 0-127
Bank Select (LSB)
bank_select_lsb
32 0-127

Where these facts come from

Source documents

How they were read

Four documents, all of them read: the MIDI Implementation (67pp, version 1.00 of 1 November 2020), which is where every number below comes from; the Reference Manual (132pp), for the two implementation charts at pp. 128-129 and the settings at pp. 115-117; the Owner's Manual (24pp), for the zones and the specifications; and the seven firmware supplements, for the question of whether any release changed the map.

THE IMPLEMENTATION DOCUMENT PRINTS NO PAGE NUMBERS OF ITS OWN, so a citation to it is a page of the file and page_offset is zero by default rather than by measurement. Both readings confirmed that separately.

IT IS ORGANISED BY DIRECTION, WHICH IS WHY IT WAS READ THAT WAY. Section 1 is what the sound source receives (pp. 1-8), section 2 what it transmits (pp. 8-12), sections 3 and 4 what the sequencer records and plays (pp. 12-14), section 5 the Parameter Address Map (pp. 14-64) and section 6 supplementary material. Sections 3 and 4 are deliberately not read for controls: they say what the recorder does, not what the sound engine answers to. Section 5 holds system exclusive addresses and no controller numbers.

SECTION 2 NAMES FIVE FEWER CONTROLLERS THAN SECTION 1, AND THE DOCUMENT SAYS WHY. Foot type (4), Decay Time (75), Vibrato Rate (76), Vibrato Depth (77) and Vibrato Delay (78) have an entry under reception and none under transmission. That looks like an asymmetry worth recording and it is not, because section 2 opens with this: "By selecting a controller number that corresponds to the setting of parameters of controllers, the FANTOM-6/7/8 can transmit any control change message." (p. 8) It then prints one numberless entry, "General Controller" (implementation p. 10), whose second byte is "Controller number: 00H - 77H (0 - 31, 33 - 95)" (p. 10) - a range that covers all five. The Reference Manual's chart says the same thing in its own way, marking the row "1-31, 33-95" transmitted. So every control below is both, which is this format's default and is why none of them says so.

AND THAT SENTENCE CONTRADICTS ITSELF IN ONE CHARACTER. "00H - 77H" is 0 to 119, not 0 to 95; for the range the same line glosses, the hex would be 00H-1FH and 21H-5FH. The hex and the decimal cannot both be right and the document does not say which it means. Recorded and not resolved - it matters because that one line is the only thing in section 2 that accounts for the five missing controllers.

THE TWO DOCUMENTS AGREE ABOUT CC 17, though this account once said they did not. The implementation document names General Purpose Controller 2 at CC 17, in both of its sound-source sections, and the Reference Manual's chart prints a row for 17, General purpose controller 2, between 16 and 18 (reference p. 128). It is carried here.

FIVE NUMBERS ARE NOT CARRIED, AND THE LINE IS DRAWN ONCE AND SAID OUT LOUD. Data Entry (6 and 38), the RPN selects (100 and 101) and the High Resolution Velocity Prefix (88) are all named in the document and none is a parameter of this instrument: they are how the MIDI specification addresses things and how it extends a note's resolution. That is the same ruling that keeps the channel mode messages out - 120, 121, 123, 124, 125, 126 and 127, which this document also names - drawn one step wider. Bank Select (0 and 32) is carried, as it is wherever a maker numbers it; this file once set it aside with the five, and other definitions followed it there.

EVERY NUMBER WAS READ TWICE AND THE TWO AGREE ON EVERY ONE. The second reading, made without sight of the first, worked from glyph geometry rather than from extracted text and then rendered pages 1-14 and read them by eye. It reports a trap worth passing on: the controller headings are marked with ○, U+25CB, while ● marks a message type, so a pattern looking for ● and a controller number finds the channel mode messages and misses every control change.

NRPN IS A CHECKED ABSENCE, FROM BOTH DOCUMENTS AT ONCE. The implementation document names no NRPN parameter anywhere in 67 pages and gives no heading for controllers 98 and 99, so there is no way to select one; the Reference Manual's chart marks 98 and 99 "x" in both its transmitted and recognised columns. NRPN appears only in passing, in Data Entry's gloss and in the Reset All Controllers table. RPN, by contrast, is received and the document lists exactly four: Pitch Bend Sensitivity, Channel Fine Tuning, Channel Coarse Tuning and RPN null.

EVERY CONTROL BELOW NAMES THE ZONE, BECAUSE A ZONE IS WHAT RECEIVES IT. Each of the sixteen sets the channel it receives on, "Receive Channel 1-16 Specifies the MIDI channel assigned to each zone" (parameter_guide p. 11), and no zone's is set from another channel, so a control naming no part would mean a base channel, which the FANTOM does not have. Beside the zones' own, the system's MIDI settings name one channel more, the Scene Control Channel, which "Specifies the MIDI channel for controlling the scene" (reference p. 115); bank select's note below says what that leaves open. The implementation document puts every channel voice message it receives, control change among them, behind a zone's switch, "Not received when the Zone Receive Switch parameter (ZONE EDIT:LEVEL/PAN) is OFF." (implementation p. 1), and nineteen of the thirty-three below say more of the zone: fourteen change a setting of the zone's own, as 7 does its level and 74 its cutoff offset, and five more, bank select's two with 1, 11 and 64, can each be refused by a filter in the zone (implementation pp. 1 to 4). The other fourteen are tied to the zone by that note alone. What any of them does beyond that is assigned elsewhere: a tone's MFX and matrix controls can take a controller as their source, and so can the four System Control sources, whose settings "allow you to specify MIDI messages that will apply in common" (reference p. 117) to the whole instrument, or in their place a scene's own four (reference p. 117). The matrix controls are reached through a zone: "When a tone with Matrix Control settings is assigned to a zone, confirm that any MIDI messages used for the Matrix Control will be received" (parameter_guide p. 29). For the System Control sources no page says on which channel they must arrive.

NOT RECORDED: the sound generator's polyphony, which no document here states. The Reference Manual mentions the maximum polyphony twice (reference pp. 124 and 126) without a figure, and its specifications give one only for the pad sampler, "Maximum Polyphony: 8" (reference p. 130). And the preset count: program change reaches "Program Number 1-128" (reference p. 128) per the chart and Bank Select chooses the bank. The specifications count the scenes, "128 Scenes x 4 Bank" (reference p. 130), but give the tones only as "Over 3,500 Tones" (reference p. 130). The parameter guide names the tone banks by kind (parameter_guide p. 11), and the bank select table prints the first LSB of each and elides the rest of most (implementation p. 1), so no document here says how many 128-program banks of tones there are.