github marcinz606/NegPy 0.50.0
NegPy 0.50.0

latest releases: 0.62.0, 0.61.0, 0.60.0...
one month ago

0.50.0

  • New: Merge exposures (HDR) — select several captures of one slide in the film strip and right-click → Merge exposures (HDR) for a single frame carrying the whole density range; Unmerge exposures puts the originals back. Ratios are measured from the pixels, since several scanner formats carry no shutter tags, and the frames are registered in case the camera shifted. Render exposure picks which shot the merge opens at — the reference is usually one to three stops brighter than the frame you metered, so the exposure you want is below what (as captured) points at. Offered on transparencies only: a color negative holds 5-6 stops between base and Dmax and a B&W negative nearer 4, both inside a single capture, where a transparency runs to 10-12. @seanharding
  • New: Transparencies render as captured — Normalize now defaults to off, so a slide opens looking the way it does in Photoshop, Preview or Darktable, and a bracketed set stays a bracket: the camera's own color matrix is applied and the exposure window is fixed to the decoder's white level, with no metering at all. Print controls give way to a plain transfer curve — Density, Grade, Toe, Shoulder, plus Shadows and Highlights Density, the only mid-sparing tone controls on that path — which is exactly the identity at its defaults. Coming from Lightroom: Exposure is Print Density, Contrast is ISO-R Grade, and the other two are Shadows and Highlights, in darkroom sign, so negative Shadows Density opens the shadows. Normalize is unchanged and one click away: it meters a per-frame stretch, which is right on faded film but reads washed out on a slide exposed as intended. Saved edits keep whatever they were saved with. @seanharding
  • New: Alternative Processes panel — with a None / Lith / Cyanotype selector, B&W only and off by default. Lith over-exposes the paper and snatches the print part-way through infectious development: Exposure, Snatch Point and Abruptness. Its color has no slider — it comes from the paper, so Fomatone liths warm and colorful and Ilford Multigrade barely liths. A cyanotype prints on Exposure Scale, the negative density range the sensitiser prints, so a longer scale prints softer; Sensitiser (Classic or New) picks the Dmax and the color path, and bleach plus tannin gives the split blue-brown. Selenium and gold behave the way they do on real lith silver; on a cyanotype there is no silver at all, so the silver toners are skipped and greyed out.
  • New: Transport Line tool — one click traces a long transport scratch and repairs it. Such a scratch is far too faint at any single point to separate from grain, so the evidence is integrated along the line and the line's own slope is fitted rather than assumed. Only the stretches where the ridge persists are repaired, and Line Sensitivity trades reach against picking up the film either side, on lines already placed as well as new ones.
  • New: Install an update from inside the app — the Update Available notice now opens a window with the release notes, the download size and one button: NegPy fetches the build matching how this copy was installed, closes, installs over the old version and reopens on the new one. Where it cannot swap itself — a source checkout, a platform with no build — the button opens the releases page. @Aa0rR
  • New: Reflecta and Pacific Image scanners without SANE — a native pieusb backend drives them directly, with autofocus, auto or manual exposure and per-phase progress. It ships on Windows too. @davide-b
  • New: Composite badges on the film strip — a stitch, a merged bracket, an RGB triplet and a half-frame split each carry a corner glyph and a tooltip naming the frame count, so the contact sheet says what a frame is built from without the right-click menu.
  • New: Multi-core CPU rendering is now togglable (canvas toolbar → ») — previously it was on for Linux and Windows but disabled on macOS due to stability issues. Now it's opt-in on macOS. @seanharding
  • Change: Process modes renamed — the picker, the HUD pill and the settings dialog now say Color Negative, B&W Negative and Transparency instead of the chemistry codes C41, B&W and E-6. Saved edits, sticky settings and crosstalk profiles carrying the old strings keep loading.
  • Change: Setup tab rearranged — the film mode is now three buttons above the panels, colored per process, so the first choice of every edit is always in sight instead of inside a collapsible. Linear RAW, Narrowband and the scanning-setup bulb move to Calibration, beside the other capture corrections; the Process panel keeps what is left and is renamed Normalization, with Lock Bounds beside the analysis buffer it freezes. Presets moves to the bottom of the tab.
  • Change: Crosstalk matrices declare their film process — a matrix describes one dye set, so a profile now carries process and only appears, and only applies, in the film it was made for. The in-app editor gains a Process control and stamps new matrices with the mode in use.
  • Change: Cast Removal is hidden outside color negative — the solve needs shadow and neutral-axis references that are measured for C-41 only, so on a slide or a B&W frame the slider moved a value the render never read. It defeats the orange mask, which is a manufactured cast; a slide's cast is the photograph. Use Temperature, the CMY sliders or Hue Trim there instead.
  • Change: Folders open faster — importing hashes files across cores instead of one at a time, and the film strip fills in as thumbnails are made rather than staying blank until the whole batch ends. Half-frame split detection and RGB-triplet classification run across cores too.
  • Fix: Film strip thumbnails show the right frame, right way up — a finished render is now filed under the frame it started from rather than whatever is selected when it lands, so clicking ahead during a decode, switching folders or merging a bracket no longer leaves the wrong picture cached across restarts. Batch thumbnails are inverted too, so triage no longer runs against a sheet of orange negatives. @seanharding
  • Fix: Heal and Scratch repairs keep the film around them — healed specks came back as dark crescents and scratch strokes left wide dark bands. Every repair — IR, detected specks, painted strokes — now takes the same score-weighted fill on the linear source, so a dark defect is no longer vetoed by a gate meant for bright dust, and clean film under a generous brush comes back byte-identical.
  • Fix: Linear Output no longer freezes the app, and reads a DNG's own calibration tags — it looped on the GUI thread with no progress, no abort and no cursor, and runs on the export worker now, with a batch of failed sidecar writes no longer reported as a success. The 3-channel LinearRaw decode also divided by the container's bit depth and ignored BlackLevel, WhiteLevel and LinearizationTable, so a DNG whose real white point sits well below the container max exported about 20x too dark. @thetalkingdrum
  • Fix: Export follows the panel and the whole frame — batch export took sizing, quality and the filename pattern from whatever export block each frame carried when it was last saved, so a frame saved while the panel was on Pixels/2000 exported at 2000 px however the panel was set, and the two "all visible" scopes collapse into one. Exporting the current file built a bare asset entry, so a narrowband triplet exported as its primary exposure alone instead of the merged RGB. @thetalkingdrum
  • Fix: DNG 1.7 JPEG-XL linear RAW files import — DxO PhotoLab, PureRAW and Lightroom Enhance write files libraw's published wheels cannot unpack, which crashed the import. NegPy now decodes the LinearRaw SubIFD itself, and steps aside if a future rawpy build can do it natively. @cymbal221
  • Fix: A Nikon High Efficiency NEF says why it cannot be opened — HE and HE* files keep the .NEF extension and parse cleanly, then failed at the pixels as "Unsupported file format or not RAW file", which reads as a corrupt file. NegPy now names the format and suggests re-shooting in Lossless Compressed or converting to DNG; decoding them is not possible without the licensed codec. @seanharding
  • Fix: Counts read as English — fifteen messages used the "(s)" shortcut, from the session-restore prompt to batch export and scan progress, so a single item read as unfinished. They now say "1 file" or "3 files", with the verb agreeing. @seanharding
  • Fix: The import popup stays quiet while Hot Folder polls — each new frame started its own hashing and thumbnail batch, so a tethered session got a popup over the canvas on every shutter release. Quick imports report in the status line instead; abortable batches still show it. @MarinChen99097
  • Fix: Interface gaps closed — a long status message wraps instead of running off the canvas, and the session toolbar measures its own contents, so buttons no longer go into the overflow menu sooner than the width requires; macOS dialog buttons stop underlining a letter that does nothing, Alt+letter unchanged on Windows and Linux (@seanharding). Slider keyboard shortcuts post their value to the HUD, and Show Slider Values pins every box open. Calibration and Flat Field join the modified-count sync, so their headers count, their reset buttons appear and their tabs light. Deleting a work print, roll or flat-field profile asks first, a blank rename is ignored, and the Scan panel gets the combo wheel guard it never had; scrolling over one changed scanner settings.
  • Fix: Slider shortcuts stop at controls the panel has retired — the keys fired from any tab and never asked whether the slider was live, so Temperature still moved on a B&W frame and White Point still moved under Lock Bounds. A greyed-out or mode-hidden control now ignores its shortcut and the HUD names it instead of a value; a control that is only on another tab or in a collapsed section still answers. Favourites mirrors of a mode-hidden slider are hidden as well.

Don't miss a new NegPy release

NewReleases is sending notifications on new releases.