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 Wheelmod_wheel |
1 fine 33 |
402 MSB 3, LSB 18 |
0-16383 |
Pitch Bend Up Amountpitch_bend_up_amount |
107 | 0-24, setting an interval in semitones | |
Pitch Bend Down Amountpitch_bend_down_amount |
108 | 0-24, setting an interval in semitones |
Keyboard
| Control | CC | NRPN | Values |
|---|---|---|---|
Hold Pedal/Sustainhold_pedal_sustain |
64 | 0-63 off, 64-127 on |
|
KB Octavekb_octave |
89 | 0-25 minus_2, 26-50 minus_1, 51-76 zero, 77-101 plus_1, 102-127 plus_2 |
|
KB Transposekb_transpose |
119 | 0-127 Received, never sent |
Output
| Control | CC | NRPN | Values |
|---|---|---|---|
Master Volumemaster_volume |
7 fine 39 |
0-16383 |
Glide
| Control | CC | NRPN | Values |
|---|---|---|---|
Glide Timeglide_time |
5 fine 37 |
417 MSB 3, LSB 33 |
0-16383 |
Glide On/Offglide_on |
65 | 422 MSB 3, LSB 38 |
0-63 off, 64-127 on |
Glide Typeglide_type |
85 | 419 MSB 3, LSB 35 |
0-42 lcr, 43-84 lct, 85-127 exp |
Glide Legatoglide_legato |
94 | 421 MSB 3, LSB 37 |
0-63 off, 64-127 on |
Glide Destination Osc 1/2/Bothglide_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 Gateglide_gate |
420 MSB 3, LSB 36 |
0-1 |
Arpeggiator
| Control | CC | NRPN | Values |
|---|---|---|---|
Arpeggiator Latcharpeggiator_latch |
69 | 411 MSB 3, LSB 27 |
0-63 off, 64-127 on |
Arp On/Offarp_on_off |
73 | 410 MSB 3, LSB 26 |
0-63 off, 64-127 on |
Arp Ratearp_rate |
403 MSB 3, LSB 19 |
0-16383 | |
Arp Syncarp_sync |
404 MSB 3, LSB 20 |
0-1 | |
Arp Rangearp_range |
405 MSB 3, LSB 21 |
0-6 | |
Arp Back/Fortharp_back_forth |
406 MSB 3, LSB 22 |
0-1 | |
Arp Back/Forth Modearp_bf_mode |
407 MSB 3, LSB 23 |
0-1 | |
Arp Invertarp_invert |
408 MSB 3, LSB 24 |
0-1 | |
Arp Patternarp_pattern |
409 MSB 3, LSB 25 |
0-5 | |
Arp Gate Lengtharp_gate_len |
412 MSB 3, LSB 28 |
0-16383 | |
Arp Clock Divisionarp_clk_div |
413 MSB 3, LSB 29 |
0-20 | |
Arp Step 1 Resetarp_step_1_reset |
416 MSB 3, LSB 32 |
0-1 |
Mod 1
| Control | CC | NRPN | Values |
|---|---|---|---|
LFO 1 Ratelfo_1_rate |
3 fine 35 |
423 MSB 3, LSB 39 |
0-16383 |
Mod 1 Pitch Amountmod_1_pitch_amt |
4 fine 36 |
445 MSB 3, LSB 61 |
0-16383 |
Mod 1 Filter Amountmod_1_filter_amt |
11 fine 43 |
446 MSB 3, LSB 62 |
0-16383 |
Mod 1 Programmable Destination Amountmod_1_pgm_dest_amt |
20 fine 52 |
444 MSB 3, LSB 60 |
0-16383 |
Mod 1 Osc 1/2 Selectmod_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 Sourcemod_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 Rangelfo_1_range |
76 | 424 MSB 3, LSB 40 |
0-42 low_range, 43-84 med_range, 85-127 hi_range |
Mod 1 Destinationmod_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 Resetlfo_1_kb_reset |
93 | 426 MSB 3, LSB 42 |
0-63 off, 64-127 on |
LFO 1 Synclfo_1_sync |
425 MSB 3, LSB 41 |
0-1 | |
LFO 1 Clock Divisionlfo_1_clk_div |
427 MSB 3, LSB 43 |
0-20 | |
LFO 1 Clock Sourcelfo_1_clk_src |
428 MSB 3, LSB 44 |
0-1 | |
LFO 1 Keyboard Trackinglfo_1_kb_track |
430 MSB 3, LSB 46 |
0-16383 | |
Mod 1 Mod Wheel Amountmod_1_mwhl_amt |
435 MSB 3, LSB 51 |
0-16383 | |
Mod 1 Velocity Amountmod_1_velocity_amt |
436 MSB 3, LSB 52 |
0-16383 | |
Mod 1 Pressure Amountmod_1_pressure_amt |
437 MSB 3, LSB 53 |
0-16383 | |
Mod 1 Controller 4 Amountmod_1_ctl4_amt |
438 MSB 3, LSB 54 |
0-16383 | |
Mod 1 Programmable Sourcemod_1_pgm_src |
441 MSB 3, LSB 57 |
0-7 | |
Mod 1 Programmable Destinationmod_1_pgm_dest |
443 MSB 3, LSB 59 |
0-88 |
Mod 2
| Control | CC | NRPN | Values |
|---|---|---|---|
LFO 2 Ratelfo_2_rate |
8 fine 40 |
448 MSB 3, LSB 64 |
0-16383 |
Mod 2 Pitch Amountmod_2_pitch_amt |
15 fine 47 |
470 MSB 3, LSB 86 |
0-16383 |
Mod 2 Filter Amountmod_2_filter_amt |
16 fine 48 |
471 MSB 3, LSB 87 |
0-16383 |
Mod 2 Programmable Destination Amountmod_2_pgm_dest_amt |
17 fine 49 |
469 MSB 3, LSB 85 |
0-16383 |
Mod 2 Sourcemod_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 Rangelfo_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 Selectmod_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 Destinationmod_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 Resetlfo_2_kb_reset |
95 | 451 MSB 3, LSB 67 |
0-63 off, 64-127 on |
LFO 2 Synclfo_2_sync |
450 MSB 3, LSB 66 |
0-1 | |
LFO 2 Clock Divisionlfo_2_clk_div |
452 MSB 3, LSB 68 |
0-20 | |
LFO 2 Clock Sourcelfo_2_clk_src |
453 MSB 3, LSB 69 |
0-1 | |
LFO 2 Keyboard Trackinglfo_2_kb_track |
455 MSB 3, LSB 71 |
0-16383 | |
Mod 2 Mod Wheel Amountmod_2_mwhl_amt |
460 MSB 3, LSB 76 |
0-16383 | |
Mod 2 Velocity Amountmod_2_velocity_amt |
461 MSB 3, LSB 77 |
0-16383 | |
Mod 2 Pressure Amountmod_2_pressure_amt |
462 MSB 3, LSB 78 |
0-16383 | |
Mod 2 Controller 4 Amountmod_2_ctl4_amt |
463 MSB 3, LSB 79 |
0-16383 | |
Mod 2 Programmable Sourcemod_2_pgm_src |
466 MSB 3, LSB 82 |
0-7 | |
Mod 2 Programmable Destinationmod_2_pgm_dest |
468 MSB 3, LSB 84 |
0-88 |
Mixer
| Control | CC | NRPN | Values |
|---|---|---|---|
Osc 1 Levelosc_1_level |
114 | 489 MSB 3, LSB 105 |
0-127 |
Osc 1 Sub Levelosc_1_sub_level |
115 | 492 MSB 3, LSB 108 |
0-127, or 0-16383 by NRPN |
Osc 2 Levelosc_2_level |
116 | 493 MSB 3, LSB 109 |
0-127, or 0-16383 by NRPN |
Noise Levelnoise_level |
117 | 496 MSB 3, LSB 112 |
0-127, or 0-16383 by NRPN |
Feedback/External Levelfeedback_ext_level |
118 | 497 MSB 3, LSB 113 |
0-127, or 0-16383 by NRPN |
Osc 1 Onosc_1_on |
490 MSB 3, LSB 106 |
0-127 | |
Sub Osc Onsub_osc_on |
491 MSB 3, LSB 107 |
0-1 | |
Osc 2 Onosc_2_on |
494 MSB 3, LSB 110 |
0-1 | |
Noise Onnoise_on |
495 MSB 3, LSB 111 |
0-1 | |
Feedback/External Onfb_ext_on |
498 MSB 3, LSB 114 |
0-1 |
Oscillators
| Control | CC | NRPN | Values |
|---|---|---|---|
Osc 1 Waveosc_1_wave |
9 fine 41 |
480 MSB 3, LSB 96 |
0-16383 |
Osc 2 Frequencyosc_2_freq |
12 fine 44 |
487 MSB 3, LSB 103 |
0-16383 |
Osc 2 Beat Frequencyosc_2_beat_freq |
13 fine 45 |
488 MSB 3, LSB 104 |
0-16383 |
Osc 2 Waveosc_2_wave |
14 fine 46 |
484 MSB 3, LSB 100 |
0-16383 |
Osc 1 Octaveosc_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 Octaveosc_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/Offosc_2_hard_sync_on_off |
77 | 481 MSB 3, LSB 97 |
0-63 off, 64-127 on |
Osc KB Reset On/Offosc_kb_reset_on_off |
81 | 482 MSB 3, LSB 98 |
0-63 off, 64-127 on |
Osc Duo Mode On/Offosc_duo_mode_on_off |
110 | 486 MSB 3, LSB 102 |
0-63 off, 64-127 on |
KB Control Lo/Hikb_ctrl_lo_hi |
111 | 485 MSB 3, LSB 101 |
0-31 neither, 32-63 lo, 64-127 hi |
Filter
| Control | CC | NRPN | Values |
|---|---|---|---|
Filter Multidrivefilter_multidrive |
18 fine 50 |
501 MSB 3, LSB 117 |
0-16383 |
Filter Cutofffilter_cutoff |
19 fine 51 |
499 MSB 3, LSB 115 |
0-16383 |
Filter Resonancefilter_resonance |
21 fine 53 |
500 MSB 3, LSB 116 |
0-16383 |
Filter KB Amountfilter_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 Timefilter_eg_attack_time |
23 fine 55 |
505 MSB 3, LSB 121 |
0-16383 |
Filter EG Decay Timefilter_eg_decay_time |
24 fine 56 |
506 MSB 3, LSB 122 |
0-16383 |
Filter EG Sustain Timefilter_eg_sustain_time |
25 fine 57 |
507 MSB 3, LSB 123 |
0-16383 |
Filter EG Release Timefilter_eg_release_time |
26 fine 58 |
508 MSB 3, LSB 124 |
0-16383 |
Filter EG Amountfilter_eg_amt |
27 fine 59 |
503 MSB 3, LSB 119 |
0-16383 |
Filter EG KB Amountfilter_eg_kb_amt |
79 | 512 MSB 4, LSB 0 |
0-127, or 0-16383 by NRPN |
Filter EG Resetfilter_eg_reset |
82 | 514 MSB 4, LSB 2 |
0-63 off, 64-127 on |
Filter EG Velocity Amountfilter_eg_vel_amt |
86 | 511 MSB 3, LSB 127 |
0-127, or 0-16383 by NRPN |
Filter EG Delayfilter_eg_delay |
103 | 509 MSB 3, LSB 125 |
0-127, or 0-16383 by NRPN |
Filter EG Holdfilter_eg_hold |
105 | 510 MSB 3, LSB 126 |
0-127, or 0-16383 by NRPN |
Filter EG Multi Triggerfilter_eg_multi_trig |
112 | 513 MSB 4, LSB 1 |
0-63 off, 64-127 on |
Filter EG Syncfilter_eg_sync |
515 MSB 4, LSB 3 |
0-1 | |
Filter EG Loopfilter_eg_loop |
516 MSB 4, LSB 4 |
0-1 | |
Filter EG Latchfilter_eg_latch |
517 MSB 4, LSB 5 |
0-1 | |
Filter EG Clock Divisionfilter_eg_clk_div |
518 MSB 4, LSB 6 |
0-127 | |
Filter EG Attack Exponentialfilter_eg_attk_exp |
520 MSB 4, LSB 8 |
0-1 |
Amplifier envelope
| Control | CC | NRPN | Values |
|---|---|---|---|
Amp EG Attack Timeamp_eg_attack_time |
28 fine 60 |
0-16383 | |
Amp EG Decay Timeamp_eg_decay_time |
29 fine 61 |
0-16383 | |
Amp EG Sustain Timeamp_eg_sustain_time |
30 fine 62 |
0-16383 | |
Amp EG Release Timeamp_eg_release_time |
31 fine 63 |
0-16383 | |
Amp EG KB Amountamp_eg_kb_amt |
80 | 0-127 | |
Amp EG Resetamp_eg_reset |
83 | 0-63 off, 64-127 on |
|
Amp EG Velocity Amountamp_eg_vel_amt |
87 | 0-127 | |
Amp EG Delayamp_eg_delay |
104 | 0-127 | |
Amp EG Holdamp_eg_hold |
106 | 0-127 | |
Amp EG Multi Triggeramp_eg_multi_trig |
113 | 0-63 off, 64-127 on |
Without a group
| Control | CC | NRPN | Values |
|---|---|---|---|
BANK SELECTbank_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
- Sub 37 User Guide, v1.1, from Moog's file name; the document states none, its user manual, read on 1 October 2026 (the file read).
- MOOG SUB 37 - FIRMWARE UPDATE 1.2.0, 1.2.0, its release notes, read on 1 October 2026 (the file read).
- Subsequent 37 | Moog Music, its product page, read on 1 October 2026 (the file read).
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:
- the note range, since the manual never says which MIDI note numbers the instrument answers to;
- what the 89 programmable modulation destinations are numbered as;
- the MIDI mode;
- and a default for any control, since neither chart has a default column.