AltProcessDensitone · documents version 0.9.1

Interface Reference

One window: a title strip, a toolbar, a canvas with an inspector beside it, a bottom panel of three columns, and a status bar. The dividers between the canvas, the inspector and the bottom panel are all draggable.

The AltProcessDensitone window with a registered source/scan pair

1. Title strip

A 36 pt strip: the app name centred, the scan’s filename at the right end. The macOS traffic lights float over its left end.

2. Toolbar

Toolbar, left: Source…, Scan…, Auto-Detect, the five view buttons, and Proof

Control What it does
Source… Load the positive image the negative was made from — the ground truth
Scan… Load the scan of the print
Auto-Detect Re-run quad detection, overwriting the current quad. Reads Detecting… while it works, and is disabled until both images are loaded

View buttons

Five buttons, one per canvas view, with the active one filled orange. They are buttons rather than a menu because flipping between views while checking a registration should be one click, not two.

View Shows
Both Source on the left, scan (with the quad) on the right. The view the canvas opens on, and the only one that shows either image on its own terms
Overlay The warped scan blended over the source at the Overlay opacity
Diff Heat map of local differences between the two
Mask Which pixels the analysis actually sampled
Preview The current print beside a simulation of the next one

There is no separate Source or Scan view. Each showed one half of Both and nothing Both does not, so they were folded into it: the side-by-side view is where a pair is loaded, compared and registered.

Proof

A toggle, not a sixth view: it changes how the source is drawn, in the Both view’s source pane, by rendering it through the profile built from this print. It stays disabled until an analysis has produced that profile. The tone and the black lift it shows are measured; the warm paper cast is the D50 media white, not a measurement of your paper’s tint.

Right end

Toolbar, right: the status pill, Session and Export menus, and the theme toggle

Coverage banner

When less than 60 % of the tone scale has measured data, a banner appears under the toolbar saying so explicitly, and reminding you that the exported curve leaves the unmeasured tones on your current curve.

3. Canvas

The canvas draws whichever view is selected, aspect-fitted. It is also a drop target.

In Both each pane is its own drop target: the pane a file lands on decides whether it loads as the source or the scan, and outlines itself in the accent colour while the drag is over it. An empty pane says which half it wants — Drop the source image here / Drop the scanned print here — so a pair can be loaded without switching views or reaching for the toolbar. In every other view a dropped image fills the scan slot, since all of them show something derived from the scan. An .acv becomes the active curve and an .apdt restores a session, in any view.

The registration quad

In the scan pane of Both the print area is outlined in orange with four round, draggable corner handles. Dragging one moves that corner; letting go marks the quad as user-adjusted and re-runs the analysis. That pane is the only place the quad is drawn — every other view shows the scan already warped into the source’s frame, where a quad would mean nothing.

The Both view’s scan pane, with the registration quad over the print area

The views

Both: source and scan side by side

Overlay: the warped scan over the source

Diff: a heat map of local differences

Mask: the pixels the analysis sampled

Preview: the current print beside the simulated next print

Overlay and Diff are the registration check — ghosting and lit-up edges both mean the corners are off. Mask answers “what did it actually measure?”: only locally flat regions survive, which is what makes the measurement robust to paper texture, dust and small registration errors. Preview is the payoff view — the current print on the left, a simulation of the next one on the right, both in scanner space.

Bin highlight

Clicking a row in the bin table paints exactly those pixels on the canvas — in the Both view’s source pane, and in Overlay, Diff and Mask. Clicking the canvas selects the bin the clicked tone belongs to, and the table scrolls to it.

A tone selection painted onto the source image

The mask is drawn per pixel with no smoothing — it is a membership map, so scattered speckles are the honest answer for a tone that occurs in scattered places.

4. Inspector

The top of the inspector: Images, Print Process and Registration

Images

One row each for Source and Scan: the filename, the pixel dimensions, and an Open… / Replace… button.

Method and Paper — free text with a preset menu (Platinum/Palladium, Palladium, Kallitype, Cyanotype, Van Dyke Brown, Salted Paper, Ziatype, Gum Bichromate, Carbon Transfer, Argyrotype; Bergger COT320, Arches Platine, Hahnemühle Platinum Rag, Hahnemühle Photo Rag, Revere Platinum, Fabriano Artistico). They are saved in the session, become part of export filenames, and go into the ICC profile description that Photoshop shows in its Device to Simulate list.

Registration

Control Range Effect
Margin 0 – 10 %, step 0.5 Excludes this much of the print area’s outer edge from sampling
Overlay 0 – 100 %, step 5 Opacity of the warped scan in Overlay view
Detect Re-runs detection; beside it, the match percentage in green when confident, red when not, or no match
Scale read-only Derived horizontal and vertical scale between source and scan
Aspect read-only How far the quad’s aspect ratio is off; red beyond 2 %, which almost always means a corner is in the wrong place

Analysis

Control Range Effect
Bins 32 / 64 / 128 How finely the tone scale is divided. More bins = finer detail, fewer samples each
Edge excl. 0.5 – 5 %, step 0.25 Drops pixels near tonal edges, where registration error does the most damage
Flat radius 1 – 6 Radius of the flatness test; larger demands a bigger uniform neighbourhood
Smoothing Gaussian / Median / Savitzky-Golay Smoothing of the measured response
Window 0 – 5 Sigma or half-window for that mode

Every one of these re-runs the analysis as soon as you change it.

Curve

Control Effect
Active The .acv the print was made through — filename, Clear, and an Open… / Replace… pull-down over your recent curves. Reads linear (none) when empty
Aim Target rendering, from linear to an S-curve; the readout is the midtone slope multiplier, e.g. ×1.35
Print range Toggles between Literal and Aim at print range
Export Writes the replacement .acv; disabled until there is a correction to write

Notes

A free-form, multi-line note at the bottom of the inspector for the things that decide how a print came out and that nothing else in the window records: exposure time, humidity, coating batch, developer dilution, what went wrong. It is saved in the session (.apdt schema v3) and printed in both reports, so a scan can be read back months later with its darkroom context attached rather than as a bare curve.

Unlike StepWedgeDensitone, the note is not cleared when you open a different image — this app never resets the inspector on load, and the Method and Paper above it survive an image swap too. It is descriptive only: it never reaches an export filename or an ICC profile description.

5. Bottom panel

Bin table

The bin table with a tone selected

One row per tone bin:

Column Meaning
BIN Bin index, 0 at the paper-white end
SRC % The source tone level this bin represents
TONE Three swatches — scanned, normalized, target
MEASURED Median printed value for the bin
Δ TGT Measured minus source level. Negative printed darker than asked, positive lighter. Green within ±0.03, red beyond
COUNT How many pixels landed in this bin
SPREAD How much they disagreed
CONF Confidence, 0–1; below 0.5 the row dims and the value turns red

Clicking selects; Shift+click extends a range; ⌘+click toggles one row; clicking the only selected row clears the selection. Empty bins show rather than a number, and their Δ stays neutral — there is nothing to be off by.

Response curves

The response-curves plot with the measured, target, curve and adjusted series

The header carries the coverage percentage. The plot puts the tone scale on X with paper white at the left, and 0…1 on Y with white at the top. As in StepWedgeDensitone, two conventions share the plot:

Grey vertical bands mark tone spans with too few samples — the Low conf pill toggles them. A selection in the table is shaded in the accent colour with a solid bar along the tone axis, so a set of rows reads as a region of the response rather than a list of numbers.

A range of bins selected, shaded across the response

The five pills — Measured, Target, Curve, Adjusted, Low conf — show and hide each layer.

Statistics

The statistics panel

Row Meaning
White point Paper white used for normalization, with where it came from — paper margin when read from the border, estimated (in red) when the image had no highlights
Black point Maximum black, with the same provenance note — coating when taken from the coating border
Print max / Print min The raw extremes the scanner saw inside the print area, before normalization; flagged clipped? at the top of the range
Paper The paper base value, when a margin was found
Frame min The darkest value outside the print area
Coverage How much of the tone scale the image exercised; low below 60 %
Samples Total pixels measured
Mean / Max |error| Average and worst deviation from the target

6. Status bar

The status bar: sample count, endpoints, and any warnings

Sample count and the two endpoints on the left, then any analysis warnings in red, and the source filename — the truth reference — at the right. Warnings you may see:

Warning Meaning
quad aspect off by N% The quad’s shape does not match the source’s; check the corners
scan resolution low The scan has fewer pixels than the source in the print area
no highlights / no shadows in image The endpoint had to be estimated
black point from coating border Taken from the coating, which is darker than film-base black — verify deep shadows
only N% of tones measured Low coverage; the curve is left unchanged elsewhere
scan highlights at top of range Likely clipped — reduce repro exposure or disable auto-levels

File

Item Shortcut
Open Source Image… ⌘O
Open Scanned Print… ⇧⌘O
Load Active Curve… ⌘L
Open Recent Curve ▸
Auto-Detect Quad ⇧⌘D
Open Session… ⌥⌘O
Open Recent Session ▸
Save Session ⌘S
Save Session As… ⇧⌘S
Close Session
Export Adjusted Curve… ⌘E
Export PDF Report…
Export CSV Report…

View — Dark Theme ⌥⌘D, Light Theme ⌥⌘L.