PSD Adjustment Layers¶
Photoshop adjustment layers are not artwork — they are instructions. OSA reads them out of the .psd and turns the ones that have a Harmony equivalent into real effect nodes, with their values.
The ones that have no equivalent become a line in the import report, never a mystery empty drawing.
The crossing table¶
Every row here was measured against a Harmony 24 install with a probe — including a negative control, because the first run of that probe answered "exists" for 18 of 18 candidates, invented names included.
| Photoshop | Harmony node | Verdict |
|---|---|---|
| Brightness/Contrast | BRIGHTNESS_CONTRAST |
✅ translates — values come across |
| Hue/Saturation | HUE_SATURATION |
✅ translates — the Master trio comes across |
| Levels | COLOR_LEVELS |
✅ translates — the RGB composite record comes across |
| Curves | COLOR_CURVES |
⚠️ node created; the curve points are read but not yet written |
| Solid Color | COLOR_CARD |
✅ generator, colour included |
| Gradient Fill | GRADIENT-PLUGIN |
⚠️ generator, two stops only |
| Black & White | COLOR2BW |
❌ a different effect — one desaturation slider against Photoshop's six hue sliders |
| Colour Balance | — | ❌ does not exist in Harmony |
| Photo Filter | — | ❌ does not translate |
The rule behind the list is short: translates? in. Doesn't translate but is useful and heavily used? in. That second clause is why Tone and Highlight are in the effect catalogue at all.
What comes across, exactly¶
Brightness/Contrast — brightness and contrast, as integers, straight into the node's two fields.
Hue/Saturation — hue, saturation and lightness from the Master entry. The six per-colour ranges are not read: they are three more sliders each, and the honest place to author them is Harmony.
Levels — input black and white, gamma, output black and white, from the RGB composite record. The per-channel records (Red, Green, Blue, Alpha) are not read.
Curves — the control points are decoded, but writing them into COLOR_CURVES needs a measurement OSA does not have yet: how many points the node accepts and how it resamples. Until then the node is created and the values go to the report, because a curve written half-right is worse than a curve written not at all.
Values in the tree, values in Harmony — two different questions
The values above land in the staging tree, so you see and correct them in the preflight. Writing the composite attributes into the Harmony node (Hue/Saturation's ranges, Levels' channels) is a separate step still pending measurement — the import report says so per layer, instead of letting you assume it happened.
Layer masks become mattes¶
An adjustment layer with a layer mask in Photoshop reads as "this correction applies only here". OSA carries that across: the mask is extracted as its own drawing and wired into the effect's matte port, the same port the Cutter uses.
Clipped layers¶
A clipped adjustment layer attaches to the layer below it, exactly as it reads in Photoshop — the effect lands on that layer's slot rather than on the group.
An unclipped one applies to the whole group, and lands on the parent slot.
The report¶
Anything partial or refused becomes a line you can read after the import, naming the Photoshop layer and what happened to it:
Hue/Saturation values read into the node; they are not written to Harmony yet (composite attributes) Gradient has 3 or more stops; Harmony's gradient takes two
That is the house rule for this whole area: warn rather than stay silent. An adjustment layer that quietly does nothing is indistinguishable from a bug, and you would find out at the worst moment — in a render.
What never happens¶
An empty layer is never pruned. A blank layer with an empty bounding box is a legitimate placeholder in many pipelines. OSA stages it as an empty drawing rather than deciding on your behalf that it was a mistake.