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.

Elektron Octatrack MIDI implementation

The MIDI implementation of the Elektron Octatrack: what it answers to, and the 99 controls it offers, on firmware 1.40C.

At a glance

Firmware
This page describes firmware 1.40C.
MIDI channel
Any one of 1 to 16.
Parts
Audio Track, 8 of them: each on a MIDI channel of its own, taking notes and controls.
MIDI Track, 8 of them: each on a MIDI channel of its own, taking controls.
Voices
Not recorded.
Note range
Not recorded.
Velocity
Sent. Whether it is received is not recorded.
Aftertouch
Sent. Whether it answers to any is not recorded.
Pitch bend
Not recorded.
Program change
Received and sent, with 256 presets.
MIDI clock
Sent and received.
Start and stop
Sent and received.
Control change
99 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("elektron/octatrack") has loaded them.

Audio track

Track

Control CC Values
Track level
audio_track_level_7
7 0-127
Received, never sent
Track balance
track_balance
8 0-127
Received, never sent
Track level
audio_track_level_46
46 0-127
Cue level
cue_level
47 0-127
Crossfader
crossfader
48 0-127
Track Mute [0]=Unmuted, [1-127]=Muted
track_mute
49 0-127
Track Solo [0]=No solo, [1-127]=Soloed
track_solo
50 0-127
Track Cue [0]=Not Cued, [1-127]=Cued
track_cue
51 0-127
Track Arm [0]=Trk disarm, [1-127]=Arm
track_arm
52 0-127

SRC

Control CC Values
Playback param #1
audio_playback_param_1
16 0-127
Playback param #2
audio_playback_param_2
17 0-127
Playback param #3
audio_playback_param_3
18 0-127
Playback param #4
audio_playback_param_4
19 0-127
Playback param #5
audio_playback_param_5
20 0-127
Playback param #6
audio_playback_param_6
21 0-127

Amp

Control CC Values
Amp param #1 (Attack)
audio_amp_param_1
22 0-127
Amp param #2 (Hold)
audio_amp_param_2
23 0-127
Amp param #3 (Release)
audio_amp_param_3
24 0-127
Amp param #4 (Volume)
audio_amp_param_4
25 0-127
Amp param #5 (Balance)
audio_amp_param_5
26 0-127
Amp param #6 (N/A)
audio_amp_param_6
27 0-127

LFO

Control CC Values
LFO param #1 (Speed 1)
lfo_param_1
28 0-127
LFO param #2 (Speed 2)
lfo_param_2
29 0-127
LFO param #3 (Speed 3)
lfo_param_3
30 0-127
LFO param #4 (Depth 1)
lfo_param_4
31 0-127
LFO param #5 (Depth 2)
lfo_param_5
32 0-127
LFO param #6 (Depth 3)
lfo_param_6
33 0-127

FX1

Control CC Values
FX1 param #1
fx1_param_1
34 0-127
FX1 param #2
fx1_param_2
35 0-127
FX1 param #3
fx1_param_3
36 0-127
FX1 param #4
fx1_param_4
37 0-127
FX1 param #5
fx1_param_5
38 0-127
FX1 param #6
fx1_param_6
39 0-127

FX2

Control CC Values
FX2 param #1
fx2_param_1
40 0-127
FX2 param #2
fx2_param_2
41 0-127
FX2 param #3
fx2_param_3
42 0-127
FX2 param #4
fx2_param_4
43 0-127
FX2 param #5
fx2_param_5
44 0-127
FX2 param #6
fx2_param_6
45 0-127

Recorder

Control CC Values
Recrdr Arm [0]=Rec disarm, [1-127]=Arm
recrdr_arm
53 0-127
All Arm [0]=All disarm, [1-127]=Arm
audio_all_arm
54 0-127
Pickup SRC AB level
pickup_src_ab_level
57 0-127
Received, never sent
Pickup SRC CD level
pickup_src_cd_level
58 0-127
Received, never sent

Scene

Control CC Values
Scene A Select
audio_scene_a_select
55 0-127
Scene B Select
audio_scene_b_select
56 0-127

MIDI tracks

Control CC Values
MIDI Trk 1 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_1_mute
112 0-127
MIDI Trk 2 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_2_mute
113 0-127
MIDI Trk 3 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_3_mute
114 0-127
MIDI Trk 4 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_4_mute
115 0-127
MIDI Trk 5 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_5_mute
116 0-127
MIDI Trk 6 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_6_mute
117 0-127
MIDI Trk 7 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_7_mute
118 0-127
MIDI Trk 8 Mute [0]=Unmute, [1-127]=Mute
audio_midi_trk_8_mute
119 0-127

Without a group

Control CC Values
Note on [0]=C-1, 127=G9)
note_on
59 0-127
Received, never sent
Note off [0] =C-1, 127=G9)
note_off
60 0-127
Received, never sent
Send request, 0 = all audio CC
send_request_0_all_audio_cc
61 0-127
Received, never sent

MIDI track

Recorder

Control CC Values
All Arm [0]=All disarm, [1-127]=Arm
midi_all_arm
54 0-127
Received, never sent

Scene

Control CC Values
Scene A Select
midi_scene_a_select
55 0-127
Received, never sent
Scene B Select
midi_scene_b_select
56 0-127
Received, never sent

Note

Control CC Values
Playback param #1 (Note)
midi_playback_param_1
16 0-127
Received, never sent
Playback param #2 (Velocity)
midi_playback_param_2
17 0-127
Received, never sent
Playback param #3 (Length)
midi_playback_param_3
18 0-127
Received, never sent
Playback param #4 (Note 2)
midi_playback_param_4
19 0-127
Received, never sent
Playback param #5 (Note 3)
midi_playback_param_5
20 0-127
Received, never sent
Playback param #6 (Note 4)
midi_playback_param_6
21 0-127
Received, never sent

Arpeggiator

Control CC Values
Amp param #1 (Transpose)
midi_amp_param_1
22 0-127
Received, never sent
Amp param #2 (Legato)
midi_amp_param_2
23 0-127
Received, never sent
Amp param #3 (Mode)
midi_amp_param_3
24 0-127
Received, never sent
Amp param #4 (Speed)
midi_amp_param_4
25 0-127
Received, never sent
Amp param #5 (Octave Range)
midi_amp_param_5
26 0-127
Received, never sent
Amp param #6 (Arp Note Length)
midi_amp_param_6
27 0-127
Received, never sent

MIDI LFO

Control CC Values
MIDI LFO param #1 (Speed 1)
midi_lfo_param_1
28 0-127
Received, never sent
MIDI LFO param #2 (Speed 2)
midi_lfo_param_2
29 0-127
Received, never sent
MIDI LFO param #3 (Speed 3)
midi_lfo_param_3
30 0-127
Received, never sent
MIDI LFO param #4 (Depth 1)
midi_lfo_param_4
31 0-127
Received, never sent
MIDI LFO param #5 (Depth 2)
midi_lfo_param_5
32 0-127
Received, never sent
MIDI LFO param #6 (Depth 3)
midi_lfo_param_6
33 0-127
Received, never sent

CTRL 1

Control CC Values
Pitch bend
pitch_bend
34 0-127
Received, never sent
Aftertouch
aftertouch
35 0-127
Received, never sent
CC #1 param
cc_1_param
36 0-127
Received, never sent; The player chooses what it controls
CC #2 param
cc_2_param
37 0-127
Received, never sent; The player chooses what it controls
CC #3 param
cc_3_param
38 0-127
Received, never sent; The player chooses what it controls
CC #4 param
cc_4_param
39 0-127
Received, never sent; The player chooses what it controls

CTRL 2

Control CC Values
CC #5 param
cc_5_param
40 0-127
Received, never sent; The player chooses what it controls
CC #6 param
cc_6_param
41 0-127
Received, never sent; The player chooses what it controls
CC #7 param
cc_7_param
42 0-127
Received, never sent; The player chooses what it controls
CC #8 param
cc_8_param
43 0-127
Received, never sent; The player chooses what it controls
CC #9 param
cc_9_param
44 0-127
Received, never sent; The player chooses what it controls
CC #10 param
cc_10_param
45 0-127
Received, never sent; The player chooses what it controls

MIDI tracks

Control CC Values
MIDI Track Mute [0]=Unmuted, [1-127]=Muted
midi_track_mute
49 0-127
Received, never sent
MIDI Track Solo [0]=No solo, [1-127]=Soloed
midi_track_solo
50 0-127
Received, never sent
MIDI Trk 1 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_1_mute
112 0-127
Received, never sent
MIDI Trk 2 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_2_mute
113 0-127
Received, never sent
MIDI Trk 3 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_3_mute
114 0-127
Received, never sent
MIDI Trk 4 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_4_mute
115 0-127
Received, never sent
MIDI Trk 5 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_5_mute
116 0-127
Received, never sent
MIDI Trk 6 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_6_mute
117 0-127
Received, never sent
MIDI Trk 7 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_7_mute
118 0-127
Received, never sent
MIDI Trk 8 Mute [0]=Unmute, [1-127]=Mute
midi_midi_trk_8_mute
119 0-127
Received, never sent

Where these facts come from

Source documents

How they were read

Octatrack MKII User Manual for OS 1.40C, 148 pages: APPENDIX C: MIDI CONTROL REFERENCE at pp. 137-142, whose two controller tables are every control below; the MIDI settings at pp. 40-41, where the clock, transport, program change and channel architecture are; the MIDI sequencer at p. 90; the CTRL pages at pp. 94-95; the OS upgrade at p. 112; the banks and patterns at p. 17; and the hardware at p. 116. And the MKI's manual for OS 1.40A, for the comparison that establishes one file covers both. And both support pages, for what Elektron publishes.

THE PRINTED FOLIO EQUALS THE SHEET THROUGHOUT, so no page_offset. That was checked on every one of the 148 sheets rather than on a sample: sheets 4 to 147 each print their own number, and only the cover, two sheets of front matter and the back cover carry none.

THE TWO MANUALS' APPENDICES AGREE ON ALL 115 ROWS, WHICH IS WHY THIS FILE COVERS TWO PRODUCTS. They were read by the same extraction code - a comparison of two readings made by two different scripts would be measuring the scripts - and compared on four questions asked separately: the set of controller numbers, the parameter name on each, the two direction marks, and the hexadecimal cell. Nothing differs. That is 115 rows of appendix, of which 99 become controls below - the comparison is of the documents and not of this file.

AND THE OLDER MANUAL MISNUMBERS ITS OWN SECTION, which is the one real difference between the two documents and is worth knowing before searching either. The MKII calls the second controller table C.8; the MKI calls it C.3 - and C.3 is already that manual's SLOTS NOTE MAPPING, so the older edition has two sections numbered C.3 and the newer one corrected it. A reader searching the MKI's manual for C.8 finds nothing.

THE MKII'S SUPPORT PAGE PRINTS A DATE THAT CONTRADICTS THE FILE IT SERVES. The page says its English manual is of "Apr 14, 2021" (mkii_page); the file is named ..._OS1.40C_260827.pdf, sits under /uploads/2026/08/, and its own PDF metadata says it was made on 27 August 2026. Three independent signals against one, so the page's date is stale rather than the file being mislabelled - and a date taken off a maker's page without checking the file would have put this manual five years before the firmware it describes.

THE APPENDIX IS A RULED GRID AND ITS ROWS COME OFF THE RULES, with one trap worth passing on: the sheet the controller table opens on also carries two note-mapping tables with a different number of columns, so taking every rule on that sheet gave six columns for a four-column table. The grid is therefore built from the rules inside a height window rather than from the whole sheet. A sheet may hold more than one table.

THE FIRST COLUMN HOLDS TWO NUMBERS IN ONE CELL - a hexadecimal with a dollar sign and a decimal, inside the same ruled box, which is why the heading is the two words HEX DEC. So the hexadecimal is asserted against the decimal, all 115 rows of it, which costs one line and which caught a real fault in another maker's table at the rank before this one. Here the two agree everywhere.

AND THE MARKS ARE PLACED BY THE GRID AND NEVER BY READING ORDER, because an X in the text layer says nothing at all - only its column does. The second reader reports that a naive search for X also picks up the one inside FX1 param and FX2 param and would have invented transmitted marks on twelve rows.

EVERY NUMBER WAS READ TWICE AND THE TWO READINGS AGREE ON ALL 115 ROWS - on the parameter name, the hexadecimal cell, both direction marks, the map, and the printed page. The second reading used a different library's layout mode on a different interpreter and then checked itself against all four sheets rendered at 200 dpi and read by eye.

THE SECOND READER REPORTS ONE PLACE WHERE THE RENDERING WAS NOT A CONFIRMATION BUT THE ANSWER. The last sheet of the MIDI map carries no column heading and not one row marked in both columns, so there is a single mark position on it and nothing on the sheet itself to say which of the two columns that is. They settled it two ways - by the offset measured against the previous sheet, and by reading the rendered page, where the left cell is visibly empty on all 28 rows. A method that cannot answer from one page needs the page before it or the picture, and saying which was used is part of the reading.

APPENDIX C'S OWN NAMES FOR THE MIDI MAP'S PAGES ARE THE AUDIO MAP'S NAMES, which is the sharpest trap here and the reason the groups below are keyed on the map as well as the name. In C.8, Amp param #1 to #6 are glossed Transpose, Legato, Mode, Speed, Octave Range and Arp Note Length - which are precisely the six parameters sections 15.4.3 and 15.4.4 put on the ARPEGGIATOR pages, not on an amplifier. Likewise C.8's Playback param rows are glossed Note, Velocity, Length and three more notes, which is the NOTE page. A reader grouping on the prefix alone would file the arpeggiator under the amplifier. The bracketed gloss is the evidence.

TEN OF THE MIDI MAP'S CONTROLLERS SET VALUES WHOSE DESTINATION THE OWNER CHOOSES. Controllers 36 to 45 are CC #1 param to CC #10 param, and what they reach is a setting: "CC1-CC4 specifies the CC commands that will be controlled on the CTRL 1 MAIN page" (manual p. 94) and "CC5-CC10 specifies the CC commands that will be controlled on the CTRL 2 MAIN page" (manual p. 95), with a MIDI CC learn mode for choosing them. So the ten numbers are fixed and published and the ten destinations are not, which is a milder form of the owner-editable map the PERKONS HD-01 raised. Nothing below claims a destination, and each of the ten says assignment: slot.

ONE PARAMETER NAME IS AT TWO NUMBERS IN THE AUDIO MAP, with different directions: Track level is controller 7, marked received only, and controller 46, marked both ways. Controller 7 is the MIDI specification's own Channel Volume, so this is the maker giving one parameter a standard address that only listens and an address of its own that also reports. Both are below, told apart by number, because nothing else distinguishes them.

SIXTEEN OF THE 115 ROWS CANNOT BE CONTROLS, AND THE MAKER IS THE REASON. This instrument puts its MIDI track solos on controllers 120 to 127 - eight rows in each map, MIDI Trk 1 Solo to MIDI Trk 8 Solo - and that block is the MIDI specification's channel mode messages. This format refuses them on the rule that a channel mode message means the same on every instrument that has it, which is exactly what this instrument makes untrue: a sequencer sending All Sound Off to it solos a MIDI track.

So they are published, named and numbered here and absent from the controls below, which leaves 99 of the appendix's 115 rows. That is a real loss and it is recorded rather than worked around - the Hydrasynth Explorer met the same thing on four numbers and is handled the same way. Unlike that instrument, this one also puts eight parameters on 112 to 119, which the specification leaves undefined, so the maker has treated the whole of 112 to 127 as free space and only half of it is.

THREE SOCKETS, FROM THE SPECIFICATIONS: "MIDI In/Out/Thru" (manual p. 116), beside a hi-speed USB 2.0 port. That is this maker's habit and its own support pages say so of the whole range - every Elektron except the Model series has all three - which is worth stating because the next rank's instrument has only two.

WHAT IS ABSENT, CHECKED RATHER THAN ASSUMED. The words NRPN and RPN appear nowhere in these 148 pages, and neither does system exclusive, and neither does voices. The first of those is suggestive and is not recorded: see midi below.

EVERY QUOTATION IN THIS FILE'S PROSE CARRIES A LOCATOR, AUDITED BY PAIRING THE QUOTE MARKS: 28 quotations, 28 locators - 27 citing a page and one naming the unpaginated support page - with the seventeen remaining pairs being field values rather than anybody's words.

AND THE AUDIT HAS TO STOP AT THE CONTROLS BLOCK ON THIS INSTRUMENT, WHICH IS NEW. 99 of this file's controls carry a label in quote marks - "Track Mute [0]=Unmuted, [1-127]=Muted" - not because they are quotations but because a YAML flow mapping cannot hold a comma or a bracket bare. A pairing audit run over the whole file reports 113 unlocated quotations and 99 of them are not quotations at all. So the audit is of the prose, and a sweep written for the corpus would need to know that.

THE GAP FROM 61 TO 112 IS REAL AND IS THE MAKER'S. The audio map runs 7, 8, 16 to 61, then 112 to 127, with nothing between - and the second reader checked the rendered pages for exactly that, finding the table closes with a bottom border after 61 and reopens at 112. Nothing was dropped. The manual defines nothing in that span and says why nowhere.

FOUR SMALL FAULTS, KEPT AS PRINTED. Controllers 59 and 60 read Note on [0]=C-1, 127=G9) and Note off [0] =C-1, 127=G9) - an unmatched closing bracket in each, and a stray space that falls after on in one and before the = in the other, so two sibling rows are mis-set in two different ways. Controller 51 doubles a space where its neighbours do not. And controller 27 is Amp param #6 (N/A), a parameter given a slot, a number and a note that it does not apply.

AND THE TWO MAPS MARK CONTROLLERS 112 TO 127 DIFFERENTLY FOR WHAT READS AS THE SAME ROW. The sixteen MIDI track mutes and solos are character-for-character identical in both tables, and the audio map marks them transmitted and received while the MIDI map marks them received only. That is not the document contradicting itself, which is what it looks like: C.8's own introduction says the auto channel "responds to the following CC messages" (manual p. 141), so the whole of C.8 is a receive-only table by construction and all 51 of its rows are marked that way. The two tables describe two routes to one parameter, and only one of them reports back.