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 PolyBrute 12 MIDI implementation
The MIDI implementation of the Arturia PolyBrute 12: what it answers to, and the 75 controls it offers.
At a glance
- Firmware
- Not recorded.
- MIDI channel
- 1 to 16.
- MPE
- Sent and received: its voices are spread across its MIDI channels, a note to each.
- Parts
- Upper Zone: on a MIDI channel of its own, taking notes and controls.
Lower Zone: on a MIDI channel of its own, taking notes and controls. - Voices
- 12, or 1, 2, 3, or 6 as set on the instrument, shared by the parts that play notes.
- Note range
- Not recorded.
- Velocity
- Received.
- Aftertouch
- Answered, of a kind its documents do not say. It sends aftertouch too.
- Pitch bend
- 24 semitones, and the range can be changed.
- Program change
- Received and sent, with 768 presets.
- MIDI clock
- Sent and received.
- Start and stop
- Sent and received.
- Control change
- 75 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/polybrute_12") has loaded them.
VCO 1
| Control | CC | Values |
|---|---|---|
Tunevco_1_tune |
66 | 0-127 |
Metalizermetalizer |
70 | 0-127 |
Pulse Widthvco_1_pulse_width |
69 | 0-127 |
Syncsync |
65 | 0-127 |
Saw / Tri Mixvco_1_saw_tri_mix |
17 | 0-127 |
Saw / Square Mixvco_1_saw_square_mix |
12 | 0-127 |
VCO 2
| Control | CC | Values |
|---|---|---|
Tunevco_2_tune |
72 | 0-127 |
Sub Mixsub_mix |
14 | 0-127 |
Pulse Widthvco_2_pulse_width |
75 | 0-127 |
FM 2 > 1fm_2_1 |
77 | 0-127 |
Saw / Tri Mixvco_2_saw_tri_mix |
15 | 0-127 |
Saw / Square Mixvco_2_saw_square_mix |
16 | 0-127 |
Expression
| Control | CC | Values |
|---|---|---|
Exp 1exp_1 |
11 | 0-127 |
Exp 2exp_2 |
4 | 0-127 |
Glideglide |
5 | 0-127 |
Morph Knobmorph_knob |
3 | 0-127 |
Ribbonribbon |
9 | 0-127 |
Morphée Xmorph_e_x |
114 | 0-127 |
Morphée Ymorph_e_y |
115 | 0-127 |
Morphée Zmorph_e_z |
89 | 0-127 |
Filter FM
| Control | CC | Values |
|---|---|---|
VCO 2 > VCF 1vco_2_vcf_1 |
79 | 0-127 |
Noise > VCF 2noise_vcf_2 |
80 | 0-127 |
MIDI
| Control | CC | Values |
|---|---|---|
Mod Wheelmod_wheel |
1 | 0-127 |
Noise
| Control | CC | Values |
|---|---|---|
Noise Colornoise_color |
22 | 0-127 |
Ladder filter
| Control | CC | Values |
|---|---|---|
Cutoffladder_filter_cutoff |
25 | 0-127 |
Resonanceladder_filter_resonance |
87 | 0-127 |
Distodisto |
85 | 0-127 |
Series > Paraseries_para |
86 | 0-127 |
VCF Env Amtladder_filter_vcf_env_amt |
26 | 0-127 |
Levelladder_filter_level |
8 | 0-127 |
Steiner filter
| Control | CC | Values |
|---|---|---|
Cutoffsteiner_filter_cutoff |
23 | 0-127 |
Resonancesteiner_filter_resonance |
83 | 0-127 |
Brute Factorbrute_factor |
82 | 0-127 |
LP > HP > BPlp_hp_bp |
81 | 0-127 |
VCF Env Amtsteiner_filter_vcf_env_amt |
24 | 0-127 |
Levelsteiner_filter_level |
7 | 0-127 |
Mixer
| Control | CC | Values |
|---|---|---|
VCO 1mixer_vco_1 |
18 | 0-127 |
VCO 2mixer_vco_2 |
19 | 0-127 |
Noisemixer_noise |
21 | 0-127 |
VCF env
| Control | CC | Values |
|---|---|---|
Velovcf_env_velo |
94 | 0-127 |
Attackvcf_env_attack |
102 | 0-127 |
Decayvcf_env_decay |
103 | 0-127 |
Sustainvcf_env_sustain |
28 | 0-127 |
Releasevcf_env_release |
104 | 0-127 |
VCA env
| Control | CC | Values |
|---|---|---|
Velovca_env_velo |
95 | 0-127 |
Attackvca_env_attack |
105 | 0-127 |
Decayvca_env_decay |
106 | 0-127 |
Sustainvca_env_sustain |
29 | 0-127 |
Releasevca_env_release |
107 | 0-127 |
Mod env
| Control | CC | Values |
|---|---|---|
Delaydelay |
108 | 0-127 |
Attackmod_env_attack |
109 | 0-127 |
Decaymod_env_decay |
110 | 0-127 |
Sustainmod_env_sustain |
30 | 0-127 |
Releasemod_env_release |
111 | 0-127 |
LFO 1
| Control | CC | Values |
|---|---|---|
Phasephase |
90 | 0-127 |
Ratelfo_1_rate |
91 | 0-127 |
LFO 2
| Control | CC | Values |
|---|---|---|
Fade Infade_in |
92 | 0-127 |
Ratelfo_2_rate |
93 | 0-127 |
LFO 3
| Control | CC | Values |
|---|---|---|
Curvecurve |
67 | 0-127 |
Symmetrysymmetry |
68 | 0-127 |
Ratelfo_3_rate |
73 | 0-127 |
Effects
| Control | CC | Values |
|---|---|---|
Mod Intensitymod_intensity |
13 | 0-127 |
Delay Leveldelay_level |
31 | 0-127 |
Delay Timedelay_time |
112 | 0-127 |
Delay Regenerationdelay_regeneration |
113 | 0-127 |
Reverb Levelreverb_level |
2 | 0-127 |
Reverb Timereverb_time |
78 | 0-127 |
Reverb Dampingreverb_damping |
76 | 0-127 |
Stereostereo |
10 | 0-127 |
Sequencer
| Control | CC | Values |
|---|---|---|
Ratesequencer_rate |
116 | 0-127 |
Gategate |
118 | 0-127 |
Motion Rec Ratemotion_rec_rate |
117 | 0-127 |
Filters common
| Control | CC | Values |
|---|---|---|
Master Cutoffmaster_cutoff |
27 | 0-127 |
Key Trackkey_track |
71 | 0-127 |
MPE
| Control | CC | Values |
|---|---|---|
Slideslide |
74 | 0-127 |
Where these facts come from
Source documents
- User Manual PolyBrute 12, 3.1.0, dated 15 October 2025, its user manual, read on 4 October 2026 (the file read).
- User Manual PolyBrute Connect, 2.0.0, its user manual, read on 3 October 2026 (the file read).
- Arturia - PolyBrute 12, its product page, read on 4 October 2026.
How they were read
User manual (137pp), English edition 3.1.0: the rear panel at p. 9, the polyphony at pp. 6 and 40, the timbrality and the zones at p. 41, the voice allocation at pp. 47-48, the presets at p. 13, the bend range at p. 104, the aftertouch modes and the two MPE tables at pp. 104-107, the sync settings at pp. 111-112, the keyboard settings at pp. 113-114, the MIDI settings at pp. 115-118, the specifications at p. 122, and the chart of controller numbers at 13.1, pp. 123-124, which is where all but one of the numbers here comes from. And Arturia's resources page for the PolyBrute 12, for what is published.
THE PRINTED PAGE IS NINE BEHIND THE PAGE OF THE FILE, so page_offset: 9, and the chart is on the 132nd and 133rd sheets of a 137-sheet document. The PolyBrute's offset is seven, because its front matter is two sheets shorter - a sibling's offset is not a hint, and the first nine sheets here carry no printed folio at all, so nothing in the introduction can be cited by page.
IT IS A DIFFERENT DOCUMENT AND ITS OWN METADATA SAYS SO, which is checked rather than assumed because two manuals under one family's version numbering is exactly how a sibling's chart gets read as this one's. This file calls itself User Manual PolyBrute 12 internally, with the subject polybrute-12 and the keywords polybrute-12__3.1.0__20251010__en, and was built on 15 October 2025 by Prince 15.4.1. The PolyBrute's calls itself User Manual PolyBrute, subject polybrute, built 19 October 2023 by Prince 13.5. Nineteen months and two typesetter versions apart, 137 sheets against 127.
AND THAT SAME CHECK FOUND SOMETHING ABOUT THE SIBLING WORTH PASSING ON: the PolyBrute's PDF carries the keywords polybrute__3.0.0__20231019__en, so the document's own version is 3.0.0 where the page that serves it says 3.0.1. That refines what arturia/polybrute records - it says four translations were 3.0.0 while the English was 3.0.1, and the English file's own metadata agrees with the translations rather than with the page. Nothing in either definition changes; it is recorded so that nobody reads Arturia's page numbers as the documents' own.
THE CHART IS A GRID OF EIGHTEEN SMALL TABLES, THREE ACROSS, which is the sibling's difficulty repeated exactly. Each table is a Parameter column beside a MIDI CC one with a heading over it, and three sit side by side. Two things make a plain text reading unsafe: the column positions move from one block of rows to the next, so a fixed cut slices some rows through the middle of a word while looking orderly; and eight lines carry fewer than three cells, where a left-hand table has run out, so Morphée Y 115, Morphée Z 89 and Rate 73 are each alone on their line over the table they belong to. A reader that splits a line on runs of whitespace and takes the pieces in order files all three under the leftmost table, which would put two of the Morphée's axes in VCO 1 and the third LFO's rate in LFO 1.
SO BOTH READINGS PLACED A CELL BY WHERE IT IS RATHER THAN BY HOW MANY PRECEDE IT, and they agree on all 74 rows. One recovered the ruled grid the page draws and dropped each word into the cell its own centre lands in; the second, made without sight of the first, used a different library's layout mode, derived each block's offsets from that block's own heading row, and then checked the result against both sheets rendered at 200 dpi and read by eye.
AND THE RENDERING WAS THE LESS RELIABLE OF THE TWO, WHICH IS WORTH SAYING OUT LOUD. The second reader reports that this manual is set in a geometric sans whose zero is a perfect circle, so in the image 70, 80, 90, 10 and 102 to 110 all read as 7O, 8O, 9O, 1O and 1O2. The text layer gives unambiguous digits and was taken as authoritative. An eye-reading of a render is the method this project reaches for when a text layer cannot be trusted, and here it is the method that would have introduced the error.
EVERY NUMBER IS DISTINCT - 74 controls and 74 controller numbers, so nothing here needs a part to say what a number means. Fourteen parameter names are not distinct: Rate names four different things, Attack, Decay, Sustain and Release three apiece, and Cutoff, Resonance, Level, Tune, Pulse Width, Saw / Tri Mix, Saw / Square Mix, Velo and VCF Env Amt two - so every one of those carries its table in its key, and the keys below are the PolyBrute's keys, asserted against the committed file so that a reader comparing the two definitions sees no difference this file invented.
CONTROL CHANGE TRAVELS BOTH WAYS AND IT IS A SETTING: "ON enables the PolyBrute 12 to send and receive MIDI Continuous Controller (CC) messages when almost any knob is turned, via either USB MIDI or the 5-pin MIDI port" (manual p. 116). So every charted control below is both, which is this format's default and is why none of them says so.
THE CHART NAMES THE TWO FILTERS ONE WAY IN ITS HEADINGS AND ANOTHER WAY IN ITS ROWS, exactly as the sibling's does: two tables are headed LADDER FILTER and STEINER FILTER while the FILTER FM table beside them routes to VCF 1 and VCF 2, so the chart alone cannot say which filter controllers 79 and 80 reach. The PolyBrute's file settles it from three sentences elsewhere in that manual - VCF 1 is the Steiner and VCF 2 the Ladder - and this instrument's filters are the same two by the same names. The group labels below keep the chart's own words, and a reader wanting the mapping has it in arturia/polybrute.
SEVERAL OF THESE NUMBERS MEAN SOMETHING ELSE IN THE MIDI SPECIFICATION, AND THE MANUAL NEVER SAYS SO. Controller 7 is Channel Volume and here it is the Steiner filter's Level; 8 is Balance and here it is the Ladder's Level; 2 is Breath Controller and here it is Reverb Level; 4 is Foot Controller and here it is Expression 2. So a sequencer sending a routine volume message will move a filter level on this instrument. Four others do follow convention - 1 is the mod wheel, 5 is Glide where the specification has portamento time, 10 is Stereo where it has pan, 11 is Expression 1 - which makes the four above look like choices rather than oversights. Inherited from the sibling's chart because the chart is the same, and repeated here because a reader of this file may never open that one.
WHAT THE GAPS IN THE NUMBERING ARE. The chart uses 74 of the 118 numbers between 1 and 118, and controller 74 below takes a seventy-fifth from outside it. The absence from 32 to 64 is two facts and not one: 32 to 63 is the block the MIDI specification reserves for the fine halves of controllers 0 to 31, so an instrument sending seven-bit values has no use for it, and 64 is the damper pedal, which this instrument takes on a jack of its own - "Sustain Normally open" (manual p. 122). The rest are 6, 20, 84, 88, 96 to 101 and 119 to 127. The manual accounts for none of them and none is inferred here.
THE SURVEY SAID THIS INSTRUMENT HAS A USB-C SOCKET AND THE MANUAL SAYS USB TYPE B, three times and consistently: "USB - USB Type B port for connecting PolyBrute 12 to a Mac or PC" (manual p. 9), "USB Type B (max. cable length 3 meters)" (manual p. 9) in the rear-panel table on the same page, and "USB type B connector for use with DAWs and PolyBrute Connect" (manual p. 122). The five-pin jacks are named twice and agree: "MIDI In/Out/Thru - Standard 5-pin DIN jacks, used to connect PolyBrute 12 to other MIDI devices" (manual p. 9) and "MIDI In/Out/Thru connectors" (manual p. 122). So the connector difference the survey reported between the two products is not there, and the correction is recorded rather than passed over.
THE EDITOR'S MANUAL IS THE SAME FILE THE POLYBRUTE CITES, which is established from the page rather than by fetching 32 MB twice: the 12's resources page offers "Polybrute Connect EN Manual" (resources_page) at 2.0.0 of 3 December 2021, behind the identical URL /api/download/products/polybrute-connect/manual/polybrute-connect_Manual_2_0_0_EN.pdf. That document is already in this library under the sibling, where it was read in full: 77 pages, one mention of the controller surface as a setting, no chart and no controller number. And this manual does not defer to it - it points at itself, "See the Specifications [p.122] chapter for a chart of the CC numbers" (manual p. 116) - so no number here is cited to it. It is cited for one passage, about the velocity of notes played from the editor's on-screen keys, which is what voice.velocity rests on here as it does in arturia/polybrute.
NOT RECORDED: system exclusive and NRPN. The words SysEx, System Exclusive, NRPN and RPN appear nowhere in these 137 pages, which is a checked absence and still not enough to record one. The S-1 in this corpus does record nrpn: none off the same kind of search, and the difference is the document: that instrument publishes a MIDI implementation chart, which is a form that undertakes to list what it does not do, so its silence is an answer. This manual publishes a list of controller assignments and no chart, so its silence is only silence. The sibling's file leaves both unset for the same reason and the two agree.
EVERY QUOTATION BELOW CARRIES A LOCATOR, AND THAT WAS AUDITED RATHER THAN ASSUMED. The quotation gate only acts on a quotation followed by (p. N) or a source key, and says nothing at all about one followed by neither - so the quote marks in this file were paired off in order and counted: 66 quotations, 66 locators, with the six remaining pairs being field values rather than anybody's words. Ten quotations had no locator when the file was first written, including two of the three Duo Bend modes and both halves of the voice-mode sentence, and the gate reported none of them. A gate's silence is not a pass, and the only way to know which quotations it looked at is to count them yourself.
AND THE TWO COUNTS RECONCILE EXACTLY, WHICH IS THE POINT OF TAKING BOTH. The gate checks 62 here - 59 against a page and 3 against a document with no pages - where this file has 66 locators. The four missing are two passages, each written once where it is used and once in this sentence: "5-octave" (manual p. 122) and the edition "3.1.0" (resources_page), both shorter than the twelve characters the gate requires, so it passes over them, and now says that it has. A figure that cannot be reconciled with a count made another way is a figure nobody can act on; these can.
ALSO NOT RECORDED: the note range, and the mode. No page states what the instrument answers to across the keyboard - the keyboard is "5-octave" (manual p. 122) with buttons that "shift keyboard range ± 2 octaves from center" (manual p. 122), which is a fact about the keyboard and not about what arrives - and with no implementation chart there is no omni or poly mode row to read.