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.

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 Freq
osc_a_freq
8
fine 80
0-127
OSC A Vol
osc_a_vol
9
fine 81
0-127
OSC A PW
osc_a_pw
10
fine 82
0-127
OSC B Freq
osc_b_freq
11
fine 83
0-127
OSC B Vol
osc_b_vol
12
fine 84
0-127
OSC B PW
osc_b_pw
13
fine 85
0-127
OSC B Fine
osc_b_fine
14
fine 86
0-127
OSC A Saw
osc_a_saw_48
48 0-127
OSC A Saw
osc_a_saw_49
49 0-127
OSC A Square
osc_a_square
50 0-127
OSC B Saw
osc_b_saw
51 0-127
OSB B Tri
osb_b_tri
52 0-127
OSB B Square
osb_b_square
53 0-127
OSC B Sync
osc_b_sync
54 0-127
Chromatic Pitch A
chromatic_pitch_a
68 0-127
Chromatic Pitch B
chromatic_pitch_b
69 0-127

POLY-MOD

Control CC Values
Pmod Filter Env amount
pmod_filter_env_amount
26
fine 102
0-127
Pmod OSC B amount
pmod_osc_b_amount
27
fine 103
0-127
Pmod Freq A
pmod_freq_a
55 0-127
Pmod VCF
pmod_vcf
56 0-127

Noise

Control CC Values
Noise
noise
37
fine 113
0-127

LFO-MOD

Control CC Values
LFO Freq
lfo_freq
28
fine 104
0-127
LFO Amount
lfo_amount
29
fine 105
0-127
LFO Aftertouch amount
lfo_aftertouch_amount
41
fine 116
0-127
LFO Shape
lfo_shape
57 0-127
LFO Speed
lfo_speed
58 0-127
LFO Targets
lfo_targets
59 0-127
LFO Dest Freq
lfo_dest_freq
74 0-127
LFO Dest Filter
lfo_dest_filter
75 0-127
LFO Dest PWM
lfo_dest_pwm
76 0-127

Glide

Control CC Values
Glide
glide
30
fine 106
0-127
Glide Mode
glide_mode
79 0-127

Filter

Control CC Values
VCF Freq
vcf_freq
15
fine 87
0-127
VCF Reso
vcf_reso
16
fine 88
0-127
VCF ENV amount
vcf_env_amount
17
fine 89
0-127
VCF Rel
vcf_rel
18
fine 90
0-127
VCF Sus
vcf_sus
19
fine 91
0-127
VCF Dec
vcf_dec
20
fine 92
0-127
VCF Atck
vcf_atck
21
fine 93
0-127
VCF Vel
vcf_vel
32
fine 108
0-127
VCF Aftertouch
vcf_aftertouch
40
fine 115
0-127
VCF Keyboard
vcf_keyboard
60 0-127
VCF ENV Exp
vcf_env_exp
61 0-127
VCF ENV Speed
vcf_env_speed
62 0-127
Keyboard Tracking
keyboard_tracking
78 0-127

Amplifier

Control CC Values
VCA Rel
vca_rel
22
fine 94
0-127
VCA Sus
vca_sus
23
fine 95
0-127
VCA Dec
vca_dec
24
fine 100
0-127
VCA Atck
vca_atck
25
fine 101
0-127
VCA Vel
vca_vel
31
fine 107
0-127
VCA Aftertouch
vca_aftertouch
39
fine 114
0-127
VCA ENV Exp
vca_env_exp
63 0-127
VCA ENV Speed
vca_env_speed
72 0-127

Output

Control CC Values
Master Tune
master_tune
3 0-127
Main volume
main_volume
7 0-127

Without a group

Control CC Values
Bank sel
bank_sel
0 0-127
Mod Wheel
mod_wheel
1 0-127
Breath
breath
2 0-127
Mod delay
mod_delay
33
fine 109
0-127
Vib Freq
vib_freq
34
fine 110
0-127
Vib Amt
vib_amt
35
fine 111
0-127
Unison Detune
unison_detune
36
fine 112
0-127
Pitch Range
pitch_range
42
fine 117
0-127
Sustain pedal
sustain_pedal
64 0-127
Unison
unison
65 0-127
Bender target
bender_target
66 0-127
Modwheel Amount
modwheel_amount
67 0-127
Modwheel Target
modwheel_target
70 0-127
Arp Mode
arp_mode
73 0-127
Voice Spread
voice_spread
77 0-127

Where these facts come from

Source documents

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.