# Lighting Desk > The ratio you dial is not the ratio you get, because the fill lands on the key side > too. The lit side carries key + fill + ambient and the shadow side carries fill + > ambient, so R = 1 + K/F and NOT K/F: two lights of equal output give 2:1, not 1:1, and a > key four times the fill gives 5:1. And ambient is a fill nobody set - it lands on both > sides too, so it can only compress the ratio toward 1:1, and past a point it puts a > wanted ratio out of reach entirely. ## The one thing to know **THE RATIO YOU DIAL IS NOT THE RATIO YOU GET.** ```text lit side key + fill + ambient shadow side fill + ambient <- the fill is on BOTH lines ratio (K + F + A) / (F + A) with A = 0 1 + K/F <- and NOT K/F the fill F = (K - A(R-1)) / (R-1) <- negative means unreachable the ceiling (K + A) / A <- hardest ratio with no fill at all a level output / distance^2 falloff 2*log2((d + depth) / d) <- across the subject, not to it ``` The error from dividing the key by the fill is always exactly one step, and always toward more contrast than intended. It survives because nobody meters the shadow on its own — and because in a room with any ambient in it, the room quietly corrects some of the overshoot, so the number often comes out right for the wrong reason. ## What you dial against what you get | You set the key to | The ratio you GET | In stops | To actually get that ratio, the key must be | | --- | --- | --- | --- | | 1× the fill | **2:1** | 1 stop | 0× the fill — which is no key at all | | 2× the fill | **3:1** | 1.58 stops | 1× the fill | | 3× the fill | **4:1** | 2 stops | 2× the fill | | 4× the fill | **5:1** | 2.32 stops | 3× the fill | | 8× the fill | **9:1** | 3.17 stops | 7× the fill | | 15× the fill | **16:1** | 4 stops | 14× the fill | With no ambient, `R = 1 + K/F`. **The error is always exactly one**, and it is always toward more contrast than intended. Somebody setting "four to one" by making the key four times the fill is shooting 5:1 — +0.32 stops darker in the shadow than they think. The first row is the one to sit with. **Two lights of equal output give 2:1, not 1:1** — a whole stop of modelling nobody asked for. A genuinely flat frame needs one light on the lens axis, not two matched ones either side. ## What the room does to all of it | Ambient (key = 4, fill = 1) | Ratio | In stops | Highest ratio with NO fill | | --- | --- | --- | --- | | 0 (a black studio) | 5:1 | 2.32 stops | infinite | | 0.1 | 4.64:1 | 2.21 stops | 41:1 | | 0.25 | 4.2:1 | 2.07 stops | 17:1 | | 0.5 | 3.67:1 | 1.87 stops | 9:1 | | 1 | 3:1 | 1.58 stops | 5:1 | | 2 | 2.33:1 | 1.22 stops | 3:1 | | 4 | 1.8:1 | 0.85 stops | 2:1 | **Ambient is a fill nobody set.** It lands on both sides, so it can only ever compress the ratio toward 1:1 — the second column falls monotonically and never rises. The same two lights that give 5:1 in a black studio give 2.33:1 in a bright room, and nothing on the stands has moved. The last column is the one that ends arguments. It is the hardest contrast available with the fill switched off ENTIRELY, so it is a ceiling: past it, the only move is to take light away. At an ambient of 2 against a key of 4 that ceiling is 3:1, and no amount of adding gets beyond it. ## Inverse square, as distances | Move a light by | Its level becomes | Which is | From 2 m that is | | --- | --- | --- | --- | | half the distance | 4× | +2 stops | 1 m | | 1/√2 the distance | 2× | +1 stop | 1.41 m | | no move | 1× | 0 stops | 2 m | | √2 the distance | 0.5× | -1 stop | 2.83 m | | twice the distance | 0.25× | -2 stops | 4 m | | four times | 0.06× | -4 stops | 8 m | **One stop is a factor of 1.41× in distance**, which is a much smaller move than it feels like — from 2 m that is 2.83 m, less than a metre. It is why nudging a light does nothing and why a deliberate move usually overshoots. ## The falloff nobody asks for | Key at | Falls across a 25 cm subject | Near side vs far | Reads as | | --- | --- | --- | --- | | 50 cm | 1.17 stops | 2.25× | **uneven** | | 70 cm | 0.88 stops | 1.84× | visibly close | | 1 m | 0.64 stops | 1.56× | visibly close | | 1.5 m | 0.44 stops | 1.36× | even | | 2 m | 0.34 stops | 1.27× | even | | 3 m | 0.23 stops | 1.17× | even | | 5 m | 0.14 stops | 1.1× | even | Inverse square applies across the subject as well as to it: the near side is at `d` and the far side at `d + depth`. A key at 50 cm puts 1.17 stops between somebody's nose and their ear — **a ratio nobody asked for, sitting inside the one that was**, and it moves whenever they lean. To hold it under 0.5 stops the key has to be at 1.32 m or further. That is the real reason big soft sources sit back: not softness, geometry. ## Thresholds | Threshold | Value | What it separates | | --- | --- | --- | | flat | ratio ≤ 1.5:1 | under 0.58 stops between the sides; almost no modelling. | | dramatic | ratio ≥ 8:1 | 3 stops or more; holds on any sensor, reads as hard. | | on target | within 5% | finer than a dimmer sets or an eye judges. | | ambient worth naming | ≥ 5% of the key | it is moving the ratio whether or not anybody metered it. | | ambient in charge | ≥ 25% of the key | the room is setting the ratio and the fill is decorative. | | falloff worth naming | ≥ 0.5 stops across the subject | visible, and usually why close light looks close. | | falloff too much | ≥ 1 stop | the near side is 2× the far side. | Defaults when the sheet is silent: no ambient (a black studio), a subject 25 cm deep, 12 stops of camera latitude, and no target. The ambient assumption is reported as a WARNING because most rooms are not black studios and it moves every ratio on the sheet. ## Sheet grammar Two blocks. `SETUP` is `key | value`, one per line. `LIGHTS` is a table. ``` SETUP name | what this is target | 4:1 the ratio you actually want, lit side to shadow side ambient | 20 the room's own light, in the same units as the lights below depth | 0.25 the subject's depth front to side, in metres latitude | 12 stops the camera holds below the lit side LIGHTS l1 | the key | 1000 | 2m | key | l2 | the fill | 1000 | 4m | fill | l3 | the window | 400 | 5m | practical | ``` A LIGHTS row is `id | what it is | output | distance | role | why`. The role is one of **key**, **fill**, **back** (also kicker, rim, hair) and **ambient** (also practical, window, daylight, spill). Several lights can share a role and their levels add. **Outputs can be in any unit at all** — watts, lux, footcandles, or a bare number — as long as they agree with each other, because a ratio is dimensionless and every unit cancels. Distances accept `2m`, `80cm`, `6ft` or a bare number of metres. The ambient can be given either way: as a level in the SETUP block, or as one or more lights in an `ambient` role, whichever is easier to estimate. Both add into the same term. A backlight is parsed and reported but does NOT enter the ratio, because it lands on the rim rather than on either side of the face. ## Lanes - **`plan`** — Choose the ratio, then solve for the fill. A ratio gets chosen and then set by dividing the key by the fill, which overshoots by exactly one step every time. This starts from the ratio that was actually wanted, accounts for the light the room is already contributing, and solves for the fill level rather than guessing it. Sections: Summary, The Sheet, The Setting, Reasoning, Next Step. - **`check`** (primary) — What this rig actually gives. The paid read of what the free panel computes. What the lit and shadow sides really carry, the ratio that produces, how far that is from what was asked for, what the room is contributing whether or not anybody metered it, and whether the number is right for the right reason. Sections: Summary, Verdict, Findings, Corrected Sheet, Next Step. - **`room`** — What the room is contributing. Ambient lands on both sides of the subject, so it is a fill nobody set and cannot dim. This works out what the room is worth in stops, what ratio it still permits with the fill switched off entirely, and which of the findings would disappear in a black studio. Sections: Summary, What The Room Adds, The Ceiling It Sets, In A Black Studio, Next Step. - **`distance`** — What every light does from where it stands. Inverse square, per light: what each one delivers, how far it would have to move for a stop, and how much it falls off across the subject's own depth — which is a ratio nobody asked for sitting inside the one that was, and which moves whenever the performer does. Sections: Summary, Every Light, What A Stop Costs, Falloff Across The Subject, Next Step. - **`deliver`** — Decide what changes: the fill, the room, or the ratio. Sorts every finding into what moving the fill fixes, what only removing light fixes, and what nothing fixes. The middle bucket is the one people never budget for: past a certain amount of ambient a contrast ratio cannot be reached by adding anything at all. Sections: Summary, Moving The Fill Fixes, Only Removing Light Fixes, Nothing Fixes, Next Step. ## Findings All 26 are computed in the browser and cost nothing. | Code | Severity | Scope | What it means | | --- | --- | --- | --- | | `TARGET-ASSUMED` | note | setup | No ratio was asked for | | `AMBIENT-ASSUMED` | warn | setup | The ambient was assumed to be nothing | | `DEPTH-ASSUMED` | note | setup | The subject's depth was assumed | | `LATITUDE-ASSUMED` | note | setup | The camera's latitude was assumed | | `NO-KEY` | error | setup | There is no key light | | `NO-FILL` | note | setup | There is no fill | | `FILL-EXCEEDS-KEY` | warn | setup | The fill is brighter than the key | | `THE-RATIO` | note | setup | What this rig actually produces | | `RATIO-IS-NOT-KEY-OVER-FILL` | note | setup | The ratio is not the key over the fill | | `EQUAL-LIGHTS` | note | setup | Two equal lights give 2:1, not 1:1 | | `ON-TARGET` | note | setup | The rig hits the ratio that was asked for | | `OFF-TARGET` | warn | setup | The rig does not produce the ratio that was asked for | | `FILL-TO-HIT-TARGET` | note | setup | The fill level the target actually needs | | `TARGET-UNREACHABLE` | error | setup | The ambient alone is brighter than the target allows | | `TWO-ERRORS-CANCEL` | warn | setup | The key:fill was set as if it were the ratio, and the room hid it | | `AMBIENT-NOTABLE` | note | setup | The ambient is a measurable part of the shadow | | `AMBIENT-DOMINANT` | warn | setup | The ambient is most of the shadow | | `AMBIENT-CEILING` | note | setup | The highest ratio this room permits | | `CONTRAST-FLAT` | note | setup | There is almost no modelling | | `CONTRAST-DRAMATIC` | note | setup | This is a hard-contrast rig | | `SHADOW-BELOW-LATITUDE` | error | setup | The shadow falls outside what the camera holds | | `LIGHT-LEVEL` | note | light | What this light delivers at its distance | | `FALLOFF-GROSS` | warn | light | This light falls off sharply across the subject | | `FALLOFF-NOTABLE` | note | light | This light falls off measurably across the subject | | `MOVE-BY-A-STOP` | note | light | What moving this light would cost | | `BACK-NOT-IN-RATIO` | note | light | A backlight is not part of the ratio | ## What this page cannot do This page computes from the numbers on the sheet. It has not metered anything. - **It is a point-source model.** Inverse square is exact for a point and approximately true for a source small against its distance. A 4×4 at a metre is not a point, and its falloff is gentler than `1/d²` — which makes the falloff figures here a worst case for big soft sources. - **The units are arbitrary and they cancel.** A ratio is dimensionless, so watts, lux and "1" all work provided they are consistent with each other. Nothing here is a photometric prediction and no figure can be taken to a meter. - **The fill is assumed to land on both sides equally.** A fill near the lens does; a fill at 45° does not, and a properly placed one lands mostly on the shadow side, which moves the ratio back toward `K/F`. The model here is the worst case for the off-by-one and the common case for a bounce. - **Angle of incidence is not modelled.** A light striking a cheek at a glancing angle delivers less than one striking it square, and this page treats every source as hitting its side straight on. - **Nothing here knows about colour, quality or shape** — only levels. Two rigs with identical ratios can look nothing alike. - Nothing here reaches the network, reads a file, or inspects an image. ## API `POST https://api.skillsafe.ai/v1/app-api/run` with a bearer token from https://lighting-desk.skillsafe.ai/tokens.html. The body IS the input object — there is no `input` wrapper and no `X-App-Slug` header. `task` is required and must be one of plan, check, room, distance, deliver. `POST /estimate` is free and validates the same body. Full documentation at https://lighting-desk.skillsafe.ai/api.html. ## Provenance Lanes derived from the `fal-ai-media` skill in https://github.com/affaan-m/everything-claude-code. The arithmetic, thresholds, sheet grammar and findings are this app's own. Not affiliated with or endorsed by the authors of that repository.