Feature #12301

Channel Mixer -- Fixed Sum Toggle

Added by Gabe Krause over 1 year ago. Updated over 1 year ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:
Affected Version:
hardware architecture:


I'm always fussing back and forth with the sliders to explore different ratios while usually trying to maintain a sum of 1 (the global lightness). Every single adjustment throws the global lightness off, which is distracting.

It would be so nice if there were a field that we could just punch in a global lightness value and the module would auto adjust the sliders with temporal priority to maintain global lightness. Meaning priority is given to the sliders by whichever ones were adjusted last. Or in other words, the sliders untouched the longest are slave(s) to the currently active slider.

As an example, say we want to convert our image to monochrome with an overall slightly higher tonal value.
  1. We select the gray destination.
  2. And fix global lightness to 1.2 (new feature).
  3. Immediately all R, G, and B sliders self align at 0.4
  4. We start experimenting with the red channel and settle on 0.5, meanwhile the blue and green channels are simultaneously adjusting for the total sum of 1.2, each settling on 0.35
  5. We then bump down the blue channel to 0.24 (to make that blue sky look a little dark and moody) and, being the only slider yet to be touched, the green channel auto adjusts to 0.56 to keep the balance.
  6. But we want the green objects to be a little darker so we slide the green channel down to 0.36, and since red was the furthest in history, it now auto adjusts up to 0.6 to keep the balance.
  7. The balancing continues in this way as we fine tune each slider to our liking. And the global lightness has been constant the whole time which significantly helps us keep our tonal perspective as we refine our image.
  8. We find a pleasant balance (at R,G,B: 0.6, 0.36, 0.24) but decide the global lightness is actually too high, and change it's value down to 1.1
  9. The red, green, and blue sliders proportionally readjust to 0.55, 0.33, and 0.22 respectively, maintaining their ratios and adding up to the new global lightness value.
  10. Should we no longer care about a fixed global lightness, we toggle the feature off and continue adjusting sliders without that constraint, as the channel mixer currently performs in darktable v.2.4.4

Doesn't that workflow sound enjoyable! Hoping you all agree and that it's a simple enough improvement to be added to a future version of our fantastic darktable ;)


#1 Updated by Aurélien PIERRE over 1 year ago

For now, you can use the color adjustment blending mode to avoid affecting the luminance.

#2 Updated by Gabe Krause over 1 year ago

For now, you can use the color adjustment blending mode to avoid affecting the luminance.

That seems promising but have you actually tried that? Under the coloradjustment blending mode the Luminance is affected the same as without any blending mode.

Aurélien PIERRE, is there more procedural detail you can share that would support your suggestion?

#3 Updated by Aurélien PIERRE over 1 year ago

  • % Done changed from 0 to 20
  • Status changed from New to Triaged

Ah you're right, the luma gets affected as well. I have programmed a similar feature as what you have asked, in the color balance mode, so it's not really difficult to do. It just needs time. But you have to keep in mind the Helmholtz-Kohlrausch effect that will, always, change the percieved lightness depending on the color saturation :

#4 Updated by Gabe Krause over 1 year ago

Great that you've already done similar and that it isn't difficult. The color balance module looks good. Of course, we wouldn't want to attempt affecting perception like with the Helmholtz-Kohlrausch effect. But the practicality of stabilizing luma would certainly be helpful.

Thank you for your work and efforts!

Also available in: Atom PDF

Go to top