Karma Tone Curves
Lightroom's tone panel, minus the Lightroom
- image
- image
If you've ever graded a photo in Lightroom, you know the tone panel: lift the shadows, recover the highlights, add a touch of midtone contrast, maybe tint the shadows teal. Karma Tone Curves is that panel as a ComfyUI node - independent shadow/midtone/highlight brightness, an S-curve contrast control, black and white point clipping, and split toning, all on a single IMAGE in, IMAGE out. It's the surgical half of this pack's post-processing chain, for when Kolors is too blunt and Film Emulation is too automatic.
Under the hood it's doing what a real tone curve does, just organized as zone controls instead of a graph you drag. The shadows, midtones, and highlights inputs (each -1 to +1) adjust brightness in those ranges independently - negative shadows crushes blacks, positive lifts them; midtones behaves like gamma; highlights pulls down or pushes up the bright end. midtone_contrast (-1 to +1) applies an S-curve, so positive gets punchier and negative goes flat and airy. black_point (0–0.3) raises the floor for that faded, matte look; white_point (0.7–1.0) drops the ceiling to tame blown highlights. The clever bit is the implementation: it blends the zones with cosine weighting so the transitions stay smooth, which is specifically to stop banding - the classic failure mode of naive per-zone adjustments.
Split toning rounds it out: shadow_tint_hue/shadow_tint_strength and highlight_tint_hue/highlight_tint_strength let you tint the two ends of the range with any hue, exactly like Lightroom's split toning. Here's the one number system to internalize: hue is normalized 0–1, where 0 is red, ~0.33 green, ~0.6 blue, ~0.83 magenta. That means the famous teal-and-orange grade is shadow_tint_hue 0.52 (teal lives right before blue) with highlight_tint_hue 0.08 (orange, just off red), both strengths around 0.1–0.15.
Installing it
Search "KarmaNodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/KarmaSwint/ComfyUI-KarmaNodes
cd ComfyUI-KarmaNodes
pip install -r requirements.txt
Restart ComfyUI. No model downloads - it's pure NumPy pixel math.
Recipes worth stealing
The README has a handful that genuinely work. Faded film: black_point 0.05–0.1, shadows +0.1, midtone_contrast -0.1. Punchy modern: midtone contrast +0.3–0.5 with shadows slightly crushed. Matte finish: black point 0.05–0.08 and white point 0.92–0.95. High key: lift everything - shadows +0.2, midtones +0.1, highlights +0.1.
The trap to watch is subtlety on the wrong axis. Because the zones blend smoothly, big single-zone moves are safe from banding but can still look plastic - the reads of "muted," "matte," and "washed out" all live within about ±0.1 of zero, so nudge, don't slam. And remember its place in the pipeline: the pack suggests tone curves first, then color, then lens FX, then grain. Getting the tonal structure right before you touch color and grain is the whole difference between a grade and a filter.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image to apply tone adjustments to | |
| shadows | FLOAT | 0.00-1–1 | Shadow brightness adjustment (-1 = crush, +1 = lift) |
| midtones | FLOAT | 0.00-1–1 | Midtone brightness adjustment (gamma correction) |
| highlights | FLOAT | 0.00-1–1 | Highlight brightness adjustment (-1 = pull down, +1 = push up) |
| midtone_contrast | FLOAT | 0.00-1–1 | Midtone contrast (S-curve): positive = more contrast, negative = flatter |
| black_point | FLOAT | 0.0000–0.3 | Raise the black point to clip shadows (0 = pure black) |
| white_point | FLOAT | 1.0000.7–1 | Lower the white point to clip highlights (1 = pure white) |
| shadow_tint_hue | FLOAT | 0.600–1 | Hue for shadow split tone (0=red, 0.33=green, 0.6=blue, 0.83=magenta) |
| shadow_tint_strength | FLOAT | 0.000–0.5 | Intensity of shadow color tinting |
| highlight_tint_hue | FLOAT | 0.100–1 | Hue for highlight split tone (0=red, 0.1=orange, 0.17=yellow) |
| highlight_tint_strength | FLOAT | 0.000–0.5 | Intensity of highlight color tinting |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |