For SpektraLab 1.3.3

THE DIGITAL DARKROOM · macOS

From light to your first print.

Choose your materials. Develop the negative. Make the print. A practical guide to SpektraLab, from your first RAW to the finer details of film.

Apple silicon · macOS 15+ · Signed & notarised

SpektraLab workspace with Film Edge
Interface illustration from spektralab.app. Read the current instructions below; the pictured settings are an example.
1.3.3
New since the old guide

Install from a notarised DMG. Explore four black-and-white films and their own grain, Film Edge, Date Back and half-frame pairs.

A path through the darkroom

Follow the first-photo workflow, or jump to the control you need.

Chapter 01 / 21

Install SpektraLab

Download the notarised DMG, move the app to Applications, and open it.

Check your Mac

SpektraLab 1.3.3 requires Apple silicon (an M-series Mac) and macOS 15 or later. This guide covers the native macOS app. The arm64 download does not run on Intel Macs.

Download and move to Applications

Download SpektraLab-1.3.3-arm64.dmg from GitHub Releases. Open the disk image, drag SpektraLab.app into Applications, then open it there.

Install it before copying CLI or MCP configuration: those settings contain the app’s location.

No Terminal command needed in 1.3.3

1.3.3 is the first release signed with a Developer ID and notarised by Apple. Follow the normal macOS first-open prompt. The quarantine-removal command in the old guide is no longer required.

If macOS still refuses to open it, confirm you downloaded the official 1.3.3 DMG, download it again, and replace the old app. For a persistent problem, report the complete message and your macOS version on GitHub Issues.

Updating later

Settings → General → Check for Updates checks public GitHub release information; it does not install updates. Quit SpektraLab, download the new DMG, and replace the app in Applications.

Your photo edits live separately in Application Support and survive replacement of the app.

↑ Back to top

Chapter 02 / 21

Make your first print

One familiar RAW, one film, one paper. Five steps from opening to export.

Keep the first pass simple

Start with a familiar camera RAW. Leave advanced controls alone until you have made one complete print. The guide is available in English and Chinese; the language switch keeps your place. Older interface images are labelled with their capture version.

1. Open a photo

Click Import in the top toolbar, or press ⌘ O. Your photo appears on the canvas and in the filmstrip. For externally developed TIFFs, read file preparation first.

2. Choose film and paper

On the left, choose Kodak Portra 400 and Kodak Professional Portra Endura. This is a consistent practice pairing, rather than a recommendation for every photograph. Keep the paper fixed while comparing films.

3. Click Process

Click Process in the toolbar (配光 in Chinese). It meters the scene and solves the enlarger filter pack for the current paper. Wait for the print to update.

A starting point for your print

Process resets manual Yellow / Magenta offsets. Process first, then add any manual filtration.

4. Adjust and compare

Choose Post-Dev on the right. Make small exposure, white balance or curve adjustments, one at a time. Hold Space to see the original decode; release to return to the print. Press Y for the comparison view.

To judge grain, use 100% zoom and wait for the full badge.

5. Export the result

Press ⌘ E. For everyday sharing, choose JPEG and set Color Space to sRGB. For further editing, use TIFF 16-bit — ProPhoto. Check the photo, folder, name and soft proof, then export.

↑ Back to top

Chapter 03 / 21

Find your way around the darkroom

Materials on the left, the photograph in the middle, and parameters on the right.

SpektraLab workspace with Film Edge
Interface illustration from spektralab.app. Read the current instructions below; the pictured settings are an example.

Three regions and a filmstrip

Left: Navigator, Settings Clipboard, Film, Film Edge, Date Back, Print, Crop and Enlarger. A pair adds Half-Frame Pair. Centre: the canvas and filmstrip. Right: Latitude, Pre-Dev and Post-Dev.

Pre-Dev or Post-Dev?

Use Pre-Dev to change what reaches the film: camera white balance, film exposure, format and Scene Placement. Use Post-Dev to finish an already developed print: exposure, curves, colour balance and white balance.

For a first photo, choose your materials, Process, and finish in Post-Dev. Come back to Latitude when the scene needs more help.

What preview and full mean

During edits the app renders an interactive preview, marked preview. After you stop, the original-resolution render arrives and the badge becomes full.

full describes render resolution, not zoom. Check both the full badge and 100% zoom when inspecting texture.

Give the photo more room

⌘ B toggles both side panels; ⇧ ⌘ F toggles the filmstrip. When a panel is collapsed, its toggle moves into the toolbar.

In this guide, the contents sit on the left. On a phone, expand Contents; use search to jump directly to a section.

↑ Back to top

Chapter 04 / 21

Start with the right input

The state of the input affects every stage that follows. Start with a camera RAW.

Prefer camera RAW

Press ⌘ O to open photos. RAW support depends on macOS support for the camera model. If a RAW will not open, check the model’s system support first.

Pre-Dev → Input / Camera contains RAW Temperature and Tint. These change the decode, while Post-Dev white balance changes the developed image.

Bringing in a TIFF

A TIFF with an existing contrast curve or look already contains processing that will carry into the film simulation. When decoding elsewhere, start with a linear, minimally processed export and keep its colour profile correct.

Different RAW developers interpret camera data differently; even careful exports can give different film results.

Your source photo stays intact

Edits are stored separately in SpektraLab’s Application Support folder. Export writes a new image; it does not overwrite the original RAW. Keep the source file as well as your edit records and exports.

↑ Back to top

Chapter 05 / 21

Choose film and paper together

Film records the light; paper makes the print. Both shape the result.

Fix one pairing first

Try Kodak Portra 400 + Kodak Professional Portra Endura. Change one material at a time so you can tell where a difference comes from. For monochrome materials, see Black and white.

Process after choosing materials

Process meters the scene and solves the filter pack for the current paper. After changing materials, use it for a fresh comparison starting point. It also clears manual Yellow / Magenta offsets.

Photographic paper and cinema print film

The Print list includes photographic papers, cinema materials, Digital Intermediate and No Print Profile. The CINE badge identifies cinema materials. Vision 2383 is a cinema print film with a different response from photographic paper.

Illustrations show their own material choices; they are not samples of every pairing in this tutorial.

When to use Enlarger

Enlarger Brightness changes print exposure. Yellow / Magenta adjust filtration relative to the Process solution. Open these when you want to change the printing stage. For a small brightness correction to a finished print, start with Post-Dev Exposure.

↑ Back to top

Chapter 06 / 21

A silver print, from four films

New in 1.3.3: four monochrome films, paired with Ilford Multigrade IV RC.

A black-and-white photograph rendered with T-Max 100
T-Max 100 example from spektralab.app. The selected materials and scene determine your result.

Choose a black-and-white film

In Film, open the black-and-white group and choose Kodak Tri-X 400, Kodak T-Max 100, Fujifilm Neopan 100 Acros II or Ilford HP5 Plus 400. The app selects Ilford Multigrade IV RC with it. Incompatible colour papers are greyed out with an explanation.

Click Process, compare the print, then make small Post-Dev adjustments. Switching between colour and monochrome requires a compatible film/paper pairing; this is not a desaturation switch.

Each film has its own grain

At Grain Strength 1, each black-and-white film uses its maker’s published granularity as its reference. Tri-X looks coarser than Acros II. Compare at 100% after full appears, keeping format and framing the same.

The current grain range saturates for Tri-X at about 1.18, so pushing above that does not keep increasing its grain. Colour films still share one grain model.

What this release offers

The monochrome print uses Multigrade filter 2. Lens-filter and paper-grade controls are not available in the interface yet. EDR is unavailable on the black-and-white paper. Each film has its own edge print, including HP5 Plus’s 135 layout.

↑ Back to top

Chapter 07 / 21

Make only the adjustment you need

Decide whether to change the scene reaching the film or the finished print.

Adjust the finished print first

If you like the film response and just want a brighter or darker picture, use Post-Dev Exposure. Pre-Dev film exposure changes the light reaching the film and its response; the two controls serve different stages.

Three places to change colour

Camera Temperature / Tint: RAW decoding. Enlarger Yellow / Magenta: printing through the selected materials. Post-Dev White Balance: the developed image. Start with the stage that owns the problem, and adjust one at a time.

Curves and colour balance

Use Post-Dev curves to refine contrast, and colour balance to shape the finished image. Keep changes small while learning and compare the whole photo as well as the detail.

Compare and undo

Hold Space on the canvas for the original, release for the print; press Y to toggle comparison. The original is the current decode, not the camera’s embedded JPEG. Use ⌘ Z to undo.

↑ Back to top

Chapter 08 / 21

Carry a look across your photos

Choose the groups you want to transfer. Each destination keeps its own metering and fit.

Choose what to copy

Settings Clipboard sits below Navigator. Choose from Film & Paper, Exposure, White Balance, Film Effects, Paper Effects and Scene Placement. Click Copy or press ⇧ ⌘ C. The selection of groups is captured when you copy; copy again if you change it.

Paste onto another photo

Open the destination and click Paste or press ⇧ ⌘ V. Check the result and use ⌘ Z if needed. Begin with Film & Paper only before adding more groups.

Sync to a selection

Select the destination photos in the filmstrip while keeping the intended source current. ⌘ A selects all photos. Check the current photo, the checked clipboard groups and the count on Sync to N, then click Sync. The current photo supplies settings to the other selected photos.

Sync needs at least one other selected photo and a checked group. Drag filmstrip thumbnails to reorder them.

Same intent, fresh calculations

Transfer copies settings, rather than the source’s measured exposure or Scene Placement fit. Destinations are metered and fitted from their own scene content.

What is outside the clipboard

Crop, framing, lens correction and Post-Dev grading are outside these groups. Exposure refers to metering mode, film exposure and enlarger brightness; it does not mean every exposure-like adjustment in the app.

↑ Back to top

Chapter 09 / 21

Take the print out of the darkroom

Choose where the photo is going, then check every part of the export recipe.

Export
Archive interface capture · v1.2.2 · 1 October 2026. Labels and layout may differ in 1.3.3.

Choose for the destination

UseStarting pointCheck
Everyday sharingJPEG · sRGBThe built-in JPEG recipe uses Display P3; change it to sRGB.
Further editingTIFF 16-bit · ProPhotoContinue in colour-managed software.
Client deliveryA dedicated recipeMatch the requested size, format and colour space.

Built-in recipes are JPEG — Display P3, TIFF 16-bit — ProPhoto, PNG 8-bit — sRGB and Digital Intermediate. Previously saved recipes retain your settings: inspect the recipe itself.

Read the export page from top to bottom

Export Formula selects or creates a recipe. Location sets Folder, Subfolder and existing-file behaviour. Naming combines Original Name, Film, Print and Date and shows the resulting name.

Check Format and Size, including bit depth, Color Space, Quality and Size. Open With chooses an app for the output. Inspect Summary and the central soft proof before pressing Export.

Batch export and Stop

Select your photos before starting. Export processes one frame at a time; the active frame and selection are locked during the run. Stop takes effect between frames: a file already being written finishes first.

Digital Intermediate is an advanced workflow

DI creates a Cineon log intermediate and a viewing LUT for later grading. The log image looks flat without the corresponding viewing transform. For a finished photograph to share, choose JPEG or TIFF.

↑ Back to top

Chapter 10 / 21

Show the film around the picture

Build a scan-like frame with rebate, perforations, edge print and the gate that holds the photograph.

Enable Film Edge

Open Film Edge on the left and turn on its header switch. Choose Format, then reframe the photo in its gate. With Film Edge enabled, the format determines both the gate and the scale of the film effects; the separate Film Format control explains that it is set by Film Edge.

Choose a format

FamilyFormats
135Full frame, Half
120645, 6×6, 6×7, 6×8, 6×9
PanoramicXPan, 6×12, 6×17

Half uses a single 18×24 mm exposure; for two photos on one strip, use Half-Frame Pair. Panoramas have no Date Back.

Choose the scan presentation

Compare Strip and Filed views. Gate changes the opening’s shape; Holes chooses white or black perforations where the format has them. Body and Advance vary the camera and frame characteristics. Frame no. lets you specify the printed frame number; Auto leaves it to the frame’s stored variation.

Fog and Leaks add edge light. Start gently and judge the full print. Edge lettering follows the selected stock.

Framing affects development

With Film Edge on, the crop defines the picture exposed inside the film gate. It is part of the negative, so reframing re-develops the image. The exported image includes the film canvas you see. Check the framing again when changing format.

↑ Back to top

Chapter 11 / 21

Expose a date onto the negative

Use the camera-style imprint alone, or add shooting data in the film margin.

Turn on Date Back

Open Date Back on the left and enable its header. Choose an available face, inspect the date read from EXIF, and choose its order. If the source has no EXIF date, the panel says so; check the printed preview rather than assuming a date was found.

Check where the camera can print

On 135 and half frame, the date can appear in the picture. A date alone can work with Film Edge off. On 120, the date prints in the film margin and therefore needs Film Edge. XPan, 6×12 and 6×17 do not support Date Back. Unavailable choices explain why.

Date and shooting data together

Enable Shooting data to add the data line alongside a date. Data needs Film Edge because it prints beside the frame, rather than over the picture. Inspect the resolved data before exporting; available content depends on the photo’s metadata.

Keep the imprint believable

Choose placement where offered, then adjust Size and Brightness. The date is exposed before development and follows the camera orientation and framing. It is part of the rendered photograph, so check it again after a turn, flip or crop.

↑ Back to top

Chapter 12 / 21

Two exposures on one piece of film

Combine two source photos as a separate filmstrip item, with framing for each exposure.

Half-frame pair in the SpektraLab workspace
Interface illustration from spektralab.app. Read the current instructions below; the pictured settings are an example.

Create the pair

With photos open, select one or two in the filmstrip and press ⌘ J (New Half-Frame Pair). The first two selected photos fill the holes in filmstrip order. Or choose Film Edge → Half → Enter Half-Frame Pair, then click the + on the empty hole to add the second photo.

Pick the film or one exposure

Click an exposure on the canvas, or use Half-Frame Pair’s Film / Left frame / Right frame rows. When the camera is turned, the rows become Top frame / Bottom frame. Film controls the overall camera orientation, spacing and swapping; a picked frame exposes its own placement controls.

The right rail’s metering, exposure, decode white balance and Scene Placement refer to the picked frame. The frames can also retain separate print adjustments and dates. Check the active frame or scope before editing.

Frame each photo

Right-click a frame to replace or crop it, or use Crop on the Canvas in the pair panel. Drag to position and scroll to scale; use Turn for a quarter turn, then Done. A filmstrip photo can also be dragged into a hole.

With Film Edge on, the camera’s advance sets the gap. Without it, use Spacing. Swap the Two Frames changes their order.

Export and keep the sources

Fill both holes before exporting, then export the pair as one image. The pair is its own filmstrip item and references the source photos; it does not contain copies of them. Keep those sources available. Removing the pair does not delete its source photos.

↑ Back to top

Chapter 13 / 21

Understand grain and halation

Texture depends on the simulated format, effect controls and viewing scale.

Inspect at 100%

Press . for 100% and wait for full. A fitted preview averages fine grain and cannot show the file’s detail faithfully.

Film format changes the physical scale

Pre-Dev → Film Format sets the scale of physical effects; it is more than metadata. With the same photograph, a smaller simulated frame makes grain coarser relative to the picture. Film Edge sets the format while it is enabled.

Compare one effect at a time

Grain is the fine texture. Halation is the glow from light returning through the film; scatter is in-emulsion scattering, while glare belongs to the print stage. Compare a bright/dark boundary with each effect in turn, then check the whole photograph at a normal viewing size.

Effect strengths

Enable Settings → Rendering → Decouple Effects to reveal separate strengths. Turning it off only hides the sliders; it does not reset your values. For black-and-white films, strength 1 uses each film’s own published granularity. Colour films still share one grain model.

Anti-Halation Layer and Highlight Boost

Keep Anti-Halation Layer on for the film as profiled; turning it off simulates removing that layer. Highlight Boost raises the highlights used to generate halation, rather than acting as ordinary whole-image exposure. Start at the defaults and compare around bright lights.

Halation and glare strengths control halo area; they are not linear brightness multipliers.

↑ Back to top

Chapter 14 / 21

When the scene does not fit the film

Use the scene distribution to decide what needs protection before development.

Read Latitude first

Latitude shows a scene histogram, the film’s usable range, and fractions below, inside and above it. It reads the distribution after Scene Placement and explains when it cannot measure. Decide which highlights and shadows matter in your picture before chasing a number.

Scene Placement is before film

Scene Placement changes the highlight and shadow relationship reaching the film. The usable band on the slider shows the part its fit can use. Make small moves, allow the result to settle, and compare. Post-Dev Exposure works later and cannot replace scene placement.

Masks are unavailable in 1.3.3

Tone Mask and local masks are not offered in this release. Their appearance in an older screenshot does not mean they are available now. Scene Placement is a separate stage before film.

EDR is an output-stage choice

Extended Dynamic Range affects the output side, including canvas, soft proof and export. It cannot restore highlights already lost at input. EDR is unavailable on the black-and-white paper.

↑ Back to top

Chapter 15 / 21

Make the interface comfortable

Press ⌘ , for Settings. Start with language and interface scale.

Settings · General
Archive interface capture · v1.2.2 · 1 October 2026. Labels and layout may differ in 1.3.3.

Open Settings

Choose SpektraLab → Settings… or press ⌘ ,. General, Rendering, Memory, Diagnostics and Agents are the five tabs; the app remembers your last tab.

Language

Choose System, English or Simplified Chinese. Changes apply immediately. Film, paper, camera and lens names and technical abbreviations remain English; the export page is currently English.

Interface scale

Increase scale for larger labels in the editor, Settings and export page. This does not change image pixels or export dimensions. The older captures use a personal 130% setting.

Reset All Layouts

Restore panel widths, region heights and collapsed sections. This resets the interface layout and leaves photo edits intact.

Version and updates

This Session lists app version, engine, render core and log file. Check these before reporting a problem. This guide covers 1.3.3 (build 18). Check for Updates only queries GitHub; see updating.

↑ Back to top

Chapter 16 / 21

Choose preview and effect behaviour

Preview size changes interactive responsiveness; final output size lives in the export recipe.

Settings · Rendering
Archive interface capture · v1.2.2 · 1 October 2026. Labels and layout may differ in 1.3.3.

Preview resolution

Choose a long edge of 1080, 1920, 2560 or 3840 px. Start at 2560 and lower it if interaction is slow. After editing stops, the app still renders at the photo’s own resolution. Export dimensions are set separately.

Fast Paper Preview

When comparing papers, this applies the paper’s lookup table to the existing negative for a quick first view, followed by the full print calculation. The underlying film simulation remains in use.

Blue Compensation

An optional DI-only control, off by default. Compare it if highly saturated blue shifts toward purple in a DI workflow. Ordinary JPEG / TIFF work does not need it.

Recalculate Effects After Crop

Off by default: crop takes part of the same negative and keeps the physical effect scale. On: the crop becomes a new full frame; tighter crops make grain coarser and halation wider. Switching it re-develops the photo.

Decouple Effects

Shows separate grain, halation, scatter, DIR coupler and glare strengths. Turning this setting off hides controls while retaining their values. Restore values to 1 first if you want the model’s baseline.

↑ Back to top

Chapter 17 / 21

Manage memory and cache

Readouts describe the current workload. They are not recommended values to copy.

Settings · Memory
Archive interface capture · v1.2.2 · 1 October 2026. Labels and layout may differ in 1.3.3.

Readouts versus limits

Footprint, session peak and available memory change during processing. SpektraLab-owned and reclaimable resources measure a different scope from the full process footprint.

Reserve and exceeding it

Reserve expresses how much free memory you want to leave for other apps. If an estimated peak crosses it, the app asks rather than refusing the photo. Allow Exceeding Reserve answers those prompts persistently; it does not add physical memory.

Working Set Cap

Bounds retained caches and temporary buffers. The current photo stays pinned. This is not a hard limit on total process memory. Unlimited disables the numeric value. Keep the default while starting out.

Disk cache

Stores reproducible decodes and prints to speed up reopening. Reduce its size or clear it when disk space is tight. Originals and edit records remain; the next open recalculates the cached work.

↑ Back to top

Chapter 18 / 21

Capture useful information for a report

Reproduce the issue, then save a diagnostic bundle with the context needed to investigate.

Settings · Diagnostics
Archive interface capture · v1.2.2 · 1 October 2026. Labels and layout may differ in 1.3.3.

Log level

Normal is suitable for daily use: it records opens, rendering, exports, memory and errors. Increase detail for a specific investigation.

Per-node GPU timing

This diagnostic mode times pipeline nodes individually and disables batching, which makes rendering noticeably slower. Turn it off after collecting evidence.

Write a job log next to each export

When enabled, each export gets a .joblog.jsonl with recipe, engine version, timing and actual exposure. Leave it off for image-only delivery folders. Session logs still record exports.

Retention

Age, total size and file-count limits are applied at startup, oldest first, when any limit is reached. A changed log location takes effect on the next launch.

Save a diagnostic bundle

After reproducing the issue, choose Save Diagnostic Bundle… to write a zip with recent logs, version, machine information, current settings and the latest error. It is saved only to your chosen location and is not uploaded. Deselect Include Image Filenames if you do not want them included.

↑ Back to top

Chapter 19 / 21

Use the CLI or an AI client

An optional local automation route. Skip this chapter if you only use the window.

Settings · Agents
Archive interface capture · v1.2.2 · 1 October 2026. Labels and layout may differ in 1.3.3.

Enable access

Access is off by default. Enable it to let the CLI and MCP clients open, edit, process and export through the same app implementation. Disabling access refuses all calls, including connected clients.

The app’s automation entry point is local and does not listen on the network. A third-party AI client has its own data handling.

Install the command

Install spektralab writes a small launcher to ~/.local/bin/spektralab. If your shell cannot find it, run ~/.local/bin/spektralab help. Commands return JSON. Installing the launcher and enabling access are separate steps; do both.

Copy your own MCP configuration

Use the Copy button for your client in Settings → Agents → MCP Server. Install the app in Applications first. The configuration includes your app location, so copy it again after moving or reinstalling the app. Paths in old screenshots are redacted and should never be copied.

Automation respects the current app state

During batch export, tools that modify a photo are refused. Wait for the run to finish; this is not a configuration failure.

↑ Back to top

Chapter 20 / 21

Find a way past a problem

Start with a small check before changing more parameters.

macOS says the app cannot be opened

1.3.3 is signed and notarised. Follow the installation check and retain the complete error. The old guide’s Terminal command is no longer part of installation.

The picture looks temporarily soft

Check for preview. Stop editing and wait for full, then inspect at 100%. If it never finishes, note the format, camera model and actions and save diagnostics.

My manual filtration changed after Process

Process solves the current paper’s filter pack and resets Yellow / Magenta offsets. Process first, then add manual filtration. For brightness alone, try Post-Dev Exposure.

My exported image looks flat

Check whether it is Digital Intermediate. DI is log and needs the viewing LUT. For ordinary files, check the export colour space and use a viewer that honours embedded profiles.

Do I need to save edits manually?

No. Edits are saved automatically in Application Support; the original RAW is preserved. Export creates the finished image.

Is there a one-click simple mode?

There is no separate mode. Use the short path: choose film and paper → Process → small adjustments → export. Start with your first photo.

↑ Back to top

Chapter 21 / 21

Keep the useful keys nearby

Learn open, compare, undo and export first; look up the rest as needed.

Everyday actions

Open / Export⌘ O / ⌘ E
Undo⌘ Z
Show original / CompareHold Space / Y
Previous / Next photo← / →
Copy / Paste settings⇧ ⌘ C / ⇧ ⌘ V
Select all photos⌘ A
New half-frame pair⌘ J
Settings⌘ ,

Canvas and view

Zoom in / out⌘ + / ⌘ −
Fit / 100%, / .
Side panels / Filmstrip⌘ B / ⇧ ⌘ F
Pause / resume Post-Dev⇧ ⌘ B
Restart renderer⌥ ⌘ R

Tools and crop

Select / Hand / CropV / H / C
Rotate left / right⌥ ⌘ [ / ⌥ ⌘ ]

Unmodified typing keys go to an active text field while you edit a value.

↑ Back to top

Search the guide

Search runs locally in this language. No query is sent to a server.