Skip to content

MIDI Controller Setup

rsjaffe edited this page Jul 14, 2016 · 27 revisions

The setup of the MIDI control surface is just as important as the setup of MIDI2LR. Because users have many different control surfaces, the advice here can't cover every situation. If you learn something new, please post a message and describe what you've learnt, so that can be added to this wiki. Right now, we're just starting. Contributions of information for this wiki are welcome!

A list of known compatible/incompatible control surfaces is at https://goo.gl/Ev6S8R. Feel free to contribute to the list.

How MIDI2LR Works with control surfaces

MIDI2LR has two components: the Lightroom plugin, and the application. You see the application launched each time you start Lightroom. The plugin runs as part of LR, and is hidden, though you see parts of it when you open the Options menu. The plugin can work directly with Lightroom but can't communicate with a MIDI control surface. The app can work with a MIDI control surface but can't control Lightroom. When the app shows that it is connected to Lightroom, that means the app and the plugin have found each other, and communication is successful.

Due to the way computers work, the app cannot easily detect when the MIDI control surface is disconnected. That is why there's a Rescan MIDI Devices button. The app automatically scans for a control surface when it starts up, so normally you won't have to scan. But if you change control surfaces, or turn it off and on, you may have to rescan. If the app is ignoring the control surface, it's time to rescan.

MIDI2LR application receives CC messages from the control surface, and converts that to your selected action. The action and controller value (if the controller if a fader or encoder) is sent to the plugin, which then takes action based on the selected action and the value.

When Lightroom signals MIDI2LR plugin that a develop value has changed, MIDI2LR plugin checks all develop values to see if they've changed, then sends the changed values to the MIDI2LR app. The app then checks to see if the user has registered a MIDI CC for that particular develop value (e.g., exposure). If so, the app converts the value to a MIDI CC change message, using the channel that was assigned by the user. If you have a controller that is set up to receive a particular develop parameter on a different channel than it sends it, your control surface won't track LR changes.

Currently, the app updates the first MIDI CC assigned to a particular value--if you've assigned two controllers to the same adjustment (e.g., exposure), your controller won't track LR changes reliably. Do not use two channels for the same adjustment. Since the buttons are not updated, assigning two buttons to the same command is fine.

General Setup

Never use controller numbers 98 or 99. Those are reserved for NRPN messages and will completely confuse MIDI2LR. Don't use controller numbers 100 or 101 either. Those are for RPN messages, which aren't used by MIDI2LR but might some day.

Layers: most control surfaces do not track messages for hidden layers, so when you change layers, expect the controls to be out of sync with the program.

Profiles: MIDI2LR understands the profiles you have assigned in the program. When you change profiles, MIDI2LR will automatically refresh your control surface, so that all the controllers are in sync.

Non-motorized faders cannot be sync'd. They will not respond to changes, such as opening up a different picture. That is a limitation of the MIDI control surface and there's no fix for that.

All buttons should be toggle off.

When not using NRPN

All controller numbers must be in the range 0-127.

All continuous controllers (faders and encoders) need to be set to absolute mode, range 0-127.

All buttons should send 127 when pressed and 0 when released.

When using NRPN

Normal MIDI controllers can only send 128 different values, which doesn't allow for fine control of wide-range settings like Temperature. Some MIDI control surfaces can set individual controllers to NRPN mode. In NRPN mode, the number of bits per controller is doubled, from 7 to 14, so the range increases from 0-127 to 0-16383. The range of controller numbers also increases by the same amount.

MIDI2LR will assume that any controller numbered 0-127 is using normal MIDI, and any 128-16383 is using NRPN. Set up any controllers numbered 0-127 as shown above in the not using NRPN section.

NRPN controller numbers must be in the range 128-16383.

All NRPN continuous controllers need to be set to absolute 14-bit mode, range 0-16383. Caution: in the BCF2000/BCR2000 (and I suspect other control surfaces), faders in the NRPN mode only send 7-bit resolution data. This is even worse then you might suspect, because they send it without using all four messages needed for a full NRPN signal. MIDI2LR isn't clairvoyant, and can't guess that it shouldn't wait for the fourth message, so that if you set a fader to send NRPN, nothing will happen. The lesson here is, check your documentation carefully before setting a fader to NRPN mode, and if you do and the MIDI2LR app ignores the fader, that's a sign that the fader is only sending a partial set of NRPN messages.

NRPN buttons should send 16383 when pressed and 0 when released.

For continuous controllers, you'll want to change the controller resolution or it will take lots of knob turning to navigate the entire controller range. Ideally, the controller resolution should vary with the speed at which you turn the knob. For the BCR2000/BCF2000, you can set four resolutions, so that the amount of change will increase as the speed of rotation increases. Thus, when you turn knob quickly, you make large changes in the value, and when you turn the knob slowly, you make small changes.

On the BCR2000/BCF2000, the resolution represents how much the value changes for each 360-degree rotation of the knob. Setting the resolution to 50 500 5000 65535, for example, will cause the value to change by 50 with each slow revolution, 500 with each faster revolution, 5000 by each even faster revolution, and 65535 by each fastest revolution.

Behringer BCR-2000 and BCF2000. To set toggle OFF:

  1. Press and HOLD the Edit button, while
  2. Press the button, you want to set to toggle OFF
  3. Release the Edit button
  4. Turn left the Mode potmeter in the unit (Top row, 3rd pot from the right), while the LCD show ToFF
  5. Hit the Edit button
  6. That's it :-)
  7. Repeat this with every button, you want to toggle OFF

Problems with control surfaces that have "layers"

Currently, MIDI2LR and control surfaces with layers can get out of sync with each other. The discussion below shows what happens and why.

Problem description

So I use an x-touch mini. It has a Layer A and Layer B button to so you can have multiple functions for each button and knob. One set on A and another on B. I have all of my exposure, temp, highlights, blacks and what not on layer A, then I have the Tone curve on layer B, along with some luminance, vibrance, and saturation. So I'll adjust the exposure and temp and what not, then switch to layer b to adjust different contrast and color adjustments. When I switch from A to B the knobs become unresponsive until I rescan MIDI or i twist the knob back and forth a ton then it registers.

When I switch from A to B for binding commands MIDI2LR show a different number for layer A and Layer B for each button and knob. So Knob 1 on Layer A is CC:1 and on Layer B it 's CC:11. So it seems like it recognizes I'm on a different layer but doesn't resync with lightroom on it's own for each layer.

Thanks for the clear description. Here's what's happening:

How MIDI2LR works with the control surface

MIDI2LR knows of all the knob and button assignments you have, but doesn't know which ones are active in a particular layer.

It also assumes that your control surface remembers the last setting it was at. For example, if knob for exposure is on layer A, it assumes that the control surface will remember knob A's value.

And it assumes that, when it sends an updated value to the MIDI control surface, the control surface responds appropriately.

How this becomes a problem

When you switch layers, the MIDI control surface does not remember the values from a prior layer. So, when you switch from A to B then B to A, the prior settings for the A knobs are lost by the control surface. This means that the knob is out of sync with MIDI2LR, and won't work until you turn it past the current photo's settings ("pickup mode")--this is so that you won't have massive unexpected changes caused by the knob being out of sync.

Also, when you are in layer B, MIDI2LR is sending back information on what has changed on layer A, but your control surface is ignoring it. MIDI2LR doesn't know that.

Finally, a layer switch could trigger MIDI2LR to do a full update, but I don't know if the x-touch mini could be programmed to send a notification when layers change. If it doesn't send a notification, MIDI2LR has no idea that it needs to do an update.

Potential solutions

If the x-touch mini can send a notification when changing layers, this problem can be easily solved, by mapping the notification to a "full update". Does the x-touch mini have this capability?

If not, we'll have to add a "full update" command to MIDI2LR, and you'll have to click the button associated with that command to cause an update.

Clone this wiki locally