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.

Korg M1 MIDI implementation

The MIDI implementation of the Korg M1: what it answers to, and the 8 controls it offers.

At a glance

Firmware
Not recorded.
MIDI channel
Any one of 1 to 16.
Parts
Timbre, 8 of them: each on a MIDI channel of its own, taking notes, controls, and program changes.
MIDI mode
3: omni off, poly.
Voices
16, or 8 as set on the instrument, shared by the parts that play notes.
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
Not recorded.
Program change
Received and sent, with 100 presets.
MIDI clock
Sent and received.
Start and stop
Sent and received.
Control change
8 controls, in the tables below.
NRPN
Not recorded.
System exclusive
Supported.

Controls

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

On the base MIDI channel

Control CC Values
Pitch MG
pitch_mg
1 0-127
VDF modulation
vdf_modulation
2 0-127
Volume
volume
7 0-127
Sustain
sustain
64 0-127

Timbre

Control CC Values
Pitch MG
timbre_pitch_mg
1 0-127
Received, never sent
VDF modulation
timbre_vdf_modulation
2 0-127
Received, never sent
Volume
timbre_volume
7 0-127
Received, never sent
Sustain
timbre_sustain
64 0-127
Received, never sent

Where these facts come from

Source documents

How they were read

M1 Owner's Manual, 138 sheets, which is the whole of what Korg publishes about this instrument's MIDI: the M1 MIDI Implementation Chart is its p. 135, the specifications its p. 134, the MIDI settings in Global Mode its pp. 115-118, the eight-timbre Multi mode its pp. 72-73, and system exclusive its pp. 122-131. Korg's download page is cited for what else it offers and for the instrument being out of production.

EVERY NUMBER BELOW WAS READ BY EYE AND NO GATE CAN CHECK ONE OF THEM. The manual is a pure scan - 138 images, no text layer, nothing for pypdf or PyMuPDF to extract - so check_citations.py reports its numbers as not checkable and check_quotations.py reports every quotation here as one it could not read. The quotations are still exact, transcribed from the rendered page, and the pages are cited so a reader can turn to them. yamaha/dx7 is the other definition in this corpus with that property and roland/juno_106 was read the same way.

THE CHART IS COMPLETE AND LEGIBLE, which is the good news. "M1 MIDI IMPLEMENTATION CHART" (p. 135) has every conventional row filled in, four footnotes and two lettered remarks, and nothing in it was hard to read at 110 dots per inch.

TEN CONTROL CHANGE NUMBERS ARE LISTED AND FOUR ARE PARAMETERS. The chart's Control Change block gives 1 "Pitch MG", 2 "VDF modulation" (p. 135), 6 "Data entry (MSB)" (p. 135), 7 "Volume", 38 "Data entry (LSB)" (p. 135), 64 "Sustain", 96 "Data increment" (p. 135), 97 "Data decrement" (p. 135), 100 "LSB of RPC for master tune" (p. 135) and 101 "MSB of RPC for master tune" (p. 135). Six of those ten are how a registered parameter travels, not parameters themselves, and they are held back exactly as oberheim/teo_5 and oberheim/ob_x8 hold theirs back. 100 and 101 are also the only two rows in the whole block marked transmitted "x" and "Recognized" "o", so the instrument answers to them and never sends them - which is what an RPN target looks like.

AND AN ELEVENTH ROW IS NOT A CONTROL AT ALL. Under the ten, the chart prints "0-101" against "Sending and receiving Seq. Data only" (p. 135). That is the sequencer passing control changes through, not the synthesiser answering to them, and nothing in the range 0 to 101 is a control here beyond the four above. It is recorded in this account rather than as a control, because a consumer that read it as one would offer 102 controllers that do nothing to the sound.

EVERYTHING ELSE IS SYSTEM EXCLUSIVE, which the manual says in as many words: "Parameter change by system exclusive is used to edit Programs with the use of a computer" (p. 116). The exclusive section runs from p. 122 to p. 131 and defines twenty-nine numbered message types. This format holds none of them, as it holds none of behringer/model_d's, and the four controls above are the whole of what a panel can send this instrument without them.

FOUR GLOBAL SWITCHES DECIDE WHETHER ANY OF IT ARRIVES, AND THEY DO NOT DIVIDE THE WAY A READER WOULD GUESS. "MIDI FILTERING" (p. 116) has Combination/Program Change, After Touch, Control Change and Exclusive, each "DIS/ENA", and "When set to DIS, the selected MIDI data is not received or sent" (p. 116). The chart's footnotes then put each row under one of them - and the ten control change numbers are split between two different switches. The four published below are marked "Transmit/receive if CONTROL is set to ENA in GLOBAL Mode" (p. 135), and so is pitch bend; the six held back - data entry, increment, decrement and the two halves of the RPN - are marked "Transmit/receive if EXCLUSIVE is set to ENA in GLOBAL Mode" (p. 135), because on this instrument they are the machinery of parameter editing rather than performance control. A definition that treats all ten as ordinary controllers names the wrong switch for six of them. So every field below is what the instrument does with its switches on, which is a condition this format cannot carry and the chart states four times.

AND THE DOCUMENT CONTRADICTS ITSELF ABOUT WHICH SWITCH GOVERNS AFTERTOUCH. The chart's lettered remark says channel pressure is gated by the AFTER TOUCH filter: "Transmit/receive when AFTER TOUCH is set to ENA in GLOBAL Mode" (p. 135). The system exclusive section's own tables give "Channel Pressure ( After Touch )" (p. 122) the enable code "C", which that section defines as "Enable when Control is On" (p. 122) - and its key has no code for the AFTER TOUCH filter at all, defining only A, C, P, E and Q. Both readers checked the letter at full resolution and it is a C. One of the two statements is wrong and nothing in the manual says which, so neither is recorded as fact and aftertouch below records only that it is the channel kind.

THE BULK DUMP IS AN EXCEPTION TO THE EXCLUSIVE SWITCH, which the chart does not say and the Global page does: "MIDI data dump can be sent and received when this page is selected regardless of the Exclusive parameter setting of F 5 -2, MIDI Filtering" (p. 118). So the chart's footnote is true of parameter change and untrue of a dump.

THE CLOCK AND THE TRANSPORT GO ONE WAY AT A TIME, AND WHICH WAY IS A SETTING. The chart marks both "o" in both columns with the footnote "When Clock is Internal, it transmits but does not receive. When External, the opposite is true" (p. 135). The Global page agrees from the other side: Clock Source is "INT/EXT", and "The M1 will receive start, stop, continue, song select, and song position data from external MIDI devices only when this function is set to EXT" (p. 115). So both records the pair of settings and not a simultaneous capability.

EIGHT TIMBRES, EACH WITH ITS OWN MIDI CHANNEL, AND A GLOBAL CHANNEL THAT IS NOT ONE OF THEM. "Selection of the MIDI receive channel of each Timbre" (p. 73) over eight rows of "1 ~ 16" (p. 73), and "Playing eight separate Programs simultaneously is possible with multi-channel MIDI data received through MIDI IN, when a different MIDI channel is set for each Timbre" (p. 73). What reaches a timbre is stated: "Program change, pitch bend, after touch and control change parameters receive data over the MIDI channel set for each Timbre" (p. 73). The global channel is separate and governs the keyboard: "When playing the keyboard of the M1, only the Timbres which are set to the same channel as the MIDI Global channel (GLOBAL Mode, F 5-1) will sound" (p. 73), and "Real time performance controls such as joy stick and after touch affect only the Timbres whose channels are the same as the Global channel" (p. 73).

SO EACH OF THE FOUR CONTROLS BELOW IS WRITTEN TWICE. Naming no part it is on the Global channel. The joystick and the pedals send it there, though not when the sequencer is in use: "Usually Global Channel. When using Sequencer, each track's channel." (p. 122). A Program answers it there, and in a Multi only the Timbres set to the Global channel do. Keyed timbre_ it names the part and is received only, because a Timbre's channel is a receive channel and nothing more. A Timbre has one switch for the damper and another for the other three, "control change messages (joy stick, MIDI volume, etc.)" (p. 78). The last sentence quoted from page 73 follows the one about the M1's own keyboard and does not say MIDI. Read as a limit on what a Timbre receives it would contradict the sentence about control change two paragraphs above it on the same page, so it is taken to be about the M1's own joystick, and the page does not say so itself.

THE PRESET COUNT IS A SETTING AND 100 IS ONE OF ITS TWO VALUES. "100 Programs" (p. 134) and "100 Combinations" (p. 134) in the specifications, footnoted "Memory allocation can be changed to 50 Programs and 50 Combinations" (p. 134) - and the Global page offers "100 PROG/100 COMBI/4400 SEQ" (p. 117) or "50 PROG/50 COMBI/7700 SEQ" (p. 117). 100 is recorded because the chart agrees with it from the other side, "Program Change Actual No." (p. 135) being "0 ~ 99" transmitted; a reader whose instrument is set the other way has fifty.

NOT RECORDED: nrpn. The chart has no NRPN row at all, and controllers 98 and 99 appear nowhere in the document - the received-data table steps straight from 97 to 100. What the instrument has is one RPN, and it reaches exactly one parameter: control changes 100 and 101 are "LSB of RPC for master tune" (p. 135) and "MSB of RPC for master tune" (p. 135), RPC being Korg's spelling of RPN, and the exclusive section prints their value bytes as fixed - "RPC Parameter No.(LSB) (M.Tune)" (p. 123) against 1 and "RPC Parameter No.(MSB) (M.Tune)" (p. 123) against 0. That is RPN 0,1, which is the MIDI specification's own Master Fine Tuning, and the chart marks both numbers transmitted "x", so the instrument answers to it and never sends it. The parameter it moves is Global "Master Tune", "-50 ~ +50" in cents (p. 110). An absence with pages behind it rather than an unread one.

SIX MORE CONTROLLER NUMBERS EXIST INSIDE THE INSTRUMENT AND NEVER CROSS THE CABLE. The sequencer's event editor lists control numbers 102 to 107 - VDF Cutoff, two effect switches, two effect controls and Tempo Change - and says of them: "MIDI does not input or output 102 to 107" (p. 105). That is why the chart's pass-through row stops at 101. A reader who finds that table and publishes cc: 102 for VDF Cutoff would be publishing a number the instrument cannot hear, which is the most likely way to get this definition wrong, and it is recorded here because the table is forty pages from the chart that contradicts it.

NOT RECORDED: pitch_bend. The chart marks pitch bend "o" both ways and no page in the manual gives a bend range in semitones, searched for through the Global, Program and Combination sections. The joystick's own range is a Program parameter and is not stated as a MIDI quantity.

NOT RECORDED: a drum note map. The M1 has four Drum Kits of up to 30 sounds, and the key each sound sits on is set by the player: "Key sets the key (C0 to G8) to which the sound is assigned" (p. 114), with "Two or more sounds cannot be assigned to the same key" (p. 114). The manual prints no factory assignment of them, which is the same state as soma/pulsar_23 reached by a different road - that instrument learns its notes, this one has them assigned in a menu. note_map is learned in both: the word covers a note an owner assigns either way, and here it is said of the Drum Kits and of a Program that plays one. Until 2026-10-13 the field was left unset here. The manual draws drum sounds on a keyboard twice, and neither drawing is a map of a kit: one is headed Example: and numbers twenty-two keys without naming one (p. 7), and the other shows how one sound fills the keys beneath it (p. 115). Korg's download page lists M1/Factory Preload Data, a file that was not read (download_page).