-
-
Notifications
You must be signed in to change notification settings - Fork 83
MIDI Controller Setup
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!
A list of known compatible/incompatible controllers is at https://goo.gl/Ev6S8R. Feel free to contribute to the list.
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.
Never use control numbers 98 or 99. Those are reserved for NRPN messages and will completely confuse MIDI2LR. Don't use control numbers 100 or 101 either. Those are for RPN messages, which aren't used by MIDI2LR but might some day.
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.
All buttons should be toggle off.
All controller numbers must be in the range 0-127.
All continuous controls (faders and encoders) need to be set to absolute mode, range 0-127.
All buttons should send 127 when pressed and 0 when released.
Normal MIDI controls can only send 128 different values, which doesn't allow for fine control of wide-range settings like Temperature. Some MIDI controllers can set individual controls to NRPN mode. In NRPN mode, the number of bits per control is doubled, from 7 to 14, so the range increases from 0-127 to 0-32767. The range of control numbers also increases by the same amount.
MIDI2LR will assume that any control numbered 0-127 is using normal MIDI, and any 128-32767 is using NRPN. Set up any controls numbered 0-127 as shown above in the not using NRPN section.
NRPN controller numbers must be in the range 128-32767.
All NRPN continuous controls need to be set to absolute 14-bit mode, range 0-32767. Caution: in the BCF2000/BCR2000 (and I suspect other controllers), 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 32767 when pressed and 0 when released.
For continuous controls, you'll want to change the control resolution or it will take lots of knob turning to navigate the entire control range. Ideally, the control 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.
- Press and HOLD the Edit button, while
- Press the button, you want to set to toggle OFF
- Release the Edit button
- Turn left the Mode potmeter in the unit (Top row, 3rd pot from the right), while the LCD show ToFF
- Hit the Edit button
- That's it :-)
- Repeat this with every button, you want to toggle OFF
Currently, MIDI2LR and controllers with layers can get out of sync with each other. The discussion below shows what happens and why.
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:
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.
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.
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.
For any wiki edits or corrections, or if you are having problems with the application or have suggestions for improvement, post a new discussion online in our discussion forum.