Darkroom Enlarger (Multigrade)
The variable-contrast enlarger, one filter grade at a time
- film_negative
- image
Real darkrooms moved past graded paper for a reason: variable-contrast paper means one box of paper does everything, and you change the print's contrast by changing the filter under the enlarger lens, not by buying a different box. PrintLabMultigrade simulates exactly that - take the film_negative from DeveloperLab, pick a contrast grade from 00 to 5, set your exposure, and get a finished print. It's the most-used enlarger node in the pack, and for good reason: it's the one that lets you actually iterate on contrast without changing anything else.
This is the default "make my negative look good" node. The graded variant is more authentic-feeling, the split-grade variant is more advanced, but multigrade is the pragmatic center - one knob (plus exposure) and you're printing.
How it works
Required input is film_negative - the negative from DeveloperLab, not the contact print. Two optional controls:
- contrast_filter - the grade, in half steps from 00 to 5 (the full list: 00, 0, ½, 1, 1½, 2, 2½, 3, 3½, 4, 4½, 5). Default 2 is the "normal" grade. Lower grades = softer, flatter, more shadow/highlight detail; higher grades = punchier, harder edges between tones, more aggressive blacks. The filter grades map to real contrast filter sets, so the increments aren't arbitrary - 00 to 0 is a small step, 4 to 5 is a big one, just like the real filters.
- exposure_secs (0–60, default 10) - exposure time, controlling overall print brightness. More time, darker print.
Output is a single image - the finished print, ready to save or upscale.
The workflow loop
The practical rhythm: print at Grade 2, look at the result. Shadows muddy and low contrast? Step up to 2½ or 3. Highlights blown and the image harsh? Step down. Adjust exposure_secs to balance brightness as you change grade - higher contrast usually wants a touch more exposure to hold detail. That loop is the entire darkroom print-matching experience compressed into two dropdowns.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/AlbertJBurton/comfyui-jbnodes.git
cd comfyui-jbnodes
pip install -r requirements.txt
Restart ComfyUI, or ComfyUI Manager → "comfyui-jbnodes."
Gotchas
- Wire
film_negativefrom DeveloperLab in. Feeding it a positive gives you a tonally inverted print that no amount of grade-fiddling will fix. - There's no precision control here (unlike the graded variant) - the LUT is fixed, so very large prints can show banding that the graded node's
precisionknob would smooth. If you hit that, use PrintLabGraded with a matching grade instead. - Beta pack: filter grade names and behavior can shift between versions; save your workflow and re-check the dropdown after updating.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| film_negative | IMAGE | — | |
| contrast_filteropt | COMBO | 2 | 12 options: 00, 0, ½, 1, 1½, 2, +6 |
| exposure_secsopt | FLOAT | 100–60 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |