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.
Behringer PRO-800 MIDI implementation
The MIDI implementation of the Behringer PRO-800: what it answers to, and the 70 controls it offers.
At a glance
- Firmware
- Not recorded.
- MIDI channel
- Any one of 1 to 16.
- Voices
- 8, or 1 as set on the instrument.
- Note range
- Not recorded.
- Velocity
- Received.
- Aftertouch
- Answered, of a kind its documents do not say.
- Pitch bend
- 24 semitones, and the range can be changed.
- Program change
- Received and sent, with 400 presets.
- MIDI clock
- Received.
- Start and stop
- Not recorded.
- Control change
- 70 controls, in the tables below, 34 of them with a fine half on a second controller number.
- NRPN
- Supported.
- 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("behringer/pro_800") has loaded them.
Oscillator
| Control | CC | Values |
|---|---|---|
OSC A Freqosc_a_freq |
8 fine 80 |
0-127 |
OSC A Volosc_a_vol |
9 fine 81 |
0-127 |
OSC A PWosc_a_pw |
10 fine 82 |
0-127 |
OSC B Freqosc_b_freq |
11 fine 83 |
0-127 |
OSC B Volosc_b_vol |
12 fine 84 |
0-127 |
OSC B PWosc_b_pw |
13 fine 85 |
0-127 |
OSC B Fineosc_b_fine |
14 fine 86 |
0-127 |
OSC A Sawosc_a_saw_48 |
48 | 0-127 |
OSC A Sawosc_a_saw_49 |
49 | 0-127 |
OSC A Squareosc_a_square |
50 | 0-127 |
OSC B Sawosc_b_saw |
51 | 0-127 |
OSB B Triosb_b_tri |
52 | 0-127 |
OSB B Squareosb_b_square |
53 | 0-127 |
OSC B Syncosc_b_sync |
54 | 0-127 |
Chromatic Pitch Achromatic_pitch_a |
68 | 0-127 |
Chromatic Pitch Bchromatic_pitch_b |
69 | 0-127 |
POLY-MOD
| Control | CC | Values |
|---|---|---|
Pmod Filter Env amountpmod_filter_env_amount |
26 fine 102 |
0-127 |
Pmod OSC B amountpmod_osc_b_amount |
27 fine 103 |
0-127 |
Pmod Freq Apmod_freq_a |
55 | 0-127 |
Pmod VCFpmod_vcf |
56 | 0-127 |
Noise
| Control | CC | Values |
|---|---|---|
Noisenoise |
37 fine 113 |
0-127 |
LFO-MOD
| Control | CC | Values |
|---|---|---|
LFO Freqlfo_freq |
28 fine 104 |
0-127 |
LFO Amountlfo_amount |
29 fine 105 |
0-127 |
LFO Aftertouch amountlfo_aftertouch_amount |
41 fine 116 |
0-127 |
LFO Shapelfo_shape |
57 | 0-127 |
LFO Speedlfo_speed |
58 | 0-127 |
LFO Targetslfo_targets |
59 | 0-127 |
LFO Dest Freqlfo_dest_freq |
74 | 0-127 |
LFO Dest Filterlfo_dest_filter |
75 | 0-127 |
LFO Dest PWMlfo_dest_pwm |
76 | 0-127 |
Glide
| Control | CC | Values |
|---|---|---|
Glideglide |
30 fine 106 |
0-127 |
Glide Modeglide_mode |
79 | 0-127 |
Filter
| Control | CC | Values |
|---|---|---|
VCF Freqvcf_freq |
15 fine 87 |
0-127 |
VCF Resovcf_reso |
16 fine 88 |
0-127 |
VCF ENV amountvcf_env_amount |
17 fine 89 |
0-127 |
VCF Relvcf_rel |
18 fine 90 |
0-127 |
VCF Susvcf_sus |
19 fine 91 |
0-127 |
VCF Decvcf_dec |
20 fine 92 |
0-127 |
VCF Atckvcf_atck |
21 fine 93 |
0-127 |
VCF Velvcf_vel |
32 fine 108 |
0-127 |
VCF Aftertouchvcf_aftertouch |
40 fine 115 |
0-127 |
VCF Keyboardvcf_keyboard |
60 | 0-127 |
VCF ENV Expvcf_env_exp |
61 | 0-127 |
VCF ENV Speedvcf_env_speed |
62 | 0-127 |
Keyboard Trackingkeyboard_tracking |
78 | 0-127 |
Amplifier
| Control | CC | Values |
|---|---|---|
VCA Relvca_rel |
22 fine 94 |
0-127 |
VCA Susvca_sus |
23 fine 95 |
0-127 |
VCA Decvca_dec |
24 fine 100 |
0-127 |
VCA Atckvca_atck |
25 fine 101 |
0-127 |
VCA Velvca_vel |
31 fine 107 |
0-127 |
VCA Aftertouchvca_aftertouch |
39 fine 114 |
0-127 |
VCA ENV Expvca_env_exp |
63 | 0-127 |
VCA ENV Speedvca_env_speed |
72 | 0-127 |
Output
| Control | CC | Values |
|---|---|---|
Master Tunemaster_tune |
3 | 0-127 |
Main volumemain_volume |
7 | 0-127 |
Without a group
| Control | CC | Values |
|---|---|---|
Bank selbank_sel |
0 | 0-127 |
Mod Wheelmod_wheel |
1 | 0-127 |
Breathbreath |
2 | 0-127 |
Mod delaymod_delay |
33 fine 109 |
0-127 |
Vib Freqvib_freq |
34 fine 110 |
0-127 |
Vib Amtvib_amt |
35 fine 111 |
0-127 |
Unison Detuneunison_detune |
36 fine 112 |
0-127 |
Pitch Rangepitch_range |
42 fine 117 |
0-127 |
Sustain pedalsustain_pedal |
64 | 0-127 |
Unisonunison |
65 | 0-127 |
Bender targetbender_target |
66 | 0-127 |
Modwheel Amountmodwheel_amount |
67 | 0-127 |
Modwheel Targetmodwheel_target |
70 | 0-127 |
Arp Modearp_mode |
73 | 0-127 |
Voice Spreadvoice_spread |
77 | 0-127 |
Where these facts come from
Source documents
- Quick Start Guide PRO-800, V 4.0, its user manual, read on 4 October 2026 (the file read).
- PRO-800 | Behringer, its product page, read on 4 October 2026.
How they were read
Quick Start Guide (62 sheets, 123 printed pages, V 4.0), in eleven languages: the top and rear panels at pp. 16-19, the getting-started and firmware notes at p. 19, the Additional Parameters, Global Settings and Preset Parameters tables at p. 21, the keyboard modes and the patch store at p. 21, the table of controller numbers at pp. 106-109, and the specifications at pp. 110-113. And Behringer's product page for the PRO-800, for the preset count and for what the instrument is.
TWO PRINTED PAGES ARE SET TO A SHEET, so pages_per_sheet: 2 with an offset of one, which is this maker's habit - its TD-3 guide needs the same. Every sheet after the cover is 805 by 595 points, two pages side by side, with the folios at the top outer corners: on the 54th sheet, 106 at x 31 and 107 at x 762. A citation to p. 107 is the right half of the 54th sheet.
SO A ROW'S OWN X POSITION IS WHAT SAYS WHICH PAGE IT IS ON, and that is how the three blocks of the table were placed: p. 107 carries 45 rows, p. 108 carries 43 and p. 109 carries 24, each read off the folio printed on its own half of its own sheet rather than computed. The citation checker cannot tell the two halves apart - it searches a whole sheet - so a wrong half would pass it, which is why this was measured rather than left to the gate.
AND THAT SENTENCE WAS WRITTEN THE OTHER WAY ROUND FIRST, WHICH MADE THIS FILE CITE TWO PAGES IT DOES NOT USE. A citation has to be able to say several pages at once, so the checker reads a comma or the word and followed by a number as another page in the same citation. So a count written immediately after a page citation becomes a page. The first draft put the row counts after their pages - forty-five after the first, forty-three after the second - and the gate duly reported this file as citing two pages it never mentions. Putting the count before the page fixes it. Nothing but the gate's own list of pages would have shown it, which is a reason to read that list rather than only the figure at the end of it - and a reason this paragraph names no numbers next to a page of its own.
THE TABLE IS A RULED GRID AND THE ROWS COME OFF ITS VERTICALS, which is the one thing about reading it worth passing on. The grid is drawn cell by cell, so the column edges fall out of the rule spans exactly. But the horizontals bounding the shaded heading row and the table's outer edge are filled shapes rather than thin ones, so taking the rows from the horizontal rules silently lost the heading and the first and last data row of every block - three rows per block, nine in all - and nothing would have caught it, because what comes back is a shorter table and not a broken one. The verticals are drawn one per cell, about eleven points tall, so their tops and bottoms together give every row boundary including the outermost.
EVERY NUMBER WAS READ TWICE AND THE TWO AGREE ON ALL 112 ROWS. The second reading, made without sight of the first, used a different library's layout mode on a different interpreter and then checked itself against both sheets rendered and read by eye.
EVERY ROW NAMES EXACTLY ONE COLUMN, which is asserted rather than assumed: a row naming two would be one controller doing two things, and a row naming none would be a number listed for no reason. 112 rows - 34 coarse, 34 fine, 30 stepped and 14 the protocol's own.
EIGHT OF THOSE FOURTEEN ARE THE MIDI SPECIFICATION AND NOT THIS INSTRUMENT, so they are not controls below. Six are how an NRPN travels - 6 "NRPN Data MSB" (guide p. 107), 38 "NRPN Data LSB" (guide p. 107), 96 "NRPN Data increment" (guide p. 109), 97 "NRPN Data decrement" (guide p. 109), 98 "NRPN Param LSB" (guide p. 109) and 99 "NRPN Param MSB" (guide p. 109) - and two are channel mode messages, 120 "All sounds off" (guide p. 109) and 123 "All notes off" (guide p. 109), which the validator refuses outright. The remaining six are kept, Bank Select among them, which two definitions in this corpus already carry as a control.
NRPN IS REAL AND NOT ONE NRPN NUMBER IS PUBLISHED. Those six controllers are the whole of the mechanism and the maker's own table names them, so nrpn: supported is said by the document rather than inferred - but no page of these 123 names a single NRPN parameter number, so no control below carries one. The maker's feature list claims NRPN and controller control of all parameters and a bulk load and save - said without quote marks because it is not in the page's visible text and so cannot be cited at all; see the note on the product page, because that claim is not citable and the mechanism in the table is.
THE GROUPS ARE THE MAKER'S OWN PANEL SECTIONS, named in the specifications at p. 110 - Oscillator, POLY-MOD, Noise, LFO-MOD, Glide, Filter, Amplifier and Output - and each control is placed by the prefix of its own printed name. What this file decides is only that VCF is the filter and VCA the amplifier; both halves of every other mapping are the maker's words.
AND FIFTEEN CONTROLS GET NO GROUP, which is a fact about the instrument rather than a gap here. They are the performance and MIDI parameters that live in its menus rather than on its panel - the bender, the mod wheel, the vibrato, unison, the arpeggiator, the velocity and aftertouch amounts - and the maker names no section for any of them. Inventing one would invent a grouping the maker does not have.
THREE FAULTS IN THE TABLE, each found by asserting something about it rather than by reading it:
Controllers 48 and 49 are both printed OSC A Saw (guide p. 107). The six rows around them run OSC A Saw, OSC A Saw, OSC A Square, OSC B Saw, OSB B Tri, OSB B Square - so a reader can see what the second one was probably meant to say and this file does not say it. The two are osc_a_saw_48 and osc_a_saw_49 below, distinguished by number because the maker's own words do not distinguish them.
Controller 79's Hex cell reads AF (guide p. 108) and 79 in hexadecimal is 4F. Nothing here depends on the Hex column - it is the decimal number again - but it is the one cell in the table that is checkable arithmetic, and it is wrong, which is worth knowing before trusting the rest.
The two halves of one parameter are not named alike. The coarse column calls controller 41 LFO Aftertouch amount and the fine column calls controller 116 LFO Aftertouch (guide pp. 107, 109). They are joined below as one 14-bit control, on four grounds: it is the only unpaired name on either side; 116 sits at +75 from 41, exactly as 114, 115 and 117 sit from 39, 40 and 42; the names differ by one word; and the instrument's own menu calls the parameter "LFO Aftertouch Amount" (guide p. 21), which is the coarse column's spelling.
AND THE GUIDE'S PROSE CONTRADICTS ITS OWN TABLE ABOUT A KEYPAD BUTTON, which is recorded because it bears on how much the prose can be trusted rather than because it changes a number. The Additional Parameters table puts OscA Freq Pot Mode and OscB Freq Pot Mode under key 6 (guide p. 21); four paragraphs later the prose says "press button 8 twice on the additional parameters page" (guide p. 21), and key 8 in that same table is the three aftertouch amounts. Neither is corrected here and nothing below rests on either.
TWELVE CONTROLLER NUMBERS BETWEEN 0 AND 123 ARE NOT IN THE TABLE: 4, 5, 43 to 47, 71, 118, 119, 121 and 122. The maker accounts for none of them and none is inferred. Two are worth a reader's notice: 71 would be the fine half of nothing, since the coarse block stops at 42; and 121 and 122 are channel mode messages, so their absence is of a piece with 120 and 123 being present.
WHAT IS ABSENT, CHECKED RATHER THAN ASSUMED. MIDI transport is nowhere stated. The Global Settings menu has "Sync In Start/Stop On / Off" (guide p. 21), and that is the analogue Sync In jack rather than MIDI - the jack whose polarity and pulse rate the two settings either side of it govern. No page says whether a MIDI start or stop is answered to, so transport is left unset.
AND THE SYNC JACK'S PULSE RATES ARE GIVEN TWO WAYS THAT DO NOT AGREE, which is set out here and recorded in no field because the format holds nothing for an analogue jack. The specifications say "TS 3.5 mm 1PPS, 2PPQ, 24PPQ, 48PPQ" (guide p. 110), four options; the Global Settings menu says "Sync In PPQN 1 PPS / 2 PPQ / 4 PPQ / 24 / 48" (guide p. 21), five. The menu has a 4 PPQ the specifications do not. A third list, for a different thing, is the SYNC CLOCK button's: "Third press: clock in PPQN settings: 24, 48, 96, 192 are available" (guide p. 17).
ALSO NOT RECORDED: the note range, which no page states; and which kind of aftertouch it answers to, so voice.aftertouch says received and no more. Three parameters set how far a received pressure reaches - the VCA, VCF and LFO Aftertouch amounts, on controllers 39 to 41 - so it plainly answers to one, and no page says whether that is channel pressure or polyphonic. This instrument has no keyboard of its own, so nothing about its own keybed settles it either.
IT HAS NO KEYBOARD, which is worth saying plainly because the guide's prose repeatedly says the keyboard and means the one you attach: "By holding the PERF and SETTINGS buttons then playing a note on an attached MIDI keyboard the keyboard will transpose to the note played relative to C" (guide p. 21). Its own panel has a numeric keypad. So everything below arrives over MIDI or USB.
EVERY QUOTATION IN THIS FILE CARRIES A LOCATOR, AUDITED BY PAIRING THE QUOTE MARKS RATHER THAN BY TRUSTING THE GATE. 46 quotations, 46 locators - 42 citing a page and 4 naming the unpaginated product page - which reconciles exactly with what the gate reports, with the five remaining pairs of quote marks being field values rather than anybody's words.
AND THIS FILE FOUND A THIRD WAY THE GATE GOES QUIET, WHICH IS WORTH MORE THAN THE FIGURE. It was already known that a quotation with no locator is skipped, and that one shorter than twelve characters is skipped. The third is that the gate allows only whitespace between a closing quote mark and its locator, so a quotation emphasised in this project's own house style - bold markers closing immediately after the quote mark, before the parenthesis - is silently not checked either. It looks located to a reader and is not. Two other definitions in this corpus did the same thing, and moving the markers took one of them from 19 checked quotations to 21.
THE PRODUCT PAGE'S FEATURE LIST IS NOT CITABLE AND ITS PROSE IS. This maker builds its specification and feature tables with a script, so none of that text reaches a saved copy - the finding the TD-3 established at rank 45, and here it can be stated more precisely: the feature list's claim about NRPN is in the page's markup, inside a JSON payload in a script element, which Tools/save_page.py strips along with every other script. So the claim exists, cannot be quoted from the saved text, and is not relied on below. The page's descriptive prose does reach the text and is cited.