Skip to content

MIDI Controller Setup

rsjaffe edited this page Jun 18, 2016 · 27 revisions

The setup of the MIDI controller is just as important as the setup of MIDI2LR. Because users have many different controllers, 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!

How MIDI2LR Works with Controllers

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 controller. The app can work with a MIDI controller 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 controller is disconnected. That is why there's a Rescan MIDI Devices button. The app automatically scans for a controller when it starts up, so normally you won't have to scan. But if you change controllers, or turn it off and on, you may have to rescan. If the app is ignoring the controller, it's time to rescan.

MIDI2LR application receives CC messages from the controller, and converts that to your selected action. The action and controller value (if the control 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 controller 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

NRPN mode is not yet supported; I hope to include that soon. All continuous controls (faders and encoders) need to be set to absolute mode, range 0-127.

All buttons should be toggle off and send 127 when pressed and 0 when released.

Never use channels 98 or 99. Those are reserved for NRPN messages and will completely confuse MIDI2LR once we add NRPN capability.

Layers: most controllers 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 controller, 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 controller and there's no fix for that.

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 controllers that have "layers"

Currently, MIDI2LR and controllers 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 controller

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 controller remembers the last setting it was at. For example, if knob for exposure is on layer A, it assumes that the controller will remember knob A's value.

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

How this becomes a problem

When you switch layers, the MIDI controller does not remember the values from a prior layer. So, when you switch from A → B → A, the prior settings for the A knobs are lost by the controller. 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 controller 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