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.

Sequential Fourm MIDI implementation

The MIDI implementation of the Sequential Fourm: what it answers to, and the 100 controls it offers.

At a glance

Firmware
Not recorded.
MIDI channel
Any one of 1 to 16.
Voices
4.
Note range
Not recorded.
Velocity
Sent and 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 512 presets.
MIDI clock
Sent and received.
Start and stop
Sent.
Control change
92 controls, in the table below.
NRPN
Supported, and preferred to CC. 90 of the controls below have one.
System exclusive
Supported.

Controls

In the order the definition gives them, by group. Under each control is the name a program calls it by, once pymidiinstrumentdefs.load("sequential/fourm") has loaded them.

Control CC NRPN Values
Bank Select MSB
bank_select_msb
0 0-3
Mod Wheel
mod_wheel
1 0-127
Breath Controller
breath_controller
2 0-127
Pitch Bend_Range
pitch_bend_range
3 26
MSB 0, LSB 26
0-12
Foot Controller
foot_controller
4 0-127
Data Entry MSB
data_entry_msb
6 0-127
Master Volume
master_volume
7 0-127
Expression Pedal
expression_pedal
11 0-127
Osc1_Octave
osc1_octave
12 1
MSB 0, LSB 1
0-4
Osc1_Freq
osc1_freq
13 3
MSB 0, LSB 3
0-127, or 0-1400 by NRPN
Osc1_Sync
osc1_sync
14 7
MSB 0, LSB 7
0-1
Osc1_Saw
osc1_saw
15 9
MSB 0, LSB 9
0-1
Osc1_Pulse
osc1_pulse
16 11
MSB 0, LSB 11
0-1
Osc1_PW
osc1_pw
17 13
MSB 0, LSB 13
0-127
Osc1_Level
osc1_level
18 15
MSB 0, LSB 15
0-127
Osc2_Octave
osc2_octave
19 2
MSB 0, LSB 2
0-6
Osc2_Freq
osc2_freq
20 5
MSB 0, LSB 5
0-127, or 0-1400 by NRPN
Osc2_Tri
osc2_tri
21 8
MSB 0, LSB 8
0-1
Osc2_Saw
osc2_saw
22 10
MSB 0, LSB 10
0-1
Osc2_Pulse
osc2_pulse
23 12
MSB 0, LSB 12
0-1
Osc2_PW
osc2_pw
24 14
MSB 0, LSB 14
0-127
Osc2_Level
osc2_level
25 16
MSB 0, LSB 16
0-127
Noise_On
noise_on
26 19
MSB 0, LSB 19
0-1
Noise_Level
noise_level
27 20
MSB 0, LSB 20
0-127
Noise_Type
noise_type
28 21
MSB 0, LSB 21
0-2, or 0-3 by NRPN
Unison_On
unison_on
29 58
MSB 0, LSB 58
0-1
Unison_Voices
unison_voices
30 59
MSB 0, LSB 59
0-4
Unison_Detune
unison_detune
31 60
MSB 0, LSB 60
0-127
Bank Select LSB
bank_select_lsb
32 0-3
Glide_On
glide_on
33 23
MSB 0, LSB 23
0-1
Glide_Rate
glide_rate
34 25
MSB 0, LSB 25
0-127
Glide Mode
glide_mode
35 24
MSB 0, LSB 24
0-3
KeyMode
keymode
36 83
MSB 0, LSB 83
0-2
Env Retrig
env_retrig
37 52
MSB 0, LSB 52
0-1
Data Entry LSB
data_entry_lsb
38 0-127
Filter_Cutoff
filter_cutoff
39 27
MSB 0, LSB 27
0-127, or 0-1023 by NRPN
Filter_Res
filter_res
40 29
MSB 0, LSB 29
0-127, or 0-255 by NRPN
Filter_KeyTrack
filter_keytrack
41 30
MSB 0, LSB 30
0-1
Filter_KeyAmt
filter_keyamt
42 31
MSB 0, LSB 31
0-2, or 0-127 by NRPN
FiltEnv_Attack
filtenv_attack
43 40
MSB 0, LSB 40
0-127, or 0-255 by NRPN
FiltEnv_Decay
filtenv_decay
44 42
MSB 0, LSB 42
0-127, or 0-255 by NRPN
FiltEnv_Sustain
filtenv_sustain
45 44
MSB 0, LSB 44
0-127
FiltEnv_Release
filtenv_release
46 46
MSB 0, LSB 46
0-127, or 0-255 by NRPN
FiltEnv_VelOn
filtenv_velon
47 48
MSB 0, LSB 48
0-1
FiltEnv_VelAmt
filtenv_velamt
48 50
MSB 0, LSB 50
0-127
FiltEnv_Amt
filtenv_amt
49 53
MSB 0, LSB 53
0-127, or 0-255 by NRPN
AmpEnv_Attack
ampenv_attack
50 41
MSB 0, LSB 41
0-127, or 0-255 by NRPN
AmpEnv_Decy
ampenv_decy
51 43
MSB 0, LSB 43
0-127, or 0-255 by NRPN
AmpEnv_Sustain
ampenv_sustain
52 45
MSB 0, LSB 45
0-127
AmpEnv_Relase
ampenv_relase
53 47
MSB 0, LSB 47
0-127, or 0-255 by NRPN
AmpEnv_VelOn
ampenv_velon
54 49
MSB 0, LSB 49
0-1
AmpEnv_VelAmt
ampenv_velamt
55 51
MSB 0, LSB 51
0-127
LFO_Sync
lfo_sync
56 33
MSB 0, LSB 33
0-1
LFO_Freq
lfo_freq
57 34
MSB 0, LSB 34
0-127, or 0-255 by NRPN
LFO_FreqSync
lfo_freqsync
58 35
MSB 0, LSB 35
0-15
LFO_Shapes
lfo_shapes
59 36
MSB 0, LSB 36
0-15
LFO_RevSaw
lfo_revsaw
60 37
MSB 0, LSB 37
0-1
LFO_SHType
lfo_shtype
61 38
MSB 0, LSB 38
0-5
Arp_On
arp_on
65 110
MSB 0, LSB 110
0-1
Arp_Mode
arp_mode
66 111
MSB 0, LSB 111
0-7
Arp_Range
arp_range
67 112
MSB 0, LSB 112
0-2
Arp_Repeat
arp_repeat
68 113
MSB 0, LSB 113
0-3
Arp_Relatch
arp_relatch
69 114
MSB 0, LSB 114
0-1
Arp_Beatsync
arp_beatsync
70 115
MSB 0, LSB 115
0-1
Seq_Reset
seq_reset
71 116
MSB 0, LSB 116
1-64, or 0-1 by NRPN
Seq_PlayMode
seq_playmode
72 117
MSB 0, LSB 117
0-2, or 0-3 by NRPN
Seq_ModDest
seq_moddest
73 118
MSB 0, LSB 118
0-10, or 0-6 by NRPN
Brightness
brightness
74 0-127
ModSrc_FilterEnvRoute
modsrc_filterenvroute
75 65
MSB 0, LSB 65
0-2
ModSrc_OscBRoute
modsrc_oscbroute
76 66
MSB 0, LSB 66
0-2
ModSrc_LFORoute
modsrc_lforoute
77 67
MSB 0, LSB 67
0-2
ModSrc_FilterEnvAmt
modsrc_filterenvamt
78 68
MSB 0, LSB 68
0-127, or 0-254 by NRPN
ModSrc_OscBAmt
modsrc_oscbamt
79 69
MSB 0, LSB 69
0-127, or 0-254 by NRPN
ModSrc_LFOAmt
modsrc_lfoamt
80 70
MSB 0, LSB 70
0-127, or 0-254 by NRPN
ModDst_FreqASrcRoute
moddst_freqasrcroute
81 72
MSB 0, LSB 72
0-3
ModDst_FreqBSrcRoute
moddst_freqbsrcroute
82 73
MSB 0, LSB 73
0-3
ModDst_PWASrcRoute
moddst_pwasrcroute
83 74
MSB 0, LSB 74
0-3
ModDst_PWBSrcRoute
moddst_pwbsrcroute
84 75
MSB 0, LSB 75
0-3
ModDst_CutoffSrcRoute
moddst_cutoffsrcroute
85 76
MSB 0, LSB 76
0-3
ModDst_AmpSrcRoute
moddst_ampsrcroute
86 77
MSB 0, LSB 77
0-3
ModDst_LFOFreqSrcRoute
moddst_lfofreqsrcroute
87 78
MSB 0, LSB 78
0-3
ModDst_LFOAmtSrcRoute
moddst_lfoamtsrcroute
88 79
MSB 0, LSB 79
0-3
ModSrc_AftertouchAmt
modsrc_aftertouchamt
89 71
MSB 0, LSB 71
0-127, or 0-254 by NRPN
ModDst_ATDest1
moddst_atdest1
92 80
MSB 0, LSB 80
0-3
ModDst_ATDest2
moddst_atdest2
93 81
MSB 0, LSB 81
0-3
ModDst_ATDest3
moddst_atdest3
94 82
MSB 0, LSB 82
0-3
Voice_Volume
voice_volume
95 56
MSB 0, LSB 56
0-127
Clock_BPM
clock_bpm
102 87
MSB 0, LSB 87
15-127, or 30-250 by NRPN
Clock_Div
clock_div
103 88
MSB 0, LSB 88
0-10
Scale
scale
104 84
MSB 0, LSB 84
0-65
Transpose
transpose
105 85
MSB 0, LSB 85
0-4
Category
category
106 86
MSB 0, LSB 86
0-16
Feedback On
feedback_on
17
MSB 0, LSB 17
0-1
Feedback Level
feedback_level
18
MSB 0, LSB 18
0-127
Amp Env Amt
amp_env_amt
54
MSB 0, LSB 54
0-255
Vintage
vintage
57
MSB 0, LSB 57
0-127
Unison Note 1
unison_note_1
61
MSB 0, LSB 61
0-60
Unison Note 2
unison_note_2
62
MSB 0, LSB 62
0-60
Unison Note 3
unison_note_3
63
MSB 0, LSB 63
0-60
Unison Note 4
unison_note_4
64
MSB 0, LSB 64
0-60

Where these facts come from

Source documents

How they were read

Fourm MIDI Implementation v1.1, fifteen pages, which is this maker's own document for this instrument alone and names no other product in it. The User Guide is cited where the implementation is silent or wrong about itself.

THE IMPLEMENTATION CARRIES BOTH A CONTROLLER TABLE AND AN NRPN TABLE, and a global decides which is used: the controllers "are transmitted when MIDI Param Send is set to CC, and recognized/received when MIDI Param Receive is set to CC" (midi p. 5), and the NRPNs "are transmitted when MIDI Parameter Send is set to NRPN in globals, and received when MIDI Parameter Receive is set to NRPN in globals" (midi p. 7). Each direction is independently one of NRPN, CC or off, so the two tables are never both live in one direction. The maker prefers NRPN: "NRPNs are the preferred method of parameter transmission, since they cover the complete range of all parameters, while CCs are limited to a range of 128" (guide p. 14).

The controller table is on midi pp. 5-6 and the NRPN table on midi pp. 8-10, with the global parameters on midi p. 11 and the control NRPN on midi p. 12.

ALL 128 CONTROLLER NUMBERS ARE ACCOUNTED FOR. 92 carry a parameter and a range; 27 print --- in both columns; 8 are the channel mode messages, which carry a name and no range at all and are not parameters; and one, 112, is Editor_Byte with its range left as ---, an editor handshake rather than anything a player sets. 92 plus 27 plus 8 plus 1 is 128.

Of those 92, 82 have an NRPN twin and 10 do not - and the ten are exactly the standard MIDI controllers, bank select, mod wheel, breath, foot, data entry, volume, expression and brightness, which are not program parameters and so have no place in a program parameter table. Eight further parameters are reachable by NRPN alone: the two feedback controls, the amplifier envelope amount, Vintage, and the four unison notes. So this file holds 100 controls for 92 controller numbers.

TWO READERS EXTRACTED BOTH TABLES INDEPENDENTLY, WITH DIFFERENT TOOLS ON DIFFERENT INTERPRETERS, AND AGREE CELL FOR CELL ON ALL 128 ROWS. The second worked from the text matrix of every chunk rather than from line order, which is what makes the agreement worth something: the two methods fail differently.

AND THEY AGREE BECAUSE OF ONE ASSERTION. Each sheet of the controller table opens with its own folio as a bare line, and the table happens to span sheets 5 and 6 - so a reader taking every number as a row gets a second controller 5 and a controller 6 whose parameter is the running head, silently overwriting the real Data Entry MSB. The numbers that would have been wrong are exactly 5 and 6. Both readers hit it and both caught it.

WHERE THE TWO TABLES DISAGREE ABOUT SETTINGS RATHER THAN RESOLUTION, and this is the list: Noise Type is 0-2 by controller and 0-3 by NRPN; Filter Key Amount is 0-2 and 0-127; Sequencer Reset is 1-64 and 0-1; Sequencer Play Mode is 0-2 and 0-3; Sequencer Mod Destination is 0-10 and 0-6; and Clock BPM is 15-127 and 30-250. Neither table is reliably the right one - the user guide settles four in the controller's favour and two in the NRPN's - so each is recorded both ways and none is quietly corrected.

THE CONTROLLER TABLE UNDERSTATES WHAT THE INSTRUMENT ANSWERS TO. It marks 96 to 101 as assigned nothing, and the NRPN section uses all six of them - 98 and 99 for the parameter number, 96 and 97 for data increment and decrement, 100 and 101 for the registered parameter number. They are not spare, whatever the table says, and nothing here publishes them as controls.

NOT RECORDED: mode. The document carries no MIDI implementation chart.

THE DOCUMENT CONTRADICTS ITSELF ABOUT HOW MANY PROGRAMS A BANK HOLDS, THREE WAYS. Program change is "0-127 for Programs 1-127 within current Bank" (midi p. 2) on one page and "0-127 for Programs 00-128 within current Bank" (midi p. 3) on the next, which are 127 and 129 programs for 128 values. The user guide gives the instrument 512 programs in four banks, so 128 a bank, and presets records the 512 rather than either of the two wrong statements.

AND ABOUT HOW BANKS ARE NUMBERED, ALSO THREE WAYS: the controller table gives bank select 0-3 both halves, the received table says 1 to 4, and the transmitted table says 0 to 9, which matches nothing. The system exclusive sections say 0 to 3 twice, which agrees with the controller table, so the controls below carry 0-3 and the account records the rest.

NOT RECORDED: a bend range in semitones. The range is a program parameter rather than a fixed property - controller 3 and NRPN 26, both 0-12 - so programmable says it is the player's and no figure is given for a default, which the document does not state.

POLYPHONIC AFTERTOUCH IS RECEIVED, AND THE TRANSMITTED TABLE DOES NOT LIST IT, WHICH IS REMARKABLE FOR THIS INSTRUMENT. The received table carries both polyphonic key pressure and channel pressure; the transmitted table carries channel pressure alone. This is a synthesiser whose guide's first chapter opens by calling it a "compact and powerful 4-voice poly synth equipped with a Tactive™ polyphonic aftertouch keybed" (guide p. 1), so either it cannot send over MIDI what its own keybed generates, or the transmitted table has an omission. The document says what it says and this file records it; it cannot be settled by testing, because this instrument is not on the rig.

NOT RECORDED: transport is recorded as sends and the two statements behind it disagree. The clock mode setting says "Out: MIDI Clock + Start and Stop are sent" (midi p. 1), while the System Real-Time Messages table lists one row, the timing clock, and neither start nor stop. A direct sentence is better evidence than an omission from a list, so sends is recorded and the disagreement is written here rather than resolved.

NOT RECORDED: per_voice_channels. The document says nothing about MPE.

THE DOCUMENT HAS TWO FOOTNOTE MARKERS AND NO FOOTNOTES. MIDI Param Send and MIDI Param Receive carry an asterisk and a dagger in the globals table, and those two marks are the only ones in fifteen pages: the text they point at is not in the document. Whatever qualifies the switch between controllers and NRPNs was cut, and it is exactly the thing a reader of this file would want.

One more sign that this document was adapted from a sibling's: it says it "lists Fourm program parameters 0-352" (midi p. 8) and the table it introduces runs 1 to 726 and has no row 0. Neither bound is right, and no other product is named anywhere in the file.