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 Messenger MIDI implementation

The MIDI implementation of the Moog Music Messenger: what it answers to, and the 56 controls it offers.

At a glance

Firmware
Not recorded.
MIDI channel
Any one of 1 to 16.
MPE
Received.
Voices
One, so it plays one note at a time.
Note range
0 to 127: C-1 to G9, counting middle C as C4.
Velocity
Sent and received. Release velocity is ignored.
Aftertouch
Channel pressure, one value for every key. It sends aftertouch too.
Pitch bend
7 semitones, and the range can be changed.
Program change
Received and sent, with 256 presets.
MIDI clock
Sent and received.
Start and stop
Sent and received.
Control change
56 controls, in the tables below, 30 of them with a fine half on a second controller number.
NRPN
None.
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/messenger") has loaded them.

Keyboard and left-hand controller

Control CC Values
Mod Wheel
mod_wheel
1
fine 33
0-16383
Glide Rate
glide_rate
5
fine 37
0-16383
KB Octave Up & Down
kb_octave
89 0-25 minus_2_octaves, 26-50 minus_1_octave, 51-75 zero_octave, 76-100 plus_1_octave, 101-127 plus_2_octaves
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

Oscillators

Control CC Values
OSC 1 Waveshape
osc_1_waveshape
9
fine 41
0-16383
OSC Tune
osc_tune
10
fine 42
0-16383
OSC 2 Freq
osc_2_freq
12
fine 44
0-16383
OSC Mod Amount
osc_mod_amount
13
fine 45
0-16383
OSC 2 Waveshape
osc_2_waveshape
14
fine 46
0-16383
Sub OSC Waveshape
sub_osc_waveshape
71 0-127
OSC Mod Destination
osc_mod_destination
72 0-31 one_to_two_fm, 32-63 f_env_to_osc_2_freq, 64-95 f_env_to_osc_2_wave, 96-127 f_env_to_sub_wave
OSC 1 Octave
osc_1_octave
75 0-31 four_foot, 32-63 eight_foot, 64-95 sixteen_foot, 96-127 thirty_two_foot
OSC 2 Octave
osc_2_octave
76 0-31 four_foot, 32-63 eight_foot, 64-95 sixteen_foot, 96-127 thirty_two_foot
SYNC 2-1
sync_2_1
77 0-63 off, 64-127 on

Mixer

Control CC Values
Noise Level
noise_level
8
fine 40
0-16383
OSC 1 Level
osc_1_level
15
fine 47
0-16383
OSC 2 Level
osc_2_level
16
fine 48
0-16383
Sub OSC Level
sub_osc_level
17
fine 49
0-16383
FB/Ext In Level
feedback_external_level
18
fine 50
0-16383

Filter

Control CC Values
Filter Cutoff
filter_cutoff
19
fine 51
0-16383
OSC 2 - Cutoff Amount
osc_2_cutoff_amount
20
fine 52
0-16383
Filter Resonance
filter_resonance
21
fine 53
0-16383
Filter KB Tracking
filter_kb_tracking
78 0-42 zero, 43-84 two_three, 85-127 one_one
Filter Res Bass
filter_res_bass
79 0-63 off, 64-127 on
Filter Mode
filter_mode
109 0-31 four_p_lp, 32-63 two_p_lp, 64-95 bp, 96-127 hp

Envelopes

Control CC Values
Filter EG Amount
filter_eg_amount
22
fine 54
0-16383
Filter EG Attack
filter_eg_attack
23
fine 55
0-16383
Filter EG Decay
filter_eg_decay
24
fine 56
0-16383
Filter EG Sustain
filter_eg_sustain
25
fine 57
0-16383
Filter EG Release
filter_eg_release
26
fine 58
0-16383
Amp EG Attack
amp_eg_attack
28
fine 60
0-16383
Amp EG Decay
amp_eg_decay
29
fine 61
0-16383
Amp EG Sustain
amp_eg_sustain
30
fine 62
0-16383
Amp EG Release
amp_eg_release
31
fine 63
0-16383
F ENV VELocity
f_env_velocity
80 0-63 off, 64-127 on
A ENV VELocity
a_env_velocity
81 0-63 off, 64-127 on
F ENV LOOP
f_env_loop
112 0-63 off, 64-127 on
A ENV LOOP
a_env_loop
113 0-63 off, 64-127 on
Multitrig
multitrig
114 0-63 single_trig, 64-127 multitrig

Output

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

LFO 1

Control CC Values
LFO 1 Rate
lfo_1_rate
3
fine 35
0-16383
LFO 1 Depth
lfo_1_depth
4
fine 36
0-16383
LFO 1 Waveshape
lfo_1_waveshape
83 0-31 triangle, 32-63 saw, 64-95 ramp, 96-127 square
LFO1 Destination
lfo_1_destination
85 0 cutoff, 32 osc_2_freq, 64 osc_wave, 96 sub_wave
LFO KB Reset
lfo_kb_reset
93 0-63 off, 64-127 on
LFO SYNC
lfo_sync
102 0-63 off, 64-127 on

LFO 2

Control CC Values
LFO 2 Rate
lfo_2_rate
27
fine 59
0-16383
LFO 2 - Pitch
lfo_2_pitch
116 0-63 off, 64-127 on
LFO 2 - Cutoff
lfo_2_cutoff
117 0-63 off, 64-127 on
LFO 2 - Amp
lfo_2_amp
118 0-63 off, 64-127 on

Seq/arp

Control CC Values
Tempo
tempo
2
fine 34
0-16383

Pedals

Control CC Values
Expression Pedal
expression_pedal
11
fine 43
0-16383
Sustain Pedal
sustain_pedal
64 0-63 off, 64-127 on
Hold
hold
73 0-63 off, 64-127 on

MIDI

Control CC Values
MPE 3rd Dimension of Control
mpe_third_dimension
74 0-127

Where these facts come from

Source documents

How they were read

User Manual, 38 pages, dated 18 June 2025 and naming no edition: APPENDIX A: MIDI on pp. 34-37, the keyboard and the wheels on pp. 6-7, the rear panel on p. 14, LFO 1 on p. 21, the MIDI channel on p. 29, the CONFIG settings on pp. 30-31, and the firmware and specification pages on p. 32. Firmware 1.0.8's release notes, 4 pages, for the 14-bit switch and for what 1.0.7 moved.

FIFTY-SEVEN ROWS AND FIFTY-SIX CONTROLS. The one that is not here is Data Entry on CC 6 with LSB 38, which is the MIDI specification's own pair rather than a parameter of this instrument; the guide beside this corpus says so in as many words.

THIRTY-ONE OF THEM ARE 14-BIT, and the fine half is always the coarse half plus 32, which is the specification's own pairing. The manual states the arrangement rather than leaving it to be inferred: "Messenger utilizes 14-bit MIDI which uses two different CCs to increase resolution from 127 to 16383, providing for much finer control over each parameter. For example, Mod Wheel sends information on both CC1 and CC33 - the former containing the MSB information and latter LSB. Parameters from Sustain Pedal (CC64) on do not require fine resolution and as such are traditional 7-bit MIDI messages sending a value from 0-127 over a single CC" (p. 35).

THE VALUES COLUMN IS WHY THIS FILE CARRIES BANDS AT ALL. Twenty-one controls are stepped and the manual names every band - "0-31 = TRIANGLE; 32-63 = SAW; 64-95 = RAMP; 96-127 = SQUARE" (manual p. 36) - and one is a list of exact values rather than bands, which is why LFO1 Destination carries choices where the rest carry values. Five more are bipolar over the 14-bit range with 8192 as zero, which the format has no field for and which is noted beside each of them.

TWO OF THE MAKER'S BAND LISTS DO NOT COVER THEIR RANGE, and both are left as printed. OSC Mod Destination gives "32-64" and then "64-95", so 64 is in two bands at once; Filter KB Tracking gives "0-42 = 0; 43-84 = 2/3; 85-126 = 1:1" (manual p. 36), which stops at 126 and says nothing about 127. Bands are recorded by their lowest value, so neither changes what this file sends, and neither is guessed at.

THE MESSENGER ANSWERS TO RPN AND NOT TO NRPN, which is rare enough to be worth saying plainly. "NRPNs No No" in both directions. RPN 00 Pitch Bend Sensitivity, 01 Channel Fine Tune, 02 Channel Coarse Tune and 03 Tuning Program Select are each marked received and not transmitted, and 04 Tuning Bank Select and 05 Modulation Depth Range are marked neither. A seventh is named nowhere in that list and appears in the control table instead: CC 74 is "MPE 3rd Dimension of Control" (manual p. 36), "On/Off via MPE Activation message RPN 6" (manual p. 36).

THAT IS THE WHOLE OF WHAT THE MANUAL SAYS ABOUT MPE. One row of one table, on a synthesiser its own specification calls monophonic. Nothing says whether the instrument allocates a channel per voice, so midi.per_voice_channels is left unrecorded rather than claimed from a single mention. midi.mpe is receives on that row's reading, since an activation message is what a receiver answers to.

THE BEND RANGE IS SEVEN SEMITONES AND SETTABLE FOUR WAYS. "Default pitch bend range is +/- 7 semitones (can be changed in CONFIG menu)" (p. 7), and the ways to change it are RPN 00, CC 107 and CC 108 below for up and down separately, and CONFIG items 1.1 and 1.2.

THOSE TWO CONFIG LISTS DISAGREE WITH EACH OTHER AND ONE OF THEM WITH ITSELF, which is recorded rather than resolved because nothing below rests on it. The up list offers +14, +17, +19 and +24 semitones and names each correctly; the down list offers -17, -19, -22 and -24, and labels -17 "5th below octave" (manual p. 30) and -19 "4th below octave" (manual p. 30), which is the pair the other way round.

THREE PLACES IN THE MANUAL DISAGREE WITH THE APPENDIX, and the appendix is followed in all three because the panel agrees with it. The body says the oscillator octave offers "16', 8', 4' and 2'" (p. 14) where the panel illustration on that page and on p. 6, and CC 75 and CC 76 below, give 4', 8', 16' and 32'. The appendix names CC 85's third destination "OSC WAVE" where the panel legend and the body say the waveshape of oscillator 1 - "either the filter CUTOFF, the FREQuency of OSC 2, the WAVEshape of OSC 1" (p. 21) - which matters because CC 72's bands three rows above say "OSC 2 WAVE". And the chart gives transmitted note numbers as 0 to 127 on an instrument with 32 keys and two octaves of transposition either way, which is the protocol's range rather than the keyboard's.

BANK SELECT IS CLAIMED AND NEVER MAPPED. "Bank Select Response Yes Yes" (p. 34) and 256 patches in sixteen banks (p. 32), and neither CC 0 nor CC 32 appears anywhere in the control table. So how to reach the second half of the presets is not published.

AND ALL FOUR MODES ARE MARKED SUPPORTED ON A MONOPHONIC SYNTHESISER. Mode 1 and Mode 3 are Omni-On Poly and Omni-Off Poly, both Yes in both directions (p. 34), against "POLYPHONY Monophonic" (p. 32). That is what the maker printed; midi.mode is left unset because the chart states no default and because what Poly could mean here is not said.