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.

Moog Music Sub 37 MIDI implementation

The MIDI implementation of the Moog Music Sub 37: what it answers to, and the 116 controls it offers, on firmware 1.2.0.

At a glance

Firmware
This page describes firmware 1.2.0.
MIDI channel
Any one of 1 to 16.
Voices
1 or 2, as set on the instrument, and it can play paraphonically.
Note range
Not recorded.
Velocity
Not recorded.
Aftertouch
Sent. Whether it answers to any is not recorded.
Pitch bend
How far it bends is not recorded, and the range can be changed.
Program change
Received and sent, with 256 presets.
MIDI clock
Sent and received.
Start and stop
Sent.
Control change
75 controls, in the tables below, 28 of them with a fine half on a second controller number.
NRPN
Supported. 98 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("moog/sub_37") has loaded them.

Wheels

Control CC NRPN Values
Mod Wheel
mod_wheel
1
fine 33
402
MSB 3, LSB 18
0-16383
Pitch Bend Up Amount
pitch_bend_up_amount
107 0-24, setting an interval in semitones
Pitch Bend Down Amount
pitch_bend_down_amount
108 0-24, setting an interval in semitones

Keyboard

Control CC NRPN Values
Hold Pedal/Sustain
hold_pedal_sustain
64 0-63 off, 64-127 on
KB Octave
kb_octave
89 0-25 minus_2, 26-50 minus_1, 51-76 zero, 77-101 plus_1, 102-127 plus_2
KB Transpose
kb_transpose
119 0-127
Received, never sent

Output

Control CC NRPN Values
Master Volume
master_volume
7
fine 39
0-16383

Glide

Control CC NRPN Values
Glide Time
glide_time
5
fine 37
417
MSB 3, LSB 33
0-16383
Glide On/Off
glide_on
65 422
MSB 3, LSB 38
0-63 off, 64-127 on
Glide Type
glide_type
85 419
MSB 3, LSB 35
0-42 lcr, 43-84 lct, 85-127 exp
Glide Legato
glide_legato
94 421
MSB 3, LSB 37
0-63 off, 64-127 on
Glide Destination Osc 1/2/Both
glide_dest_osc_1_2_both
102 418
MSB 3, LSB 34
0-42 osc_1_and_2, 43-84 osc_1, 85-127 osc_2
Glide Gate
glide_gate
420
MSB 3, LSB 36
0-1

Arpeggiator

Control CC NRPN Values
Arpeggiator Latch
arpeggiator_latch
69 411
MSB 3, LSB 27
0-63 off, 64-127 on
Arp On/Off
arp_on_off
73 410
MSB 3, LSB 26
0-63 off, 64-127 on
Arp Rate
arp_rate
403
MSB 3, LSB 19
0-16383
Arp Sync
arp_sync
404
MSB 3, LSB 20
0-1
Arp Range
arp_range
405
MSB 3, LSB 21
0-6
Arp Back/Forth
arp_back_forth
406
MSB 3, LSB 22
0-1
Arp Back/Forth Mode
arp_bf_mode
407
MSB 3, LSB 23
0-1
Arp Invert
arp_invert
408
MSB 3, LSB 24
0-1
Arp Pattern
arp_pattern
409
MSB 3, LSB 25
0-5
Arp Gate Length
arp_gate_len
412
MSB 3, LSB 28
0-16383
Arp Clock Division
arp_clk_div
413
MSB 3, LSB 29
0-20
Arp Step 1 Reset
arp_step_1_reset
416
MSB 3, LSB 32
0-1

Mod 1

Control CC NRPN Values
LFO 1 Rate
lfo_1_rate
3
fine 35
423
MSB 3, LSB 39
0-16383
Mod 1 Pitch Amount
mod_1_pitch_amt
4
fine 36
445
MSB 3, LSB 61
0-16383
Mod 1 Filter Amount
mod_1_filter_amt
11
fine 43
446
MSB 3, LSB 62
0-16383
Mod 1 Programmable Destination Amount
mod_1_pgm_dest_amt
20
fine 52
444
MSB 3, LSB 60
0-16383
Mod 1 Osc 1/2 Select
mod_1_osc_1_2_sel
70 447
MSB 3, LSB 63
0-42 osc_1_and_2, 43-84 osc_1, 85-127 osc_2
Mod 1 Source
mod_1_source
71 440
MSB 3, LSB 56
0-20 triangle_lfo, 21-42 square_lfo, 43-63 saw_lfo, 64-84 ramp_lfo, 85-106 sample_and_hold_lfo, 107-127 filter_eg_or_pgm
LFO 1 Range
lfo_1_range
76 424
MSB 3, LSB 40
0-42 low_range, 43-84 med_range, 85-127 hi_range
Mod 1 Destination
mod_1_dest
91 442
MSB 3, LSB 58
0-17 lfo_2_rate, 18-36 vca_level, 37-54 osc_1_wave, 55-72 osc_1_and_2_wave, 73-90 osc_2_wave, 91-109 noise_level, 110-127 eg_time_or_pgm
LFO 1 KB Reset
lfo_1_kb_reset
93 426
MSB 3, LSB 42
0-63 off, 64-127 on
LFO 1 Sync
lfo_1_sync
425
MSB 3, LSB 41
0-1
LFO 1 Clock Division
lfo_1_clk_div
427
MSB 3, LSB 43
0-20
LFO 1 Clock Source
lfo_1_clk_src
428
MSB 3, LSB 44
0-1
LFO 1 Keyboard Tracking
lfo_1_kb_track
430
MSB 3, LSB 46
0-16383
Mod 1 Mod Wheel Amount
mod_1_mwhl_amt
435
MSB 3, LSB 51
0-16383
Mod 1 Velocity Amount
mod_1_velocity_amt
436
MSB 3, LSB 52
0-16383
Mod 1 Pressure Amount
mod_1_pressure_amt
437
MSB 3, LSB 53
0-16383
Mod 1 Controller 4 Amount
mod_1_ctl4_amt
438
MSB 3, LSB 54
0-16383
Mod 1 Programmable Source
mod_1_pgm_src
441
MSB 3, LSB 57
0-7
Mod 1 Programmable Destination
mod_1_pgm_dest
443
MSB 3, LSB 59
0-88

Mod 2

Control CC NRPN Values
LFO 2 Rate
lfo_2_rate
8
fine 40
448
MSB 3, LSB 64
0-16383
Mod 2 Pitch Amount
mod_2_pitch_amt
15
fine 47
470
MSB 3, LSB 86
0-16383
Mod 2 Filter Amount
mod_2_filter_amt
16
fine 48
471
MSB 3, LSB 87
0-16383
Mod 2 Programmable Destination Amount
mod_2_pgm_dest_amt
17
fine 49
469
MSB 3, LSB 85
0-16383
Mod 2 Source
mod_2_source
72 465
MSB 3, LSB 81
0-20 triangle_lfo, 21-42 square_lfo, 43-63 saw_lfo, 64-84 ramp_lfo, 85-106 sample_and_hold_lfo, 107-127 filter_eg_or_pgm
LFO 2 Range
lfo_2_range
78 449
MSB 3, LSB 65
0-42 low_range, 43-84 med_range, 85-127 hi_range
Mod 2 Osc 1/2 Select
mod_2_osc_1_2_sel
88 472
MSB 3, LSB 88
0-42 osc_1_and_2, 43-84 osc_1, 85-127 osc_2
Mod 2 Destination
mod_2_dest
92 467
MSB 3, LSB 83
0-17 lfo_1_rate, 18-36 vca_level, 37-54 osc_1_wave, 55-72 osc_1_and_2_wave, 73-90 osc_2_wave, 91-109 noise_level, 110-127 eg_time_or_pgm
LFO 2 KB Reset
lfo_2_kb_reset
95 451
MSB 3, LSB 67
0-63 off, 64-127 on
LFO 2 Sync
lfo_2_sync
450
MSB 3, LSB 66
0-1
LFO 2 Clock Division
lfo_2_clk_div
452
MSB 3, LSB 68
0-20
LFO 2 Clock Source
lfo_2_clk_src
453
MSB 3, LSB 69
0-1
LFO 2 Keyboard Tracking
lfo_2_kb_track
455
MSB 3, LSB 71
0-16383
Mod 2 Mod Wheel Amount
mod_2_mwhl_amt
460
MSB 3, LSB 76
0-16383
Mod 2 Velocity Amount
mod_2_velocity_amt
461
MSB 3, LSB 77
0-16383
Mod 2 Pressure Amount
mod_2_pressure_amt
462
MSB 3, LSB 78
0-16383
Mod 2 Controller 4 Amount
mod_2_ctl4_amt
463
MSB 3, LSB 79
0-16383
Mod 2 Programmable Source
mod_2_pgm_src
466
MSB 3, LSB 82
0-7
Mod 2 Programmable Destination
mod_2_pgm_dest
468
MSB 3, LSB 84
0-88

Mixer

Control CC NRPN Values
Osc 1 Level
osc_1_level
114 489
MSB 3, LSB 105
0-127
Osc 1 Sub Level
osc_1_sub_level
115 492
MSB 3, LSB 108
0-127, or 0-16383 by NRPN
Osc 2 Level
osc_2_level
116 493
MSB 3, LSB 109
0-127, or 0-16383 by NRPN
Noise Level
noise_level
117 496
MSB 3, LSB 112
0-127, or 0-16383 by NRPN
Feedback/External Level
feedback_ext_level
118 497
MSB 3, LSB 113
0-127, or 0-16383 by NRPN
Osc 1 On
osc_1_on
490
MSB 3, LSB 106
0-127
Sub Osc On
sub_osc_on
491
MSB 3, LSB 107
0-1
Osc 2 On
osc_2_on
494
MSB 3, LSB 110
0-1
Noise On
noise_on
495
MSB 3, LSB 111
0-1
Feedback/External On
fb_ext_on
498
MSB 3, LSB 114
0-1

Oscillators

Control CC NRPN Values
Osc 1 Wave
osc_1_wave
9
fine 41
480
MSB 3, LSB 96
0-16383
Osc 2 Frequency
osc_2_freq
12
fine 44
487
MSB 3, LSB 103
0-16383
Osc 2 Beat Frequency
osc_2_beat_freq
13
fine 45
488
MSB 3, LSB 104
0-16383
Osc 2 Wave
osc_2_wave
14
fine 46
484
MSB 3, LSB 100
0-16383
Osc 1 Octave
osc_1_octave
74 479
MSB 3, LSB 95
0-31 sixteen_foot, 32-63 eight_foot, 64-95 four_foot, 96-127 two_foot
Osc 2 Octave
osc_2_octave
75 483
MSB 3, LSB 99
0-31 sixteen_foot, 32-63 eight_foot, 64-95 four_foot, 96-127 two_foot
Osc 2 Hard Sync On/Off
osc_2_hard_sync_on_off
77 481
MSB 3, LSB 97
0-63 off, 64-127 on
Osc KB Reset On/Off
osc_kb_reset_on_off
81 482
MSB 3, LSB 98
0-63 off, 64-127 on
Osc Duo Mode On/Off
osc_duo_mode_on_off
110 486
MSB 3, LSB 102
0-63 off, 64-127 on
KB Control Lo/Hi
kb_ctrl_lo_hi
111 485
MSB 3, LSB 101
0-31 neither, 32-63 lo, 64-127 hi

Filter

Control CC NRPN Values
Filter Multidrive
filter_multidrive
18
fine 50
501
MSB 3, LSB 117
0-16383
Filter Cutoff
filter_cutoff
19
fine 51
499
MSB 3, LSB 115
0-16383
Filter Resonance
filter_resonance
21
fine 53
500
MSB 3, LSB 116
0-16383
Filter KB Amount
filter_kb_amt
22
fine 54
504
MSB 3, LSB 120
0-16383
Filter Slopes (Poles)
filter_slopes_poles
109 502
MSB 3, LSB 118
0-31 six_db, 32-63 twelve_db, 64-95 eighteen_db, 96-127 twenty_four_db

Filter envelope

Control CC NRPN Values
Filter EG Attack Time
filter_eg_attack_time
23
fine 55
505
MSB 3, LSB 121
0-16383
Filter EG Decay Time
filter_eg_decay_time
24
fine 56
506
MSB 3, LSB 122
0-16383
Filter EG Sustain Time
filter_eg_sustain_time
25
fine 57
507
MSB 3, LSB 123
0-16383
Filter EG Release Time
filter_eg_release_time
26
fine 58
508
MSB 3, LSB 124
0-16383
Filter EG Amount
filter_eg_amt
27
fine 59
503
MSB 3, LSB 119
0-16383
Filter EG KB Amount
filter_eg_kb_amt
79 512
MSB 4, LSB 0
0-127, or 0-16383 by NRPN
Filter EG Reset
filter_eg_reset
82 514
MSB 4, LSB 2
0-63 off, 64-127 on
Filter EG Velocity Amount
filter_eg_vel_amt
86 511
MSB 3, LSB 127
0-127, or 0-16383 by NRPN
Filter EG Delay
filter_eg_delay
103 509
MSB 3, LSB 125
0-127, or 0-16383 by NRPN
Filter EG Hold
filter_eg_hold
105 510
MSB 3, LSB 126
0-127, or 0-16383 by NRPN
Filter EG Multi Trigger
filter_eg_multi_trig
112 513
MSB 4, LSB 1
0-63 off, 64-127 on
Filter EG Sync
filter_eg_sync
515
MSB 4, LSB 3
0-1
Filter EG Loop
filter_eg_loop
516
MSB 4, LSB 4
0-1
Filter EG Latch
filter_eg_latch
517
MSB 4, LSB 5
0-1
Filter EG Clock Division
filter_eg_clk_div
518
MSB 4, LSB 6
0-127
Filter EG Attack Exponential
filter_eg_attk_exp
520
MSB 4, LSB 8
0-1

Amplifier envelope

Control CC NRPN Values
Amp EG Attack Time
amp_eg_attack_time
28
fine 60
0-16383
Amp EG Decay Time
amp_eg_decay_time
29
fine 61
0-16383
Amp EG Sustain Time
amp_eg_sustain_time
30
fine 62
0-16383
Amp EG Release Time
amp_eg_release_time
31
fine 63
0-16383
Amp EG KB Amount
amp_eg_kb_amt
80 0-127
Amp EG Reset
amp_eg_reset
83 0-63 off, 64-127 on
Amp EG Velocity Amount
amp_eg_vel_amt
87 0-127
Amp EG Delay
amp_eg_delay
104 0-127
Amp EG Hold
amp_eg_hold
106 0-127
Amp EG Multi Trigger
amp_eg_multi_trig
113 0-63 off, 64-127 on

Without a group

Control CC NRPN Values
BANK SELECT
bank_select_msb
0 0
BANK SELECT [LSB]
bank_select_lsb
32 0 preset_banks_1_8, 1 preset_banks_9_16

Where these facts come from

Source documents

How they were read

User guide (62pp), the edition Moog's file name calls v1.1: pp. 9, 12, 14-15, 21-23, 25, 27-32, 34-44, 47-48, 50-59, 61, and the change log printed inside the firmware v1.2.0 package.

THIS INSTRUMENT AND THE SUBSEQUENT 37 ARE ONE MIDI IMPLEMENTATION, and that is the first thing to know about this file, because it is why the two definitions carry the same 116 controls. It was established from the documents rather than assumed from the family name: THE FIRMWARE IS ONE IMAGE. Moog's package for each instrument was compared member by member by the SHA-256 of each member's bytes, keyed by content so that a file appearing twice under one name could not be mistaken for a difference. All 18 contents of this instrument's package are in the Subsequent 37's, byte for byte, including the image sub37_1.2.0.mfw and the four system exclusive files that install it by hand. That package adds seven files and all seven are the C6 system exclusive utility.

THE MIDI PAGES ARE THE SAME PAGES. Printed pp. 35, 36 and 37, which is the whole of the MIDI menu, and p. 52, which is the MIDI operations page and the clock division table, were compared character for character with the model name set aside: they are identical, and so is the specifications page at p. 61.

THE CHARTS AGREE IN EVERY ROW THIS ONE HAS. Both NRPN charts hold 123 rows numbered consecutively 402 to 524, and every row matches in name and in value count. The CC charts agree on all 86 rows here; the Subsequent 37's prints one more, ALL NOTES OFF at CC 123, which is a channel mode message and so is a control in neither file. Four of this chart's names differ from that one's only in how the PDF spaces the letters - this file uses Type 1 fonts where the newer manual uses a subset CID font, so an extractor infers word gaps differently and reads AR PEGG IATOR L ATCH for a string that is identical in both. The raw show-string operands were read in both files to confirm the words are the same.

AND MOOG NAMES NO MIDI DIFFERENCE BETWEEN THEM. Every change its notice claims is sonic: "The SUBSEQUENT 37 is a (2-note) paraphonic analog synthesizer with double the mixer headroom of the Sub 37 ... the gain-staging of the Ladder filter has been reshaped to boost harmonic saturation and analog compression ... a re-tuned Multidrive circuit that extends well beyond the grit and growl of the original Sub 37" (product_page), and "Each enhancement maintains the magic and character of its predecessor" (product_page).

WHAT IS STILL NOT SETTLED, and is marked here rather than resolved: whether an instrument of this model answers to CC 123, which the newer manual documents and this one does not mention in 62 pages. The two ship one firmware image, so the likely reading is that it is a difference between the documents; that cannot be established from documents, and there is no Sub 37 here to ask.

TWO TABLES CARRY THE CONTROLS, and they overlap without saying so. The CC chart, pp. 53-55, has 86 rows; the NRPN chart, pp. 56-59, has 123. Every row of both is accounted for below: 75 of the 86 rows are controls here, bank select's two among them, 10 are rows the maker marks RESERVED and 1 is a channel mode message. 98 of the 123 NRPN rows are named and 25 are the maker's own (RESERVED).

57 PARAMETERS ARE IN BOTH CHARTS UNDER DIFFERENT NAMES, which no page points out: "FILTER EG ATTACK TIME" (p. 53) in the CC chart is "F EG ATTACK" (p. 58) in the NRPN chart, "FILTER MULTIDRIVE" (p. 53) is "FILTER DRIVE" (p. 58), "GLIDE" is "GLIDE ON". The pairings come from the maker's own list of parameter names on p. 51, printed there as the choices for the programmable modulation destination, which expands every abbreviation the charts use.

41 CONTROLS CAN BE REACHED BY NRPN ALONE: the arpeggiator's rate, range, pattern, gate length and clock division, each LFO's sync, clock division, clock source and keyboard tracking, each modulation bus's mod wheel, velocity, pressure and controller 4 amounts, the five mixer mute switches, and the filter envelope's sync, loop, latch and clock division. The maker says why: "Since the Sub 37 has over 150 parameters saved with each sound, it is not possible to assign a standard MIDI CC to every parameter. For complete MIDI output from every panel knob and button, you will need to set the KNB NRPN/CC parameter to NRPN mode" (p. 56).

THE AMPLIFIER ENVELOPE IS THE OTHER WAY ROUND: ten controller numbers below and no NRPN at all. The NRPN chart stops four rows into reserved space at 524, having given the filter envelope twelve rows and the amplifier envelope none, while p. 51 lists twelve amplifier envelope parameters by name.

THE NRPN CHART'S VALUE RANGE COLUMN IS A COUNT, not a range, and the ranges below are one less. The reading is the maker's own five times over: the column's 21 is the 21 clock divisions printed on p. 52, its 4 is CC 109's four filter slopes, its 3 is CC 85's three glide types, its 6 is CC 71's six modulation sources, and its 7 is CC 91's seven destinations.

SIX ROWS OF THAT COLUMN CONTRADICT THE MANUAL ITSELF, and they are marked in place rather than corrected. Five are consecutive: NRPN 486 to 490 print 16384, 3, 2, 2 and 21 for OSC 2 DUO MODE, OSC 2 FREQUENCY, OSC 2 BEAT, OSC 1 LEVEL and OSC 1 ON, where p. 51 gives those as an on/off control, two frequency offsets, a level and an on/off control. The rows either side of that block are right. The sixth is NRPN 518, F EG CLK DIV, which prints 2 where p. 41 sends the same parameter to the 21 clock divisions of p. 52 in words, and where the chart's three other clock divisions all print 21.

ONE NAMED ROW HAS NO VALUE RANGE PRINTED AT ALL: NRPN 500, FILTER RESONANCE. That is the page rather than the reading, and the Subsequent 37's manual prints the row the same way.

28 CONTROLS ARE 14-BIT PAIRS, printed as "0-127 [MSB], 0-16383[MSB,LSB]" (p. 53) with the fine half 32 above the coarse one, which is the MMA's own pairing. Three further rows are pairs and are reserved. Whether the instrument sends both halves is a setting: CC FORMAT offers 7-BIT and 14-BIT and "use 7-bit (default)" (p. 37).

THE ONE VALUE TABLE THE MANUAL PRINTS FOR A CONTROLLER BELONGS TO A CONTROLLER THE CHART NAMES DIFFERENTLY, which is why its 21 divisions are quoted beside LFO 1 Rate rather than carried as its values. See the comment there.

BANK SELECT IS CARRIED, CC 0 and CC 32, as it is wherever a maker numbers it; what this instrument puts in them is with the two controls and under program_change below. EXCLUDED, and not missed: CC 122 LOCAL CONTROL ON/OFF, a channel mode message, which the validator refuses as a control.

NOT RECORDED, and marked in place: