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 Wheelmod_wheel |
1 fine 33 |
0-16383 |
Glide Rateglide_rate |
5 fine 37 |
0-16383 |
KB Octave Up & Downkb_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 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 |
Oscillators
| Control | CC | Values |
|---|---|---|
OSC 1 Waveshapeosc_1_waveshape |
9 fine 41 |
0-16383 |
OSC Tuneosc_tune |
10 fine 42 |
0-16383 |
OSC 2 Freqosc_2_freq |
12 fine 44 |
0-16383 |
OSC Mod Amountosc_mod_amount |
13 fine 45 |
0-16383 |
OSC 2 Waveshapeosc_2_waveshape |
14 fine 46 |
0-16383 |
Sub OSC Waveshapesub_osc_waveshape |
71 | 0-127 |
OSC Mod Destinationosc_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 Octaveosc_1_octave |
75 | 0-31 four_foot, 32-63 eight_foot, 64-95 sixteen_foot, 96-127 thirty_two_foot |
OSC 2 Octaveosc_2_octave |
76 | 0-31 four_foot, 32-63 eight_foot, 64-95 sixteen_foot, 96-127 thirty_two_foot |
SYNC 2-1sync_2_1 |
77 | 0-63 off, 64-127 on |
Mixer
| Control | CC | Values |
|---|---|---|
Noise Levelnoise_level |
8 fine 40 |
0-16383 |
OSC 1 Levelosc_1_level |
15 fine 47 |
0-16383 |
OSC 2 Levelosc_2_level |
16 fine 48 |
0-16383 |
Sub OSC Levelsub_osc_level |
17 fine 49 |
0-16383 |
FB/Ext In Levelfeedback_external_level |
18 fine 50 |
0-16383 |
Filter
| Control | CC | Values |
|---|---|---|
Filter Cutofffilter_cutoff |
19 fine 51 |
0-16383 |
OSC 2 - Cutoff Amountosc_2_cutoff_amount |
20 fine 52 |
0-16383 |
Filter Resonancefilter_resonance |
21 fine 53 |
0-16383 |
Filter KB Trackingfilter_kb_tracking |
78 | 0-42 zero, 43-84 two_three, 85-127 one_one |
Filter Res Bassfilter_res_bass |
79 | 0-63 off, 64-127 on |
Filter Modefilter_mode |
109 | 0-31 four_p_lp, 32-63 two_p_lp, 64-95 bp, 96-127 hp |
Envelopes
| Control | CC | Values |
|---|---|---|
Filter EG Amountfilter_eg_amount |
22 fine 54 |
0-16383 |
Filter EG Attackfilter_eg_attack |
23 fine 55 |
0-16383 |
Filter EG Decayfilter_eg_decay |
24 fine 56 |
0-16383 |
Filter EG Sustainfilter_eg_sustain |
25 fine 57 |
0-16383 |
Filter EG Releasefilter_eg_release |
26 fine 58 |
0-16383 |
Amp EG Attackamp_eg_attack |
28 fine 60 |
0-16383 |
Amp EG Decayamp_eg_decay |
29 fine 61 |
0-16383 |
Amp EG Sustainamp_eg_sustain |
30 fine 62 |
0-16383 |
Amp EG Releaseamp_eg_release |
31 fine 63 |
0-16383 |
F ENV VELocityf_env_velocity |
80 | 0-63 off, 64-127 on |
A ENV VELocitya_env_velocity |
81 | 0-63 off, 64-127 on |
F ENV LOOPf_env_loop |
112 | 0-63 off, 64-127 on |
A ENV LOOPa_env_loop |
113 | 0-63 off, 64-127 on |
Multitrigmultitrig |
114 | 0-63 single_trig, 64-127 multitrig |
Output
| Control | CC | Values |
|---|---|---|
Master Volumemaster_volume |
7 fine 39 |
0-16383 |
LFO 1
| Control | CC | Values |
|---|---|---|
LFO 1 Ratelfo_1_rate |
3 fine 35 |
0-16383 |
LFO 1 Depthlfo_1_depth |
4 fine 36 |
0-16383 |
LFO 1 Waveshapelfo_1_waveshape |
83 | 0-31 triangle, 32-63 saw, 64-95 ramp, 96-127 square |
LFO1 Destinationlfo_1_destination |
85 | 0 cutoff, 32 osc_2_freq, 64 osc_wave, 96 sub_wave |
LFO KB Resetlfo_kb_reset |
93 | 0-63 off, 64-127 on |
LFO SYNClfo_sync |
102 | 0-63 off, 64-127 on |
LFO 2
| Control | CC | Values |
|---|---|---|
LFO 2 Ratelfo_2_rate |
27 fine 59 |
0-16383 |
LFO 2 - Pitchlfo_2_pitch |
116 | 0-63 off, 64-127 on |
LFO 2 - Cutofflfo_2_cutoff |
117 | 0-63 off, 64-127 on |
LFO 2 - Amplfo_2_amp |
118 | 0-63 off, 64-127 on |
Seq/arp
| Control | CC | Values |
|---|---|---|
Tempotempo |
2 fine 34 |
0-16383 |
Pedals
| Control | CC | Values |
|---|---|---|
Expression Pedalexpression_pedal |
11 fine 43 |
0-16383 |
Sustain Pedalsustain_pedal |
64 | 0-63 off, 64-127 on |
Holdhold |
73 | 0-63 off, 64-127 on |
MIDI
| Control | CC | Values |
|---|---|---|
MPE 3rd Dimension of Controlmpe_third_dimension |
74 | 0-127 |
Where these facts come from
Source documents
- Messenger User Manual, dated 18 June 2025, its user manual, read on 2 October 2026 (the file read).
- Messenger Firmware 1.0.8 Release Notes, 1.0.8, dated 29 July 2025, its release notes, read on 2 October 2026 (the file read).
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.