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.

Arturia MatrixBrute MIDI implementation

The MIDI implementation of the Arturia MatrixBrute: what it answers to, and the 80 controls it offers, on firmware 2.0.3.1411.

At a glance

Firmware
This page describes firmware 2.0.3.1411.
MIDI channel
Any one of 1 to 16.
Parts
Lower Part: on a MIDI channel of its own, taking notes.
Voices
Not recorded.
Note range
Not recorded.
Velocity
Not recorded.
Aftertouch
Not recorded.
Pitch bend
How far it bends is not recorded, and the range can be changed.
Program change
Received, with 256 presets.
MIDI clock
Received.
Start and stop
Received.
Control change
80 controls, in the tables below.
NRPN
Not recorded.
System exclusive
Not recorded.

Controls

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

Pedals

Control CC Values
Sustain Pedal
sustain_pedal
64 0-127
Expr. Pedal 2
expr_pedal_2
3 0-127
Expr. Pedal 1
expr_pedal_1
4 0-127

VCO 1

Control CC Values
Fine
vco_1_fine
65 0-127
Coarse
vco_1_coarse
66 0-127
Waveform Selection
vco_1_waveform_selection
67 0-127
Sub
vco_1_sub
9 0-127
Ultrasaw
vco_1_ultrasaw
68 0-127
Sawtooth
vco_1_sawtooth
10 0-127
Square
vco_1_square
12 0-127
Triangle
vco_1_triangle
13 0-127
Pulse Width
vco_1_pulse_width
69 0-127
Metalizer
vco_1_metalizer
70 0-127

VCO 2

Control CC Values
Fine
vco_2_fine
71 0-127
Coarse
vco_2_coarse
72 0-127
Waveform Selection
vco_2_waveform_selection
73 0-127
Sub
vco_2_sub
14 0-127
Ultrasaw
vco_2_ultrasaw
74 0-127
Sawtooth
vco_2_sawtooth
15 0-127
Square
vco_2_square
16 0-127
Triangle
vco_2_triangle
17 0-127
Pulse Width
vco_2_pulse_width
75 0-127
Metalizer
vco_2_metalizer
76 0-127

VCO 3 - LFO 3

Control CC Values
Coarse
vco_3_coarse
22 0-127

AUDIO MOD

Control CC Values
VCO 1 > VCO 2
vco_1_vco_2
77 0-127
VCO 1 < VCO 3 > VCO 2
vco_1_vco_3_vco_2
78 0-127
VCF 1 < VCO 3 > VCF 2
vcf_1_vco_3_vcf_2
79 0-127
VCO 1 < Noise > VCF 1
vco_1_noise_vcf_1
80 0-127

MIXER

Control CC Values
VCO 1
mixer_vco_1
18 0-127
VCO 2
mixer_vco_2
19 0-127
VCO 3
mixer_vco_3
20 0-127
Noise
mixer_noise
21 0-127
External
mixer_external
89 0-127

STEINER

Control CC Values
Drive
steiner_drive
81 0-127
Cutoff
steiner_cutoff
23 0-127
Resonance
steiner_resonance
83 0-127
Brute Factor
steiner_brute_factor
82 0-127
Env 1 Amt
steiner_env_1_amt
24 0-127
Steiner Out
steiner_out
7 0-127
Master Cutoff
master_cutoff
27 0-127

LADDER

Control CC Values
Drive
ladder_drive
85 0-127
Brute Factor
ladder_brute_factor
86 0-127
Cutoff
ladder_cutoff
25 0-127
Env 1 Amt
ladder_env_1_amt
26 0-127
Resonance
ladder_resonance
87 0-127
Ladder Out
ladder_out
8 0-127

LFO 1

Control CC Values
Phase
lfo_1_phase
90 0-127
Rate
lfo_1_rate
91 0-127

LFO 2

Control CC Values
Delay
lfo_2_delay
92 0-127
Rate
lfo_2_rate
93 0-127

ENV 1

Control CC Values
Velo / VCF
env_1_velo_vcf
94 0-127
Attack
env_1_attack
102 0-127
Decay
env_1_decay
103 0-127
Sustain
env_1_sustain
28 0-127
Release
env_1_release
104 0-127

ENV 2

Control CC Values
Velo
env_2_velo
95 0-127
Attack
env_2_attack
105 0-127
Decay
env_2_decay
106 0-127
Sustain
env_2_sustain
29 0-127
Release
env_2_release
107 0-127

ENV 3

Control CC Values
Delay
env_3_delay
108 0-127
Attack
env_3_attack
109 0-127
Decay
env_3_decay
110 0-127
Sustain
env_3_sustain
30 0-127
Release
env_3_release
111 0-127

ANALOG EFFECTS

Control CC Values
Delay Time
delay_time
112 0-127
Regeneration
regeneration
113 0-127
Tone / Rate
tone_rate
114 0-127
Width / Depth
width_depth
115 0-127
Dry / Wet
dry_wet
31 0-127

SEQUENCER

Control CC Values
Rate
sequencer_rate
116 0-127
Swing
swing
117 0-127
Gate
gate
118 0-127

WHEELS

Control CC Values
Modulation
modulation
1 0-127
Bend Range
bend_range
119 0-127

GLIDE

Control CC Values
Glide
glide
5 0-127

MACRO KNOBS

Control CC Values
M1
m1
11 0-127
M2
m2
2 0-127
M3
m3
4 0-127
M4
m4
3 0-127

Where these facts come from

Source documents

How they were read

EIGHTY CONTROLS FROM ONE TABLE, BOTH WAYS. 7.1. MIDI Continuous Controller Assignments runs over pp. 49-52 of the manual as eighteen small tables, each a heading over three columns: the parameter's name, MIDI CC and Resolution. The chapter opens "In addition to the keyboard, almost all MatrixBrute's knobs, sliders, and wheels send and respond to MIDI" (manual p. 49); the introduction points to it for "which MIDI Continuous Controllers each fader and knob sends/receives" (manual p. 6); and the pedals "are converted to MIDI, so they appear in the MIDI Out data stream." (manual p. 3). So every control below is recorded both ways, which is the format's default and why none says so - a reading of those pages together, since "almost all" leaves room for exceptions that none of them names. Both directions are settings, MIDI param send and MIDI param receive (manual p. 56), described together as "MIDI param send and receive - Turns MIDI from the panel on and off." (manual p. 53). The table is drawn with real rules and a text layer, and was read by the column each cell sits in.

TWO NUMBERS CARRY TWO CONTROLS EACH, AND THE MANUAL SAYS SO. Expr. Pedal 2 and M4 are both 3, Expr. Pedal 1 and M3 both 4 (manual pp. 49, 52), and under the table: "If you connect expression pedals 1 or 2 to the rear panel, they have duplicate CC assignments to Macro knobs 3's and 4's (to the left of the keyboard)." (manual p. 52). The macro knobs' own page agrees, "they all send MIDI Continuous Controllers (CC#11, 2, 4, and 3, in that order)" (manual p. 25), and in the matrix "Note that both Expression pedals and the corresponding M 3 / M4 knobs are summed before being routed to the Matrix." (manual p. 39). No page says what a received 3 or 4 moves, the knob's value or the pedal's, so a consumer sending one cannot say which it means; both rows are carried because both are what the maker printed. Every other number is used once: 80 rows on 78 numbers.

THIRTY-TWO ROWS ARE 7-bit/14-bit AND NONE NAMES ITS FINE HALF. "Many of the knobs on the front panel can send high-resolution 14-bit MIDI data." (manual p. 53), behind Enable 14-bit automation, and firmware 1.1.0.73 fixed "No more conflict with LSB messages when 14-bit mode is off" (release_notes). So the fine halves exist and are sent, and no document numbers one. The pattern is suggestive and is not a statement: the 32 rows sit on 30 numbers, every number from 1 to 31 but 6, and the table uses nothing from 32 to 63, which is the block the MIDI specification gives the fine halves of 0 to 31. Every other row is 7-bit. That is what an instrument pairing each controller with the number 32 above it would look like, and the Moog definitions here carry lsb only because their documents print it. Nothing here is carried on a pattern.

THE 2019 EDITION GIVES VCO 1'S Metalizer AS 10, AND THE CURRENT ONE AS 70. The two English editions' chapter 7 agree in every other row and differ otherwise only in their page references: Metalizer 10 in edition 2.0.1 (manual_2_0_1 p. 52) and 70 in 2.0.3 (manual p. 49). 70 is carried, on more than the edition's date. 10 is VCO 1 Sawtooth's number in both editions, and the one sentence about shared assignments names only the two pedals and macro knobs 3 and 4; and 65 to 70 is a run that VCO 2's table repeats as 71 to 76, row for row, with Metalizer last in both. Edition 2.0.1 is cited so that a reader can see the difference.

ENV 2'S TABLE IS HEADED AS THE FILTER ENVELOPE, AND EVERY OTHER PAGE MAKES IT THE AMPLIFIER'S. The table reads ENV 2 (VCF) Parameters, and its first row Velo / VCF (manual p. 51), as ENV 1's does. The envelope pages say "ENV 2 (VCA) (voltage-controlled amplifier) controls the overall volume level of the sound" (manual p. 31) and give the slider as "Velo/VCA (ENV 2 only) When this slider's all the way down, the VCOs sound at their maximum level, no matter how hard or softly you play" (manual p. 32); the guided tour says "ENV 2 is always hardwired to control the MatrixBrute's VCAs" (manual p. 12); and the table's own filter rows are Env 1 Amt (manual pp. 50-51), for the envelope p. 30 calls "the one dedicated to the VCFs" (manual p. 30). The heading and those pages cannot both be true, so the heading's (VCF) is not carried: the group is ENV 2 and controller 95's label is Velo, the words every statement shares. More pages call the slider VCA than VCF - Velo/VCA on pp. 12 and 32, ENV 2 (VCA)'s slider on pp. 42 and 44 - but the label is the table's to give, and Velo in the group ENV 2 names the slider without taking a side. Its number is not in question. One sentence points the other way: a guided-tour bullet that opens "ENV 1 is hardwired to the two filters' Cutoffs" (manual p. 13) ends by saying the filters' Env Amt knob must be set to a non-zero value "so ENV 2 can affect that filter" (manual p. 13). Its own first sentence, the table's Env 1 Amt and p. 30 all say ENV 1, so the labels are carried as the table prints them.

MASTER CUTOFF IS LISTED UNDER THE STEINER FILTER (manual p. 50), and the filter pages say "Master Cutoff is a prominent knob that sweeps both filters' cutoffs together." (manual p. 29). It is grouped as the table groups it, and this sentence says what it does.

SEVERAL OF THESE NUMBERS MEAN SOMETHING ELSE IN THE MIDI SPECIFICATION. 7 is Channel Volume there and here Steiner Out, by its name the Steiner filter's output level, though no page says what it does; 8 is Balance and here Ladder Out; 10 is Pan and here VCO 1's sawtooth level; 11 is Expression and here macro knob M1; 2 is Breath Controller and here M2. So a sequencer sending a routine volume message moves whatever Steiner Out is, whenever the instrument is set to receive controllers. 1 is the modulation wheel, 64 the sustain pedal, which the manual calls standard, and 5, portamento time in the specification, is Glide.

ONE PART, AND THE REST ON THE INPUT CHANNEL. Input MIDI Channel - All, 1-16, None and Output MIDI Channel - 1-16 (manual p. 53), with "The MatrixBrute receives only on this MIDI Channel when the Lower Part MIDI Channel is set to None." (manual p. 53). That second channel is the lower part: "This is the MIDI Channel on which the lower half of the MatrixBrute receives when the Voice mode is set to Duo Split." (manual p. 53). It is recorded as receiving notes and nothing more, because the manual says the lower half receives there and never says a controller reaches it; every control names no part, which puts it on the input channel. Firmware 2.0 fixed "In Duo-Split lower and upper MIDI channel can now be properly adjusted" (release_notes), which calls the input channel the upper part's; and in Duo-Split "The pitchbender will only affect this upper part" (manual p. 21). Mode is not recorded: Omni is one of the input channel's settings (manual p. 55), and no page gives a factory setting for it.

THREE VOICE MODES, AND TWO PAGES DISAGREE ABOUT ONE OF THEM. "Monophonic is the standard voice mode." (manual p. 21); paraphonic mode "splits the three oscillators, one per note played, so that you can play up to 3 notes at once" (manual p. 21); Duo-Split puts a different sound on each half of the keyboard. But Note Priority "Determines what happens when you play more voices than are available (one in Monophonic voice mode and two in the other voice modes)." (manual p. 24). Three and two cannot both be how many notes paraphonic mode plays, nothing outside the pair settles it, so voicing_modes is not recorded, and nor is polyphony: the voice mode is a panel setting and no page gives the one it starts in. paraphonic is recorded, because in that mode "all 3 of the oscillators share the same filters and VCA settings" (manual p. 21).

VELOCITY IS NOT RECORDED AS RECEIVED. Velocity is row K of the matrix's sources (manual p. 39), two sliders set how much it moves ENV 1 and ENV 2 (manual p. 32), and in monophonic mode "all the oscillators will play when you press a key (or send MIDI or CV information)." (manual p. 21). No page says in so many words that a note's velocity received over MIDI does what the keyboard's does, so the field is left out. Until 2026-10-13 it said received, read from those three pages together. Firmware 2.0 fixed "No more note OFF when note velocity value is 0" (release_notes), which does not say whether it means notes played or notes received, and is not used.

NOT RECORDED, AFTERTOUCH, ALTHOUGH THE KEYBOARD HAS IT. "The keys are pressure-sensitive when you keep pushing after the note is triggered." (manual p. 38), it is row J of the matrix's sources, and "Pressure sensitivity - Lets you adjust the keyboard aftertouch response." (manual p. 54). No page says whether it is channel or polyphonic pressure, or that it is sent or answered to over MIDI at all, and those are what the field says.

PROGRAM CHANGE IS RECEIVED AND A SETTING: "MIDI Program Change commands switch Presets." (manual p. 54), switched by Pr.Ch on row E (manual p. 56). "MatrixBrute stores 16 banks of 16 Presets (total 256)." (manual p. 8), which is twice what one program change reaches, and no page names bank select or says which presets a program change reaches. Whether it sends one is not stated.

CLOCK AND TRANSPORT ARE RECEIVED, AND NOTHING SAYS EITHER IS SENT. "External Sync may come from three sources: MIDI In, MIDI over USB, and the Sync port." (manual p. 40). The manual names no transport message, and the release notes are read for one: 2.0.1 fixed a stuck note "when holding a key and pressing play on Master device" (release_notes), with the instrument following a master; 2.0.2 says "Arp and Seq can now start without receiving a MIDI start message" (release_notes), which reads as a start message having been needed before, and so received; and 2.0.1 added "Song position pointer handling" (release_notes) without a direction. Firmware 2.0 fixed "Clock out is no longer reseted to 48 ppq when USB slaved" (release_notes); 48 ppq is one of the Sync port's rates (manual p. 53), and that port is for pre-MIDI equipment, so the line is read as the Sync port's clock and not a MIDI one. The two lists of clock sources differ, USB, MIDI, Sync for the editor (manual p. 53) and INT, CLK, USB, MIDI on the panel (manual p. 55), and both include MIDI.

THE BEND RANGE IS A CONTROL OF ITS OWN. "Bend Range sets how far the pitch wheel bends up or down, up to a maximum of ± 1 octave." (manual p. 22), and it is controller 119 below, so programmable is recorded. "The center position is up or down a fifth." (manual p. 22) is where the knob's centre puts it, not a value it starts at, and no page gives one, so semitones is not.

NOTHING PUBLISHED OFFERS A WAY TO REASSIGN THESE NUMBERS. "All the MIDI settings are in Arturia's MIDI Control Center application" (manual p. 49), and neither the editor's list of them (manual pp. 53-55) nor the front panel's (manual pp. 55-56) assigns a controller. The editor's own manual lists "No controller map: DrumBrute, MatrixBrute" (mcc_manual p. 20); it is version 1.0 of 2017, where the editor is now 1.23.0.134, and it is still the manual Arturia offers. So the numbers are the ones chapter 7 prints.

WHAT IT SENDS IS SWITCHABLE TOO, AND NONE OF IT IS A FIELD HERE. "MIDI out select - The choices are Off, USB, MIDI, or MIDI + USB." (manual p. 53); with controllers switched off "The keyboard still sends notes when it's off." (manual p. 53); the sequencer and arpeggiator "send MIDI notes" (manual p. 49), behind Sequencer/Arp Sends Notes (manual p. 54); the octave buttons' transposition "affects the instrument locally as well as over MIDI." (manual p. 23); and with local control off "all the panel controls and the keyboard get sent out over MIDI" (manual p. 55).

NOT RECORDED, ALSO: system exclusive, NRPN and the note range. The MIDI Control Center "is a librarian for presets and sequences, and it's used to configure the instrument's MIDI settings" (manual p. 6), which needs some protocol, and none is published; no page mentions NRPN, and chapter 7 is a list of controllers rather than a full chart, so its silence is not a checked absence; and the 49-key keyboard transposes by up to two octaves (manual p. 23), which says nothing about which notes arriving over MIDI it sounds.