Giter VIP home page Giter VIP logo

rsjaffe / midi2lr Goto Github PK

View Code? Open in Web Editor NEW
669.0 47.0 82.0 271.03 MB

An application and plugin to remotely control Lightroom with a MIDI controller

Home Page: http://rsjaffe.github.io/MIDI2LR/

License: GNU General Public License v3.0

C++ 39.02% Lua 58.27% Objective-C++ 1.29% Batchfile 0.10% Shell 1.32%
midi-controller lightroom windows macos osx photography midi2lr lightroom-plugin midi juce

midi2lr's Introduction

MIDI2LR

Latest release MIDI2LR All Releases license

MIDI2LR is an application that interfaces MIDI controllers with Lightroom Classic. Version 4 requires Lightroom 10 Classic, version 5 Lightroom 11 Classic: use version 3 for earlier versions of Lightroom.

It processes MIDI input into develop parameter updates and photo actions, and sends MIDI output when parameters are changed for motorized feedback (on controllers that have motorized faders). A listing of available Lightroom commands is in the Wiki. Assistance on the code and design is welcome.

MIDI2LR supports all languages Lightroom supports: Deutsch, English, español, français, हिन्दी, italiano, 日本語, 한국어, Nederlands, norsk, polski, português, русский, Svenska, ภาษาไทย and 中文 (简体中文和繁體中文). इंस्टॉलर हिंदी का समर्थन नहीं करता है। हालांकि, आवेदन करता है। MIDI2LR इंस्टॉलर के लिए उपयोग की जाने वाली भाषा की परवाह किए बिना सभी भाषाओं का समर्थन करता है।

Translation assistance welcome. Sign up at https://poeditor.com/join/project?hash=v6U0MvufAn.

Support MIDI2LR 💸

Donate to support project development
Unterstützen Sie die Projektentwicklung mit Ihrer Spende
Donación para ayuda al desarrollo de proyectos
Faire un don pour encourager le développement du projet
प्रोजेक्‍ट विकास के समर्थन के लिए दान करें
Dona per supportare lo sviluppo del progetto
プロジェクト開発をサポートするための寄付をお願いします
프로젝트 개발 지원을 위해 기부
Doneren om projectontwikkeling te steunen
Doner for å støtte prosjektutvikling
Przekaż dotację na prace nad projektem
Doar para apoiar o desenvolvimento de projetos
Перевести деньги, чтобы поддержать разработку проекта
Donera för att stödja projektutveckling
บริจาคเพื่อสนับสนุนการพัฒนาโครงการ
捐赠以支持项目开发
捐款支持專案開發

Screenshot Further information
Discussion Forum: https://github.com/rsjaffe/MIDI2LR/discussions
Supported platforms: MacOS or Windows.
Building: See the BUILD.txt file.
Project Page: Project Page.
Wiki and Instruction Manual: Wiki 📖.

SAST Tools

PVS-Studio - static analyzer for C, C++, C#, and Java code.

ReSharperC++ - static analyzer for C++ code.

midi2lr's People

Contributors

andymcfishka avatar creatomix avatar csaulnier avatar jewest avatar mag1024 avatar mathieucarbou avatar mischnic avatar owolff avatar rsjaffe avatar snaptags avatar thegouger avatar waffle-iron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

midi2lr's Issues

Temperature adjustements accuracy problem

In the last version, the temperature values are between 2000 and 50000. This is a problem for me now, because I can't make fine adjustments. When I move the temperature slide, the values changes 378 units in the next possition. This is too much if I want to make fine adjustments. The maximum temperature value that I use is 10000.

Parametric values

From @marcocucinato on August 20, 2015 10:38

A key or a CC could send to LR a calculated value, by using math expressions and variable substitutions.
for example, to put exposure at 50%

<setting channel="1" controller="0" command="3" value="63"/>
or
<setting channel="1" controller="0" command="3;63"/>

To increment by 2 the Clarity for each key press
<setting channel="1" controller="0" command="9;+2"/>

To give linear double slope to a control:
<setting channel="1" controller="0" command="1;${0}*2"/>

Copied from original issue: thegouger/MIDI2LR#20

New release available

Release 0.4.2 is now available for PC. Assistance with compiling Mac version appreciated.

Users of earlier versions will not get an update notice in the application, as the site holding the application version information has migrated from thegouger to here. Future versions will produce update notices.

Odd behavior in latest LR update

It appears that the latest LR update has changed the amount of information sent when moving to a different photo in the Develop module. This may leave most controls unsynced. I'm holding off on the official MIDI2LR 0.4.2 release until I put in a temporary fix. If anyone wants to try the 0.4.2 release, I've put a beta version for PCs (without the fix) here: http://thejaffes.org/tmp/MIDI2LR.lrdevplugin.zip

Lost MIDI2LR to LR communication and Crash issues

It's been a frustrating 4 days. After upgrading to 0.4.2 (might have nothing to do with it) I lost all apparent communication between LR (2015.1.1) and MIDI2LR. After futzing around with it the last few days I finally reset the BCF2000 to original factory settings. I removed the plug in using LR Plug-in Manager and rebooted, deleted the plug in from the LR plugin location, downloaded a second copy of 0.4.2, then added it back. Restated LR and nothing (nothing=no communication between LR and BCF.
Using BC Manager I verified that I'm using MIDI devices input and output are BCF2000 port 1, then I perform a hardware test which works. Loading BCF2000.txt works.
MIDI2LR reports it is connected to LR but it does nothing in pick up mode. There seems to be nothing going on between MIDI2LR/LR and the BCF2000.
AND MIDI2LR crashes when I "Rescan MIDI devices".

White balance setting not being carried to the contoller.

From @wockawocka on September 9, 2015 8:55

Odd one this. Sometimes it works, but like right now it's completely dead yet all other setting work and only the temp not tint.
There is the limit of 3000k to 9000k that causes this too but for temps within those limits there are issues (here at least).

Also, I find that often I do use the wider temp range of 2000k to 11000k.

Update, it took several restarts but it's working again. All other sliders and knobs were ok, just the Temp.

Copied from original issue: thegouger/MIDI2LR#41

Behringer USB mode synch noise of motor

From @Henk72 on September 24, 2015 22:2

Hi,

When using the BCF2000 it seems every time after a slider change has been made, some kind of update happens. You feel the slider move (but not really) as if it is synching and the MIDI A+B channel lights briefly light up. This also happens in mode U1 (only USB, no MIDI).
This does not happen with the Paddy program. I was wondering if this can be prevented.

Gr. Henk

Copied from original issue: thegouger/MIDI2LR#53

Auto load on Mac

From @renambot on August 26, 2015 4:35

Assuming the binary of the app is inside the plugin directory, I changed the code to:

local LrPathUtils = import 'LrPathUtils' -- portable folder management

...
if(WIN_ENV) then
LrShell.openFilesInApp({LrPathUtils.child(_PLUGIN.path, 'Info.lua')}, LrPathUtils.child(_PLUGIN.path, 'MIDI2LR.exe'))
else
LrShell.openFilesInApp({LrPathUtils.child(_PLUGIN.path, 'Info.lua')}, LrPathUtils.child(_PLUGIN.path, 'MIDI2LR.app'))
end

Copied from original issue: thegouger/MIDI2LR#31

Usable sliders when Adjustment Brush tool is selected

From @PhantomLordM on August 29, 2015 12:55

The idea look like this:
You have configured sliders for exposure, contrast, etc. for your Basic panel. Then, when you push the button to open Adjustment Brush, the same sliders that were used to configure exposure, contrast, etc. for Basic panel now work for Adjustment Brush changing values of exposure, contrast, etc for the brush. When Adjustment Brush is closed, sliders work again as a Basic panel sliders.
This is the same for Graduation/Radial Filter as well of course. It would be most useful if it could be user configurable - the behaviour of slider when: a) Basic Panel is active, b) Adjustment Brush Panel is active and so on.

This is pretty similar feature that was mentioned in #2 , but maybe a bit more precise.

Copied from original issue: thegouger/MIDI2LR#33

Development: Next Steps

Since I just took over the project from thegouger, I am still familiarizing myself with some of the code (with his help). Because of that and my travel in the next couple of weeks, the next release will not be out until the last half of October. That release will include incremental improvements but no major changes.

Major changes are being put on separate development branches and will be brought in later, hopefully with the next release after the mid-October one.

I'll have a bit of a challenge setting up the Mac compilation. If anyone has a Mac and is willing to do the compilation (they have to download the compiler from Apple but don't have to do any code editing or development) that will speed up release of the Mac version.

If I have to do the Mac release as well, the next release for the Mac version will be slightly later than the PC version. Once everything's up and running and tested, releases should be simultaneous for both platforms.

Thanks

Rory

Akai LPD8 Pad's are not correctly stored

Akai LPD8 Pad's are not correctly stored.
I installed the plug in and configured the pad1 to pad8, no dials were configured.
Saved the file under akai(no extension?)
rebooted Lightroom 6.2, and midi controller did not work.
opened the config screen again and when I pressed the Pad 1 a new entry was made.
The configuration options are blocked(next/previous and reject) in the new settings

Usage experience

From @micksh6 on August 23, 2015 4:16

Don't know where to post this, I hope it's the right place, even though I have no issue to report.

I bought Korg NanoKontrol2 especially for this because I don't like mouse control in Lightroom. I tried to improve mouse in LR, bought gamer's high resolution mouse, with button switching sensitivity, but still, couldn't adjust sliders quickly and precise enough.

This software promised much easier and more natural controls and it does deliver up to promises. Author did a great job!
Apart from need for more refined White Balance controls (already addressed here https://github.com/thegouger/MIDI2LR/issues/25) the software works very well.

I processed several photos with MIDI2LR and Korg NK2. It works, and I'm sure it will allow faster adjustments than mouse/keyboard.

The major problem for me is to get used to this software/hardware combination on physical level - develop reflexes, etc. The habit of using mouse is too strong.

To break the habit I made a cheat sheet with functions printed over NK2 control layout. This is what I'm starting with, I'm sure others will choose different control mapping. This is to show a basic idea of how to get used to new tools, and maybe to inspire discussion about other ideas.
Printed this picture: http://1drv.ms/1U7FKWu
Setting file just in case: http://1drv.ms/1U7FTZQ

So, mostly, the control order on faders is the same as in LR, starting from exposure. Faders are better than knobs IMO.
White balance is moved to knobs because I rarely need to adjust it (Auto WB works well on my camera, plus MIDI2LR needs finer granularity). Then I assigned the rest 6 knobs to whatever I think are the most used functions.

I'm glad buttons made assignable recently (Thanks thegouger!). It would be nice if more functions could be assigned, like Copy/paste settings. Currently I use extra mouse buttons for these.
And there are other weird 3-key LR shortcuts that beg to be assigned to single button.

To summarize, thanks a lot to author for great software; and all ideas on how to break mouse habit and migrate to this smoothly would be appreciated.

Copied from original issue: thegouger/MIDI2LR#27

Extend Selection

Feature Request: Extend Selection

Please implement the Extend Selection class to map to a button and/or keyboard shortcut (if keyboard shortcuts are ever implemented, too). Currently the only selection-type classes are "Next Photo" and "Previous Photo".

As for keyboard shortcuts, I'd like to use the keyboard to map the D / F keys for previous / next and use the SHIFT + D / F to extend the selection in either direction. Doing so allows me to keep my hand on the mouse for selecting white balance with the eye dropper, rotate / crop an image, use the adjustment brush or spot tool.

LrSelection.extendSelection( direction, amount )

Extends the existing selection, selecting more photos to its beginning or end. Behaves exactly like the Shift+Left/Right Arrow keys in Library grid.

First supported in version 6.0 of the Lightroom SDK.

Parameters
  1. direction(string) either "left" or "right"
  2. amount(number) number of photos to add to the selection in that direction

ALT key in develop mode

Is it possible for "White", "Black" or Sharpening etc. in develop mode to use the ALT key together with the slider. So far, nothing happens when I press the ALT key on the keyboard with simultaneous actuation of the sliders

Row rearrange

From @JaimeTak on August 19, 2015 4:7

Thanks for the great work you're doing! My nanokontrol2 is working great. A suggestion: It would be nice to be able to rearrange the rows.

Thanks!

Copied from original issue: thegouger/MIDI2LR#12

Rework Zip File to include MIDI2LR.lrplugin folder

It would be helpful if the zip file extracted a correctly named folder, or the zip file had a .lrplugin extension. It's not obvious to the uninitiated what needs to be done (renaming and moving the folder) to actually install this software.

v4.2 temperature dial unusable

Hi there!

I installed v4.2 and have noticed whenever I change the temp setting it defaults to a minimum level. I can't dial any different settings in. If I move the actual control in the lightroom gui it moves the slider accordingly, but I can't do it the other way.

Is it possible to carry LR settings the Midi controller?

From @wockawocka on September 6, 2015 16:23

Hi,
I'm loving that there is something to replace Paddy for Lightroom and the control via a BCR and BCF2000 is much smoother and responsive.

I have a single issue though in that if the file is already adjusted and I move to a new image the adjustments aren't carried over onto either controller. I need to move the controller until it hits the previous adjustment waypoint before I regain control.

If there a way to address this? TIA!

Copied from original issue: thegouger/MIDI2LR#40

Temperature control--beta test available

We removed limits on the temperature control as some people were finding the knobs to be unresponsive in certain situations. Now I've put together a possible fix to that.

If you are interested in trying the fix, first make a backup copy of the MIDI2LR_client.lua file, then replace the three functions: midi_lerp_to_develop, develop_lerp_to_midi and updateParam, by pasting over them the following replacement code. The change will take effect after reloading the plugin or restarting Lightroom. If this doesn't fix it, we'll have to change the PICKUP_THRESHOLD for Temperatures. Please send me any feedback on this fix. Thanks.

function midi_lerp_to_develop(param, midi_value)
    -- map midi range to develop parameter range
    local min,max = LrDevelopController.getRange(param)
    if(param == 'Temperature') then
        min = 3000
        max = 9000
    end

    local result = midi_value/MIDI2LR.CONTROL_MAX * (max-min) + min
    return result
end

function develop_lerp_to_midi(param)
    -- map develop parameter range to midi range
    local min, max = LrDevelopController.getRange(param)
    if(param == 'Temperature') then
        min = 3000
        max = 9000
    end

    local result = (LrDevelopController.getValue(param)-min)/(max-min) * MIDI2LR.CONTROL_MAX
    return result
end

function updateParam(param, midi_value)
    -- this function does a 'pickup' type of check
    -- that is, it will ensure the develop parameter is close 
    -- to what the inputted command value is before updating it
    if LrApplicationView.getCurrentModuleName() ~= 'develop' then
            LrApplicationView.switchToModule('develop')
    end

    if (MIDI2LR.PICKUP_ENABLED and (param == 'Temperature')) then --clamp temperature to limits to allow pickup to work
        local TempValue = LrDevelopController.getValue('Temperature')
        if TempValue > 9000 then
            MIDI2LR.PARAM_OBSERVER['Temperature'] = 9000
            LrDevelopController.setValue('Temperature',9000)
        elseif TempValue < 3000 then
            MIDI2LR.PARAM_OBSERVER['Temperature'] = 3000
            LrDevelopController.setValue('Temperature',3000)
        end
    end

    if((not MIDI2LR.PICKUP_ENABLED) or (math.abs(midi_value - develop_lerp_to_midi(param)) <= MIDI2LR.PICKUP_THRESHOLD)) then
        MIDI2LR.PARAM_OBSERVER[param] = midi_lerp_to_develop(param, midi_value)
        LrDevelopController.setValue(param, midi_lerp_to_develop(param, midi_value))
        MIDI2LR.LAST_PARAM = param
    end
end

Handling NRPN messages

From @rsjaffe on September 26, 2015 16:0

Probably the safest way to implement wider range CC values is to use NRPN MIDI messages. Behringer has another method that uses standard CC messages, but I worry that that is error-prone.

Looks like the one method that would need to be changed on the input side is MainContentComponent::handleMidiCC, which currently assumes that each CC message is a normal one. We could have it shift into NRPN mode if the CC channel is 98, look for the second channel value message at channel 99, then values at 96/97 or 6/38. See https://github.com/kunitoki/juced/blob/master/juce/src/extended/dependancies/dssi-1.0.0/doc/midi-controllers.txt for details about tne NRPN message format.

I may give this a try later this weekend if I have time.

Copied from original issue: thegouger/MIDI2LR#55

BCF2000 double button pressing

Hi! Great work on MIDI2LR! Loving it!

Have one question: On the BCF2000 that I use, anytime I use a button I need to press it twice to activate the effect that is programmed, is there a reason to this? It seems that It has something to do with the buttons lighting up and carrying a different “CC code” when they light up or if they don’t. (one press-button lights up, one more press-button lights off) For example, in the MIDI2LR window when I press a sample button it shows as 1 | CC:91 and on the top right its shows as 1:CC91 [0]

But when I press the same button again and it lights up it shows as 1 | CC:91 but on the top right its shows as 1:CC91 [127]

Anything I can do to fix that?

Thanks much!

Some ideas for the new version

The software is very very good, but it could be perfect for me with the nexts adds:

  • Create virtual copies
  • Copy and paste settings
  • Edit on photoshop
  • Export
  • Delete
  • Choose modules

Thank you very much.

Release v0.4.3 out

See wiki for full list of commands. Copy/Paste settings unfortunately not yet implemented. Have to debug the LUA code for that.

Temperature parameter handling now normal, as specialized handling was creating bugs for some people. Will work on improving wide-range parameters such as temperature in future releases.

Macros: Associate CC/Note to a sequence of actions

From @marcocucinato on August 20, 2015 11:15

Associate a CC/KEy to a sequence of actions:

for example when changing the Luminance noise, change sharpness to 100-Luminance,
<setting channel="1" controller="0" commands="[60;${0}],[56;100-${0}]"/>

this depends also on issue #20

Copied from original issue: thegouger/MIDI2LR#21

Commands for 'Paste', Rotate, and Develop Presets?

Firstly I have to say the simplicity of this plugin is great! I've just put it on my laptop, plugged in a NanoKontrol 2 and it just worked in mere seconds!

On my desktop PC I'm set up with Paddy and a Behringer BCF2000 and some of the controls I set up stopped working, some of the things I try and set up afresh just don't take. Quite infuriating. However, the way I have it now just works for me for 95% of the controls I use when editing huge batches of wedding photos so although I really want to change to MIDI2LR for my main PC I won't switch over until I know it does all I require.

Am I right in saying there's no option for 'Paste Previous'? Or have I missed it?
Any way I can twist a dial for rotating an image?

Will there be any plan to add develop presets?

I just love how to select a button to program you just prest it. Really smart. And I guess helpful too for the software - as long as your midi controller has a button the software can learn what a click looks like and map a command to it. Really cool.

Sorry if my questions are commonly asked, hope anyone can advise
Thanks

user selectable range

From @blende64 on August 21, 2015 22:59

Hi, thank you for this nice tool. I have one improvement suggestion:

You are retrieving the range with "local min, max = LrDevelopController.getRange(param)". But it would be a big improvement if the min and max values could be overwritten by user, may be in config file. Especially for Temperature, Tint and Exposure this would be very helpful. If the little steps available are mapped to the full range, each step is much to big. For example Temperature range is 2000 to 50000 so each step is with 400-500k much too rough. But if the range could be mapped to a user defined range, for example 3000-9000 (i have never used anything outside) each step would be about 47 and fine enough.

Copied from original issue: thegouger/MIDI2LR#25

Request for help: sending keystrokes to Lightroom

If anyone can contribute code for sending keystrokes to LR, I'd appreciate it. Particularly if it is compatible with both OSX and Windows. Code should either be in C++ or Lua, though if it is in Lua, it'll have to follow the rules LR imposes on Lua programs (limited access to some system resources).

thanks

Rory

Request for help: copy/paste settings

I've been working on copy/paste settings for several weeks now, and am running up against some odd behavior in LR. If anyone is familiar with Lua programming and the Lightroom SDK and wants to take a crack at it, I'd appreciate the help.

I will continue to work on this issue, but it's been strangely difficult to accomplish.

Midi2Lr not controlling Lightroom CC

Have a strange problem. I installed the latest version of Midi2LR v0.4.3 and it worked great the first day. Now it loads and starts in LR and the Mid2LR panel says its connected to LR and midi values change but nothing happens in Lightroom when the controller sliders are moved.

Nothing has changed in the setup, lightroom has not updated and settings were saved.

Totally frustrated now.

Any ideas?

Add support for relative CC

From @thegouger on August 24, 2015 23:2

Controllers with endless knobs can usually output in relative mode (eg: increase at [065 - 127], decrease at [001 - 063])

Copied from original issue: thegouger/MIDI2LR#30

I'm away until October 19

Until then, please continue to post issues and have discussions. I'll jump right in when I return.

Modifier keys not working with adjustments

From @edm81363 on August 17, 2015 20:16

Holding down the Option key (⌥) does not work with the MIDI controller to show only the affected area, such as when dragging the Whites or Blacks slider in the GUI while holding down Option.

I'm not sure this can be easily resolved, but I wanted to mention it.

I wonder if the behavior would be different if the Option key input was coming from the MIDI controller? Can you map the Option key to a button?

Copied from original issue: thegouger/MIDI2LR#10

Mapping "Temperature" to first slider (CC:0) doesn't work

I've mapped the 8 sliders of my nanoKontrol2 to the 1st 8 basic controls of Lightroom CC 2015.1. They all work as expected except for colour temperature. It's not possible to "pick up" the thumb of this slider unless it is at the lower end of the scale. Then is is only possible to move the slider downwards so the image ends up stuck with a blue cast.

Basic Install and setup

Is there a place where a basic install and setup can kept? I'm having sporadic failure issues at multiple points. There are so many variables it would be nice if there was a set of instructions (especially sending config files to the controller via BC Manager).
Some notes and questions.
Which driver do you use? The one that comes with WIN or the Behringer driver?
Any debugging hints/help to check communication between MIDI2LR and the BC?
Leaving LR and MIDI2LR running for a long period of unattended time seems to drop the connection even though MIDI2LR says it is connected to LR and BC Manager will test the hardware properly.
Yes, it could be this system and it's probably operator error. :-)

Cycle Loupe View

From @edm81363 on August 17, 2015 19:11

This is a simple request, but the LR implementation of this feature might make it tricky.

I would like to be able to toggle in the Develop Module between before and after the image adjustments are applied. I would like to be able to map this functionality to a button if possible. (Cycle seems to be a great place for it!)

I accomplish this now by pressing "", which invokes the menu command "View | Before / After | Before Only".

For the manner in which I use Before (with no split screens, etc.), the menu command "View | Cycle Loupe View" accomplishes the same thing.

The challenge I think is in deciding which of these two approaches to make mappable. I suggest that the Cycle Loupe View method offers the most flexibility, as it appears to toggle between the After image and however the user last had Before / After set. Using the "" approach would restrict the user to seeing full frame Before only, while the cycle approach allows the user to toggle between their preferred mode.

Copied from original issue: thegouger/MIDI2LR#9

Can't use midi jog wheel and midi pad button combo

From @bcarpenterphotos on August 26, 2015 5:5

I'm trying to use a Numark Orbit (seen here: http://www.numark.com/product/orbit ) but I cannot figure out how to get the center jog wheel to operate the slider function in LR 6.1.1 (non-CC version). I can use the pads just fine for hard commands like "reject" or "pick" photos in the library, but when it comes to adjusting sliders the midi controller becomes useless.

Does anyone know how to utilize this plug-in or modify it so that I can get the center jog wheel of the Orbit to act as the slider movement and the pads to select the Lightroom development parameter?

The orbit also has motion for adjusting midi parameters, so I could essentially use the axis to adjust the sliders while holding down a pad button to select the LR parameter if there was a way to modify the plug-in to communicate to the Orbit/LR this way. Any help would be greatly appreciated, it would be killer to get this midi device fully functional with LR.

Copied from original issue: thegouger/MIDI2LR#32

Modify X with + - (plus and minus) keys

Lightroom supports using the plus and minus keys for incrementing / decrementing an adjustment.
It would be useful to map these to buttons.

It looks like LrDevelopController.increment() and LrDevelopController.decrement() allow this.

Feature request and bugs (Behringer X-Touch Mini)

Hi there,

So, after seeing Pusher Labs "Minimal" based on the Behringer X-Touch Mini, I decided to get one myself. As I'm on PC and the Pusher Labs PFixer software is only for Mac, MIDI2LR comes in handy.
I wanted to emulate the same functionality that PFixer has, but I've met some shortcomings in MIDI2LR. In my testing and setup of my Behringer X-Touch Mini, here is a list of features that I found missing and a few bugs when using that MIDI controller.

Feature requests

  • Toggle/select specific profiles (i.e. layers)
  • Multiple buttons with same function (Handy for things like forward/back buttons on layered MIDI controllers as the X-TM)
  • More functions (paste previous, esc, enter, wb, awb, ae, copy, paste, sync, before/after, select left, select right, compare, toggle info)
  • Toggle button light when entering mode (Such as crop tool)
  • Specific profiles for tools (Handy to be able to control crop tools when in crop mode)
  • Reset options on all/most settings (H/S/L, Vignette, WB, Tint, saturation, vibrance, curves)
  • Adjust back to 0 (always a little off +/-)
  • Start minimized

Bugs

  • Software "resets" to 63 but lights on knobs center at 64 on the X-TM
  • Clicking the active layer button on X-Touch Mini makes the LEDs reset.

Send settings to MIDI controller

From @rsjaffe on September 13, 2015 17:44

Certain settings could improve the interface between the MIDI controller and MIDI2LR, such as making switches momentary instead of toggle.

This would involve sending SysEx messages that are appropriate for the given controller. Behringer's BCF2000 and BCR2000 are fairly common for this application because they're cheap. The following should work for the Behringer. The MIDI messages are based on the documentation from Mountain Utilities version 1.2.7.

I don't have the compiler or enough knowledge of the JUCE library to test this myself, so regard this as a suggested implementation that might need some refining.

Everything with digits mixed with capital letters is hexadecimal. Lower case letters are nibbles that need to be replaced with a value, based on the information given after the hex string. lines of periods is where character data goes.

All SysEx messages for the BCF and BCR have the following format
F00020320x1yccddF7, where 0x is the device ID (0..15). 0x can be replaced with 7F, which is "any id". 1y is model ID, where 14 is BCF2000 and 15 is BCR2000. 1y can be replaced with 7F, which is "any model". cc is the command, dd is the data (zero or more bytes), F7 is the end of SysEx line.

Step 1.

Ask for system model.
F00020320x7F01F7
the x is replaced by the device ID for the attached controller.

If a Behringer is attached, you'll receive a response distinguishing the BCF from BCR, such as
F00020320x1y02.............F7, where the data after 02 will be something like BCF2000 1.10 and 1y will be replaced by 14 or 15, depending upon the model..

This step determines which file is used for programming the Behringer.

Step 2.

Send program from appropriate text file (e.g., BCF2000.txt). If can't identify the controller or the controller has an identity that doesn't have a corresponding text file, show an error to the user and abandon the programming effort. When programming, one SysEx is sent per line of text, as follows:

F00020320x1y20mmll.............F7, where 0x is the device ID, 1y the model (14 or 15). mm and ll comprises the line number, where ll is the LSB in the form 0bbbbbbb, and mm is the MSB as 0bbbbbbb. The first line is line 0.

The Behringer will reply to each line with F00020320x1y21mmlleeF7, where x,y,m,and l have the same meaning as in the message sent, and ee is the error code. If ee is 00, all is well, and can continue on. If ee is non-zero, should send one more line with the text $end , then set the Behringer back to one of its presets, e.g., F00020320x1y2200F7 selects preset 1 (the preset on the Behringer is numbered 1-32, but in SysEx is numbered 0-31, so 00 represents preset 1). Selecting a preset wipes out what was sent, which is what we want to do in case of an error.

Instructions to users

I would instruct users to edit the second-to-last line of the txt file (currently $store 2) if they want the preset in another slot besides number 2. Also, would rely on the user to select the correct preset on their controller rather than sending a "change to preset" command from the application, as there may be use cases in which the user needs a different preset from the one programmed by the application.

Copied from original issue: thegouger/MIDI2LR#44

Icon variation

From @Flowersoft on August 19, 2015 17:33

I drew a possible version of the icon and logo:

midi2lr_48

midi2lr_320

Copied from original issue: thegouger/MIDI2LR#16

Keyboard Shortcuts

From @clearminds on August 24, 2015 18:18

A nice feature would be to be able to map a button to a keyboard shortcut. One example is CTRL+ALT+V (Copy settings from previous photo). Would make the start of some photos a lot easier.

Copied from original issue: thegouger/MIDI2LR#29

Meaning of previous and next profile

screenshot_2015 10 28_16h50m22s_007_

what does "Previous and Next Profile" means and how can I use it? Or do I have to enter the name of the profile somewhere?
It is so possible to select another preset in Midi Controller (as it were a 2nd level)

Consolidated Listing of Requested Changes

This is a consolidation of the various requests, organized by type of changes needed. I will add to this some discussion of the challenges and plans to address these. Keep checking this thread for more info.

Anyone can contribute code to this project. At this point, most of the open requests require complex work, and help is greatly appreciated. In particular, support for non-MIDI controllers will probably not happen unless someone helps with writing and testing the code.

Note that some changes may solve other problems. For example, instituting NRPN messages may solve some of the range issues, as that would allow variable-speed changes in parameters depending upon how quickly you rotate a dial. For broad-range parameters (e.g., temperature) this may end being preferred--we'll just have to see how it goes.

Tasks will be checked off as they are accomplished.

New actions

  • @rojmagd #27 Choose modules: LrApplicationView.switchToModule( moduleName )
  • @edm81363 #4 Cycle Loupe View. LrApplicationView.showView( viewName ) "loupe", "grid", "compare", "survey", "people", "develop_loupe", "develop_before_after_horiz", "develop_before_after_vert", "develop_before"
  • @rojmagd #27 Create virtual copies catalog:createVirtualCopies( copyName )
  • @rojmagd #27 Copy and paste settings
  • @hzamir #61 These parameters (CropLeft,CropTop,CropRight,CropBottom,CropAngle) work in knobroom, so it is easy to dial in the edges of the image.
  • @krakozavr #78 Assign different parts of the "lens corrections" range (currently a slider/knob as implemented in the SDK) to buttons.
  • @krakozavr #73 Select tone curve type. I will try implementing undocumented 'ToneCurveName' (e.g., "Medium Contrast"). Sorry, none of the undocumented tone curve commands worked.
  • @Luxius #26 @stevejmu #29 More functions select left, select right. Extend Selection: LrSelection.extendSelection( direction, amount )
  • @stevejmu #22 Assign presets to buttons: LrDevelopPresetFolder (Class) and LrDevelopPreset (Class)
  • @blende64 @micksh6 @pjparra @PhantomLordM #10 User selectable range for selected parameters (e.g., temperature, tint, exposure)
  • @marcocucinato #9 Assign sequence of actions to button
  • @marcocucinato @moutew @PhantomLordM #8 Assign calculated values to buttons (e.g., increase clarity by 2)
  • @rojmagd #63 Customizable copy/paste to allow only certain parameters to be carried over in the paste operation.
  • Paste options dialog that opens when pasting (as a new option, in addition to paste selected)
  • @krakozavr #89 Use off button signal for turning a value off. I will look into this--may interfere with current use of button to select an action with the on signal.
  • @krakozavr #83 Keywording support.
  • @PhantomLordM @krakozavr #16 Assign tool controls (e.g., brush size) to MIDI controls. (this will require some hacking, as LR doesn't support this in their SDK). Note--done for adjustment sliders for localized tools, but not for brushes.
  • Assign local adjustment values to MIDI controls.
  • @losinternet #177 Local adjustments are missing the following: local whites, local blacks, local dehaze. These adjustments are missing from the LR SDK documentation, so we'll have to do some lucky guessing to get these running.

UI changes

  • @Luxius #26 Start minimized (and give option to user to have start in regular mode)
  • #81 Show error if button mapping file cannot be saved (e.g., trying to save to program directory). Problem is line 114 of CommandMap.cpp: root.writeToFile(file, ""); doesn't check return value of the function. If false, file write failed.
  • @krakozavr #108 Mark function already assigned in the main app's window. Also, can it show how many assignments have been made for function? Haven't figured out how to number it, but as of 0.8.2 shows red if already assigned.
  • @Luxius #26 Specific profiles for tools (Handy to be able to control crop tools when in crop mode)
  • @krakozavr #83 Show a screen-messages about currently using tools and adjustment's value, like it did in PADDY.

New actions requiring sending keypresses to LR

Cross-platform solution will be needed: help wanted!

Enhance MIDI handling by C++ application

Will include some much-needed rearrangement of code and creation of encapsulating classes for controller model and LR model

  • @rsjaffe @krakozavr #1 NRPN messages. Great news December 17, 2015: the Juce library, which is used by MIDI2LR to process MIDI messages, finally supports NRPN messages. That should accelerate progress here.
  • @Henk72 #2 Behringer synch noise of motor
  • @rsjaffe #3 Send settings to MIDI controller
  • @Luxius #26 Toggle/select specific profiles (i.e. layers)
  • @Luxius #26 Toggle button light when entering mode (Such as crop tool)
  • @Luxius @hzamir #26 Multiple buttons with same function. This is in the "enhance MIDI handling" section because this feature was removed in a previous version due to problems with knobs. We'll have to restrict this capability to buttons to avoid odd behaviors, which means we have to know which control is a knob and which a button.

Other C++ application enhancements

  • @krakozavr #80 Dialog to request to save mapping (if changed) when shutting down app.
  • Support other types of controllers (e.g., Logitech G13). For this, someone else will need to write the code. You should have one of those controllers and knowledge of c++, along with knowledge of an SDK that can bridge between the controller and the MIDI2LR Juce SDK. If you need instructions on how to contribute code, see the github help pages.
  • @JaimeTak @hzamir #6 Be able to rearrange control order or sort like LR Command column
  • @laklare #190 Disable dialog box announcing new update or dismiss it once and not see it again.
  • #143 @Jewest @StevenKersting Detect whether MIDI device connected or not. Stop plugin activity when not connected.

Plugin changes

  • @renambot #14 Auto load on Mac.
  • #148 @lukasradek @StevenKersting The ability for the program to send back on/off or user set signals (value/channel) would allow the indicator LEDs to change to indicate their current status/what they are controlling.

Not yet categorized

Lightroom Presets

Would be nice to assign presets to buttons and provide a drop down menu of available presets to assign with that button. Have a look at the LrDevelopPresetFolder & LrDevelopPreset classes available in the Lightroom 6.0 SDK (descriptions below).

LrDevelopPresetFolder (Class)

This class provides access to a develop-preset folder, and to the LrDevelopPreset objects for the contained presets.

Access the functions and properties from the object. Retrieve the objects for all the folders by calling LrApplication.getDevelopPresetFolders().

- folder:getDevelopPresets()

Retrieves the develop-preset children of this folder.

- folder:getName()

Retrieves the name of this folder.

- folder:getPath()

Retrieves the path of this folder.

- folder:type()

Reports the type of this object.

LrDevelopPreset (Class)

This class provides access to a develop preset, which stores persistent develop settings.

Access the functions and properties from the object. Retrieve the objects for all the presets at the root of the hierarchy by calling LrApplication.developPresetFolders().

Retrieve objects from the parent folder using LrDevelopPresetFolder.getDevelopPresets().

- preset:getFile()

Retrieves the file path of this preset.

- preset:getName()

Retrieves the name of this preset.

- preset:getParent()

Retrieves the parent folder of this preset.

- preset:getSetting()

Retrieves the settings for this preset.

- preset:getUuid()

Retrieves the unique identifier of this preset.

- preset:type()

Reports the type of this object.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.