[Suggestion] Simplify Tone Equalizer

Although I haven’t been using Tone Equalizer extensively yet, I’d like to make a proposal for the user interface. The few times I’ve used it, I always skipped over the “simple” tab and went straight to “advanced”, not because I’m so advanced in image processing, but because I just found it simpler to use. Clicking into the image area I want to lighten or darken and then just using the mouse wheel up and down, it could hardly be simpler than that. If I still want to pull a specific EV value up or down, I can do that in the “advanced” interface just as simple. In fact, pulling a slider up or down to change a value up/down is actually more intuitive than moving it left or right.

May I suggest to delete the “simple” tab from the Tone Equalizer interface, because it doesn’t really offer simplification, IMHO?


The simple sliders are the only way to correct a channel without affecting their neighbours (in the EQ view and in the interactive cursor, you push and pull a whole range). It’s useful when you have degraded the curve up to a point you can’t control it anymore in the EQ view, or if you want to impose a 0 EV at the boundaries, or in any case where you need a singular control over a specific channel.

So, yes, it’s not always useful, but when it’s needed, there is no other way around.


Agreed, the sliders are linked in the “advanced” tab, but that could be toggled with a link/unlink switch. In unlinked state they would behave as in the"simple" tab now. Linked should be the default state.

Between the lines of your reply, I read that the"simple" tab is needed for more advanced manipulation. :smile:

1 Like

It’s more complicated than that, because then you have to take care of the double-click reset. Should it reset one channel only ? The whole graph ? One channel if you are close enough to it, the whole graph otherwise ? It’s just a can of worms.

What is simple is the UI. Simple UI doesn’t mean simple use. That’s what people don’t get. This UI will be simple to use (LR style) if I’m able to automatize the masking one day. But the whole module is a full R&D project, so incremental improvement is the only way.

1 Like

Sorry to keep bugging you on this (especially as a newbie 'round here). However, I just find it counterintuitive if the “advanced” interface is (mostly) easier to use than the “simple” one. :sunglasses:

Oh yeah, don’t get me started with intuitivity. Other users might argue that the curve and histogram on the advanced tab are not intuitive, because the histogram is from the mask and not from the picture.

I gave up on intuitivity. Not interested.

The simple tab is simple because it shows less info and 1D control, which apparently users like because magic is fun and nobody cares about the guts of image processing. And also it looks like LR, which seems to be an achievement in itself for some.

The advanced tab is advanced because it’s a 2D graph with a scary inset histogram and a weird curve that doesn’t accurately match the nodes.

But if you ask me, the only intuitive way is the interactive cursor: hover image, push mouse wheel (is in “push film”) if you want that region brighter, pull mouse wheel if you want it darker, then move on to the next region.


Simple tab and advanced ones are both useful. So it’s good to have this and is not much work to make just one click to go to advanced tab. By developing a software (and so a module), it’s important to think of most people and usages possible. So what could be better for you is not better for all users (I precise that I use like you more the advanced tab than the simple one, but sometimes simple tab is useful).

@aurelienpierre: I don’t know if it is possible this way but maybe the simple solution here would be to have an option (preset ?) to select the default open tab. Or maybe too complicated to add ?

1 Like

@aurelienpierre, I think that once I understood the histogram was connected to the contrast mask and not the image itself, that the entire TE module became very intuitive. By that I mean it’s easy to connect the controls to what’s going on behind the algorithm

If I have any challenge with the module, it’s that the mask exposure and contrast controls seem very sensitive to one another and it can be difficult at times to converge on a widely distributed and centered histogram.

Otherwise, the module is a lot of fun to work with.

Or maybe just keep in darktablerc the number of the latest opened tab and open it by default the next time ?


This masking part of the module is very tricky, the maths are high-tech and their connection with the physical light emission is non-intuitive. Plus @rawfiner found out that the variance is linked to the exposure of the pixel, which means the guided filter will blur harder in shadows than in highlights. Plus the internal guided filter is done with a box blur which, @hanatos pointed out, favours gradients oriented in the (x, y) directions and is more sloppy with diagonal gradients. So, there is a lot of work to do, still, on the guided filter, to stabilize the variance in an exposure-independent way and probably replace the box blur with a gaussian blur.

Bottom line, we need to understand the guided filter better to be able to make it more predictible, and once it will be predictible, automatizing the tuning will be a piece of cake. But it’s a lot more than a programming job, we have a fundamental math minefield to defuse first.


From an user standpoint Tone Equalizer is rather great and intuitive piece of software! The problem comes with learning it, as I was only able to appreciate it after deep dive in @aurelienpierre’s videos where everything was described, explained and shown. Based on my current limited experience in working with tone equalizer + a bit more of working with designers on implementing UI/UX here’s my view:

It’s good that Aurelien explained it :slight_smile: but generally it’s bad mojo. Fortunatelly the tone equalizer UI doesn’t hide anything from user that isn’t user-adjustable.

This is fun to note: nothing’s intuitive. The “intuitive” interface is the one the user learned first (or the one user’s accustomed the most). No reason to go full intuitive at first since it’s just a set of superstitions.

Another point about UX - tone equalizer interface is 1st of it’s kind (IMO… I haven’t seen tool like this ever before). The interface created for it is 1st of it’s kind and as such requires evolution. Current use, comments (like mine and @Dave22152’s) suggest that in order to better streamline module usage (or majority of those) the order of tabs in module should be reversed - at first user should start with masking (that doesn’t change anything which might be counter intuitive, but it’s more streamlined for next step) and then is guided to advanced tab (which might require a bit of renaming), leaving simple tab (which needs renaming)

Overall, given all the challenges the module is facing and all the problems the module is solving, the UI/UX of module is surprisingly good!

TL;DR: reverse tab order in module + rename simple tab (and additionally maybe rename advanced tab) and the UX is perfect for users that’ll take time to learn it :slight_smile:


No, thanks for the kind words, but the masking is not good enough.

By the way, that reminds me I’m still not making minimal wage : https://en.liberapay.com/aurelienpierre :wink:


:slight_smile: I meant “perfectly fine” which means “it’s alright”. I understand it’ll take at least couple iterations to get it right

I’m changing jobs so I may double my pledge etc, but until then I’m more than happy to promote dt and suggest people donate instead of spending $$$ on products they don’t even use (I’m looking at YOU you C1 Pro user who bought the license while it was on sale but still blew 200€ on it and still don’t use it because you apparently don’t have time to learn it nor learn darktable or RawTherapee and are vendor locked-in to your 25€/month lightroom subscription)

Anyway: regarding UX, it’s a process… hope it gets on the right track to streamline user’s interaction with it. regarding liberapay: I’m pretty sure (or at least - I think) your video series + guys on reddit promoting your stuff are always resulting in at least small uptick in liberapay :slight_smile:

Newbie user here. I find tone equalizer fairly easy to use, though that might be cause I’m doing it all wrong. I 1st jump to the mask tab. I slam the exposure comp slider to the left and the contrast comp slider to the right. If there is any clipping indicated by yellow color I tweak the sliders to remove it. Then I go to the advanced tab, and use mouse wheel scroll directly on the image.
I hope I’m not doing anything incredibly stupid. I don’t view the actual mask cause frankly I don’t know what it is supposed to look like. I also don’t understand the other controls in the masking tab, so I just leave them alone.

I rarely use dt, other than export it for further custom processing; but that is just me. :slight_smile: As for masking, I never use it because of the reasons stated above. I don’t find masking clean. I would rather do it myself outside of dt if I really needed it to be done.

This is the only “shortcoming” in the UI from my point of view. Would be great to see this implemented.

That is something you already mentioned in your video and I’m presuming that this will be corrected in future versions. Up to that time you just have to tweak a bit longer to get the result you want :wink:

Have been a sponsor for some time now. Keep up the good work!

1 Like

No, not really. I don’t know exactly how tone equalizer came to be, but ACDSee had something very similar from like ten years ago called LightEQ. For sure, the mask calculation was not at the level of tone equalizer, nor could you change the mask calculation. But hovering over the picture and using your mousewheel to adjust the exposure locally was implemented there first (to my knowledge). In their implementation you could go from 3 to 5 to 9 EQ ‘bands’ if you wanted to and I think a fully parametric ‘EQ’ in later versions. There was no ‘simple’ and ‘advanced’ separation I think…It worked without adjusting a mask first, so really intuitive (there, I said it! :stuck_out_tongue: ) with the downside of ugly halos if you pushed too hard.

While Intuition with something that didn’t exist before is a design problem that I fully recognize, other software faces the same problem and comes up with different solutions. Not all parameters to an algorithm have the same de-facto importance when tweaking them, this can be reflected in the UI/UX for example.

Thank you for doing this! If you can solve this, and I am sure this is no easy task, the module will be absolutely fantastic. It’s already my go-to module for dynamic range management.

My wife uses ACDSee extensivelly, Even the “LightEQ” module… but never went beyond “Basic” tab which allowed only for shadows/midtones/highlights and never tried to use cursor on the pic etc. I just showed it to her and mind = blown. So no… not intuitive :stuck_out_tongue: And that’s why I said that it’s something new - I never really saw full-blown “Advanced” LightEQ in ACDSee…

This is called streamlining in UX. Basically if you have in-house designers and testers it goes through iterations in-house and then gets released to the world and is still refined. In open-source the best case scenario is if we’re testing internally or the dev nails UX design perfectly :wink: Otherwise just UI has to be dumped on users and refined based on feedback :slight_smile:

1 Like

Actually, I’m pretty happy with the module as it stands right now. It would be nice if the historgram centering and dispersion tools played better with one another, but as explained, that would involve a lot more effort than meets the eye.

1 Like

Touché! I wonder now how I found out about that functionality. ACDSee had a lot of mousewheel action over sliders as well. Maybe that’s how I abstracted from there?! They had like really large sliders with lots of area for your mouse to land on and then hovering over you could easily adjust parameters quickly. Hm, so many things that go on for streamlining.

Yes. I am all for it. Sometimes I feel that when you point out that some things still need streamlining, you get dismissed in a weird ‘well it’s hard, don’t bother me with your criticism, I program it, therefor I know what’s good!’ kind of way. That’s not streamlining for me at least.

1 Like