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 Pedalsustain_pedal |
64 | 0-127 |
Expr. Pedal 2expr_pedal_2 |
3 | 0-127 |
Expr. Pedal 1expr_pedal_1 |
4 | 0-127 |
VCO 1
| Control | CC | Values |
|---|---|---|
Finevco_1_fine |
65 | 0-127 |
Coarsevco_1_coarse |
66 | 0-127 |
Waveform Selectionvco_1_waveform_selection |
67 | 0-127 |
Subvco_1_sub |
9 | 0-127 |
Ultrasawvco_1_ultrasaw |
68 | 0-127 |
Sawtoothvco_1_sawtooth |
10 | 0-127 |
Squarevco_1_square |
12 | 0-127 |
Trianglevco_1_triangle |
13 | 0-127 |
Pulse Widthvco_1_pulse_width |
69 | 0-127 |
Metalizervco_1_metalizer |
70 | 0-127 |
VCO 2
| Control | CC | Values |
|---|---|---|
Finevco_2_fine |
71 | 0-127 |
Coarsevco_2_coarse |
72 | 0-127 |
Waveform Selectionvco_2_waveform_selection |
73 | 0-127 |
Subvco_2_sub |
14 | 0-127 |
Ultrasawvco_2_ultrasaw |
74 | 0-127 |
Sawtoothvco_2_sawtooth |
15 | 0-127 |
Squarevco_2_square |
16 | 0-127 |
Trianglevco_2_triangle |
17 | 0-127 |
Pulse Widthvco_2_pulse_width |
75 | 0-127 |
Metalizervco_2_metalizer |
76 | 0-127 |
VCO 3 - LFO 3
| Control | CC | Values |
|---|---|---|
Coarsevco_3_coarse |
22 | 0-127 |
AUDIO MOD
| Control | CC | Values |
|---|---|---|
VCO 1 > VCO 2vco_1_vco_2 |
77 | 0-127 |
VCO 1 < VCO 3 > VCO 2vco_1_vco_3_vco_2 |
78 | 0-127 |
VCF 1 < VCO 3 > VCF 2vcf_1_vco_3_vcf_2 |
79 | 0-127 |
VCO 1 < Noise > VCF 1vco_1_noise_vcf_1 |
80 | 0-127 |
MIXER
| Control | CC | Values |
|---|---|---|
VCO 1mixer_vco_1 |
18 | 0-127 |
VCO 2mixer_vco_2 |
19 | 0-127 |
VCO 3mixer_vco_3 |
20 | 0-127 |
Noisemixer_noise |
21 | 0-127 |
Externalmixer_external |
89 | 0-127 |
STEINER
| Control | CC | Values |
|---|---|---|
Drivesteiner_drive |
81 | 0-127 |
Cutoffsteiner_cutoff |
23 | 0-127 |
Resonancesteiner_resonance |
83 | 0-127 |
Brute Factorsteiner_brute_factor |
82 | 0-127 |
Env 1 Amtsteiner_env_1_amt |
24 | 0-127 |
Steiner Outsteiner_out |
7 | 0-127 |
Master Cutoffmaster_cutoff |
27 | 0-127 |
LADDER
| Control | CC | Values |
|---|---|---|
Driveladder_drive |
85 | 0-127 |
Brute Factorladder_brute_factor |
86 | 0-127 |
Cutoffladder_cutoff |
25 | 0-127 |
Env 1 Amtladder_env_1_amt |
26 | 0-127 |
Resonanceladder_resonance |
87 | 0-127 |
Ladder Outladder_out |
8 | 0-127 |
LFO 1
| Control | CC | Values |
|---|---|---|
Phaselfo_1_phase |
90 | 0-127 |
Ratelfo_1_rate |
91 | 0-127 |
LFO 2
| Control | CC | Values |
|---|---|---|
Delaylfo_2_delay |
92 | 0-127 |
Ratelfo_2_rate |
93 | 0-127 |
ENV 1
| Control | CC | Values |
|---|---|---|
Velo / VCFenv_1_velo_vcf |
94 | 0-127 |
Attackenv_1_attack |
102 | 0-127 |
Decayenv_1_decay |
103 | 0-127 |
Sustainenv_1_sustain |
28 | 0-127 |
Releaseenv_1_release |
104 | 0-127 |
ENV 2
| Control | CC | Values |
|---|---|---|
Veloenv_2_velo |
95 | 0-127 |
Attackenv_2_attack |
105 | 0-127 |
Decayenv_2_decay |
106 | 0-127 |
Sustainenv_2_sustain |
29 | 0-127 |
Releaseenv_2_release |
107 | 0-127 |
ENV 3
| Control | CC | Values |
|---|---|---|
Delayenv_3_delay |
108 | 0-127 |
Attackenv_3_attack |
109 | 0-127 |
Decayenv_3_decay |
110 | 0-127 |
Sustainenv_3_sustain |
30 | 0-127 |
Releaseenv_3_release |
111 | 0-127 |
ANALOG EFFECTS
| Control | CC | Values |
|---|---|---|
Delay Timedelay_time |
112 | 0-127 |
Regenerationregeneration |
113 | 0-127 |
Tone / Ratetone_rate |
114 | 0-127 |
Width / Depthwidth_depth |
115 | 0-127 |
Dry / Wetdry_wet |
31 | 0-127 |
SEQUENCER
| Control | CC | Values |
|---|---|---|
Ratesequencer_rate |
116 | 0-127 |
Swingswing |
117 | 0-127 |
Gategate |
118 | 0-127 |
WHEELS
| Control | CC | Values |
|---|---|---|
Modulationmodulation |
1 | 0-127 |
Bend Rangebend_range |
119 | 0-127 |
GLIDE
| Control | CC | Values |
|---|---|---|
Glideglide |
5 | 0-127 |
MACRO KNOBS
| Control | CC | Values |
|---|---|---|
M1m1 |
11 | 0-127 |
M2m2 |
2 | 0-127 |
M3m3 |
4 | 0-127 |
M4m4 |
3 | 0-127 |
Where these facts come from
Source documents
- User Manual MatrixBrute, 2.0.3, dated 25 July 2023, its user manual, read on 9 October 2026 (the file read).
- User Manual MatrixBrute, 2.0.1, dated 8 November 2019, its user manual, read on 9 October 2026 (the file read).
- User Manual MIDI Control Center, 1.0, dated 21 June 2017, its user manual, read on 9 October 2026 (the file read).
- MatrixBrute release notes, 2.0.3.1411, dated 2 February 2022, its release notes, read on 9 October 2026 (the file read).
- Arturia - MatrixBrute, its product page, read on 9 October 2026.
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.