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

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

At a glance

Firmware
Not recorded.
MIDI channel
Any one of 1 to 16.
MIDI mode
3: omni off, poly.
Voices
24.
Note range
0 to 127: C-1 to G9, counting middle C as C4.
Velocity
Sent and received. Release velocity is ignored.
Aftertouch
None, sent or answered.
Pitch bend
Not recorded.
Program change
Received and sent, with 250 presets.
MIDI clock
Sent and received.
Start and stop
Sent and received.
Control change
20 controls, in the tables below.
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("korg/electribe") has loaded them.

Oscillator

Control CC Values
Osc Pitch
osc_pitch
80 0-127
Osc Glide
osc_glide
81 0-127
Osc Edit
osc_edit
82 0-127

Filter

Control CC Values
Filter Resonance
filter_resonance
71 0-127
Filter Cutoff
filter_cutoff
74 0-127
Filter EG Int.
filter_eg_int
83 0-127

Modulation

Control CC Values
Modulation Depth
modulation_depth
85 0-127
Modulation Speed
modulation_speed
86 0-127

EG

Control CC Values
EG Decay/Release
eg_decay_release
72 0-127
EG Attack
eg_attack
73 0-127

Amp

Control CC Values
Amp Level
amp_level
7 0-127
Amp Pan
amp_pan
10 0-127

Insert effect

Control CC Values
Insert Fx Edit
insert_fx_edit
87 0-127
Insert Fx Off/On
insert_fx_on
104 0 off, 127 on

Master effect

Control CC Values
Master Fx X
master_fx_x
102 0-127
Master Fx Y
master_fx_y
103 0-127
MFX Send Off/On
mfx_send_on
105 0 off, 127 on
Master Fx Off/On
master_fx_on
106 0 off, 127 on

Without a group

Control CC Values
Bank Select (MSB)
bank_select_msb
0 0
Bank Select(LSB)
bank_select_lsb
32 0-1

Where these facts come from

Source documents

How they were read

MIDI Implementation, Revision 1.00, a plain text file of 852 lines and no pages: the transmitted channel messages, the system real-time messages, the device inquiry reply, the system exclusive function IDs and the search-device reply; then the recognised receive data in the same five parts; then a complete system exclusive layout, with a table for a pattern, one for each of the sixteen parts at its own offset, and one for the global data. The Parameter Guide (English, 18 pages) names the states the global settings step through, and the Owner's Manual (112 pages, six languages in one file) carries the specifications. Both are cited by page; the implementation has none, so nothing cites a page of it.

AND THE OWNER'S MANUAL CARRIES A CHART OF ITS OWN, on p. 110 - past the English section, past the French and German ones, among the back matter where a reader of the English pages would never meet it. It is a second witness and it does not agree with the implementation everywhere; what it settles and what it muddies are both below.

EIGHTEEN PARAMETER CONTROL CHANGES, AND BANK SELECT'S TWO.

CC 7, 10, 71 to 74, 80 to 83, 85 to 87 and 102 to 106 - the amplifier's level and pan, the filter's three, the two envelope stages, the oscillator's three, the modulation's two, and the two effects' six between them - and bank select on 0 and 32. A hundred numbers between 0 and 119 are used by nothing, and the document says nothing about any of them.

WHAT GATES THEM ALL IS ONE GLOBAL SETTING, and the implementation has a column for it that most charts do not. Every parameter row is marked "S : Enabled When Global MIDI RECEIVE/SEND FILTER is 'Off'" (midi_impl), and bank select and program change are marked "P : Enabled when Global MIDI RECEIVE/SEND FILTER is 'Off' or 'Short'" (midi_impl). The guide says what those mean from the player's side: "MIDI RECEIVE FILTER ... OFF: All messages are received. Short: Short messages (Note On/Off, Control Change) are not received. Short + Program: Short messages and program change messages are not received" (guide p. 6), and a MIDI SEND FILTER does the same outward. So a single setting silences all eighteen parameters, Short still passing bank select, and the three channel mode messages at 120, 121 and 123 are the only ones marked "A :Always Enabled" (midi_impl).

SIXTEEN PARTS, AND NO WAY THE DOCUMENTS GIVE OF CHOOSING ONE. The system exclusive layout carries a parameter table for each part at its own offset, so a part's whole state can be read and written that way - but the part parameter table has no MIDI channel field, the only channel in the document is the global one, and no page of any of the three documents says which part a received note or control change acts on. On the panel the parts are chosen with the "<Part, Part>" (manual p. 9) buttons and "You can change sound tone of the selected part by using the knob in the edit section" (manual p. 9), and the implementation marks every parameter row as sent by "P.C." - panel control. The reasonable reading is that a controller reaches whichever part is selected, as the knobs do. It is a reading and not a statement, so there is no parts block below and this paragraph is where it is said. WHAT A PART WILL HOLD IS SET PER PART AND NOT PUBLISHED AS A NUMBER. "VOICE ASSIGN ... [Mono1, Mono2, Poly1, Poly2] Specifies the polyphony of the selected part" (guide p. 4), and the specification gives "The maximum number of sound (per part): MAX, 4 voices" (manual p. 19), printed with a comma after MAX and "number of sound" (manual p. 19) in the singular. The guide agrees from the other side: "You can record up to four note numbers in each target step" (p. 5).

THREE PARAMETERS CHANGE MEANING WITH A TYPE THAT HAS NO CONTROLLER. Osc Edit (CC 82), Insert Fx Edit (CC 87) and the modulation's two depend on which oscillator, insert effect and modulation type the part is set to - and those types are reachable only by system exclusive: the part table gives "Oscillator Type | 0~500" (midi_impl), "Filter Type | 0~16" (midi_impl) and "Modulation Type | 0~71" (midi_impl), with no control change for any of them. So a host can edit a sound it cannot choose, and five hundred and one oscillator types are numbered in a table that names none of them.

THE PATTERN MAP DOES NOT REACH THE LAST TWO PATTERNS. The instrument is "capable of creating and storing up to 250 patterns" (manual p. 8), and the footnote both bank select rows point at gives the mapping as "Pattern 001 - 127 mm,bb,pp : 00,00,01~7F / 00,00,001~127" (midi_impl) and "Pattern 128 - 250 00,01,01~79 / 00,01,001~121" (midi_impl). The second line offers 121 numbers for 123 patterns, so 248 of the 250 can be chosen this way and the maker's arithmetic does not close. Recorded rather than resolved.

THE CHART AND THE IMPLEMENTATION DISAGREE IN FIVE PLACES, and none of them changes a number below. The chart names three controls differently: 102 and 103 are "Master Fx X" and "Master Fx Y" in the implementation and "TouchPad X" and "TouchPad Y" in the chart, and 106 is "Master Fx Off/On" (midi_impl) against "TouchPad On/Off" (manual p. 110) - and the implementation's own motion-sequence destination list calls that third one "MFX XY Pad On/Off" (midi_impl), a third name. The chart misspells a fourth: 72 is "EG Delay/Release" (manual p. 110) there and "EG Decay/Release" (midi_impl) in the implementation, which the part parameter table confirms. The labels below are the implementation's. The chart also puts All Notes Off on "123-127" where the implementation recognises 120, 121 and 123 and never mentions 124 to 127; it says clock is transmitted when the clock mode is "Int / Ext.Sync" (manual p. 110) where the implementation's footnote says "Internal"; and it claims the instrument "also supports inquiry messages and master volume" (manual p. 110) where the implementation's section for universal real-time exclusive messages reads "Not applicable" (midi_impl) - and master volume is a universal real-time message, so those two cannot both be true.

ONE THING THE CHART SETTLES THAT NOTHING ELSE COULD. Its Mode row reads X transmitted and 3 received, which is what midi.mode below records: the instrument answers as Omni Off, Poly. Nothing in the implementation says so.

A SWITCH IS SENT NARROWER THAN IT IS HEARD. The transmitted footnote for the three on/off controls is "00,7F : Off,On" (midi_impl) and the received one is "00,01~7F : Off,On" (midi_impl) - so the instrument sends 0 or 127 and accepts anything from 1 upward as On. choices below carries 0 and 127, which is what it sends and therefore what is safest to send it; a host that sent 1 would also be understood, and one that read 1 back would never see it.

NOT RECORDED: aftertouch and pitch bend, and both are checked absences rather than silences. The two tables list every status byte this instrument answers to and sends, and there are four of them - 8n, 9n, Bn and Cn. Neither An nor Dn is among them, so no kind of pressure arrives; nor is En, so pitch bend does not either. aftertouch: none says the first; there is no field that says the second, so it is here.

NOT RECORDED: which number means which named state, for any parameter. The implementation gives ranges and the guide gives the states in words for the global settings only. The oscillator, filter and modulation types are numbered in the exclusive layout and named nowhere in it.

NOT RECORDED: the kind of MIDI socket, because there is no field for one. The specification gives "MIDI OUT jack, MIDI IN jack, USB connector (micro USB B type)" (manual p. 19) and the included items are "Owner's manual, AC adapter, MIDI conversion cable x 2" (manual p. 19) - so MIDI is on a stereo mini jack and reaches a DIN socket through an adapter, as on the volca series.