Trichromatic film scanning · 665 / 525 / 450 nm

The Frontier look.
From your own camera.

Three narrowband exposures in, an SP‑3000‑grade colour pipeline out — read out of the machine itself, stage by stage.

Not a filter, and not a model of one. One measurement per roll, then a whole roll that agrees with itself.

macOS 14+ & Windows 10 22H2+ · your own raws · nothing is copied or moved

A woman on a vaporetto looking back through the window, the Venice lagoon and the far shore beyond her, reflections lying across the glass — a colour negative developed by Trichroma Lab.
Three black-and-white separations, screened back together. That is not a treatment applied to a photograph — it is how the photograph is made.

Side by side

The same negative, twice.

One scan off a Fuji Frontier. One through Trichroma Lab, on a copy stand at home. Both cropped to the same frame and both with the rebate left off — a border on one side alone is a tell, and a light surround shifts how you read the colour inside it.

A portrait on Opticolor 200, scanned on a Fuji Frontier.
Frontier SP-3000
The same negative, developed by Trichroma Lab from three narrowband exposures.
Trichroma Lab

Opticolor 200 Scanlight v4 · 665 / 525 / 450 nm

Same negative, same crop, same compression. Averaged over the frame, the two land within one count of each other on red, green and blue — and with grain and sharpness taken out of it, the tone and colour differ by under 2 %. One frame, measured; not a claim about every roll ever shot.

Where the look comes from

Not a preset. The machine's own arithmetic.

The Frontier SP‑3000 and its smaller sibling the SP‑500 run the same colour pipeline. That pipeline was read out of the machine's firmware, stage by stage, and rewritten in Dart.

Every stage is pinned by generated parity vectors that run on every build. The integer stages are compared exactly — a difference of one is a difference in the rule. The floating-point stages have to agree with the reference to within 1e‑9.

What that buys is not a resemblance to the lab's colour. It is the same decision the lab made, taken on your own negative.

Trichroma Lab prescanning a roll: frame 20 of 37, film base measured at 0.383 D red, 0.814 D green and 0.957 D blue, with cross-sections and a surface plot of the light, and the registration between the separations at 1.42 px median.
Every roll starts by measuring its own film base, in density, per channel — and the registration between the three separations, in pixels.
The MERGE screen in Trichroma Lab showing seven negatives grouped from twenty-one imported raw files.

The method

Three exposures, three narrow bands.

A colour negative's dyes are cyan, magenta and yellow. Photograph it under white light and you measure those dyes through your sensor's own filters, which overlap — the channels contaminate each other, and the orange mask has to be guessed away afterwards.

Shoot it three times instead, once under each narrow band, and every exposure measures one dye layer and almost nothing else. That is what a minilab does, and it is why the numbers coming out of it are worth a pipeline this exact.

How trichrome scanning works →

The console

The lab's vocabulary, on a screen built for it.

Density leads, then cyan, magenta and yellow — subtractive naming, because that is how the correction works: +C removes red. Anyone who has had lab scans done already reads this language.

The FRONTIER screen: a developed frame on a graph-paper canvas, scopes and the four correction axes on the right, the roll's film base and rig on the left, and the filmstrip along the bottom.
Scopes read the render and the sensor separately. Tone Adjustment offers seven named looks as live thumbnails of the frame you are on — you pick a look, not a curve. Hold BEFORE to drop back to neutral.

What it works out by itself

The parts you should never have to do twice.

Which three are one frame

Read from filenames, capture time, shot order — and from the image itself, because a red-filtered negative measures nothing like a blue one.

Sub-pixel registration

The three separations are laid over each other to a quarter of a pixel, resampled rather than nudged to the nearest one. Every roll reports how far each channel had drifted.

Film base density

Measured off the clear rebate around each frame, per roll, in density — not picked off a border by eye.

Where the film sits

Mark the holder once. It is saved with the rig, so every roll you shoot on that setup arrives already set.

Crop and straighten

One pass per frame. Frames the detector will not commit to are left whole, and the app says so.

Faces and scene contrast

Found on a small positive, four rotations deep, because a film frame's orientation is unknown. Contrast is measured during the roll pass — a reading, not a switch.

Read this before you buy

Calibrated for one rig so far.

Every frame on this page was shot on Scanlight v4 — 665, 525 and 450 nm. On a different light source the colour will land somewhere else, and I cannot tell you where until I have seen it.

If you have a rig, write to me. We will work out its calibration together and it ships in the next build. That is what the forum is being built for.

Tell me about your rig

The light calibration sheet: three wells, one for each of the 665, 525 and 450 nanometre exposures of the empty gate.
Three shots of the empty gate, one under each diode. Without them a density has no denominator — so the app asks, and lets you continue without one only if you say so out loud.

Pricing

Seven days free, then whichever suits how you shoot.

The trial runs for seven days or fifteen rolls, whichever ends first, with everything switched on. No account and no card to start it.

Monthly

$6.99/month

For a season of shooting, or for finding out whether this belongs in your darkroom.

Yearly

$49.99/year

Two months free against the monthly price. The one most people want.

Lifetime

$149.99once

Bought outright, yours for good — no renewal to think about again.

Questions

The things worth asking first.

What do I actually have to shoot?
Three exposures of every negative — one under a red band, one green, one blue — plus three shots of the empty gate once per session. Import them in any order; the app works out which three belong together.
Does it work with my camera?
It reads NEF, NRW, CR2, CR3, ARW, DNG, RAF, ORF, RW2 and PEF, plus TIFF if you have already-developed scans. There are no per-camera profiles to pick, because the three narrow bands are what defines the measurement, not the sensor's own filters.
Do I need Lightroom?
No. Trichroma Lab is a standalone application for macOS and Windows. Your raws stay where they are — a roll is a single .trichroma file that links to them rather than copying them.
What comes out at the end?
A finished positive as TIFF or JPEG, 8-bit, sRGB. Or the negative itself — 16-bit, linear, straight off the three measured channels and carrying no profile on purpose, for when you would rather take it somewhere else.
My light source is not the one you built this on.
Then the colour will not land where these frames landed. The app will still develop the roll, but it anchors on a film-stock table instead of a measured response for your rig. Get in touch and we will measure yours.
Is my film stock supported?
Fifteen stocks have a measured base in the app, and anything else falls back to a table entry. The base is read off your own rebate on every roll regardless, so an unlisted stock is not a wall.
What does it cost?
$6.99 a month, $49.99 a year, or $149.99 once for a lifetime licence — two machines on every one of them. The trial is seven days or fifteen rolls, whichever ends first. Beta testers are being taken into account; if you are in it, you will hear from me directly.
What happens to my rolls if I stop paying?
Nothing. Every roll you have already processed stays fully usable — opening, grading and export are never locked. A licence is what lets you process new ones.

The beta

It is finished enough to use, and not yet signed.

Builds go out by hand while the certificates are sorted out. Tell me what you shoot and what you shoot it on, and I will send one.

macOS 14+, universal · Windows 10 22H2+, x64