Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mapping for MIDI Controller Behringer BCR2000 #310

Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4f5a020
BCR2000: add documentation for mapping of Behringer BCR2000
git-developer Nov 19, 2020
bdce451
fix(BCR2000): fix URL to forum thread
git-developer Nov 19, 2020
fe633d2
fix(BCR2000): fix whitespaces
git-developer Nov 19, 2020
376cf5e
refactor(BCR2000): extract generic parts into generic-midi-controller…
git-developer Nov 21, 2020
d6cf4c2
feat: move GenericMidiContoller into a instantiable ComponentContainer
git-developer Nov 22, 2020
52106fc
feat(BCR2000): add support for arbitrary component containers to the …
git-developer Nov 23, 2020
e55e57e
feat(BCR2000): add component container for equalizer unit
git-developer Nov 25, 2020
e8ef7ee
chore(BCR2000): avoid duplicate documentation
git-developer Nov 25, 2020
0e73cd0
docs(BCR2000): apply suggestions from code review
git-developer Nov 25, 2020
fc30631
docs(BCR2000): move static files
git-developer Nov 25, 2020
7ccc005
docs(BCR2000): remove developer documentation from the user manual
git-developer Nov 25, 2020
25e77ef
docs(BCR2000): add a table that explains each mapping
git-developer Nov 25, 2020
c000dbd
fix(BCR2000): fix title level
git-developer Nov 25, 2020
c35ea26
style(BCR2000): annotate file reference
git-developer Nov 25, 2020
e39c56e
fix(BCR2000): change path to static files
git-developer Nov 25, 2020
35601ae
Revert "style(BCR2000): annotate file reference"
git-developer Nov 25, 2020
5c482a0
docs(BCR2000): adjust svg file
git-developer Nov 25, 2020
844cc0f
docs(BCR2000): fix indent
git-developer Nov 25, 2020
8c5d15a
docs(BCR2000): move notes about shift to the description for shift
git-developer Nov 26, 2020
fdce603
docs(BCR2000): clarify notes about shift
git-developer Nov 26, 2020
019f5c4
style(BCR2000): reformat table to contain more columns
git-developer Nov 27, 2020
e64a98f
style(BCR2000): reformat table: combine description columns
git-developer Nov 27, 2020
dacfb9f
dics(BCR2000): add shift note that has gone lost on reformat
git-developer Nov 27, 2020
536270b
docs(BCR2000): update shift note
git-developer Nov 27, 2020
5dd1bbd
docs(BCR2000): fix encoder number
git-developer Nov 27, 2020
28ab6dc
docs(BCR2000): describe operation for all controls explicitely
git-developer Nov 28, 2020
fc40300
docs(BCR2000): Clarify that shift affects all controls globally
git-developer Nov 28, 2020
73c1782
style(BCR2000): Center table heading
git-developer Nov 28, 2020
e0e0f51
Revert "style(BCR2000): Center table heading"
git-developer Nov 28, 2020
7ce0bd9
docs(BCR2000): add requirement to update `init` on custom preset
git-developer Nov 30, 2020
1170d6e
Merge remote-tracking branch 'upstream/2.3' into feature/controller-m…
git-developer Jan 9, 2021
34050f5
Merge remote-tracking branch 'upstream/2.3' into feature/controller-m…
git-developer Jan 18, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
106 changes: 106 additions & 0 deletions source/hardware/controllers/behringer_bcr2000.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
Behringer B-Control BCR2000
===========================

.. figure:: https://mediadl.musictribe.com/media/PLM/data/images/products/P0245/2000Wx2000H/BCR2000_P0245_Top_XL.png
:width: 600

git-developer marked this conversation as resolved.
Show resolved Hide resolved
- `Manufacturer's product page <https://www.behringer.com/behringer/product?modelCode=P0245>`_
- `Forum thread <https://mixxx.discourse.group/t/behringer-b-control-bcr2000/20287>`_

The B-CONTROL BCR2000 is a general-purpose USB/MIDI controller containing 20 Buttons, 24 rotary
git-developer marked this conversation as resolved.
Show resolved Hide resolved
encoders and 8 push encoders. Every control is backed by LEDs that show the current value. As a
pure MIDI controller it contains no interfaces for audio or microphones.

The controller can be be configured extensively.
It offers 32 presets that may be programmed by the user.

.. versionadded:: 2.3

Compatibility
-------------

This controller is a class compliant USB MIDI and audio device, so it can be used without any
special drivers on GNU/Linux, Mac OS X, and Windows.

Setup
-----
Controller Preset
^^^^^^^^^^^^^^^^^
The default mapping works out-of-the-box for the factory settings of controller preset #1
(i.e. Channel 1, MIDI control values ``0x01`` to ``0x6C``).
git-developer marked this conversation as resolved.
Show resolved Hide resolved

If you don't want to use this preset, you can choose one of the
following options:

#. Load the dump file ``bcr_Only_Controllers.syx`` via Sysex to any other preset slot.
The dump file and instructions how to install it in the controller is available on the
manufacturer's webpage.
#. Factory reset the controller.
#. Customize the preset mapping (see section *Mapping Description* for details).
git-developer marked this conversation as resolved.
Show resolved Hide resolved

Button Behaviour
^^^^^^^^^^^^^^^^
It is recommended, but not required, to change the button behaviour from *Toggle On* (default)
to *Toggle Off*. Both behaviours send an ``On`` message on button press, but the action to
send an ``Off`` message is different: *Toggle Off* responds to a button release while *Toggle On*
ignores the release and requires a second press. To change the behaviour:

#. Hold *Edit*, press a button, then release both
#. Turn the 6th push encoder (labelled *MODE*) until the display shows ``toFF``
#. Press *Exit*
git-developer marked this conversation as resolved.
Show resolved Hide resolved

To make the change persistent, press *Store* twice. See the manual for details.

.. _mapping-description:

git-developer marked this conversation as resolved.
Show resolved Hide resolved
Mapping Description
-------------------
The BCR2000 is a general purpose controller that allows different mappings.

The file ``Behringer-BCR2000-scripts.js`` contains a default mapping which works
out-of-the-box for a factory-reset controller, but may be customized freely according to your needs.

The mapping is split into several files:

============================================== =================== ===========
File When to edit? Description
============================================== =================== ===========
``Behringer-BCR2000-scripts.js`` Mapping changes Mapping configuration. You can assign Mixxx controls to hardware controls here, and change which controls are bound to the Shift layer.
``Behringer-BCR2000-preset-scripts.js`` Preset changes Contains the mapping of MIDI messages to hardware controls. If for some reason you'd like to use a different preset than the factory settings of preset #1, you can change the MIDI addresses according to your controller's preset within this file.
``Behinger BCR2000.midi.xml`` Preset changes Entry point that contains the MIDI addresses for all input controls and includes all other files. The mapping of MIDI messages to Mixxx controls is purely done in Javascript and based on `Components JS <https://github.com/mixxxdj/mixxx/wiki/Components%20JS>`_, so that the XML file does not contain any information about the Mixxx controls (e.g. `key` and `group`).
``midi-components-extension.js`` Usually never Contains required Javascript components for the mapping.
============================================== =================== ===========
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this belongs into the user manual. You can put developer documentation into the source file itself, which also decreases the likelihood of becoming outdated.


Default Mapping
^^^^^^^^^^^^^^^
The default mapping covers 2 effect units and loop, reverse & pitch controls for 2 decks:
git-developer marked this conversation as resolved.
Show resolved Hide resolved

.. figure:: behringer_bcr2000.svg
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR also contains a PNG file. Since it's not used and the SVG is preferable anyway, please remove it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

:width: 600

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a table that explains how the mapping works. I suggest to explain that the left half of the two top rows is used for deck 1, and the right half for deck 2, then make a table that explains the knobs and buttons from left to right. If there's a label on the hardware, please mention it:

========================================  =========================================================================
Control                                   Description
========================================  =========================================================================
Knob 1 (:hwlabel:`TYPE`/:hwlabel:`VAL2`)  Manipulates the key of the track in semitones.
Knob 2 (:hwlabel:`CH`/:hwlabel:`MODE`)    Moves the current loop left or right.
...                                       ...
Button 1                                  Toggles Keylock.
Shift + Button 1                          Toggles Vinyl mode.
...                                       ...
========================================  =========================================================================

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a table, please check if it's well-arranged.

The Shift buttons change the behaviour of the effect units (see
`Standard Effects Mapping <https://github.com/mixxxdj/mixxx/wiki/Standard%20Effects%20Mapping>`_
in the Wiki) and the buttons with side labels.

**Note:** Both Shift buttons have the same effect,
they are not deck-specific. The design decision was to keep the layout symmetric so that you don't
have to press a button on deck 1 when you're currently working on deck 2.
git-developer marked this conversation as resolved.
Show resolved Hide resolved

Overlay
~~~~~~~
Overlay to print on cardboard or paper for lamination:

- `PDF, DIN A4 <behringer_bcr2000-a4.pdf>`_
- `PDF, DIN A3 <behringer_bcr2000-a3.pdf>`_
- `ODG <behringer_bcr2000.odg>`_ (LibreOffice)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All static files should go into the source/_static/_controllers directory.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved all files but the RST, and hope the references will not be broken.


Custom Mapping
^^^^^^^^^^^^^^
The mapping configuration (file ``Behringer-BCR2000-scripts.js``) may be customized by changing the
``configurationProvider`` object. Please see the documentation of the component
``GenericMidiController`` (file ``midi-components-extension.js``) for details.

Overlay
~~~~~~~
Feel free to create your own controller overlay be editing the `overlay file <behringer_bcr2000.odg>`_
using LibreOffice or similar.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unneeded IMHO.

Loading